As part of my commitment to continuously improve myself as a developer I am reading some fantastic books and the following list are books I would recommend:
- The Pragmatic Programmer: From Journeyman to Master
-

-
I have devoted a whole post to my feelings about this book and it is no surprise that it is the 1st on my list. I think this is the book that really got me seriously interested in Agile and prompted me to move beyond my comfort zone. It is language agnostic so should never age and yet still be relevant to huge numbers of people. The pragmatic approach is not really programming as such, more approaches to keep in mind to help you programme. For example, asking yourself "why am I doing this? Is this even worth doing at all?" is something you should incorporate into your daily routine to keep yourself-- and your co-workers-- sane. And that's what makes Pragmatic Programmer such a great book.
- Don't Make Me Think: A Common Sense Approach to Web Usability
-

-
This book is brilliant! The "common sense approach" means it is suitable for all readers, I'd even ask my mum to read it! Many times I found myself saying "Of course, that's so obvious" and yet so over looked. Now in its 2nd edition, this book is written for Web Usability, but I'd go further and suggest that anyone doing front end work read it, and it wouldn't hurt for back end developers to spend a few hours reading it too.
- Test Driven Development
Review coming soon...
- Code Complete: 2nd Edition (Steve McConnell)
-
Widely considered one of the best practical guides to programming, Steve McConnell’s original Code Complete has been helping developers write better software for more than a decade. Now this classic book has been fully updated and revised with leading-edge practices—and hundreds of new code samples—illustrating the art and science of software construction. Capturing the body of knowledge available from research, academia, and everyday commercial practice, McConnell synthesizes the most effective techniques and must-know principles into clear, pragmatic guidance. No matter what your experience level, development environment, or project size, this book will inform and stimulate your thinking—and help you build the highest quality code. Discover the timeless techniques and strategies that help you: •Design for minimum complexity and maximum creativity •Reap the benefits of collaborative development •Apply defensive programming techniques to reduce and flush
out errors •Exploit opportunities to refactor—or evolve—code, and do it
safely •Use construction practices that are right-weight for your
project •Debug problems quickly and effectively •Resolve critical
construction issues early and correctly •Build quality into the
beginning, middle, and end of your project
- Designing Web Usability : The Practice of Simplicity

-
Jakob Neilsen is well known for his usability site, and his career as a usability expert extends back to 1989 when his first book was published. Designing Web Usability is of course a full-on web usability primer, so it's a bit different than the GUI-oriented Cooper books.
- Mastering Regular Expressions, Second Edition

-
Regular expressions--it sounds fairly ordinary in a regular sort of way, so therefore it must be very simple and very straightforward, right? Not quite.
The simple name hides an incredible amount of power when handling textual data with scripting languages such as Perl, Python and awk and more and the programmer that can master regular expressions can master just about anything.
From the off it's necessary to congratulate author Jeffrey Friedl on doing a superb job of asking what can be a very complex subject and breaking it down into digestible chunks that almost anyone can understand.
From the basics of character and pattern matching through to the recognition of complex string patterns and multiple character replacements to "greedy" metacharacters and how to curb their appetite, this is about as comprehensive as it gets.
With a handful of latter chapters devoted to the differences between scripting languages and the way in which they deal with regular expressions and so many examples it'll make your eyes water there's something here for everyone.
- Patterns Of Enterprise Application Architecture (Martin Fowler)
-
Developers of enterprise applications (e.g reservation systems, supply chain programs, financial systems, etc.) face a unique set of challenges, different than those faced by their desktop system and embedded system peers. For this reason, enterprise developers must uncover their own solutions. In this new book, noted software engineering expert Martin Fowler turns his attention to enterprise application development. He helps professionals understand the complex -- yet critical -- aspects of architecture. While architecture is important to all application development, it is particularly critical to the success of an enterprise project, where issues such as performance and concurrent multi-user access are paramount. The book presents patterns (proven solutions to recurring problems) in enterprise architecture, and the context provided by the author enables the reader to make the proper choices when faced with a difficult design decision.
- Design Patterns (Gang Of Four)

-
Design Patterns is based on the idea that there are only so many design problems in computer programming. This book identifies some common program-design problems--such as adapting the interface of one object to that of another object or notifying an object of a change in another object's state--and explains the best ways (not always the obvious ways) that the authors know to solve them. The idea is that you can use the authors' sophisticated design ideas to solve problems that you often waste time solving over and over again in your own programming.
The authors have come up with some ingenious ways to solve some common vexations among object-oriented programmers. Want to build a page-layout program that embeds inline images among characters of various sizes? How about building a program that converts files of one format to another? Chances are, some programmer already has thought of a better solution than you will and the recipes you need are here. Solutions are presented in generalised diagrams of data and logic structures. The idea is that you can take the concepts presented here and adapt them--in whatever language you use--to your individual situation. You may have to read some of the chapters several times before you fully understand them, but when you find a solution in this book, it will make your job easier and your results more elegant.
- Release It! Design and deploy production-ready software (Michael T. Nygard)
-

-
Whether it's in Java, .NET, or Ruby on Rails, getting your application ready to ship is only half the battle. Did you design your system to survivef a sudden rush of visitors from Digg or Slashdot? Or an influx of real world customers from 100 different countries? Are you ready for a world filled with flakey networks, tangled databases, and impatient users?
If you're a developer and don't want to be on call for 3AM for the rest of your life, this book will help.
In Release It!, Michael T. Nygard shows you how to design and architect your application for the harsh realities it will face. You'll learn how to design your application for maximum uptime, performance, and return on investment.
- Applying Domain-Driven Design and Patterns (Jimmy Nilsson)

-
Applying Domain-Driven Design and Patterns is the first complete, practical guide to leveraging patterns, domain-driven design, and test-driven development in .NET environments. Drawing on seminal work by Martin Fowler and Eric Evans, Jimmy Nilsson shows how to customize real-world architectures for any .NET application. You’ll learn how to prepare domain models for application infrastructure; support business rules; provide persistence support; plan for the presentation layer and UI testing; and design for service orientation or aspect orientation. Nilsson illuminates each principle with clear, well-annotated code examples based on C# 2.0, .NET 2.0, and SQL Server 2005. His examples will be valuable both to C# developers and those working with other .NET languages and databases -- or even with other platforms, such as J2EE.
- Refactoring (Martin Fowler)

-
Refactoring is about improving the design of existing code. It is the process of changing a software system in such a way that it does not alter the external behavior of the code, yet improves its internal structure. With refactoring you can even take a bad design and rework it into a good one. This book offers a thorough discussion of the principles of refactoring, including where to spot opportunities for refactoring, and how to set up the required tests. There is also a catalog of more than 40 proven refactorings with details as to when and why to use the refactoring, step by step instructions for implementing it, and an example illustrating how it works The book is written using Java as its principle language, but the ideas are applicable to any OO language.
- Code Leader: Using People, Tools, and Processes to Build Successful Software
Review coming soon...
- The Mythical Man-Month, 20th Anniversary Edition (Frederick P. Brooks)

-
Since the first publication of The Mythical Man-Month in 1975, no software engineer's bookshelf has been complete without it. Many software engineers and computer scientists have claimed to be "on their second or third copy" of the book. Now, Addison-Wesley is proud to present the 20th anniversary edition-and first revised edition ever-of Fred Brooks's now legendary collection of essays on the management of computer programming projects. The 20th Anniversary edition is an updated, enhanced re-release of the Brooks classic. Included are all of the existing essays that were originally presented, with the addition of three new essays assessing the current status of software project management. Brooks's well-known 1986 article, No Silver Bullet, is also included. This 20th Anniversary edition is a major event in computer publishing.
- The Art Of Agile Development (James Shore & Shane Warden)

-
The title says it’s about agile development, but this book is very specifically about Extreme Programming, other agile methodologies aren’t covered. A lot of the content of this book applies to other agile methodologies as well though.
This book does an amazing job of not only showing you what agile development ideally looks like, but also gives a lot of tips and helpful information on how to get to that point. After a thorough introduction on agile development and XP, the book covers a large list of XP values, principles and practices, grouped together in different categories: Thinking, Collaborating, Releasing, Planning and Developing. Each practice is covered very thoroughly and clearly. Finally, the book closes with a few more chapters on how to master your agility as a team after you’ve gotten used to the values, principles and practices covered earlier. This is one of the best books on software development you’ll ever read.
- Rapid Development

-
Corporate and commercial software-development teams all want solutions for one important problem—how to get their high-pressure development schedules under control. In Rapid Development, author Steve McConnell addresses that concern head-on with overall strategies, specific best practices, and valuable tips that help shrink and control development schedules and keep projects moving. Inside, you’ll find: • A rapid-development strategy that can be applied to any project and the best practices to make that strategy work • Candid discussions of great and not-so-great rapid-development practices—estimation, prototyping, forced overtime, motivation, teamwork, rapid-development languages, risk management, and many others • A list of classic mistakes to avoid for rapid-development projects, including creeping requirements, shortchanged quality, and silver-bullet syndrome • Case studies that vividly illustrate what can go wrong, what can go right, and how to tell which direction your project is going Rapid Development is the real-world guide to more efficient applications development.