Code Simplicity: Towards a Science of Programming (Book Review)
Max Kanat-Alexander is no stranger to software development and he bears all his experience on writing this books full of great advice and insight on how to approach application building and software engineering in general. As the Chief Architect for the Bugzilla open source project he is well accustomed to dealing with the idiosyncrasies of writing code in a distributed environment where lots of different people make contributions and where the importance of code simplicity is paramount. What he teaches us is that this simplicity is utterly advantageous for most software projects out there, including you own.
When we think about the way we write code we usually end up with this image of a geek like person stashed somewhere in a basement hacking away at his keyboard to produce the software masterpieces others will use. This picture, apart from being a very crude stereotype, is also very far from the truth. To begin with writing software is by no means a lone endeavour. Most applications are written and maitained by multidisciplinary teams and normally in a very normal looking workplace like any other job. Others would have us believe that programming is some sort of art bordering magic that only very special people can use and be masters at.
Writing software is a social activity and developers must understand all the stake holders in a given project in order to build it to the best of their expectations. It is also a science in the sense that it makes use of established knowledge in order to produce its work.
So, as a social activity it needs a set of foundation principles that form the base this area of human knowledge. This foundation of rules and laws about software development is precisely what this book is about. Max Kanat-Alexander draws from his own experience as a software developer to clarify that which most professional developers have come to empirically accept as the truth about the way code should be written. This book goes a step further and exposes them as laws and principles that software developers should adhere to in order to produce good, maintainable, usable and profitable software.
Starting from the very basic notion of why we write software, the author elaborates around was a good application is. Not only from the user’s point of view, but also from the perspective of the business owner that has to make the most out of his (and his employees) effort.
After reading it, suddenly a lot of the things that I empirically had learnt to consider best practices are clearly demonstrated using a practical approach based on linear formulas that the professional developer can easily apply to her daily experience as a writer of code. Questions like why is it important to write readable code, something that we all accept as a best practice, gain a whole new dimension when we see mathematical formulas applied to it that quantify the need of applying such best practices.
The professional developer that works for someone else will find in this book well founded reasoning that can help her defend the best way of building applications against the short sightedness of manager and business owners, something we all can relate to. Managers and business can also profit from reading this book in order to better understand why those crazy developers keep saying that something will take more time to develop than they think reasonable, in a language that they clearly understand by means of cost and profit analysis as a function of time.
Code Simplicity then goes on demonstrating how these best practices can be achieved and should be implemented in several types of software projects, highlighting important aspects like requirement complexity, intended audience, longevity of the program and many more.
It is really about the recognition of software development as a science that has a series of well-defined and demonstrable laws and principles that should be the basis for any project in this area. A must have for any software developer or entrepreneur who want to build successful applications that truly help people.