I'm always fascinated by the difference between average developers, and good developers. Therefore any book that helps explain how to go "to the next level" is going to capture my interest. Patrick Cauldwell's Code Leader: Using People, Tools, and Processes to Build Successful Software does. With a forward by Scott Hanselman, the book lives up to the hype. Patrick sees the big picture, and leverages his experience to explain a dozen concepts used by good developers - the ones who other developers look to as leaders (hence the title). I'm paraphrasing his chapter titles:
- Buying vs. Building
- Test-Driven Development
- "writing fewer lines of code should never be considered a design goal." (13)
- Continuous Integration
- "and developer time is always more expensive than hardware" (25)
- He emphasizes that while many projects are tempted to offload their build scripts to a junior dev (to free up the senior devs to do something "important"), it's really in the projects best interest to have your best talent create the build process as that immeasurably benefits every aspect of the project.
- "Nobody can check in changes at 5:00 p.m. on Friday before going on vacation." (39)
- When is it done?
- "Nothing paralyzes a team faster than trying to reach consensus on every design point." (45)
- Testing
- "Testing is perceived as less 'fun' than writing 'real' code." (57)
- "A clean build server is a happy build server." (89)
- "One of the most important parts of your strategy should be to demonstrate progress as early as possible." (97)
- Source Control
- I love this: about source control, he mentioned that some are free - "(free as in puppy, not free as in beer)" (112)
- Static Analysis
- Contracts and Interfaces
- How to limit dependencies - an emphasis on Dependency Injection and Inversion of Control
- Model-View-Presenter (MVP)
- and more...
Overall, a very good book. It's filled with tools and practical examples. I think that every dev lead should be familiar with the topics that he discusses.