Even laborious non-CS stuff can be improved by basic knowledge from his listed topics. For example, functional programming may have a slightly academic vibe, but it's also great for boring things--you still get all the benefits like simplicity, safety and conciseness, which makes your boring program easier to write and more maintainable.
Another great topic is language development. This one probably sounds even more academic than functional programming! But this is not the case. In virtually every space, even the boring ones, you can make your code simpler and more maintainable by factoring it into a DSL. And this is exactly the skill you gain by looking at language design in general.
More generally, boring stuff is actually a great place to experiment with new techniques. Having a core problem that isn't terribly difficult can actually be an advantage: the problem itself does not distract you from trying new techniques. For example, if all you're doing is writing a bunch of GUI forms, you could consider trying FRP; it can make your code shorter and more maintainable and you almost definitely won't run into any of the current problems with FRP because all you're doing are simple forms.
Of course, if you're working on something boring and yet still interested enough in improving that you're willing to read a bunch of essays and books, you should really consider getting a more interesting job. And right now is the best time for it--the job market is crazy, so you have a decent chance of landing work that is both more interesting and better-paid.
And if you're content as is and not yearning for self-improvement--which is completely reasonable: not everybody can or should prioritize programming very highly--then you're probably not going to follow this blog's advice even with different books.
Definitely true. The original goal was to have such topics mixed throughout, but a strong case can be made for devoting an "edition" to these topics alone. It's something for me to think about for sure.
Before I interviewed at Google, I read the book "Effective Java" Never before have I read something and had an epiphany that not only is someone else is way, way smarter than me, but the advice incredibly powerful and useable. I regularly consult that book, even for non Java stuff.
Hi, could anyone help me with understanding why the lambda papers deserve a whole book? What I understand from the history is that they are a set of papers that define and explain the Scheme programming language.
If so, shouldn't the book be broader by including more of literature on LISP or even AI programming in general?
Although the lambda papers talk about Scheme, that's not what they're really about. They're really about... lambda. The takeaway is that many common features of languages can be thought of as disguised uses of the lambda operator. So lambda is actually the unifying abstraction behind many languages, even if they don't know it.
The original 'Lambda the Ultimate X' papers are very short, so no reason not to give them a try.
2. Some of this stuff is absurdly broad and weirdly pandering.
3. "I have no idea what the copyright implications of this are, so I will be printing out only my own private copy and not making them available publically;" is a totally inadmissible position for a professional programmer to have. The answer is, no, of course you can't make a printed compilation of other people's work and put it up for sale.
> 1. Couldn't he have linked to some of this stuff?
Probably, but as far as I can tell it's all a Google search away.
> 2. ... weirdly pandering.
Pandering to whom?
> 3. ... is a totally inadmissible position
This one has me flummoxed. Should I, as a professional programmer, have a complete working knowledge of copyright law? As it turns out, I do not, so I erred on the side of safety and never offered any of the articles up for sale. Or did you miss that minor fact?
Thank you for the reply. I think some (most?) of the issues that you raise could fall into the purview of book #6 "Software Development Management" -- although what you mention would require a better word on my part than "Management".