I’ve been dubious about software factories for a long time, but I’m coming around a little bit. I see factories mostly being useful as just a bit more than what people already do today with things like CodeRush. I think it would be a helpful mechanism for small scale skeletal code generation for things like Model View Controller generation and automatically creating a test class to match any new concrete class (basically, Scaffolding in Ruby on Rails). The big hangup that I have with software factories is that I think some atrociously bad systems are going to be created by blindly following the “guidance” from the software factory. Also, *who* is building the guidance in these software factory thingies? Are they really good enough to do that? Is my system really suitable for a generic set of patterns?
Many of the worst blunders that I’ve seen have been a result of choosing a complex pattern too early on and motoring ahead without reflection. Software factories is going to promote this behavior. I think the inevitable Achilles heel of software factories, and planning for reuse upfront in any sense, is what happens when you get a case that doesn’t fit the previous pattern? In that case following the model leads to bad code. Plus that little “the model needs to change” thing that happens from feedback and learning. There are always edge cases that will break the model. You cannot ever stop thinking, dammit!
- In so many words, somebody in the Software Factories talk brought up Case Tools. Jack Greenfield handled it fairly gracefully, but still…
- Jack Greenfield is really smart and well spoken. I’m still iffy on factories though.
Jeremy’s prognosis: The useful parts could probably be done with CodeRush. Everything else, we’ll see. I’m not jumping up and down in excitement.