||New Reviews| |Software Methodologies| |Popular Science| |AI/Machine Learning| |Programming| |Java| |Linux/Open Source| |XML| |Software Tools| |Other| |Web| |Tutorials| |All By Date| |All By Title| |Resources| |About||
Keywords: Programming, coding, development, software construction
Title: Code Craft
Author: Peter Goodliffe
Publisher: No Starch Press
Verdict: Packs a lot of useful info.
Books on programming language x, technology y, and methodology z are 10 a penny. Bookshop shelves groan under the weight of books promising to teach programming x, y or z in 21 days, 7 days, 24 hours, 10 minutes, 30 seconds…
Developers are not exempt from the lure of instant wisdom and there are plenty of publishers and authors ready with promises of fast roads to gurudom.
On the other hand, books devoted to the everyday craft of programming are far less common, particularly those that seek to impart the hard lessons gained from long experience churning out code in the real world. Peter Goodliffe's Code Craft is definitely in the latter camp, aiming to be a hard-copy mentor to those just starting out in the world of professional programming.
Adopting a no-nonsense tone from the outset, Goodliffe seeks to guide the reader into the ways of the world - at least that part of the world he calls the code face. To this end, he looks at all aspects of development, from coding through to design, architecture, source control, code reviews, requirements, and more. It's a fairly broad sweep, of course, but Goodliffe addresses the issues from a developer perspective throughout.
Whether it's looking at fundamental religious questions - code layout, braces, spaces versus tabs, variable names, casing of identifiers - or looking at processes and methods such as code reviews or the best use of software configuration management, the book keeps to a central theme: how can I as a developer do the best job I can in less than ideal circumstances? The emphasis is firmly on pointing out the costs and benefits of different approaches and highlighting those that work most successfully.
Inevitably, a book like this is fairly agnostic when it comes to the specifics of programming languages, platforms, and even methodologies (for example agile versus RUP). Good practices transcend the specifics of particular languages. Where there's code it tends to be in C++ or Java, but the snippets are generic enough to be intelligible no matter what language you use.
In addition to the core text, Goodliffe supplements his material with key concepts, cartoons, lists of things to think about, specific things to do, and ends every chapter with a check-list that describes those things that differentiate good programmers from bad.
It should be clear that there's a lot to commend this book. The writing is good (though the author should never have been allowed near a dictionary of quotations), and the advice is generally spot on. In many respects this book sits directly alongside one of the classics of programming literature: Steve McConnell's Code Complete. The two books have similar concerns and offer much of the same advice. In McConnell's case, his book has a slightly more serious tone and is backed up with plenty of references, research studies, and academic papers.
The best developers are always looking for ways to improve their skills, both in terms of learning about their tools and languages, and in learning from other developers what works and why. While this book won't displace Code Complete, it's a worthy addition to the literature of self-improvement that all serious developers should explore.