Microsoft's Guy Ron: Software Factories to fail
Microsoft Consulting Services manager Guy Ron(*), quoted by Ron Osherove at TechEd, says that the Software Factories initiative will "most likely fail". (About as good a marketing message as their lead product manager admitting that using their tools requires "a massive amount of effort"!) The rather weak evidence Guy bases this claim on is that Microsoft's HL7 software factory has still not been finished. Whilst failing at something on your first attempt hardly says you're never going to succeed, Guy and Roy do make some good points. So does Mauro Regio, who was the initiator and architect on the HL7 project, in a comment on Roy's blog. I'd summarize the valid points as:
- Massive projects with many stakeholders cannot agree on one set of concepts
- Domains should be "real world", i.e. problem domain, not implementation domain
- The more specific the domain the better
- Microsoft don't yet have the tools to make this work - but GAT and the DSL tools are headed in the right direction.
Let's be realistic: this was Microsoft's first attempt, and as far as I know not a single one of the people had experience in DSM. Only when you're experienced at something can you reduce the apparent complexity without sacrificing important details. When you try without that experience, you miss important stuff out in some areas, and in others leave or even add more complexity and flexibility than are necessary. We did that building the first version of MetaEdit back around 1990, and probably also in the first DSM languages we built. It's no great shock to see similar errors being made by Microsoft or Eclipse: since when did our industry ever learn from previous mistakes?
It also seems a little unfair to criticize the whole Software Factories initiative because they couldn't achieve much in a year with the current Microsoft toolset. Others have had similar problems: Edward got up to #20 in his series on a tiny language he was trying to build for over half a year, before apparently giving up: nothing for over two months :-(. It seems only individuals and massive industries have the money to burn on trying to do a project using pre-beta software, and of a version 1.0 to boot. Whilst the adage claims only a bad craftsman would blame his tools, surely a good craftsman can recognise whether a tool is effective or not?
For DSM to work optimally, you need a good toolset, a good knowledge of what makes for a good modeling language, and the abstract thinking skills of plucking a coherent domain out of the tangle that is the real world and whatever applications you already have. Our experience is that it's best if these attributes come together in someone who is an expert developer in that domain. It's easier for them to learn our tool, than for us to learn their domain.
Things can also work if we have the extra skill of eliciting the domain from them, and that's something that has improved with practice. Whilst it makes it easier for people to get started -- we can offer a "solution" or "service" rather than a product -- it is harder to ensure that the resulting language will evolve with the domain.
It's a bit like outsourcing: sure it's tempting to hear that somebody else can do it for you, but are they going to be around to fix it or improve it later. And with DSM, the domain is invariably the core competency of the organization -- and who in their right might would outsource their core competency?
Comments
Maybe it won't fail but there is still a very long way to go
[Arnon Rotem-Gal-Oz] May 23, 2006 09:31:15 +0300 (EEST)
I wrote something similar to what Guy Ron said (http://www.rgoarchitects.com/blog/PermaLink,guid,ffb5163e-ba6b-4e2e-b58d-4ecafa1d4562.aspx) awhile ago.
I think it is fair to look at the HL7 example since it invovled both domain experts and software factories experts (Jack Greenfield -the initiator of the Software factories idea in MS).
creating Domain Specific Languages is complicated - you say so yourself: "For DSM to work optimally, you need a good toolset, a good knowledge of what makes for a good modeling language, and the abstract thinking skills of plucking a coherent domain out of the tangle that is the real world and whatever applications you already have. Our experience is that it's best if these attributes come together in someone who is an expert developer in that domain. It's easier for them to learn our tool, than for us to learn their domain.
Understanding and abstracting domain knowledge is hard - we can also see that by looking at product lines (which are tackling the same problem) - there just aren't too many of them - and the idea behind product lines is much more mature than software factories.
So with weak tooling and hard to distill domain knowledge - I still think there is a long way to go before we will get to DSM nirvana
[Edward] May 25, 2006 23:55:06 +0300 (EEST)
Steven,
just to let you know. I haven't given up on the DSL. I am just waiting for the next release of the DSL Tools to upgrade it to the new "file format". The DSL itself is finished and does what is supposed to do.
Edward
WSDLDSML :-)
[Steven Kelly] May 29, 2006 21:38:10 +0300 (EEST)
Edward,
That's great! I always looked forward to reading the next installment. If you're about finished, how about blogging a short retrospective on your experiences? I'd be interested to know how much time you spent altogether, and how much on the different parts: thinking about the modeling language and modeling the concepts in the MS tool; implementing the generators; implementing the extra XML needed to make the symbols work; and implementing the extra code needed to make the tool work like you wanted (e.g. the work needed to add an icon to a menu item, as you did in #20). How much did the MS DSL tools do stuff for you, and how much was it you implementing a modeling tool in C# on top of a graphical modeling framework provided by Microsoft?
Some idea about the size of the modeling language would be useful for comparison too: I said it was "tiny", meaning only a few object types, based on what I saw in your blog, but there may well be large areas you simply haven't blogged about. It would be great to see some screenshots of real-world models: did you manage to get anything other than the MS "you can have any shape and color you want, as long as it's a rounded rectangle with a gradient fill"? :-)