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.
Reading code is a great exercise and I've nursed a half-baked post on the topic for years now. However, I'm not sure that code reading is all that's needed.
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.
If I'm going to diverge from read code, write code long enough to do this much reading... I'd rather start with the papers and books recommended for the phd qualifying exam at the top 10 universities.
the qualifying exam is supposed to represent up-to-date, overall understanding of the field as a whole, note that I deliberately made the distinction about time away from reading/writing code...
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?
Give the guy a break, I guess its okay to not know about the copyright implications of sharing someone else's work. As it is, he never mentioned that he intends to put the complication up for sale.
Here's a couple to give an idea of where I'm going. The main thing I would add to the OP's list are books on the squishier topics of emotional intelligence and working as a team.
Also this was transformative for how I approach leadership:
http://sivers.org/ff
Also the Lean Start Up was big in spite of the hype just for articulating how thinking strategically about what you're building and for who can lead you to success.
Hopefully that paints a picture of how I think this list could be better balanced.
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".
7 books of a highly academic programmer.
A highly effective programmer probably should be reading other topics as to be honest, most of programming is laborious non comp Sci stuff.