Author: Ka Wai Cheung
Publisher: Pragmatic Bookshelf
Aimed at: New programmers
Pros: Readable opinions with some useful advice
Cons: No opportunity to argue
Reviewed by: Sue Gee
Billed as the "guidance you need to get started". Is it useful?
The subtitle "What Real Programmers Do" may not be enough to indicate what this book is about. From the claim "it's about the code you live by" on the back jacket I was expecting a book about "soft skills". But no, although there is some advice about interpersonal relationships, this book ranges over a lot of topics and even discusses code from time to time.
The key to what the book is about comes at the end of the introductory chapter:
This book is about what real, modern-day programmers do to flourish in our industry.
This is a "real-world" book, a collection of wisdom gathered first hand by the author in fifteen years as a programmer. It consists of 50 short essays arranged in seven chapters. Although it is a "short read" you probably wouldn't read it from cover to cover. Instead you can dip into it from time to time more for fun that for instruction, even though you may well take away some valuable lessons. The best way to review it is to try to give you the flavor of the book by picking a few of the topics that appealed to me. Someone else might make a very different selection.
Most of the chapters in this book are on straightforward topics. For example, Chapter 3 Motivation; Chapter 4 Productivity; Chapter 7 Clients. However the first set of essays are in Chapter 2 Metaphor and Essay 1 has the title "Follow Metaphors with Care" which suggests that taking concepts from architecture - wireframes, specifications, workflow diagrams, Gantt charts and waterfall development might be a hindrance rather than a help. Essay 2, "Plan Enough, Then Build" concludes with the idea that
the "plan, plan, plan" metaphor overvalues the time we spend trying to get everything perfect and undervalues the time we could be spending writing the actual code.
I can concur happily with the sentiment of "Launch is Just the First Release" but "Throw Away Your Old Code" gave me pause for thought, which is of course what it is supposed to do. Personally I agreed with "Diversification over Specialization" - but I can imagine that others would disagree vehemently that programmers and interface designers have a lot in common and we should strive towards mastery of multiple disciplines.
There are some very straightforward essay titles in the next chapter: "Stop Programming"; "Work Outside the Bedroom" but the one that caught my eye was "Be Imperfect" that points out that being a perfectionist can be crippling and that its necessary to accept imperfection in order to get the job done.
Titles like "Keep a Personal To-Do List" and "Create "Off-Time" with Your Team" are obvious, but "Just Say No to the Pet Project" required reading and turned out to be about the importance of setting deadlines.
Chapter 5 is on Complexity and starts with "Sniff Out Bad Complexity" and later on expounds on the idea that "Hard to Code Might Mean Hard to Use". The essay "Know when to Refactor" was the one that appealed to me most - was it just because it actually included some code?
Next comes a chapter on Teaching and I was pleased to see the inclusion of "Teach with Obvious Examples" and I also agree with the sentiment expressed in "Lie to Simplify" which argues that to get an idea across you sometimes have to stretch the truth and include white lies.
A highly anecdotal essay, "Demystify the Black Magic of Software" is included Chapter 7 is about the client-developer relationship and "Value Is Much More than Time" is about what to take into account when deciding what to charge. I found both of these well worth reading.
The final set of essays are about how developers relate to code and opens with "Write Code As a Last Resort" - advocating the use of off-the shelf-code or finding a way to automate code-writing. Two gems in this chapter are "Code is the Ultimate Junior Developer" and "Separate Robot Work from Human Work".
Chapter 9, titled Pride, consists of a single, longer. unnumbered essay the central idea of which is that programmers have a marketing problem:
The rest of the world sees programmers as a breed of recluse headphone geeks rather than whet we really are: passionate craftspeople and thinkers.
The chapter goes on to explore how to change the perception so that other people can appreciate our profession with the idea that handing out copies of this book might help.
Overall this book is highly readable thanks to the author's conversational style of writing. There are occasional cartoons which add to the book's entertainment value and readers who are starting out in the industry will benefit for the author's real-world lessons.
The problem that struck me about with putting thought-provoking material in a book is that the reader can't answer back. I can imagine some of these essays would spark an interesting comment stream if they were on a blog instead of in print.