I kinda see the point you’re trying to make, but there’s two contexts that I think are important to separate, and you kind of do it anyway in your article: “For money” coding, and “for fun” coding. I think you’ll find in our weekly “what’s up” thread that it’s not unusual for people to talk about those two in a cleanly separated manner.
There’s a great learning value in toy projects, first off. New languages, new frameworks, new systems, whatever: I’ve found, in my humble few years of experience, that learning something usually changes the way I code, ever so slightly. The more foreign it is to my experience, the better.
On another hand, there’s also the value of useful shortcuts. Depending on where you plug it in, and a plethora of other factors, I think the makefile approach described in your article is absolutely fine – for certain cases. When doing actual professional work, time is definitely a consideration. The makefile approach would take all but five minutes to achieve, and it fullfills 90% of the requirements. I would definitely consider this for a production system for actual paying customers; especially if that feature is not excessively valuable to them. Of course, if you promise them a state-of-the-art magical PDF-making machine, that’s another story.
I think “stop writing software” is a bit broad of a statement; “start writing the right software” is probably better.
Agreed on all points.
I read once that “It’s not engineering if there isn’t money in the equation somewhere”, and since time is money, once could conclude that we aren’t doing software engineering if our approaches don’t take into account cost and timeliness.
I would argue that all the stuff you’re doing “for fun” is ultimately improving your future “for money” coding ability. I really agree with the “start writing the right software” prescription, though.
The difference between “for fun” and “for money” is that when I do things for fun, I (figuratively) go wild and try lots of things, just for the sake of learning. Whereas in my working hours I try to take intelligent shortcuts, in my fun hours I try to take intelligent detours.
Love the idea. Saving this to read tomorrow. I’ll follow up at some point if I use it in a project.