Software Factories are coming...

I'm finally back on-the-air blogging wise!

I've been heads down for the past month or so completing the work I've been doing related to building technology to support our Software Factories initiative.

I've been developing various class libraries, Visual Studio bits and tools that will be demonstrated at TechEd (Orlando 6/5-6/10).

I also just returned yesterday from the Microsoft Central Regional Architects Forum where I gave a 90 minute talk about Software Factories in general and then led two 90 minute discussion groups. Everyone was very enthusiastic and many saw immediate value in the Factories story.

One interesting metaphor came to me as I was trying to explain what we mean by a Software Factory. The word "Factory" often starts people thinking we're trying to turn developers into piece workers. This is far from true and now I think I can explain it better.

Consider asking an artist (our developer) for a portrait. 

At one end of the spectrum you give him or her a blank canvas, and you might get a Mona Lisa or you might get a Dali or you might get a small image in the upper left-hand corner. The developer's creativity is applied in many different ways in this scenario but rest assured the developer's expertise (and domain knowledge) is likely to vary widely across the different tasks involved.

At the other end of the spectrum you could give him or her a paint-by-number canvas and then you'd be sure what you're getting back but the developer is likely to become quite frustrated as they get to exercise no creativity whatsoever.

What Software Factories does, metaphorically speaking, is to allow the architect to provide some guidance, for example, the upper 66% of the portrait represents the background and the lower 34% represents the foreground and there's a circle in the middle where the developer (artist) should paint the face. Here the developer (artist) still has the ability to be creative but not wildly so and the architect can even provide templates for trees for the background, rivers for the foreground, etc. leading to a quickly developed, consistenly apportioned portrait where the developer got to do what he or she does best within reasonable guidelines and with (potentially) extensive guidance and even perhaps some automation.