Book Review: Find the Bug
Find the Bug: A Book of Incorrect Programs
by Adam Barr
306 pages, $34.99
Code in C, Java, Python, Perl, and x86 assembler
No matter how sophisticated your software tools, finding the bugs in your
code (and there will be bugs in your code, unless you're some
hitherto-unknown specimen of programming supercritter) comes down to reading the
source code and finding the bugs. The premise of this new book from Microsoft's
Adam Barr is that one way to become better at finding bugs in source code is to
read buggy source code and identify its problems. Thus, this book: a collection
of fifty short programs (ten in each of the languages he uses), each with a
The buggy programs are grouped into chapters by language, and each language
comes with a syntax review so that you can work with the programs even if that's
not one of your core languages. For each program, Barr explains what it's meant
to do, and then shows you the entire source code. Most of these are the sort of
programming problems that you might ask a candidate to solve on a whiteboard
during a job interview: make change for a dollar, compute a bowling score,
provide a helper function for some game, and so on. After the source code, there
are some suggestions of things to look for, and then some more blatant hints.
Finally, Barr explains the bug in detail and offers a code fix.
Around the chapters of source code you'll find some motivational material on
reading source code as well as a taxonomy of common types of bugs (though I
suspect most programmers will find uncommon ways to insert bugs as well). The
style is quite light and easy, and I had fun working through the code looking
for the silly things other people did - and remembering equally silly things
that I'd done myself.
In addition to honing your skills at finding your own bugs, this book has
another valuable point: it can make you a better code reviewer. With all the
techniques we have for helping make our code better, full source code reviews
still stand out as one of the most valuable. But reviews are most useful if
they're performed by people who look carefully at the code with an eye towards
actually spotting logical errors, rather than checking for syntactical
correctness (we have compilers for that). Go through these fifty exercises, and
you'll be a better code reviewer. Your colleagues might not like that, but in
the end the quality of your company's products will.
Mike Gunderloy has been developing software for a quarter-century now, and writing about it for nearly as long. He walked away from a .NET development career in 2006 and has been a happy Rails user ever since. Mike blogs at A Fresh Cup.