CodeBetter.Com
CodeBetter.Com
RSS 2.0 via Feedburner
           Do you Twitter? Follow us @CodeBetter

Darrell Norton's Blog [MVP]

Fill in description here...

Where is the compelling argument for software factories?

Steve Maine blogs about the case for software factories. He uses Timbuk2 as an example of what software factories could be like.

What Steve is talking about with Timbuk2 is known as "assemble-to-order" in Operations Management. It's the same thing that Dell does. The vast majority of the manufacturing work is already done, and is just put together as the final product. A bonus is there is much less inventory to hold, as you don't have to hold safety stock for each and every model, just safety stock for each subassembly. Some simple statistical analysis will show that the safety stock needed for this situation is roughly half (or less!) that needed for all the products if stocked in final form. Not to mention the benefits of a pull demand model versus a push one. The customer ordering a computer and Dell building to that order is a pull model, whereas HP sending out a bunch of computers to CompUSA and then trying to sell those computers to customers is a push model.

How does that relate to software factories? Well, if you can assemble your software from pre-manufactured subassemblies, then great! I highly recommend using pre-built and pre-tested code whenever possible! However, I think that software should solve new and interesting problems, which kind of negates the whole advantage of software factories. Now if you have an operation like Scott Hanselman does at Corillian, that's an excellent example of a software factory. But notice how narrow the market is for the apps they sell! Yes they customize the UI, but Scott has blogged on numerous occasions on how they generate a large majority of code at the beginning of a project (order really, the flow model again).

I think software factories may be applicable to narrow vertical market applications. But then, why not just make the application configurable instead of assembling it to order? Microsoft has proven that mass-market software works, and it is highly profitable.



Comments

David Cartmel said:

Four years ago I designed my first software factory. I did not think of the push or pull or even the web. I built it in MS Access. Well millions of dollars latter it is now on the web in the UPS intranet. It is a giant virtual database with 180 data elements that users can combine in any order and save and distribute. The great news is that it works and has more than paid for itself. The problem is the cost and time to add new database elements.

So I worked two years to allow anything to be combined and for an AI to be able to automatically create new reports based on user actions. This required developing a new query language. This turned out to be the easy part. I had to redesign IE to allow the user to use the query language. Then my company suspended all web development for all projects. This would have been harder if I had not also determined that my entire design would never work. Well a few weeks ago, the morning after playing Uno with the kids, I thought of the solution. I was five hours late to work and got a reprimand, but that is all it took to write it and plug it into the original code. It breezed through the original test page. Its power to create is limited by user input. Sitting at home on my Dell with only me as a user it is not getting much smarter. I estimate that the AI, using a base of 1000 users, and the success rate of junk mail, would be able to create more web applications in a year than UPS has created in its entirety. So far the AI can say hello and something in German, but this weekend I plan to teach it how to graph. It can control the pixels on the screen so it could potentially display any picture format. My company has closed its door to new web ideas so getting my AI moved to work comes a little too late. At this point I thought I would be able to write my own ticket. If only it could do things like clean the house or answer telemarketers.
# August 17, 2004 8:09 AM

Darrell said:

David, I'm not sure I think that meets the definition of software factory. Maybe I'm not understanding what your applications (there should be multiple for a software factory) were doing??
# August 20, 2004 2:15 AM

Steve Maine said:

Meant to write some more in response to this before I left on vacation, but I was suffering some mental constipation. It's passed :)

http://hyperthink.net/blog/PermaLink,guid,6a264d60-3652-4662-bfff-77bdc3ebf2b2.aspx
# August 24, 2004 7:31 PM

David Cartmel said:

Instead of a custom Timbuk2 bag, users choose a range of options for selecting data. If you are buying an airline ticket you expect to pick the airports and dates. But what if want the flight delays and the average departure time? While you can relate any element, you can only use data that is pre-processed.
It is possible to relate anything to anything in real time. Then you can have a custom ball cap instead of a bag. The system remembers how you relate the ball cap and finds a football and substitutes it for the bag. Some choices for a bag are not going to work for the football. But things like color and custom lettering will. So what I called an AI is really just an object collection of the actions used to build a report. It then looks for other data to combine using these objects.
# September 14, 2004 3:17 AM

Alexandre Boudreault-Ferland said:

We've been using software factories for a couple of years now and we see the benefits everytime we bid on a contract.

Analysts like that because they can rapidly show their Business Users a working prototype. Business Users like that because they can see and try the application before any line of code is written... they like to try the application instead of validating UML models or Word Documents. Programmers like that because they do not loose their time on boring tasks and they can concentrate on fun/serious things like business intelligence and advanced features.

Actually, we've built our own Factory and it's available online as a free web service : http://www.xicommunity.ca

Our tool, XI-Factory, lets you design your application model online (or start from existing models published by community members), and see the result as you work. You can preview the result and send your business users to try it online!

When everybody is happy with the prototype, you can purchase the .NET code for your application model.
# December 3, 2004 5:51 AM
Check out Devlicio.us!