Guest review: “Solid Code: Optimizing the Software Development Life Cycle”

Here’s to Darren Neimke, of gorgeous Adelaide (where my brother and I were paraded in suits in front of distant relatives once upon a time), who was generous enough to post a positive comment on Twitter about the book and then to respond to our idea of reviewing the book more fully. Thank you, Darren! 

 

Darren here. I recently finished reading the latest Microsoft Press book for managing the development process titled Solid Code . Reading this book was a very enjoyable and thought-provoking journey, which covered the major aspects of what I believe it takes to produce quality software.

A Manual for the Lead Developer

A few years ago I had a dream of writing a book which was targeted at the Lead Developer (or developers who aspired to that role). The intent of such a book was to provide a thorough manual of what it takes to produce quality software. As anyone who has done this role before will know, it takes much more than just writing optimal code – although that is certainly a part of it! And anyway, the manual for writing optimal code was produced a long time ago… it is called Code Complete.

Producing quality software requires a broader understanding; it’s about understanding what makes up quality processes, team development, stakeholder engagement, leadership, good management, and of course code quality. And at the environmental level, it’s about balancing the effect that each of these have on the development process. It requires a broader view. I believe that Solid Code is the type of book that I had envisaged for this purpose.

Creative Dreaming

The book itself is well organized and walks us through the design –> code –> test –> improve mindset that exists in the modern world of development. The mindset of the book is continuous improvement and looks at the typical development tasks through broader topics such as Performance, Scalability, Security, and Process Improvement.

This book is extremely pragmatic and approaches its topic from a cultural angle that is needed to have a true impact on the mental models and assumptions of those who wish to drive the engineering process and to develop better teams around them. For example, it takes the time to explain in good detail the effect of memory management on performance and scalability and gives the reader a clear understanding of how to implement best practice solutions with this in mind.

Solid Code is modern and gives attention to important topics such as automation and build processes. It also gives credence to the fact that programming is as much a creative exercise as it is analytical and provides the reader with the creative space to explore the role of modeling and prototyping in the design phase, topics that will surely come under greater scrutiny as the trend towards greater design and analysis time for software increases. During this section of the book I found my mind opening to the real possibilities for things such as combining Oslo modeling tools, Sketch View prototyping tools, and Visual Studio’s code design tooling. One of many creative dreaming excursions that I wandered into during my reading of the book!

Through all of this, Solid Code speaks to the soul of the developer, right down to providing an abundance of great quotes that link abstract topics to real world feelings and emotions…a la Code Complete!

Conclusion

If you are a software developer and you believe in continuous improvement, then there is a great deal for you in this book. It’s one of those manuals that I believe you will pick up many times as you strive to find ways to improve various aspects of what you do.