Ask HN: What's the best development book you've read?
I've heard a lot about Code Complete and The Pragmatic Programmer. Are these still the must reads? Are there others that you highly recommend?
10 comments
"Coders At Work" http://www.codersatwork.com/ It doesn't have either code or very specific recommendations. It's a number of interviews with great programmers. Reading it is like talking to brightest minds in programming and getting precious pieces of advice from them. How they approach problems, debug, what tools use, how they came to programming and why they love it. For me that book was a huge injection of inspiration to master my programming skills and enjoy programming.
I just finished reading the Pragmatic Programmer for the first time and felt that it was pretty much a letdown. For one, it makes a huge number of claims but does not back up these claims by any empirical evidence (even though I think it's mostly right, and that empirical evidence for some of their claims exists). Two, I feel like an undergraduate software course covers 75% of the material in the book (at least mine did). Maybe people have learned since it was first published, or maybe I've just worked on pretty good teams that practiced the stuff, but nothing in there was ground breaking or made me a better developer. Three, there was a lot of filler in the book, summaries, talking about future, and past chapters, etc that added no value except to inflate the page count.
I feel like Pragmatic Programmer would be a good book to read before starting your first job, or maybe your undergraduate year of college.
I was going to start Code Complete next, but Pragmatic Programmer was so disappointing I decided to read fiction for the next few weeks instead.
So to answer your question, the best language agnostic development books I've read are:
1. Joel on Software: And on Diverse and Occasionally Related Matters That Will Prove of Interest to Software Developers, Designers, and Managers, and to Those Who, Whether by Good Fortune or Ill Luck, Work with Them in Some Capacity
2. The Best Software Writing I
3. Hackers and Painters
I always wish Joel would come out with a second volume of #2, or to start his blog up again. I've yet to find something that equals his quality since he stopped writing.
I feel like Pragmatic Programmer would be a good book to read before starting your first job, or maybe your undergraduate year of college.
I was going to start Code Complete next, but Pragmatic Programmer was so disappointing I decided to read fiction for the next few weeks instead.
So to answer your question, the best language agnostic development books I've read are:
1. Joel on Software: And on Diverse and Occasionally Related Matters That Will Prove of Interest to Software Developers, Designers, and Managers, and to Those Who, Whether by Good Fortune or Ill Luck, Work with Them in Some Capacity
2. The Best Software Writing I
3. Hackers and Painters
I always wish Joel would come out with a second volume of #2, or to start his blog up again. I've yet to find something that equals his quality since he stopped writing.
it makes a huge number of claims but does not back up these claims by any empirical evidence
Name a book that does! The corpus of evidence in our field is quite weak and doesn't support almost any interesting claim you might make about it. For example, there's no empirical data supporting version control [1].
There are books that purport to derive software development lessons from the research literature, but they're either not very good (because they rely on crappy studies and/or go beyond what the studies support) or not very interesting (because they merely transcribe the results of very narrow studies). An anthology of the literature was published recently [2], and it falls in the latter category. I bought it to get the state of the art in empirical research and found it contained almost nothing of use to me as a practitioner. Many of the studies were shoddy (e.g. qualitative case histories--a euphemism for "anecdote") and the better ones are so careful to limit themselves to the tiny experiments they did that you can't derive anything from them. I could mention a couple of exceptions, though, if anyone's interested.
I think the root problem is that software development is complicated, so to do rigorous formal studies on it is expensive. The amount of funding available for this work is a drop in the bucket of what it would need to be. In short, the market value of empirical evidence on software development isn't high enough for anyone to pay for it.
[1] http://neverworkintheory.org/2012/12/12/empirical-evidence-f.... and http://neverworkintheory.org/2012/12/30/why-we-need-evidence.... Notice that the HN discussion of the first post completely failed to answer its question: https://news.ycombinator.com/item?id=4931251.
[2] http://www.amazon.com/Making-Software-Really-Works-Believe/d...
Name a book that does! The corpus of evidence in our field is quite weak and doesn't support almost any interesting claim you might make about it. For example, there's no empirical data supporting version control [1].
There are books that purport to derive software development lessons from the research literature, but they're either not very good (because they rely on crappy studies and/or go beyond what the studies support) or not very interesting (because they merely transcribe the results of very narrow studies). An anthology of the literature was published recently [2], and it falls in the latter category. I bought it to get the state of the art in empirical research and found it contained almost nothing of use to me as a practitioner. Many of the studies were shoddy (e.g. qualitative case histories--a euphemism for "anecdote") and the better ones are so careful to limit themselves to the tiny experiments they did that you can't derive anything from them. I could mention a couple of exceptions, though, if anyone's interested.
I think the root problem is that software development is complicated, so to do rigorous formal studies on it is expensive. The amount of funding available for this work is a drop in the bucket of what it would need to be. In short, the market value of empirical evidence on software development isn't high enough for anyone to pay for it.
[1] http://neverworkintheory.org/2012/12/12/empirical-evidence-f.... and http://neverworkintheory.org/2012/12/30/why-we-need-evidence.... Notice that the HN discussion of the first post completely failed to answer its question: https://news.ycombinator.com/item?id=4931251.
[2] http://www.amazon.com/Making-Software-Really-Works-Believe/d...
They're both good. I'd definitely read Pragmatic before Complete, and I wouldn't feel bad for not finishing Complete.
Outside the box, I'd recommend Heinlein's Time Enough For Love, for the attitude. Be as self reliant as possible, be as skillful as possible, be as useful to your team as possible. Find or grow an excellent team.
Outside the box, I'd recommend Heinlein's Time Enough For Love, for the attitude. Be as self reliant as possible, be as skillful as possible, be as useful to your team as possible. Find or grow an excellent team.
The book that really helped me was Agile Software Development by Robert Martin. It outlines some of the best principles for writing software that will be high quality and easy to extend and refactor for years to come.
"HACKERS AND PAINTERS"
Hands down one of the best books on software development(without any actual code).
The best bits are:
-It comes from someone who has done some good, really good shit, and owned it out there.(He developed a web based platform a year before Hotmail even came into existence)
-All throughout the book , Paul Graham advocates writing good software,good code. That's all!!
-The book takes a philosophical approach, but is not "a sacred collection of chants", and is hence, awesome.
-Its a collection of his essays , which he has written over years , and hence, traverses changing times and trends.
-Though I strongly recommend that one read it page to page, the author himself claims that you can pick up any chapter from anywhere.
- He is friends with Robert Morris!!!(Come on! He gets to hang out with the guy who "invented" First Computer WORM on the Internet)
The books cleanly talks about and focuses on writing good code and unlike a lot of others, tells why writing code is a craft and not a mere JOB.
The books cleanly talks about and focuses on writing good code and unlike a lot of others, tells why writing code is a craft and not a mere JOB.
Besides the already good technical book suggestions, I am going a bit off the path here, but these books have made me a better developer.
"Endurance" about Sir Ernest Shackleton's incredible failed expedition to the South Pole has a lot of parallels to any software project. Teaches you about setting a high goal, finding the right team, overcoming failure, being scrappy, and keeping your team together inspite of the odds.
Another non-standard book is "Finding Flow" by Mihaly Csikszentmihalyi which is about psychology of happiness at work or life.
Clean Code: A Handbook of Agile Software Craftsmanship by Robert Cecil Martin
The Joy of Clojure
It (kind of) enlightened me as to why OO programming is such a mess. I dont know of any similar, language agnostic book though...
It (kind of) enlightened me as to why OO programming is such a mess. I dont know of any similar, language agnostic book though...
OO programming is a mess if you make a mess out of it. There is very good OO code out there, and there is also very bad code.
Also, functional programming is such a mess.
I think you get my point.
Also, functional programming is such a mess.
I think you get my point.
Can't really single out one book as the best I've read.
But many come close:
- Code Complete - 1st Edition. I have both Editions 1 and 2. Edition 1 is very good and has a lot of stuff worth reading and practicing.
Kernighan and Pike's The Unix Programming Environment.
Kernighan and Ritchie's The C Programming Language.
Would have to think of other good ones, though there are sure to be some.
But many come close:
- Code Complete - 1st Edition. I have both Editions 1 and 2. Edition 1 is very good and has a lot of stuff worth reading and practicing.
Kernighan and Pike's The Unix Programming Environment.
Kernighan and Ritchie's The C Programming Language.
Would have to think of other good ones, though there are sure to be some.
Peopleware.. to understand taeam dynamics