The Best Software Development Books of 2007 November 30, 2007

Posted by Imran Ghory in Books

[This list is just based upon my personal opinion and therefore only includes the books I’ve read. Any suggestions for books I’ve missed are welcome. All of the books below were published in 2007]

1) Code Craft by Peter Goodliffe

This is the book every compsci student should read before starting life as a professional developer. It covers the gap between the programming a student does at university and then real-life work of a professional software development. It covers many practical topics such as version control, static analysis tools, and variable naming conventions, all areas which are often not covered in academia but are essential in professional life (Peter actually writes an excellent column in C Vu magazine called “Professionalism in programming”).

At the risk of sounding like a heretic, for new programmers this book is a better “Code Complete”. Don’t get me wrong, “Code Complete” is a fantastic book and it’s content is well researched and referenced. However Code Craft is a far more readable book, it’s emphasis is much more on the day-to-day practical elements (as opposed to McConnell ‘s more academic style) and is much more conversational in style. I know at least 20 people who own a copy of Code Complete and almost none of them have actually read it beyond the first couple of chapters (which are unfortunately among the worst).

Code Craft begins on the topic of defensive programming, which while not the most titillating of topics means the content is immediately applicable to most developers. Code Complete begins on metaphors for software development.

If you’ve been a professional software developer for more than a few years then you probably already know most of the material covered (although it may still be worth reading to discover any gaps) and you’ll probably be better off with “Code Complete” due to it’s greater coverage of topics, but if you’re a new developer then this book is a gold mine of information.

There are only two significant gripes I have with this book, firstly the quality of the binding is not great. It’s a standard “no starch press” paperback – I suspect the binding will come apart with frequent use. Secondly there are a number of minor errors throughout the text, they’re not significant enough to take away from the overall quality of the text but they can be distracting and potentially misleading. A corrected second edition printed in hard-back would be most welcome.

2) Smart and Gets Things Done by Joel Spolsky

This is in a slightly different category to the others, it’s not about software development per se, but rather about the recruitment and retention of the best technical talent.

I actually disagree with a lot of Joel’s opinions on recruiting, but that’s not to say his opinions aren’t worth reading and considering. Like him or hate him Joel is probably the most influential figure in technical recruitment at the top end of the software development talent market. You can go for an interview at pretty much any top technical firm knowing with near certainty that interviewers at that firm are familiar with Spolsky’s essays on the topic

And that more than anything makes his new book worth reading.

3) Programming Erlang by Joe Armstrong

Probably the most anticipated software development book of the year. If you haven’t been hiding under a rock for the past year you’ll almost certainly have heard of Erlang, a language which originally came out of Ericsson that is rapidly popularizing the concurrent programming style that it champions. It’s a functional language that originated out of industry rather than academia.

Armstrong started working on Erlang in 1986 – twenty-one years later his book “Programming Erlang” is introducing the language into the mainstream and attracting many developers who have never coded in a functional language before. The book is almost certainly destined to be a classic, at the very least rivalling the Camel Book in terms of influence.

Put basically: this is the book that all the cool kids are reading.

4) The Complete Guide to Capital Markets for Quantitative Professionals by Alex Kuznetsov

When someone says “Investment Bank” people inevitably think of traders on an open-outcry floor. At the average investment bank there are five software developers for every one trader. The finance industry probably swallows more developers than any industry outside of the tech industry itself; in major financial cities (New York, London) more software developers are employed in finance than in any other industry. It’s not unusual for a large bank to have several thousand developers on the payroll.

Yet almost no-one outside the industry knows anything about what these software developers get upto. Even within the industry most people only know their little part of the world, living in complete ignorance to even what the developers down the aisle from them are working on.

This is the problem that this book aims to solve, and does it reasonably successfully. It gives a broad overview of the financial markets and the industry players from the point of view of a developer. Despite the fact it has “quantitative professional” tacked on the end of it’s title the book is probably more appropriate for software developers than anyone else.

While the book tries to explain everything without making any assumptions about the readers background knowledge of finance, it does on occasion fail, throwing in basic financial vocabulary without explanation. However these occasions are rare and on the most part unexplained terms can be quickly looked up on Wikipedia.

If you’re working in the financial industry as a developer, or perhaps are looking to enter the industry then this book is well worth the read for the broader picture it will give you. Even for the curious passerby this book may make interesting reading, however it is clearly targeted at those who are in or want to be in the financial sector.