Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Ya know, I would put a lot of the books most programmers have read on the second list. How many have actually read Code Complete (HN is probably a bad sample)?

I totally agree about Design Patterns. That is perhaps the driest (I mistyped that as "direst"; Freudian slip?) technical book (or any book for that matter) I have ever tried (and failed) to read.

Thing is, technical books don't have to be that way. The early Michael Abrash books (eg [1]) are actually highly entertaining. Effective C++ and Java are eminently readable.

I lot of people recommend CLRS and I've certainly studied from parts of it but I found Skiena's The Algorithm Design Manual to be far more approachable and enjoyable. If your goal is to learn I suggest that. CLRS seems more aimed at people who want or need to know mathematical proofs or are bound for postgrad CS.

TAOCP and the Dragon book are classic examples of books that get recommended all the time (on SO, here and elsewhere) but I'm convinced only a handful have actually read them.

[1]: http://www.amazon.com/Zen-Assembly-Language-Knowledge-Progra...



"How many have actually read Code Complete (HN is probably a bad sample)?"

Honestly, how many programmers have actually read any book about programming outside of University classes? I'm guessing not many.

On another note, Effective C++ is not only a great book, it is the book which single-handedly made me a much better programmer, and made me understand C++. This is after half a year of training/working in C++. It is my most highly recommended book for really grokking C++. My only regret is that there isn't a similar book for most of the languages I know.


Honestly, I think there will be a fairly high number of people who regularly read programming books, especially among those who may not have done a CS degree at a university. Personally, I have read dozens of programming books cover-to-cover that are often mentioned on these lists.


To me, for learning Lisp, nothing beats "COMMON LISP: An Interactive Approach" by Shapiro.

While doing the exercises of course (just browsing the pages is not enough).

In contrast, Practical Common Lisp teaches you very little, however it showcases the power of the language very well, and therefore it's easier to sell.


I have! But, I'm a Mathematician invading another world, so probably a bad example...


Why wouldn't people read programming books outside of university classes? How do you improve your craft? Reading is an instrumental part in growing as a developer and as a human being.


You're talking about whether people should. I'm talking about whether people actually do. As for why people wouldn't read, there's one giant reason: people don't care about programming.

Obviously you care, and I care, and arguably most people reading HN care. But I believe that for a large percentage of programmers, programming is just their job. They do it, they get paid for it, and as long as they can keep getting paid for it, they don't need or care to "grow as a developer". It's just not a priority in their life, or even a goal.


I work at a government lab and I see TAOCP all the time on managers' shelves, generally in quite pristine condition. Sure looks classy up there.


I studied mathematics in the 80's, a lot of my peers read the library copies routinely, either systematically from cover to cover, for specific reference, or for fun (flip open at random, see what you get) - maths people love maths books and TAOCP is very much a maths book - since then I've rarely met anyone with am actual volume set that seems to have any idea of the contents.

The Dragon book I still own, a paperbound version that's as dog eared as a book can get and still hang together as it was the reference for three of us working on a few compilers of our own back in the day.

The C Book I no longer have despite having bought four to five copies :( That book's never been much of a boomerang.


I worked at one of the national labs and the books I'd see on shelves were usually ones from when folks were still students. The pristine unread books were either bound copies of the person's dissertation, or books he authored.


How many have actually read Code Complete

Some books are references and some are read throughs. I read Code Complete while in college and thought it really helped my programming. Effective Java is another great book that I've read. The Pragmatic Programmer is another one that I've read that really is worth the time.

Many books are just good references though. Pick it up and read a chapter for example. I think the more experience a programmers gets the less they need to read right through a book. When looking at a book on a particular language I can usually skip the first half because I know the parts that are common across most languages. I only need to know what's different/cool/idiomatic in this particular language.

Algorithm books are another example that falls into mostly the reference category. I don't think I've read any entire algo book, but I have read many chapters from many different algo books that touched on what I needed to learn at the time.


Well, I didn't find Design Patterns as "dry", it was quite entertaining for me. Maybe because I didn't know anything about design patterns when I read it. On the other hand I reread it about 2 years after the first read and I still found it quite interesting.

Also, I've read the whole Code Complete and it was also interesting and I considered it one of the best books for programmers.

As for CLRS - boring as *%&^%#, I just can't manage to get past the sorting chapter. AFAIR there are not exercise answers so one is left alone when doing them, which mostly disqualifies every such book for anyone who is studying it on it's own, not in a class room.

Skiena's book is far, far better written, but unfortunately some of the exercises are to thought for me so when I'm reading my exercises are from 2-3 chapters behind. Although it's good that there is a wiki with (not always correct) answers.

Haven't read TAOCP.


There's a book called "Programming Language Pragmatics", which is a very readable presentation of PL ideas, how to parse them and how to write compilers for them. I actually read 2/3 of it.

http://www.amazon.com/Programming-Language-Pragmatics-Third-...


So happy to see Scott get a bit of recognition on HN. This was my graduate PL text last semester, and I enjoyed reading it before class every week.

As a clear, well-written, thorough text on PL, I can't recommend it more strongly.


This is one of the very few (tech) books I read cover to cover (plus the stuff chapters on disk). If you are intressted in everything from machine up to programming language this is the book for you.


> How many have actually read Code Complete (HN is probably a bad sample)?

I read the second edition cover to cover, and it was worth all the time I spent on it.


I bought Code Complete on a recommendation, and I find that most of it is stuff I've already picked up after programming for about 10 years.


I had the same experience (but after only about five years). I landed on Code Complete a couple years after devouring The Pragmatic Programmer (and requiring my developers to read it), and generally found some good ideas of varying quality buried on mountains of text. I think most of it is right, but after having some experience in the field, it seemed it was targeting all audiences at once, from the newbie to intermediate programmer but also to organizations, managers, and others related to code. It's hard to make a book that's to the point if the book lacks focus.

That said, I've still used it for my research ... although I can often find other sources that say things better, CC2 has made a good starting point for ideas on how to present ideas about code.


I read Design Patterns. The reason it was difficult for me was because they introduced many entities at once, and I couldn't keep track. My solution was to draw a diagram of the entities and their relationships as they were mentioned, and take some time to try to absorb them. While not a mathematical paper, it's closer to it than to regular prose, in that it needs to be studied rather than read.

(BTW: I didn't find it all that interesting conceptually, they're the solutions you'll come up with yourself, just collected and named and categorized. Reading how they solved specific problems was interesting - vicarious experience - though some seemed more whimsical than workmanlike.)


The Dragon book is obligatory course material at several universities (at least here in Uruguay, and Argentina too), so I have a hard time believing only "a handful" have read it (ok, most might have only skimmed it, but that's in the order of hundreds of thousands of students right there).

Ironically, I didn't take the course that required it, and remain ignorant about compilers to this day.


[raises hand]

I've read it cover-to-cover, twice -- the original edition, and the 2nd edition. Brilliant stuff.


Likewise.


Another algorithms book that is IMO more approchable and more practical than CLRS is "Algorithms in C++" by Sedgewick.


Work got me Effective Java to go through, but I don't have enough basic Java knowledge to get through it (I know enough Java to be dangerous). I can program in other languages, though, especially in perl, python, JavaScript and PHP. What book should I read before Effective Java?


When I was in college, I used to program a lot in Java and read a lot of books on Java. I found most of the text lacking and boring. The only book which didn't seem to insult reader's intelligence was Core Java vol 1

http://www.amazon.com/Core-Volume-I-Fundamentals-Edition-Ser...

Read the first 6 chapters very carefully and you will have rock solid foundation. Then skim through event handling, exceptions, streams and generic programming.


Thinking in Java[1] is a nice, thorough book geared toward people with prior programming experience trying to learn Java. It's mainly geared at C++ programmers, but knowledge of C++ is by no means a prerequisite and probably only minimally enhances what you get out of the book. The book has been thoroughly vetted by the community, so it includes few errors.

The older, third edition is also free[2].

[1] http://www.amazon.com/Thinking-Java-Edition-Bruce-Eckel/dp/0...

[2] http://www.mindview.net/Books/TIJ/


Working on a real problem that you want to solve is the best way to learn anything. Don't go through a book -- just bookmark the JDK and make sure you skim through at least String, List, Map, Set, and Iterator.

If you can, find on github some idiomatic code for whatever language you're trying to learn (and take it with a grain of salt -- Spring Framework, for example, has good code in it, but you'd never need to make your solution so complicated because your code doesn't need to be extensible by everyone and their little sister).


The O'Reilly Nutshell books are very good at teaching you just enough to get going in a new language if you have some kind of programming experience in another language.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: