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.
Categories
Object-Oriented Technology
Object Technology: A Manager's Guide
David A. Taylor, Ph.D.
Addison-Wesley
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
Apress
ISBN: 978-1-4302-1019-1
This is the instruction book for CSLA (for more information on CSLA, visit http://www.lhotka.net). 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
Microsoft
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
Pro ASP.NET MVC 4
Adam Freeman
Apress
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
Addison-Wesley
ISBN: 978-0-321-82216-1
Async in C# 5.0
Alex Davies
O'Reilly
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
Wrox
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
O'Reilly
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
Apress
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
O'Reilly
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
Apress
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
O'Reilly
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
O'Reilly
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
Apress
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
Sams
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
Addison-Wesley
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
Addison-Wesley
ISBN: 978-0-321-65870-8
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
Addison-Wesley
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
Apress
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
Manning
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
O'Reilly
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
Addison-Wesley
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
Addison-Wesley
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
Manning
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
O'Reilly
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
Addison-Wesley
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
Addison-Wesley
ISBN: 978-0-321-21335-8
In the queue.
Head First HTML5 Programming
Eric Freeman & Elisabeth Robson
O'Reilly
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!
|