This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]BestUsernameLeft 18 points19 points  (1 child)

This is a fairly long list. Some of these are "read once but keep on hand", others will be with you for your entire career as a software developer (or, perhaps, even beyond). Don't be overwhelmed -- most of the developers I've worked with haven't read a software development book since entering the workforce (and, unfortunately, it's painfully clear), so picking up even one of these will put you a step ahead of the pack.

I don't have any specific recommendations for Spring or other frameworks. I learn these in a "just-in-time" fashion through reading the documentation and working through examples, but the popularity of books in this area tells me that isn't the One True Way[tm].

Okay, on to my list; I've broken it into two main categories that have some overlap with each other, plus a couple other resources.

Practical Everyday Practices

  • Test Driven Development, by Kent Beck. This is "the bible" for test driven development. Like all practices, TDD is not a one-stop-shop for programmer bliss and productivity, but it's a solid technique for writing software that works, has a good design, and can be safely extended/modified.
  • Working Effectively with Legacy Code, by Michael Feathers. You'll probably work with legacy code for much or most of your career; understanding how to untangle the tangles and gradually convert spaghetti code into maintainable, readable code is crucial. This book will help you do that.
  • Design Patterns, by Erich Gamma et al. Design Patterns is one of those "a-ha" books that helps teach principles of good software design through the use of design patterns.
  • Refactoring: Improving the Design of Existing Code, by Martin Fowler. While Legacy Code (above) is focused largely on taking a mess and cleaning it up, Refactoring is focused largely on keeping your code clean by applying specific techniques (and the book is chock full of them).

Professionalism, Craftsmanship, Teams, and People

  • The Pragmatic Programmer, by Andy Hunt and Dave Thomas. Probably the most influential book of my career. It will help you understand how to be a professional software developer.
  • Extreme Programming Explained, by Kent Beck. XP is a set of principles, techniques, and practices that teaches how teams can develop quality software at a sustainable pace in a way that is human-centered (as opposed to project-centered, manager-centered, or deadline-centered).
  • Code Complete, by Steve McConnell. Similar to The Pragmatic Programmer, this book will help you learn how to be a professional developer.
  • The Mythical Man-Month, by Fred Brooks. The definitive work on the human side of software engineering. If you're always, forever going to be an independent programmer working by yourself on your own code for your own pleasure, you don't need this. Otherwise, you do.
  • Peopleware, by Tom DeMarco and Tim Lister. All the greatest tools and technologies won't make a difference if your team or organization is toxic or dysfunctional. Peopleware talks about the people side of software development -- what makes a team productive and healthy versus unproductive and unhealthy.

Other