views:

645

answers:

10

There are a number of programming books considered to be absolutely essential (as seen here).

I am fairly novice programmer, and most of what I've learned I've learned by reading various language reference books. Is there any particular order I need to read the "essential" programming books?

Does one book depend on learning the concepts of the other?

To clarify: I am not asking if one book is more valuable than the other, but rather, about the content in each book. e.g. Will I be lost reading Design Patterns if I have not learned the concepts of Code Complete?

Books I'm referring to are:

And of course

Are there any books I'm leaving off the "essential" list that I should read before diving into the above? Are there any prerequisites to these books?

+10  A: 

I don't think it matters particularly in which order you read them as I can't see any obvious dependencies between the ones you've listed.

Dave Webb
A: 

I'd recommend The C Programming Language even if you're not planning to be doing C/C++. It has loads of really sound advice which every programmer really should take on board.

mdresser
Apart from syntax, C# has just about no similarities to C.
Lucas Jones
@person-b: The language is kind of irrelevant anyway, the main reason for suggesting the book was for it's recommendations on coding guidelines which are relevant to any language.
mdresser
+5  A: 

Sure - go read the Pragmatic Programmer. It's short enough and agnostic enough to digest without regard to the particular language, really.

There's no "magic" to picking the order, though. Any order is fine but what you need to do is figure out what you are lacking as a dev and address that. It's a life-long process.

itsmatt
+5  A: 

I think you need to just start programming. Skip the books for now. You can go back to them later.

Try to find a mentor - that is way better than reading a book or two.

EDIT:

To elaborate - some of those books (especially the ones I recall reading) are better read AFTER having a bunch of experience developing. The concepts/advice might make no sense or have no meaning without having written a bunch of code. This is not to suggest that you should learn everything the hard way - read the books, sure - but your primary tool from which you learn is going to be the practice and experience of designing and coding and debugging. You'll get more out of the books after you have some of that under your belt.

And again, the absolute best way to make big strides is to work with someone who has a lot of good experience and can teach you/show you the right way/best practices.

Tim
+1  A: 

To be honest I did not read any of those. Just start with any book of your favorite programming language and see how far you can go. Then pick the next book. Any book with really coding examples will do.

Holli
+1  A: 

Most of these are books for intermediate programmers rather than novice programmers.

Code Complete is an exception which will definitely help. I'd recommend reading that first.

I'd leave Design Patterns and Refactoring to last, preferably until you've read some other text or reference that gives you familiarity with object oriented principles more generally. These books build on fundamental concepts and will be mostly useless until you understand those concepts.

Read the other books as they suit you, bearing in mind that a couple of them seem quite academic and are more about long term development than anything that will have immediate practical benefit.

Kylotan
+2  A: 

If you are a very beginner programmer, the most books you listed are too early for you.

Otherwise, I will suggest this partial order:

Foundation/algorithm group:

  1. The Structure and Interpretation of Computer Programs
  2. Introduction to Algorithms

And coding group:

  1. The Pragmatic Programmer
  2. Code Complete

And design group:

  1. Refactoring
  2. Design Patterns

And another group:

  1. Mythical Man-Month

This just is my opinion. Between groups, there are no suggestion order at all.

kcwu
+2  A: 

Learn Python. Start writing code.

Read The Pragmatic Programmer, cover to cover, and Section I: Foundations in Introduction to Algorithms. Keep writing code. Try to apply what you're reading about to your code.

Write lots of code. Contribute to open source projects. Learn Java, and read Effective Java (or, to be equal-opportunity, learn C# and read the equivalent tome). Get a job writing code.

Read The Mythical Man Month and Code Complete. Think about how these apply to your job.

Read Design Patterns, but understand why you shouldn't try to force your code around these patterns. Try to identify where various of the patterns are appropriate in your code.

Read the rest of Introduction to Algorithms and Structure and Interpretation of Computer Programs, and DO THE EXERCISES.

At this point, you're probably being exposed to a lot of Other Peoples' Code. Read Refactoring and Working Effectively with Legacy Code.

Adam Jaskiewicz
A: 

I enjoyed reading Joel on Software, but I'm not sure I'd put it on a list for people starting out in programming. The pragmatic programmer is a good intro, design patterns probably isn't.

Dominic Rodger
A: 

I suggest that you start at the front of them and read all the way to the end.

seanyboy