other sites
topics
archives
- April 2005
- May 2005
- June 2005
- July 2005
- August 2005
- September 2005
- November 2005
- December 2005
- January 2006
- February 2006
- March 2006
- April 2006
- May 2006
- June 2006
- July 2006
- August 2006
- September 2006
- October 2006
- November 2006
- December 2006
- January 2007
- February 2007
- March 2007
- April 2007
- May 2007
- June 2007
- July 2007
- August 2007
- September 2007
- October 2007
- November 2007
- December 2007
- January 2008
- February 2008
- March 2008
- April 2008
- May 2008
- June 2008
- July 2008
- August 2008
- September 2008
- October 2008
- November 2008
- December 2008
- January 2009
- February 2009
- March 2009
- April 2009
- May 2009
- June 2009
- September 2009
- November 2009
- December 2009
- March 2010
- April 2010
- June 2010
- August 2010
- January 2011
- July 2011
- November 2011
Tuesday, September 12, 2006
Factory Software
posted by barsoomcore
I came across the idea of "Software Factories" on the MSDN site. A Software Factory is an immensely complicated, um, thing, that makes application development easier. Basically, it seems to be a movement to create large frameworks at numerous domain levels, that can then be combined to deliver specific application systems.
Is this whole notion misguided? There's certainly a fair amount of work going on over Microsoft way in building Software Factories -- which appear to be mostly installable plug-ins for IDE's to make it easy to build components. My feeling is that this makes it easier for bad developers to build complicated things.
I'm not sure that's a good feeling I have.
I think this means in much the same way developers make use of existing components like the Swing or Struts frameworks, Hibernate or EJB. Of course, those are all Java technologies, so I guess it behooves Microsoft to pretend they don't exist.
But Microsoft seems to want to go deeper than that, with business-domain-specific frameworks that application developers can draw on.
The cost, however, decreases as your available time increases. This is the secret of open-source development -- as the number of people contributing to your product increases, so does your available time, and therefore your development costs decrease. Obviously there's all sorts of other conditions and issues that arise, so it's not just a straightforward growth line, but in essence one open-source project after another has proven that this model works great.
It IS very expensive. Domain-specific frameworks are only financially viable for groups that can expect to implement them again and again -- huge companies (like, um, Microsoft) or large open-source movements. So far, the evidence suggests that open-source movements are better at it. Firefox, Apache, Linux/Unix: all these systems consistently outperform their closed-source counterparts.
The difference being that there's zero cost to acquiring these supplies, and storing/creating them (again assuming you have infinite time, which you essentially do).
Philosophically, I pretty much agree with Microsoft here that this is the direction software development is going. Ever-more sophisticated and interoperable frameworks and component libraries that application developers can assemble to build their systems. But I don't see how we get away from developers needing to know HUGE amounts of stuff. You're still going to need people who know this shit inside and out, if you want high-performance systems, because each system needs tuning to its own conditions.
Or I guess a better way to put it is you're still going to get what you pay for, relatively. Joel Splosky's always going on about how the very best software developers are TEN TIMES more productive than average software developers. I agree with that. I just wonder if maybe the best cobblers were equally more productive than their average shoe-making folk. Didn't make it impossible for people to get pretty darn good shoes from an assembly line.
Where I differ from Microsoft's stated position is predictable given my investment compared to theirs in maintaining an immense software company. Microsoft seems to be making a pitch to non-technical corporate decision-makers, reassuring them that only the big boys can really supply what they need, which will generate the financial investment that these ginormous frameworks and tool sets will require.
Because otherwise it seems clear to me the open-source community will continue motoring on ahead, doing exactly what Microsoft says only they can do. Because this IS a way in which software development is different from other crafts: the only thing you need to work on it is a PC. You don't need leather, you don't need steel, you don't need a workshop, you don't need to pay your workers, even. And that makes it pretty difficult to argue that only those with massive financial resources will be able to make this happen. It's already happening, more effectively and more creatively than Microsoft is going to be able to accomplish.
Says me. Big thinker.
Is this whole notion misguided? There's certainly a fair amount of work going on over Microsoft way in building Software Factories -- which appear to be mostly installable plug-ins for IDE's to make it easy to build components. My feeling is that this makes it easier for bad developers to build complicated things.
I'm not sure that's a good feeling I have.
In a mature software factory, application development consists primarily of component selection, customization, adaptation, extension and assembly. Instead of writing large amounts of new code, application developers obtain most of the required functionality from existing components.
I think this means in much the same way developers make use of existing components like the Swing or Struts frameworks, Hibernate or EJB. Of course, those are all Java technologies, so I guess it behooves Microsoft to pretend they don't exist.
But Microsoft seems to want to go deeper than that, with business-domain-specific frameworks that application developers can draw on.
Looking around the industry today, however, we see only a few cases of systematic family based product development, most notably packaged enterprise applications. Why don't we see more? One reason may be lack of knowledge. Product line practices are not well understood in the software industry. Another reason may be inertia. Established practices are often hard to replace, especially when not only technical, but business and organizational changes are required. Perhaps the most significant reason, however, is the high cost of developing the reusable assets, especially the tools.
The cost, however, decreases as your available time increases. This is the secret of open-source development -- as the number of people contributing to your product increases, so does your available time, and therefore your development costs decrease. Obviously there's all sorts of other conditions and issues that arise, so it's not just a straightforward growth line, but in essence one open-source project after another has proven that this model works great.
It IS very expensive. Domain-specific frameworks are only financially viable for groups that can expect to implement them again and again -- huge companies (like, um, Microsoft) or large open-source movements. So far, the evidence suggests that open-source movements are better at it. Firefox, Apache, Linux/Unix: all these systems consistently outperform their closed-source counterparts.
As product developers increasingly depend on external suppliers, supply chains will emerge, as they have in other industries.
The difference being that there's zero cost to acquiring these supplies, and storing/creating them (again assuming you have infinite time, which you essentially do).
Philosophically, I pretty much agree with Microsoft here that this is the direction software development is going. Ever-more sophisticated and interoperable frameworks and component libraries that application developers can assemble to build their systems. But I don't see how we get away from developers needing to know HUGE amounts of stuff. You're still going to need people who know this shit inside and out, if you want high-performance systems, because each system needs tuning to its own conditions.
Or I guess a better way to put it is you're still going to get what you pay for, relatively. Joel Splosky's always going on about how the very best software developers are TEN TIMES more productive than average software developers. I agree with that. I just wonder if maybe the best cobblers were equally more productive than their average shoe-making folk. Didn't make it impossible for people to get pretty darn good shoes from an assembly line.
Where I differ from Microsoft's stated position is predictable given my investment compared to theirs in maintaining an immense software company. Microsoft seems to be making a pitch to non-technical corporate decision-makers, reassuring them that only the big boys can really supply what they need, which will generate the financial investment that these ginormous frameworks and tool sets will require.
Because otherwise it seems clear to me the open-source community will continue motoring on ahead, doing exactly what Microsoft says only they can do. Because this IS a way in which software development is different from other crafts: the only thing you need to work on it is a PC. You don't need leather, you don't need steel, you don't need a workshop, you don't need to pay your workers, even. And that makes it pretty difficult to argue that only those with massive financial resources will be able to make this happen. It's already happening, more effectively and more creatively than Microsoft is going to be able to accomplish.
Says me. Big thinker.
Labels: Thinking
Post a Comment