Sunday, April 08, 2012

Book review: Code Simplicity by Max Kanat-Alexander

Code Simplicity: The Science of Software DesignCode Simplicity: The Science of Software Design by Max Kanat-Alexander
My rating: 3 of 5 stars

There are a number of books out there that address the problem that programmers need to be software engineers at some level. But this may be one of the shortest. And I think that make it approachable to a programmer who does not quite get it that this is something she needs to learn. The only question is if that is possible, or if by the time a programmer realizes she needs to learn these skills, she is ready for something more meaty.

Working with students, post-docs, and remembering my own early career days, one problem in the teaching of programming is that early programming classes tend to be about teaching a programming language, not on how to program to get anything done. I ask students now if they know programming, and I am quick to ask if they used it beyond the programming class, which I have found is almost no value by itself. While part of it is that they do not learn how to use software libraries or other such things that make useful programming possible, the other issue is the need for design, testing, documentation, maintenance, and other areas of software engineering. All of this is pushed aside in the quest to get the machine problem working and turned in. And this shows in their early career, that comments and suggestions about design and software engineering are brushed aside, in the quest to make something that works.

Code Simplicity tries to address it. The tone is conversational, and from the point of view of an experienced developer who has already learned the lessons the hard way so you do not have to. And so you have concepts, examples (some of which are real and detailed), and the take away lessons on matters of software design. Design lessons include recognizing some goals of design, planning on maintenance, planning for changes, deciding what to put in or leave out of a program, simplicity and complexity, and remembering always that the purpose of software is to help people (as opposed to only performing a task).

As a quick introduction, it is what it is, and hard to come up with what can make it better. The only question is if this is a lesson that can be imparted.

Disclaimer: I received a free electronic copy of this book as part of the OReilly Blogger Program
I review for the O'Reilly Blogger Review Program

View all my reviews at
Post a Comment