Recently Uncle Bob talked about a manager who constantly choose short term hacking over anything else defending the decision with the idea that “business software is ugly.” Uncle Bob came up with a good argument to make:
One of the developers asked the question point blank: “What do you do when your managers tell you to make a mess?” I responded: “You don’t take it. Behave like a doctor who’s hospital administrator has just told him that hand-washing is too expensive, and he should stop doing it.”
For many developers trained through experience that speed is more important than quality it’s difficult to resist being asked to develop a feature faster. Hacking just adds debt and slows down future development. It’s the sort of thing where an application has gotten so complex and hairy that a developer new to the project can’t even be productive for a month or two. Just getting up to speed on how the beast has been hacked together wastes weeks of time.
Kudos to Uncle Bob for using a powerful analogy to make people think.
I heard a good story on one shop where they actually had a KitchenSink class in their codebase to dump things they really couldn’t define a context for. The point was they were at least being transparent about their failure to find a better place to put something.
According to xUnit Test Patterns:
The Ruby-based RSPec kicked off the reframing of TDD to EDD (example-driven development), and the Java-based JBehave followed shortly afterword.
– xUnit Test Patterns pg 33
Actually JBehave predated RSpec by a few years. I remember going to a talk by Dan North of Thoughtworks on JBehave in March of 2005. He presented with examples of JBehave and explained how it got people away from thinking about tests. The very next year at SD West 2006 I attended a half day tutorial by Dave Astels on RSpec. It was still pretty early for RSpec at that point about 0.5, but it was already pretty nice because Ruby is just a lot easier than java for writing a behavior driven DSL.
A bit of poking around reveals JBehave actually dates back to 2003 when Dan North started working on it in at Thoughtworks. I think the issues with making nice DSLs in Java probably led to the much larger success of RSpec in the Ruby community and led to the thinking that JBehave came after.
A good PM should annoy a developer some of the time.
It’s like Java Posse for Rails Developers only shorter, funnier, and tightly scripted.
The Rails Envy guys, Gregg and Jason, have put together a great podcast on current Rails news, packed it into 10 minute episodes and spiced it up with humor. You probably already know them from their parodies of the Mac PC ads with Rails versus Java, .NET, Coldfusion, etc. If you haven’t added the podcast to your feed and you keep any track of the Rails community it’s worth adding to your weekly podcast menu.