A while back I had a client who was moving to a Web Service based ESB architecture. They had a number of Visual Basic 6 developers that they wanted to bring up to speed developing .NET web services and at the time I was getting interested in software factories, especially the P&P group's GAT. Their lead architect suggested that I write a software factory based on a standard web service architecture. Her intention was that she could get her VB devs to build web services without having to have a deep level of understanding about how they work. I had a great deal of fun building it, even though it was very early days for the GAT, and I learnt a lot about component based development by reading the P&P code. These days I look back on that job as one of my most enjoyable.
But how would I feel if I was one of those devs asked to use my GAT product? I'd hate it. Where's my joy? Everything I love about programming would have already been done by someone else. Not only that but I couldn't learn any lessons or move the architecture forward because it's all been locked down.
Every time I start a new project I tend to architect it in a different way. I learn new stuff all the time, recently it's been IoC containers, MVC frameworks and LINQ. If I was somehow constrained to do things the same way I would be far less productive and happy than I am (and I'm not that productive and happy in any case :P). The industry is too young, too fluid and too diverse to allow you to lock up your architecture without paying an awful price in lost opportunities.
I don't want to go into it now, but I don't like the architectural patterns imposed by a lot of the publicly released software factories from the P&P group. I think data transfer objects are a total waste of time in 90% of applications for a start. I would be mightily depressed if I had to work in a shop that had adopted them... oops, I did go into it...
And what about those legacy skilled VB developers. Well, you can guess... the software factory didn't allow them to quickly build web services without understanding the basics about .NET, XML and SOAP. They needed extensive training and hand holding. There's no replacement for skilled developers no matter what the tool venders tell you.
So Software Factories will go the same way as CASE tools, visual tools and code generators. After wasting lots of people's time and money they'll be cast into the void of software evolutionary dead ends.