Hmm... funny but... why not show an example that demonstrates adding these various abstractions in useful ways. Just always printing hello world, so none of these subsequent refactors actually added any utility is funny but not as real as world. Like they could have read from a config file or command line, so the program output could change, depending on runtime conditions (but ultimately never do!)
The elimination of boilerplate unnecessary comments though, yeah I love it.