February 7, 2009

...Learn TDD with Codemanship

In Defence of Bob and Kent

I make no bones about it: I like Uncle Bob. He's obviously a smart and very capable software developer - far more so than I - and he makes me laugh (probably unintentionally at times). He has also taught me a very large chunk of what I know, or what I think I know, about OO design.

Design principles like Single Responsibility (classes should only have one reason to change), Interface Segregation (classes should present client/role-specific interfaces) and Dependency Inversion (favour dependencies on abstractions in high-level code, basically) form the bedrock of my design instincts - along with other foundational ideas about design and a peppering of my own insights earned from the School of Life. And these instincts have served me well.

Likewise Kent Beck's messages about keeping things simple and using tests to incrementally drive my designs. I've been practicing goal-driven/scenario-driven development for a long, long time and I know from involvement with many projects that it works. Period.

Combine the test-driven and YAGNI (you ain't going to need it) disciplines with a good dose of proper refactoring, stir in your OO stock which has been simmering away nicely since the early 90's courtesy of Bob Martin et al, and apply a healthy measure of human wit and common sense, and you have what I consider to be a very well-rounded and practical foundation for reliable and maintainable OO software. I know it to be true. I've seen it. And I've done it. I've explored the underlying mechanics of it, examined dependencies, change propagation, complexity, test assurance and so on. There's real physical cause and effect that these disciplines effectively address. Contrary to what you may have heard, the jury is not still out on OO design principles, scenario/goal-driven design, keeping code simple or having good regression test assurance. THEY DO HELP. FULL STOP.

It's by no means the last word on software design. I would be the first person to throw that accusation. But it has proven to be pragmatically successful over the last 15 years or more, and anyone who has been writing code and applying these principles during all that time would be disingenuous to argue otherwise.

Bob and Kent have unquestionably earned their spurs as software developers and the value of their advice is based on the respect they command as a result of their experience and their peer-reviewed, tried-and-test-in-the-field-and-then-some contributions to the field of software development. It is not based on the size of their readership or on the turnover of any businesses they might happen to have struck it lucky with.

If I want advice on musical composition, I'll go to a composer, not the Spice Girls, thank you very much.

'Nuff said.

Posted 12 years, 3 months ago on February 7, 2009