views:

599

answers:

10

My role at my company is the sole developer, and my experience is limited (I got the job mostly because I'm probably the only person who will do it for the money they're willing to pay - but I digress) compared to the averge developer but more extensive than the average recent grad.

As such I'm looking for some good books to fill in the gaps that the internet (or the few books I already have) can't or doesn't do well. Usually this is in the realm of design patterns, refactoring, testing.

I've looked around and found some books that I think I'd like to buy, but as I'm on a budget, it's more about which to get FIRST as opposed to which to get at all (though I'm very open to suggestions).

  • Patterns of Enterprise Application Architecture - Fowler
  • Refactoring to Patterns - Kerievsky
  • Pragmatic Unit Testing in C# With NUnit - Hunt/Thomas/Hargett
+8  A: 

Personally I've found PoEEA and Refactoring to Patterns pretty hard-going for a cover-to-cover read - although they're both great books to have in your reference library.

I haven't read the NUnit book, but I have read the JUnit equivalent, plus others in the Pragmatic series, and I wouldn't hesitate to recommend the entire starter kit.

If you're looking for an introduction to patterns too, then personally I'd skip GoF, and go for Head First Design Patterns first, then come back to GoF for the deeper explanation.

David Grant
I wish I could upmod x10 solely for the starter kit (can't believe I didn't see it). Add a patterns book to that and it's absolutely everything I'm looking for! I'm going to wait a little bit to mark this as the answer though, in the hopes of further feedback.
SnOrfus
+1 for your opinions on reading PoEEA cover to cover and for recommending Head First Design Patterns. I own and love that book. Informative and fun!
nickohrn
as per your edit about the patterns book: I read the GoF book but found it a bit too abstract. I looked at getting http://www.dofactory.com/Framework/Framework.aspx , but the pricetag is a bit steep atm.
SnOrfus
The starter kit is money, if you are setting up an development environment. PoEEA is a tough read.Head First is a good book for patterns.
Chuck Conway
+6  A: 

The pragmatic Programmer - Hunt & Mason

http://www.codinghorror.com/blog/archives/000103.html

Gabi Davar
Got it. It's a good place to start, but it's more "what to do" and less "how to do it"
SnOrfus
What's the point of getting the book when Jeff outlined the entire book?
Chuck Conway
A: 

I don't know how much C# you know but I find the Murach books to be pretty good primers. Not so good if you've already got good C# though.

Simon
+2  A: 

I enjoyed Head First Design Patterns

Chris Ballance
+2  A: 

I recommend Code Complete 2nd Edition - Steve McConnell. I recently bought Test Driven Development: By Example - Jeff Beck and Design Patterns: Elements of Reusable Object-Oriented Software - GOF.

El Cheicon
+4  A: 

I found Head First Design Patterns to be an excellent intro to the subject. After reading half of the book I was able to better understand descriptions of patterns that weren't in the book, or that I hadn't read yet. Bonus is that it's relatively less expensive than most others.

Jeff Attwood had some interesting things to say about it, in 2005, though.

RKitson
+4  A: 

As mentioned above, Head First Design Patterns is good. I also found Design Patterns Explained to be insightful.

You might also consider a subscription to Safari Online. I've heard good things about them. On the site it says you can view up to 10 books a month.

Other books to consider:

The Pragmatic Programmer and Code Complete

Both of these books are a must read for any software engineer. They cover common pitfalls in everyday developement and they offer sound advice to avoiding common mistakes. As pointed out above. Jeff Atwood outlined the entire pragmatic programmer in a blog post.

Clean Code

This book talks about writing "Clean Code" were The Pragmatic Programmer and Code Complete is more about process and abstract concepts.

Working Effectively with Legacy Code and Refactoring

If you are stuck with a pile of legacy code (legacy code as defined as code without tests), like most of us, then Working Effectivley with Legacy Code and Refactoring are a must read.

Effective C# and More Effective C#

Both books are filled with little nuggets of knowledge for the C# developer. For example in Effective C# the author details the difference between value types and reference types. He explains the problem it is trying to solve and explains the pitfalls of other type implementations in others languages. Other nuggets include: using as and is, how to avoid #if ...#end if and reasoning for implementing ToString() on your objects.

Chuck Conway
looks like a good list. My c# library consists entirely of clr via c# 2nd edition, which I think is phenomenal. Upmodding for the book suggestion: Working Effectively with Legacy Code and Refactoring. Will take a look at it. thank you
SnOrfus
Thanks, I've heard the same thing about CLR c# 2nd edition, I'm going to wait until it comes out for the CLR 4.0 :)
Chuck Conway
Have you read C# 3.0 Design Patterns By Judith Bishop?
Binoj Antony
Thanks for the heads up, I'll take a look at it.
Chuck Conway
+1  A: 

I find I use stuff from Kent Beck's Implementation Patterns far more often than I do PoEAA or other patterns books (though those books are certainly valuable as well).

Working Effectively with Legacy Code is an excellent book if you're in the position of wanting to refactor and test an existing code base. The author rather loosely defines "Legacy Code" as "Existing code that doesn't have tests" so don't assume it's a book about maintaining COBOL apps :)

Not a book, but I'd also highly recommend Misko Hevery's Guide to Writing Testable Code which has links to a lot of the content he's published on his blog and the Google Testing Blog.

John Price
+1  A: 

The original GOF book is definitely a must have.

If you want to see how to implement these patterns using the latest developments in .NET 3.5 / C# 3.0 go for C# 3.0 Design Patterns By Judith Bishop you can also read a limited pages edition of this book here

Another site that provides a good reference to the patterns using C# is the dofactory

Binoj Antony