At the moment I’m reading Steve McConnell’s excellent ‘Professional Software Engineering,’ in which he talks extensively about creating a genuine software engineering profession. I believe that this is a great aim and, although I disagree with him on some points, I think the basic premise is both a good idea and inevitable.
However, that is not the point that I want to talk about, although it is related. It’s the fact that, even though I work in a relatively professional organisation, almost no-one here reads computer science books. Sure, there are piles of guides to complex Oracle stuff, C++ this and XML that, but there are no books around on how the whole process should work.
Is there a good reason for that, or are we all really lazy or unprofessional?
I think one of the main reasons is that Software Engineering just isn’t a very professional profession. As I mention above, I work for an organisation with a pretty good reputation for delivering, but most of the people do not come from a computer science or software engineering background.
Bearing in mind the current skills crisis that’s hardly surprising, but is it very wise? Does having more of the wrong people actually help in the long term? (If you work in IT and don’t have a computer science background, I should point out that I’m not advocating a blanket ban. Bear with me for a couple of paragraphs.)
Try and compare what software engineers do with another discipline, say building houses. In IT people are expected to move from testing, to development, to low-level design up to architectural design and requirements analysis. But that’s not how it works elsewhere.
An architect has to study many years at university before being allowed to design a bridge. After a few years hacking together simple programs a software developer may be allowed to design a system. True, a bad computer system is unlikely to be life threatening but it can cost a lot of money. Why take the risk?
What does this have to do with books?
I don’t think that an IT industry split with an elite of architects at the top and developers at the bottom is either workable or desirable, but I do think that we all need to be a little more ‘professional.’ One of the first steps on that road is for people to be familiar with the best practices of the industry and the easiest way to do that is to read.
Knowing where to start can be difficult, especially if you read a different subject at University. As a starting point, my suggested reading list is here.
My list here is not full of dull, academic books, although there are some. Nor is it mainly a list of development books, you need to know some history to put everything into perspective. I just think that all these are valuable and, generally, readable. All IT people at all levels should read most of them.
I’m especially interested in people’s opinions of this list. I’m not as widely read as I’d like, so suggestions are always welcome!
“Code Complete,” Steve McConnell
Code complete is one of those books that does the job so well it has no obvious competition. It describes the complete coding process right from low level design through to unit testing and, while most people would have been very prescriptive, McConnell outlines the pros and cons of each approach. If you’re looking for a rational discussion on whether or not you should use a goto in your program, this is the book for you. This book went ten years without an update and the recently released second edition, although extensively rewritten, is, in many ways, not very different (replace the word “function” with “method” and you’re done — almost!). This is not so much a criticism of the new edition as much as praise for the original.
“Professional Software Engineering,” Steve McConnell
I make no apologies for choosing another Steve McConnell book. He’s the editor of IEEE Software so it’s not just me that thinks he knows his stuff! This book, as I mention above, talks about creating a real software engineering profession and leaving behind the far too common code-and-fix method that many people are still using. It’s organised as a number of essays, so you can dip into it, but it’s well worth reading cover to cover.
“ The Mythical Man Month,” Fred Brooks
If you’ve not heard of this book, I’m surprised that you’ve read this far. There should be no need for me to discuss it’s subject matter. If you’ve not read it, you should have.
“ Accidental Empires,” Robert X. Cringely
I did warn you that not all the books were academic, computer science books. Cringely used to be a writer for Infoworld and so was just the right man to document how the microcomputer industry came about. It’s full of interesting anecdotes, such as millionaire Bill Gates accepting a quarter from a stranger because he couldn’t find a money off coupon, and is well worth investing in.
“ In the beginning was the command line…” Neal Stephenson
Many people will also consider this to be an odd choice. This is less a book and more a rant about all the different current operating systems, from MacOS to Linux. But the reason you should read it is that its description on why Unix is as it is is the best I’ve seen. Even if you’re quite happy with Windows, you should be aware of the competition.
“Cathedral and the Bazaar,” Eric Raymond
Most of the other books here cover the traditional “waterfall” software development model (or at least some derivation of it such as the spiral model). Open-source software has shown that a formal methodology isn’t the only way of doing things. Eric Raymond documents the process and tells paid software developers why it won’t put them out of a job.
“Peopleware,” Tom DeMarco and T. Lister
When I first wrote this piece I left this book in the “bubbling under” section, but as time has gone on I have realised that it was more important than I first thought.
Note: The links above all go to Amazon.com. If you’re in the UK then it’s much cheaper to buy them at Amazon.co.uk. Here are some quick links for all the books mentioned: Code Complete, After the Gold Rush, The Mythical Man Month, Accidental Empires, In the beginning was the command line… and Cathedral and the Bazaar.