Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I'm a junior C# developer, I learned at home and now I got my first job :)

I want to buy these books. But what is the correct order to read these books?

Code Complete: A Practical Handbook of Software Construction

Clean Code: A Handbook of Agile Software Craftsmanship

Pragmatic Programmer

share|improve this question

closed as not constructive by ChrisF Sep 20 '12 at 8:43

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

There is no correct order (as @Oded said). You'll likely be reading them (or at least portions of them) over and over again. So pick one, crack the cover and digest :) – Joel Etherton Jul 12 '12 at 12:47
Conventional wisdom says you should start at the first page and end at the last page. ;) – vaughandroid Jul 12 '12 at 14:08
I can't see any reason to downvote. – mmdemirbas Jul 12 '12 at 14:08
+1 to good selection of right books for further improvements – Yusubov Jul 12 '12 at 14:11
Here's another one you might want (many consider it the C#.NET bible): Pro C# 2010 and the .NET 4 platform, fifith edition (they might even have one for .NET 5 and VS 2012 soon). – Linuxios Jul 12 '12 at 14:52
up vote 33 down vote accepted

There is no "correct" order to reading these books.

They each focus on different aspects of software engineering.

  • Clean Code - focuses on coding in the small. How to write classes and functions.
  • Code Complete - focuses on the processes of software engineering.
  • Pragmatic Programmer - focuses on working within a team producing software.
share|improve this answer
@Downvoter - care to comment? – Oded Jul 18 '12 at 20:03

Congrats on getting your first job! And you really made good book choices!

These books are master pieces for every programmer to read at least once.

From my personal experience i would advice to read books interchangeably. It is a fact that you may get tired/bored from one book, and switching to related book will make you re-focus and behind the scene your brain will kick off to process the information. Thus, you may maximum benefit from this process.

Edit: as mentioned in comment, it is a kinda multi-threading solution to add up in efficiency :)

However, don't over-heat yourself. Having more than 3 books might be hard to deal at the same time.

share|improve this answer
I find it amusing that a programmer's solution to a real life issue is to implement multithreading :) – Rotem Jul 12 '12 at 14:08
@Rotem - The reason for that is simple, and much like a regex. Once you start on such a task, your real life issues start looking a lot less serious ;-), – Joris Timmermans Sep 20 '12 at 8:10

I agree with the answers of "no correct order", but I will offer a different spin...

Start and fully digest Code Complete. It's the most basic, most comprehensive basis book. Spend a LOT of time reading and re-reading it. It should give you the most returns if you're a beginner.

share|improve this answer

I only read "Clean Code", and it was very good. Uncle Bob tells you how to become a good Software Craftsman and how to write clean code that is maintainable even in years. So you maybe should read this book first :-) (I wish I had read it earlier).

If you want to get a bigger view (on dependencies between modules) I also can recommend his code-casts:

share|improve this answer

I've read Pragmatic Programmer and I'm in the process of reading "Code Complete".

From my experience so far, I think that "Pragmatic Programmer" is a great place to start because it gives a high-level view of different coding issues. I read it over the course of a week; as I read it, I was immediately enlightened of some better ways to solve problems I deal with every day.

"Code Complete" is longer and more exhaustive.

share|improve this answer

I'm also reading those books, here's my order:

  1. Clean Code
  2. Pragmatic Programer
  3. Code Complete
share|improve this answer
Thank you for posting your first answer on Programmers Stack Exchange. Not sure why you had a down vote on this one, but it could be that the down voter was looking for not just a list, but also rationale. If you have not already done so, please read through the FAQ, which includes advice on asking questions and giving answers and is rewarded with a badge Good luck in your future participation on stack exchange. I hope you will find it informative and rewarding. – DeveloperDon Sep 20 '12 at 5:30

These books have high merit.

Often times developers enter into the work knowing mostly what without much detail about why. The three books you picked offer a lot to improve what you do as a programmer, and are good at providing descriptions to back up their prescriptions.

Reading these books will open you to a lot of ideas you might have never imagined. Later, as you gain experience, you will get even more out of these books, relating what you have seen to what they describe.

Together, these books total over 1500 pages. That's a lot of reading, and you are right to prioritize and map out a sequence. I suggest you download the table of contents for all three and score the chapters in each by what you most need now for your job. You could compare and contrast their advice on variable and class naming, but I think if your read about naming once, it would be enough. Similarly, if your team or manager have guidelines, follow them.

Perhaps you can borrow these from a friend or library before buying them. Or maybe even spending a few hours at your local bookstore. If you time box your reading, threading through all three based on your priorities, taking notes on a blank piece of paper, you will find vocabulary and concepts you can apply at work today.

Pragmatic is a great description of the learning approach you want when using these books. There is a lot of overlap between the three, and I think much has been revisited in web accessible sources. There are many things you may find you need that are either not in these books, or are barely touched upon. Consider adding more topics that go beyond the scope of these books:

  • Programming language tutorials.
  • Your organizations specific source control and build tools.
  • Concepts and implementations of data structures in C#.
  • Standard C# class libraries.
  • Coding standards specific to your organization.
  • Testing, probably with MS Test tools.
  • UI / UX design guidelines for your platforms.
  • Applicable design patterns which for C#, I would expect MVVM to be the most critical.

Another consideration I think might help is to consider the publication date, context, and goals of each book. Oldest to newest: Pragmatic 1999, Code Complete 2nd Ed. 2004, Clean Code 2008. Context: Pragmatic lists C, C++, Java in its index but not C#. Code complete is Microsoft Press, written by an ex-Microsoft guy, and because you are working with a Microsoft language, there might be some affinity there, but the index has one entry for C# and it gets less love than Fortran on page 64.

The Robert Martin book is more steeped in the Agile approach than the other two, is the newest, and has some pretty great descriptions of naming, class design, and probably a lot more help with concurrency than the others. It may be a little unfair, but the later books can talk about more stuff and newer stuff, and their context is generally more like what we do today.

Each of these books to some extent competes in a similar range of topics. Kind of makes you want to ask, "What newer, broadly scoped programming books are competing in the same space?"

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.