Now that Tech·Ed is over, I’ve got some time for things like playing Xbox, yard work and reading. I just finished The Footsteps of God (not bad, but not great – fine for airplane reading below 10,000 feet and after my battery died). On the technical side, I’ve been rereading ATL Internals for a COM based coding project I’m working on in my nearly-non-existent spare time. I also just started Software Factories by Keith Short and Jack Greenfield (with contributions by Steve Cook and Stuart Kent). Keith and Jack are architects in the Visual Studio Enterprise Tools Group. They are responsible for driving Microsoft’s model based development tools initiative and are heavily involved in the creation of the Whitehorse tools. Software Factories isn’t available yet – access to an early electronic copy is one of the perks of knowing the authors and having one of them speak as part of my Tech·Ed track.
Software Factories is about approaching application development with an industrialized manufacturing mindset, rather than the hand-crafted mindset we have today. It’s interesting how well this dovetails with Pat’s Metropolis work – both draw parallels to and learn from the Industrial Revolution. To quote from the website:
The industry continues to hand-stitch applications distributed over multiple platforms housed by multiple businesses located around the planet, automating business processes like health insurance claim processing and international currency arbitrage, using strings, integers and line by line conditional logic. Most developers build every application as though it is the first of its kind anywhere.
Without significant changes in our methods and practices, global demand for software development and maintenance will vastly exceed the pace at which the industry can deliver in the very near future.
Scaling up to much higher levels of productivity will require the ability to rapidly configure, adapt and assemble independently developed, self describing, location independent components to produce families of similar but distinct systems. It will require a transition from craftsmanship to manufacturing like the ones we have seen in other industries, and will eventually produce more advanced earmarks of industrialization, such as supply chains, value chain integration and mass customization.
We must synthesize…key innovations in software development…into a cohesive approach to software development that can learn from the best patterns of industrialized manufacturing.
This is what we mean by Software Factories. The industrialization of software development.
The book is fascinating, and I only just got started. The book should be available soon. Going forward, you can expect coverage on Architecture Center, as well as the official Software Factories website. In the meantime, keep an eye on Keith’s blog, check out this piece from the Architecture Center Update as well as this article on domain-specific languages, and watch Keith’s session from The Architecture Strategy Series.