Hacker News new | comments | show | ask | jobs | submit login

I think this should be:

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.

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.

Notably missing: any topic covering networked applications, servers, or version control.

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.

"A Note On Distributed Computing", Jim Waldo, Geoff Wyant, Ann Wollrath, Sam Kendall.

That would indeed be on my list of networking papers.

And what books would you recommend instead?

None at all. Id recommend reading other people's code and thinking about it for a while.

Just out of curiosity: if you (or anyone else!) had to make a "must read code" list, what would be on it?

Gcc,gnome,openoffice - how not to do something.

FreeBSD,llvm,trac,vim - how to use sound engineering.

Anything written by Peter Norvig or D Richard Hipp.

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.

What is considered good code to read?

If I knew the answer (of at least thought I did) then I could probably finish that post. ;-)

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.

Code Complete 2

Seven Languages in Seven Weeks

The Art of Unix Programming

Clean Code

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | DMCA | Apply to YC | Contact