Daniel Klein is a radio and television engineer, a programmer and a programming tutor. He currently is in the final stages of finishing his studies of computer science at the University of Applied Sciences Cologne, Germany, writing a thesis about the internal data structures of his own Java Virtual Machine implementation. At his university he also works as a tutor for programming, operating systems and computer graphics for over five years now. He has more than twelve years of experience with lots of programming languages and worked for companies like Goggle, the German Association of Computer Scientists and the former Mobile Scope AG (now InFusio). He maintains his own (mostly German) website and blog at www.hobsoft.de.
| Author | Pete Goodliffe |
|---|---|
| Publisher | No Starch Press |
| PubDate | Januar 2007 |
| Size | 580 pages |
| Reviewer | Daniel Klein |
My first programming job was the one of an assistant programmer in a one man company. My job there was to do the usual things that so called "coding monkeys" get to do. Fix old code, talk to customers about bugs, research how to fix things on your own and once in a while I also got the assignment to implement some algorithm or a small library. Being especially happy with such assignments I dove right into them and two or three days later I usually presented the results to my boss, being quite satisfied with what I had done. Then things often went like this: He sat down at my desk, browsed through my code and said: "That's nice... But there is a better way to do it!" Then we together went through my code, line by line and step by step he explained what and how to do better while he improved it.
This often took a couple hours to complete, in which he probably could have written the whole thing by himself. There was no need for him to do so, in the contrary, he just seemed to do it for fun. Hence, I got paid for this! Back in those days I sometimes wasn't very happy with this procedure, who likes to see a couple days worth of code being mostly replaced, but in retrospect he was the best tutor I've ever had, and I learned an enormous amount from him, which would have taken years of practice otherwise.
I told you this story because the first thought that I had when I held "Code Craft" in my hands was: "This would have been the book that my first boss would have told me to read." And after reading it I still agree. No matter if you have a tutor who wants to guide you through the contents of the book or if you're going to improve your coding skills on your own, this is the book for you.
This book is for developers and programmers of all kinds and age. Neither does it focus on any specific programming language, nor does it expect any special knowledge that should be available beforehand. The reader should only be fluent in a common programming language, so that he is able to understand what the author talks about at all. Maybe a novice could use some guidance, like the author suggests in the preface, especially because a novice sometimes simply won't see the reason behind some of the arguments that are being presented. But especially for this scenario there are questions at the end of every chapter, which can be used to discuss the according topics with a tutor.
Intermediate programmers may easily study the book of their own. Practical experience already should have provided enough situations in which the content of the book might have come handy, and even the professional programmer might get something useful out of it. This book contains enough food of thought to get someone thinking about its own habits, and some of them might probably worth to be changed.
Part 1: At The Code Face
The first part is all about writing code. All usual coding topics are covered: Why code appearance does matter, why it is important to use a consistent style, how to name variables and types, why proper naming is important, how to document code, which tools to use for this, how and when to write comments, how to deal with errors and how to deal with errors of code from others.
Part 2: The Secret Life Of Code
The next part talks about the art and craft of developing code. It is discussed which tools to use when you're writing code, how to use tools effectively, how and why to test code, which types of testing there is and who is supposed to do them, what might go wrong and how to debug these cases, how to build software, why and when efficient code matters and how to write secure programs.
Part 3: The Shape Of Code
Part three discusses the shape of code: Why it is important to write good code in the first place, how to create good software designs, what the foundations of software design are and how to grow code over time. How to manage risks of old code, when decay of code sets in and when it is time to get rid of it.
Part 4: A Herd Of Programmers?
The important topic of how to work in teams is discussed in this part. This includes how to identify programmer attitudes and your natural approach to programming, the characteristics of effective programmers are defined and you'll decide what kind of programmer you are yourself. This helps in realizing what your strengths are and how your weaknesses can be compensated. It continues with more tips about how to effectively work in teams, why source control is essential for software development and why it is vital for good teamwork.
Part 5: Part Of The Process
Writing code isn't everything in a software project. You don't just churn out code, but good foresight and planning also is essential, and this is what part five talks about. It begins with writing software specifications and why we need them, continues with code reviews, discusses what they are good for and how to run them, and it ends with the unbeloved topic of software timescale estimation, why it is so hard to do, practical ways how to do it and how to keep schedules afterwards.
Part 6: View From The Top
In the last part, Goodliffe shows how all parts of the puzzle fit together. He talks about the view from the top, about code development methodologies and processes, programming styles and how they affect your code. He talks about programming disciplines, what their differences are, how to work effectively in your discipline and how to stay on top. Finally he gives an overview of what to do next to continue to improve yourself and mentions some interesting books for further study.
Appendix: Answers and Discussion
It follows a thorough appendix, where Goodliffe discusses possible answers to the questions that he asked at the end of each chapter. He explicitly points out that only few of the questions have a simple 'yes' or 'no' answer, so his explanations only express his thinking and are supposed to get you thinking of your own, to delve deeper into a subject and to improve your programming skills based on your own conclusions.
Goodliffe provides a very thorough book. You can really see that he put a lot of research and experience into it. Experienced programmers probably wouldn't always agree with all of his arguments, which is quite normal for this kind of topics, but they are deliberately written to get you thinking yourself. Goodliffe just gets you started and provides a lot of material to base your thoughts on. So if you're looking for a "Code Craft Cookbook", this book very likely is not suited for you. But if you want to learn and improve yourself, get aware of your strengths and weaknesses and strive to expand your horizon, then "Code Craft" is the perfect fit for you.
| Relevance | |
|---|---|
| Readability | |
| Overall | |
Purchase Code Craft: The Practice of Writing Excellent Code on Amazon and help Javalobby.