|Seriously Good Software
Author: Marco Faella
This is another one of those "program better" self-improvement books and if you have alreay read one then you probably don't want to read this one. However, if you haven't and you program in Java then this might be worth thinking about. Although the book contains some comments about C# and some very general ideas, the ideal reader should be reasonably well versed in Java as it is the language used for the central example. This is a project to model the filling and emptying of water tanks and while it is unlikely that any reader will find it intrinsically interesting it serves as a single example throughout the book so at least you aren't distracted by having to find out about any others. You also get the experience of seeing the same reasonably substantial example rewritten and examined multiple times.
The idea of the book is to teach the reader the basics of what any good programmer should know - data structures, optimization, testing, concurrency etc. They are not taught in an academic way, but as part of actually creating a program.
The book is divided into two parts. The first part is very short and consists of two chapters introducing the ideas of software qualities i.e. what are we trying to improve and the introduction of the example that runs though the book.
The second part is where most of the action is. It consists of a set of chapters which look at each aspect of software quality introduced in the first section. The first chapter is called "Need for Speed" and goes over ideas of time complexity by introducing different possible data structures and algorithms for the example. This is interesting, but less useful if you are not familiar with data structures. In case you are worried that a single example isn't going to be enough, each chapter ends with a "And now for something completely different" - a section of challenges for you to apply the new ideas to. There are also small quiz questions thoughout which check that you are still awake - answers at the end. Yes, overall it is an entertaining read as long as you are up for the unstructured, learning-by-example, approach.
From here the book moves in the same spirit though space efficiency, design by contract, testing, readability, thread safety and reusability - one chapter per topic. Here the Java comes more to the fore. It uses JUnit for testing and Java locks for thread safety, but the general points are still good.
This isn't an essential book to read. I'd also say that you would get more out of it if you had suffered a formal course on some of the topics and wanted something to relate it all to the real world. If you are lacking in the core ideas then I think this book would be insufficient, apart from making you realize that there is more to learn. It is also difficult to say what the specific learning achievements are in reading the book, apart from "I must do better".
Not a book for everyone but well-written and a nice read.
|Last Updated ( Saturday, 14 May 2022 )