Fri 06 November 2009
I've been reading through Steve McConnell's [Code Complete](http://www.amazon.com/exec/obidos/ASIN/0735619670/codinghorror-20) for the last few months, in fact I'm working through mindmaps of each section to traverse through this dense book in a fairly easy manner. Basically, instead of saying "Hey I need to create a new class what should I be thinking about again, which pages are they on?", I search the appropriate mindmap and all the headings are there, withpage number for a deeper reference(which is rarely needed). I would highly recommend this system to anyone who wants to read any book and also use it for a future reference.
Since I began my current software engineering job, my code quality has improved significantly purely because of this book(I have little technical expertise to rely on, low availability of experienced programmers has effectively forced me to punch about my own experience weight). For me the real impact of this book has been having my own expert to back my decisions, instead of my typical response of 'Eh, I like doing it that way', it's moved to 'Steve McConnell a widely regarded software engineer in a book that epitomises software engineering tells me to do it this way'.
It's basically a handbook on how to be a software engineer, so for me truly at the start of this process, this book has been invaluable. It's forced me to start thinking about things I would have never bothered putting thought into. An example would be variable names, which before I put barely any thought into(I know what it does…..) I've now got a large section of my mindmap dedicated to picking a decent name, in a consistent way. Another example would be creating a class. Before, I would ponder whether it 'feels' right to do so, then probably do it anyway. Now, I have a checklist to say whether making this section of code and variable does justify a class. I find myself thinking more about thinking. The most important part being I'm making decisions in a consistent manner and as I've put a lot more thought into them I tend to remember and repeat those decisions. Honestly I've already refactored a bunch of code as I realised just how unpleasant it was in the scheme of things.
I'd say at this stage I'm hitting Code Complete more than the php.net manual, which is a big feat(considering how often I forget how to do things). Honestly I have no idea if this would have any impact on an experienced programmer, I would hazard a guess that most large ongoing projects incorporate a look of the ideas this book puts forward. But as a beginner it's influence on me has been morethen significant and I've already started to look at other inexperienced programmers who haven't read this book with slightly less confidence. The book is in itself probably the most important book the programmer in me will ever read and is the first book I would recommend to any developer. Now I just have to finish it.
Oh there's some awesome resources on Steve's page Code Complete page.