Over the years I've started to notice certain development patterns that are problematic - perhaps not immediately, but become maintenance nightmares in the long term. If left unchecked, this maintenance burden can eventually become so bad that it threatens to overwhelm all development hours for a project.
Robert Martin's "Clean Code: A Handbook of Agile Software Craftsmanship" summarizes these patterns and many others, putting them into clear concise language with examples of why they're problematic and more importantly what you can do to fix them. Most of the examples are in Java, but are highly transferable to other languages.
(My housemate also loves it, since I now have a book rather than him to rant to in the evenings.)
Robert Martin's "Clean Code: A Handbook of Agile Software Craftsmanship" summarizes these patterns and many others, putting them into clear concise language with examples of why they're problematic and more importantly what you can do to fix them. Most of the examples are in Java, but are highly transferable to other languages.
(My housemate also loves it, since I now have a book rather than him to rant to in the evenings.)