Bob Martin

Craftsmanship and Ethics

Craftsmanship and Ethics

Bob Martin’s Craftsmanship and Ethics presentation is now freely available. Think of it as a 45 minute video on the key principles of agile programming. Or, if you’d prefer, a tutorial on how to become a professional developer. As developers, our main product is our code. And, so, to be considered professionals, we must craft […]

Religious War #48,293: Single Vs. Multiple Returns

Religious War #48,293: Single Vs. Multiple Returns

A few months ago, a reader emailed me for my views on single versus multiple return statements in a method… "What’s your take on single-vs-multiple returns in a method? Personally, I don’t mind multiple returns. It often makes code more readable, less if-nesting, etc. But it has almost become a war here at my workplace, […]

Deep Agile – Ya Know, Like Teenage Sex

Deep Agile – Ya Know, Like Teenage Sex

Because, apparently, their 30 minute debate on TDD was insufficient, Agile Bazaar invited industry leaders Bob Martin & Jim Coplien to continue the discussion over an entire weekend of old sk00l learning at MIT. And so, as 90 of us gathered to hear them out, they kicked it off by explaining why agile is so […]

Just Say No to Nulls (or Refactoring Your Way to Programmer Bliss)

Just Say No to Nulls (or Refactoring Your Way to Programmer Bliss)

I can’t help but feel my code is getting harder and harder to read as I wade through an ever increasing number of if != null checks before finding my way to the real logic that I actually care about… God, doesn’t your brain just want to shut down even trying to look at it? […]

Clean Code

Clean Code

Bob Martin’s Clean Code: A Handbook of Agile Software Craftsmanship is finally out and the UPS man just dropped a shiny new copy on my doorstep. It kicks off with these fine words of wisdom: The only valid measurement of code quality: WTFs/minute Thought I’d take you with me on my quick skim in case […]

TDD SmackDown!

TDD SmackDown!

Software development gurus Bob Martin and Jim Coplien go head to head on the virtues (or lack thereof) of Test-Driven Development. And in this corner, we have Robert “Uncle Bob” Martin, who throws the first punch with the bold: “it has become infeasible for a software developer to consider himself professional if he does not […]

SOLID Code with Emergent Design - The Final Chapter

SOLID Code with Emergent Design – The Final Chapter

This wraps up the series of posts on SOLID Code with Emergent Design. Dependency Inversion Principle “Separate interfaces so callers are only dependent on what they actually use” The SOLID principles really boil down to managing your dependencies between classes. And, by “manage”, we really mean “get rid of those suckers.” Removing dependencies (aka, de-coupling) […]

SOLID Code with Emergent Design - The Other ISP

SOLID Code with Emergent Design – The Other ISP

This is the 5th post on SOLID Code with Emergent Design. Interface Segregation Principle “Separate interfaces so callers are only dependent on what they actually use” Or, more simply… Avoid “fat” interfaces This principle is about breaking down our interfaces to be highly cohesive. You might have a server that provides methods to a number […]

SOLID Code with Emergent Design - The L

SOLID Code with Emergent Design – The L

This is the 4th post on SOLID Code with Emergent Design. Liskov Substitution Principle "Derived classes must be usable through the base class interface without the need for the user to know the difference" This principle is about following good techniques for inheritance. It says code that uses the base class should not need to […]

SOLID Code with Emergent Design - O, I get it

SOLID Code with Emergent Design – O, I get it

This is the 3rd post on SOLID Code with Emergent Design. Open/Closed Principle "Modules should be open for extension, but closed for modification" The idea here is that adding new features should always be able to be handled by simply adding new code. It should never require modifying existing code. The benefit is that if […]