Jeremy Bytes

byte-sized chunks of .NET

Skip Navigation Links

Here are some of the books on my bookshelf. I'll be expanding this section periodically, so please be sure to check back. If you have any recommendations, be sure to drop me a note and let me know. Note: The Amazon links are only for convenience; I'm not getting any type of kick-back.


Object-Oriented Technology

Object Technology: A Manager's Guide
David A. Taylor, Ph.D.
ISBN: 0-201-3044-7
This is a brief, non-technical overview of object-oriented design concepts. As the title implies, this is designed for folks needing a overview without necessarily getting into the implementation details. I recommend this to my non-technical colleagues (such as project managers and business analysts) as well as programmers who are brand new to object-oriented concepts.
Object Thinking
David West
Microsoft Press
ISBN: 0-7356-1965-4
David West covers object-oriented design by examining different approaches and presenting a case for his particular one. He has an interesting approach in explaining the differences as cultural rather than technical. It helped me understand why programmers with different backgrounds approach things the way they do. West's approach to designing object hierarchies is to base them on their behavior, not their data. I highly recommend this to any developers serious about object-oriented design.
Expert C# 2008 Business Objects
Rockford Lhotka
ISBN: 978-1-4302-1019-1
This is the instruction book for CSLA (for more information on CSLA, visit CSLA is a business object framework that I have been using for several years with much success. There are three primary sections: first, a description of the base business classes available in the framework; next, a detailed look into the inner workings of the base classes; and finally, an example implementation of a business library with WPF and WCF interfaces. For folks who are interested in using CSLA in their applications, I recommend the first and final sections. The middle section is for the people who want to peek under the hood.

Specific .NET Technologies

Parallel Programming with Microsoft .NET
Colin Campbell, Ralph Johnson, Ade Miller, Stephen Toub
ISBN: 978-0-7356-5159-0
This is a very approachable, short overview of patterns and best practices for parallel programming. If you want to learn more about the Task Parallel Library (TPL) or PLINQ, this is a good place to start. Full review available here: Book Review: Parallel Programming with Microsoft .NET
Adam Freeman
ISBN: 978-1430242369
This is the 4th edition of the ASP.NET MVC book (I reviewed the 2nd edition a while back). The first part is a practical approach to showing ASP.NET MVC features through a sample application. The second part goes into details of the framework and even how to extend it yourself. Recommended for anyone wanting to dig into ASP.NET MVC. A more complete review available here: Book Review: Pro ASP.NET MVC 4
Building Windows 8 Apps with C# and XAML
Jeremy Likness
ISBN: 978-0-321-82216-1
Unfortunately, this book did not live up to my expectations. I'm still looking for a Windows 8/XAML book that I can recommend. A brief review is available: Book Review: Building Windows 8 Apps with C# and XAML.
Async in C# 5.0
Alex Davies
ISBN: 978-1-449-33716-2
A short, quick read (only 92 pages) with lots of good tips for using "async" and "await" in C# 5.0. A bit more information here: Book Review: Async in C# 5.0.
Professional .NET Framework 2.0
Joe Duffy
ISBN: 978-0-7645-7135-0
This is a book from 2006 that might seem dated. But Joe Duffy (a program manager on the Common Language Runtime team) provides some good insight for anyone wanting to take a little deeper dive into the IL that gets generated by the Visual Studio compiler. A bit more explanation is available available here: Book Review: Professional .NET Framework 2.0.
Programming Razor
Jess Chadwick
ISBN: 978-1-449-30676-2
This is a short book (99 pages) that describes the Razor templating syntax that can be used with ASP.NET MVC and WebMatrix. This provided the information I was looking for on how to use the Razor syntax, but unfortunately, the sample code was inconsistent and provided some difficulties. If you can get a discounted copy, I would recommend it. But it's difficult to recommend at the cover price based on the quality of the samples. I have a more complete review available here: Book Review: Programming Razor.
Pro ASP.NET MVC 2 Framework
Steven Sanderson
ISBN: 978-1-4302-2886-8
This is a great book on ASP.NET MVC. It is more than an introduction or overview; it also goes into details of the framework and even how to extend it yourself. I have a more complete review available here: Book Review: Pro ASP.NET MVC 2 Framework.
C# 4.0 in a Nutshell: The Definitive Reference
Joseph Albahari & Ben Albahari
ISBN: 987-0-596-80095-6
This is an excellent resource -- although the authors do have an interesting definition of "nutshell" since the book tops out at over 1,000 pages. This is recommended for intermediate C# programmers or for experienced programmers who are new to C#. I have a more complete review available here: Book Review: C# 4.0 in a Nutshell.
Pro Silverlight 3 in C#
Matthew MacDonald
ISBN: 978-1-4302-2381-8
Pro Silverlight 3 is an excellent resource for all things Silverlight. The majority of the features are covered at a good level of detail. The writing is very clear, and the examples are relevant. I have also read Pro Silverlight 2 in C# 2008. The Silverlight 3 version added several hundred pages. The Silverlight 4 version will be out shortly and appears to have added quite a bit more information. Highly recommended as a general Silverlight reference. There is also a VB version available if that is your language of choice.
Data-Driven Services with Silverlight 2
John Papa
ISBN: 978-0-596-52309-1
I really want an update to this excellent book. This is a fairly short book that covers the majority of the data access options available in Silverlight 2, from WCF Services to Entity Framwork to Web Services and lots of things in between. It covers the issues of cross-site permissions and how to code to accommodate them. This is still an excellent book for getting started with data-driven Silverlight apps. I'd love to see an update that includes RIA Services and other recent options. John Papa has since moved to Microsoft and seems to be concentrating on the MVVM world, so unfortunately, I don't think I'll get my wish. I have a more complete review on my blog: Book Review - Data-Driven Services with Silverlight 2
Learning WCF
Michele Leroux Bustamante
ISBN: 978-0-596-10162-6
Michele Leroux Bustamante takes you step by step through using WCF. This book is filled to the brim with labs and samples. My copy is quite dog-eared, and I've gone through all of the labs. This is an excellent hands-on resource for learning WCF (using .NET 3.5 SP1). Rumors are that there is an updated version coming out soon.
Pro WPF in C# 2008
Matthew MacDonald
ISBN: 1-59059-955-1
Matthew MacDonald provides a comprehensive resource for WPF. This book spans 1,000 pages and includes lots of samples and practical references. Highly recommended for anyone interested in using WPF. A new version for 2010 has recently been released, and there is also a VB version available.
ASP.NET MVC Framework Unleashed
Stephen Walther
ISBN: 0-672-32998-0
I was rather disappointed with this book. You can read a review on my blog here: Book Review: ASP.NET MVC Framework Unleashed. Give this book a pass. I'm looking for a good MVC reference, but I'm waiting for the MVC 2 books to come out.

General Programming / Best Practices

The Agile Samurai: How Agile Masters Deliver Great Software
Jonathan Rasmusson
Pragmatic Bookshelf
ISBN: 978-1-93435-658-6
This is a good introduction to Agile process and techniques. The advice is practical, and I recognized some of the practices from my own projects that helped make them successful. A more detailed review is available on my blog: Book Review: The Agile Samurai
Test-Driven Development By Example
Kent Beck
ISBN: 978-0-321-14653-3
Test-Driven Development By Example walks us through several examples of how to think is small chunks. This gives us the chance to build applications incrementally and have the design evolve naturally based on what the app really needs. You can check my blog for additional thoughts: Book Review: Test-Driven Development By Example
Working Effectively with Legacy Code
Michael C. Feathers
Prentice Hall
ISBN: 978-0-13-117705-5
Working Effectively with Legacy Code is all about refactoring code to make it testable. Once tests are in place, we are free to modify the code to add the features that we need. You can check my blog for additional thoughts: Book Review: Working Effectively with Legacy Code
Code: The Hidden Language of Computer Hardware and Software
Charles Petzold
Microsoft Press
ISBN: 978-0-7356-1131-3
This is not really a programming book; it is a description of how computers work. Designed for the layman, it starts off with the basics of codes (Morse Code, Braille, binary codes) and then moves on to how to communicate those codes using electro-mechanical relays (such as telegraph relays). From there, it talks about how these relays can be combined in various ways to create logical operations and built up to a simple adder -- the basic building block of computer hardware. The components are pieced together from the earliest computers to modern machines (well, almost modern -- the book was written in 1999). As a non-CS major, I found this book to be very approachable and it gave me a good understanding of how software can be turned into instructions for the hardware.
Effective C#: 50 Specific Ways to Improve Your C# (2nd Edition)
Bill Wagner
ISBN: 978-0-321-65870-8
This is a great set of tips and best practices for intermediate/advanced developers. You can check out a full review on my blog here: Book Review: Effective C# - Second Edition
The Passionate Programmer: Creating a Remarkable Career in Software Development
Chad Fowler
Pragmatic Life
ISBN: 1-934356-34-4
This is an excellent guide to improving yourself and your career as a programmer. 53 short sections give practical advice to improve your chances for success. As an example, one section is titled "Be the Worst". This sounds counter-intuitive, but the idea is that you don't want to be the smartest programmer in the room; this can cause your performance to stagnate. If you surround yourself with people who are better than you, you will start to perform at the higher level.
The Pragmatic Programmer: From Journeyman to Master
Andrew Hunt & David Thomas
ISBN: 0-201-61622-X
This book covers many different topics on how to improve your programming with 70 tips and a set of checklists. This has a similar feel to the Passionate Programmer (above), but is more technical in nature. The concepts are language agnostic and are of general applicability. Highly recommended for anyone looking to take the next step in improving the quality of his code.
Coders at Work: Reflections on the Craft of Programming
Peter Seibel
ISBN: 978-1-4302-1948-4
This is a series of interviews with the pillars of the development community. I'm still working my way through this one, so I don't have any specific recommendations yet. So far, I'm finding a lot of different insights (and not necessarily consensus). More to come.
The Art of Unit Testing with Examples in C# (2nd Edition)
Roy Osherove
ISBN: 987-1-617290-89-3
This is a great, short, easily-consumable collection of great advice on unit testing. If you are new to unit testing, want to improve your testing techniques, or are trying to figure out how to incorporate unit testing into your work environment, then check this book out. More info in my review: Book Review: The Art of Unit Testing

UX Design

Designing with the Mind in Mind: Simple Guide to Understanding User Interface Design Rules
Jeff Johnson
Morgan Kaufmann Publishers
ISBN: 978-0-12-375030-3
This book goes through how the human mind works, including perception, memory, and learning. We can use this knowledge to give better experiences to our users and also make sure we aren't making things more difficult than they should be. See my blog for a more detailed review: Book Review: Designing with the Mind in Mind
Don't Make Me Think: A Common Sense Approach to Web Usability
Steve Krug
New Riders
ISBN: 987-0-321-34475-5
This is one of the web-design classic references. Krug is a usability consultant by trade, and he shares many of the things that he looks for in a web site. This is a quick read and is full of great advice. I've got more info on my blog: Book Review: Don't Make Me Think
The Design of Everyday Things
Donald A. Norman
Basic Book
ISBN: 978-0-465-06710-7
This book has nothing to do (directly) with software design. But it contains basic principles of how humans interact with the outside world and how design can help or hinder that process. I have a special affinity for this book because Norman describes being "trapped" by a set of doors because it was not apparent whether to push or pull or even which side of the door to interact with. I had similar experience where I was "trapped" on a balcony with a pull handle on the door. I thought the door had somehow locked, so I knocked to have someone let me back in. He simply motioned to "push" on the door, and I was immediately free. Design does make a difference.
Universal Principles of Design
William Lidwell, Kritina Holden, and Jill Butler
Rockport Publishers, Inc.
ISBN: 978-1-59253-587-3
This book is primarily about visual design: how humans perceive the world. Many of the principles apply to product design, visual layout, and physical presence. But they can also be applied to the user interfaces in applications and web sites.

Design Patterns

Head First Design Patterns
Eric Freeman & Elisabeth Freeman
ISBN: 0-596-00712-4
The Head First book series is designed to be extremely approachable. As such, I recommend Head First Design Patterns to junior programmers or programmers who are brand new to design patterns. The examples are very easy to understand, and the writing style keeps you interested and thinking throughout the book. The one disadvantage is that the actual code samples are in Java, but the syntax and concepts are close enough that C# developers would have no problems following along.
Design Patterns: Elements of Reusable Object-Oriented Software
Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides
ISBN: 0-201-63361-2
This is the legendary "Gang of Four" (or GoF) book -- the book that everyone who talks about design patterns will refer to. This is not for the faint of heart. The descriptions and examples are quite technical and take a lot of concentration to follow. When I first purchased this book, it ended up sitting on my shelf for several years until my programming skills and understanding matured. This is an excellent read, just not for the beginner.
Patterns of Enterprise Application Architecture
Martin Fowler
ISBN: 0-321-12742-0
Once you get through the Gang of Four book, Martin Fowler is the next step. This particular book covers patterns you may use when thinking about Enterprise-level applications (with the definition of "Enterprise-level" meaning applications that span an entire business across the various departments). A high recommendation for advanced-level programmers.
Microsoft .NET: Architecting Applications for the Enterprise
Dino Esposito & Andrea Saltarello
Microsoft Press
ISBN: 0-7356-2609-X
Architecting Applications for the Enterprise is in the same vein as the Martin Fowler book. The focus here is more on the top to bottom design (from the data storage layer all the way through to the UI layer) rather than on specific "design patterns", but there are plenty of patterns scattered throughout. The focus of the techniques are around Domain-Driven Design (also known as Entity-based design) which I've seen quite a lot lately. This differs from Object-Oriented Design in that it is focused around interacting with data entities that do not generally have their own behavior. I found this to be a good read, although not applicable to the type of development that I do on a regular basis.
Dependency Injection in .NET
Mark Seemann
ISBN: 1-935182-50-1
While not a book on patterns in general, Dependency Injection in .NET covers quite a few design patterns and other object-oriented programming principles (such as S.O.L.I.D.). You can get a review of the book here: Book Review: Dependency Injection in .NET

Other Languages

These books focus on non-.NET languages.

Learn You a Haskell for Great Good!
Miran Lipovańća
No Starch Press
ISBN: 978-1-59327-283-8
I picked up this book to get started working with functional programming. And I got exactly what I expected. Lots of good information about functional concepts along with how they are incorporated into Haskell. I put this into the "recommended" category for someone wanting to learn a purely functional language. A full review is available here: Book Review: Learn You a Haskell for Great Good!
JavaScript: The Good Parts
Douglas Crockford
ISBN: 978-0-596-51774-8
JavaScript is probably not the language you are thinking of. Douglas Crockford does an excellent job of picking out the useful parts so that we are left with and effective, elegant language. More thoughts are available on my blog: Book Review: JavaScript: The Good Parts

In the Queue

These are the books on my bookshelf waiting to be read (in no particular order).

Refactoring: Improving the Design of Existing Code
Martin Fowler
ISBN: 978-0-201-48567-7
In the queue.
Peopleware: Productive Projects and Teams
Tom DeMarco & Timothy Lister
Dorset House Publishing
ISBN: 978-0-932633-43-9
In the queue.
Refactoring to Patterns
Joshua Kerievsky
ISBN: 978-0-321-21335-8
In the queue.
Head First HTML5 Programming
Eric Freeman & Elisabeth Robson
ISBN: 978-1-449-39054-9
In the queue.
Seven Languages in Seven Weeks
Bruce A. Tate
Pragmatic Bookshelf
ISBN: 978-1-93435-659-3
In the queue.

I'm always picking up new books, so there will be more to come!