1. Code
Complete by Steve McConnell - Darn near a bible
of software development goodness, Code Complete reminds us of our priorities.
It's essential and everyone who writes code should read this book.
2. The
Pragmatic Programmer by Andrew Hunt and Dave
Thomas - I like to read this book at least every six months or so. It's
clean, clever, clear and full of concrete tips you can use to be a better,
simpler, pragmatic programmer. A new classic.
3. Programming
Pearls by Jon Bentley - This may feel initially
like a C book, but it's really an algorithms book at its heart. It's old school
with techniques and thought problems that can be applied today, even in language
like Ruby and C#.
4. Refactoring:
Improving the Design of Existing Code -by
Fowler, Beck, Brant, Opdyke, Roberts Although the language
used is Java, the concepts are universal. This is a very linear, easy to read,
learn by example book. If you think you know how to refactor, but you haven't
read this book, pick it up and refresh yourself. You'll find names for
Refactorings you've used for years and you'll definitely not only pick up new
ones, but be better able to spot opportunities to use them.
5. Design
of the UNIX Operating System by Maurice J. Bach So few
programmers today can answer questions like "explain how virtual memory is
managed" or "how are Unix processes different from Windows." How did we get
here. Know your history.
6. Design
Patterns by Gamma, Helm, Johnson, Vlissides - One
of the comments on Amazon says it best, "It is expected that any professional
developer has read this book front-to-back. Buy it, read it, then put it in your
bathroom and read it when convenient. Also, when you're done, spend some time at
the Portland Pattern Repository.
7. Working
Effectively with Legacy Code by Michael Feathers -
The book is highly entertaining and comes across as a conversation with a really
sharp, really patient guru developer. Often, it's a chore to slog through
code-heavy books. But Feathers manages to keep my attention with interesting
stories, loads of examples, and well-written text.
8 .The
Cuckoo's Egg by Cliff stoll - A sentimental
favorite, The Cuckoo's Egg seems to have inspired a whole category of
books exploring the quest to capture computer criminals. Still, even several
years after its initial publication and after much imitation, the book remains a
good read with an engaging story line and a critical outlook, as Clifford Stoll
becomes, almost unwillingly, a one-man security force trying to track down
faceless criminals who've invaded the university computer lab he stewards. What
first appears as a 75-cent accounting error in a computer log is eventually
revealed to be a ring of industrial espionage, primarily thanks to Stoll's
persistence and intellectual tenacity. --This text refers to an out of print
or unavailable edition of this title.
9. Head
First Design Patterns by Elisabeth Freeman, Eric Freeman,
Bert Bates, Kathy Sierra - I just started reading it yesterday and it
is a really well written (lots of pictures and examples) and is put in terms
even I understand. Even so early on I would recommend it to anyone wanting an
introduction into design patterns.You may not want to include it is all the
examples are in Java although if you know c# you should understand it and even
the VB / C++ shouldn't have to jump to far.
10. From
Coder to Developer: Tools and Strategies for Delivering
Your Software by Gunderloy and Sybex - started very
interesting. For someone new to the business it gives a nice overview of what
the whole software development process entails and made things a lot clearly for
a new graduate like me.
11. Code
Reading by Spinellis - is a good read for learning
how to quickly and efficiently get to grips with an existing codebase. I'm
fortunate enough to have worked on greenfield stuff my last couple of projects,
but this is gold when starting at a new company and needing to get up to speed.
Also great if you're looking to join an open source project. (http://www.spinellis.gr/codereading/).
12. Writing
Secure Code 2 by Michael Howard - This book
provides a great overview of what techniques are important when writing secure
applications, and what pitfalls to avoid. The book does a good job at making a
point through examples and by explaining possible exploits.
13. The
Mythical Man Month by Brooks - This is a
touchstone book, where by merely mentioning the name, you instantly communicate
a body of knowledge on software engineering insight. It's full of truths about
Software Engineering that are still relevant. 30 years later.
14. Patterns
of Enterprise Application Architecture by Martin
Fowler - Noted software engineering expert, Martin Fowler, turns his
attention to enterprise application development. He helps professionals
understand the complex--yet critical--aspects of architecture. Enables the
reader to make proper choices when faced with a difficult design decision.
15. TCP/IP
Illustrated Volume 1 by W. Tichard Stevens - Even
though this book was published in 1994, it still serves as a useful reference
and learning tool for the TCP/IP protocol. There are of course changes and
additions that have been made to TCP/IP over the last 7 years such as IPv6, but
one can still refer to this book as a good source of information about the
dynamics of TCP/IP. There are exercises at the end of each chapter, so it can,
and has been used as an effective textbook.
16. Don't
Make Me Think: A Common Sense Approach to Web Usability,
2nd Edition by Steve Krug - A practical Web design
usability guide, "Don't Make Me Think!" is based on empirical observation not
exhaustive statistics. Steve Krug's five years of usability consulting and
testing are distilled down to this thin yet gem-filled how-to. Krug observed how
people actually use the Web rather than how we *think* they use it, gleaning key
usability guidelines.
17. The
Inmates are Running the Asylum: Why High Tech Products
Drive Us Crazy and How to Restore the Sanity by Alan
Cooper - It's worth reading this book -- even despite the painful tone
he often takes -- just to pick up on the ideas of creating concrete personas and
how you use them to develop your product. We do that today at Microsoft (at
least in Developer Tools), and it's a highly successful way of not only building
a good product, but also in helping hundreds of developers understand why a
feature is 'in' or 'out', no matter how much they might like it personally.
18. Mastering Reguler
Expressions by Jeffrey E. F.
Friedl - Regular expressions, a powerful tool for manipulating text and
data, are found in scripting languages, editors, programming environments, and
specialized tools. In this book, author Jeffrey Friedl leads you through the
steps of crafting a regular expression that gets the job done. He examines a
variety of tools and uses them in an extensive array of examples, with a major
focus on Perl.
19. Test
Driven Development by Kent Beck - The book teaches
the concepts of TDD by working through two complete sample projects. Along the
way, Beck gives the reader valuable insight into the thought process and
techniques behind successful test-driven development. When the reader has
finished working through these sample projects, he should know enough about TDD
to get started working on a TDD project.
20. Head
Rush Ajax by Brett McLaughlin -
The Head First Labs crew has done it again in this excellent into to Ajax. The
book really gives a great overview of Ajax for both programmers and
non-programmers alike. You don't need to be a rocket scientist to pick this up.
Although the book covers more PHP than I care for, and not enough of XML as I
would like to see, it does an excellent job of covering their bases in a way
that's easy to understand. I highly recommend this book to anyone with little to
no understanding of Ajax. Let's pretty up the web, people!