views:

315

answers:

8

In a month, I will be starting my freshman year at college, majoring in Software Engineering.

I have read many questions regarding good programming books and good learning resources, and in every one, I have seen references to both "Code Complete" by Steve McConnell and "Patterns of Enterprise Application Architecture" by Martin Fowler.

I have decided that it would be a good idea for me, who is looking towards a career in software development, to buy and read these books, but for now, I would only like to get one of them.

I am no stranger to OOP, as I have spent many years learning PHP and writing my own classes in it, and last year I worked as an intern at a local software development company, where I designed and built software utilities for the company to use in-house (eg a Project Tracker, an Outlook plugin, a Word plugin, and others).

My question therefore is, which book should I buy?

Update

I would like to note, that aside from books on learning specific languages, I have not read any software development books at all. Also, I am familiar with the idea of design patterns, and have already (mostly) absorbed the basic design patterns, as well as most of what is available at SourceMaking.

+8  A: 

Code Complete. It's a must read for every developer.

http://stackoverflow.com/questions/1711/what-is-the-single-most-influential-book-every-programmer-should-read/72412

I would also agree with Bill that the Pragmatic Programmer book is a good read too. Even if you don't purchase Code Complete right now, I would recommend getting it eventually, because someone is going to ask you if you have read it, or it will be mention in conversation. It's one of those books that a lot of people expect you to have at least looked through it.

EDIT:

I also agree with Vines comment: just because you buy one, I would still buy the other eventually too. He's right Refactoring by Martin Fowler is good also.

Kevin
+1 I shouldn't take this long considering how to write my own answer :)
Halvard
Code complete first. But I would get to Patterns of Enterprise Application Development, as well as Refactoring by Fowler, and Gang of Four Design Patterns as soon as I had the time.
Matthew Vines
@Kevin: broken link!
Lazer
Fixed the link.
Kevin
A: 

patterns - just to be different

Steven A. Lowe
+4  A: 

If you happen to have already read The Pragmatic Programmer, it has a lot in common with Code Complete. If you haven't read either of them, go with Code Complete. If you've already read one of those and you already have some prior exposure to design patterns (like reading GoF), then I'd recommend Patterns of Enterprise Application Architecture.

Bill the Lizard
Would you really recommend POEAA to someone who hasn't been exposed to the GoF patterns? I'm not sure I would.
Thomas Owens
@Thomas: I'm sure I wouldn't, but it wasn't on the table. (Head First Design Patterns is *probably* enough introduction to patterns to grok POEAA, but definitely some prior pattern exposure is needed.)
Bill the Lizard
I edited my answer to reflect that. Thanks.
Bill the Lizard
+4  A: 

I feel that those two books cover really different areas. If you haven't read either of them I would suggest Code Complete, as this has the building blocks that every programmer should know. Later, once you have mastered those, to develop further into patterns and practices and the large scale problems, Martin Fowler's book is a good resource.

Halvard
+1  A: 

I thnik, Code Complete can be used as first steps into practical development. "Patterns" needs more expirience, and they gives answers for concrete practical questions.

Alex_L
+1  A: 

Code Complete 2 and/or The Pragmatic Programmer are my first picks. However, if you have read either Code Complete 1 or Pragmatic, I would recommend something totally different...

If you aren't familiar with design patterns, I would recommend the Gang of Four book before Patterns of Enterprise Application Architecture. It not only covers the most essential design patterns for any system, it also talks about patterns in a general sense - explaining their purpose and how (and how not) to use them.

Thomas Owens
A: 

Code Complete 2 will be immediately useful. Patterns of Enterprise Application is something VERY useful, but which only starts to make sense when you see huge, sprawling applications, which is definitely not something you are likely to see at college.

It's a great book, and I eagerly await Martin's next book, but... Speaking of Martin's next book, you know what? On his site there is lot's of stuff related to that book, including some of its patterns. Go look for your self here.

Daniel
+1  A: 

They are different books dealing with two different areas of software development, if you want to call it that. Code Complete is giving you advice on coding. It does not matter whether you adhere to any particular architectural style, whether you use object oriented or procedural programming or languages like PROLOG. It still has the potential to make you a better programmer no matter how much you know about architecture. So go with Code Complete regardless of whether you buy the other book. And since you are just entering college, it will give you a good start.

Now coming to Patterns of Enterprise Application Architecture; once you have a little bit of programming experience in more than one domain, say web based and windows based programming, and/or in more than one languages, or you have contributed/looked at some mid-sized to enterprise size projects or even good looked at some well-coded and well-structured open source projects, that's when you will start appreciating and really learning from this book. Trust me, its very difficult to follow and implement the advice in these architecture type of books unless you are really exposed to the problems on the field. For example, after reading it, you will not be able to say, aah, I should have done it this way, if you haven't written or played with more than beginner level code.

Hope this helps.

desigeek