There are times in our careers where we have to branch out and learn more than just the next technology or tools. After a few years we find that the difference between junior and senior, getting by and excelling, is not just learning new technologies and tools, but also learning from our experiences and the experiences of others.
For the next few weeks I'll be posting book selections from my home shelves. This first book selection is for developers, with Architecture (software and business), Management (Project and People), and Data in upcoming posts.
To be honest I was going to post it all at once, but just got too long.
The role of developer means something different at each company. Some developers spend their day producing code, others are expected to do everything from strategic planning to infrastructure maintenance with more occasional coding. Over the years I've managed to do work in both flavors, but the core of both has been the ability to deliver a solution by understanding requirements, providing estimates, constructing software, and delivering a working solution.
Code Complete: A Practical Handbook of Software Construction
Code Complete covers all aspects of code construction, good practices for writing code, how (and the importance) of debugging, project planning for the planner and plannee, software architecture, testing and QA...the list goes on. Code Complete includes a combination of personal experience, case study finding, and experiences from others in an attempt to provide a well rounded picture, with a focus on proven, good practices. There are companies that require this book as part of the rite of passage from junior to senior developer, but I would suggest it to any developer that has not read it. Read it end-to-end, or consume it one chapter at a time, this book is a must-read.
Joel on Software
Joel on Software is a collection of essays written by Joel Spolsky during the 2000-2003 time period. Although the content is available online, the book groups those individual essays into topics, making the more general topics more accessible as well as providing Joel the opportunity to add additional commentary on older material. Joel shares his opinions and experience on everything from interviewing to strategy, management to coding in the trenches. The book is an enjoyable read and provides a well thought out viewpoint that is more than worth reading even when you disagree with it.
No one person is going to have a perfect set of advice, but a good book can augment our own experience as well as provide contrast or definition to help us better evaluate our own experiences. These are not the only two developer-centric books I would suggest, but were I building a development plan to take a developer to the next level, I would require both of these.