Moving to Software Factories
Here’s an excerpt from an article that Keith and I wrote some time ago.
Total global demand for software will grow by an order of magnitude over the next decade, driven by new forces in the global economy like the growing role of software in social infrastructure, by new application types like business integration and medical informatics, and by new platform technologies like web services, mobile devices and smart appliances. Without comparable increases in productivity, total software development capacity seems destined to fall far short of total demand by the end of the decade. What will change to provide the massive increase in capacity required to meet demand? It is not likely to come from adding developers. Instead, software development methods and practices will have to change dramatically to make developers much more productive.
I’d forgotten about it, but rediscovered it this evening while browsing around. You can read the rest of it here.
Anonymous
July 01, 2010
Jack - I think this is a perfect example of where I'd add a cautionary disclaimer to the vision of software factories. If application development were truly a one-time activity, then speed-to-market for that one release is absolutely paramount, and the "stamp out an application" vision makes a lot of sense. In most cases, though, applications are really created via a series of additive releases, and thus, for each release beyond the first, the maintainability of prior code becomes a factor in the speed of new development. If your prior work produces maintainable code, then you're far better-positioned to move forward with new development. This point is subtle enough that I believe it to be lost on some people -- especially those without a strong technical background.Anonymous
April 13, 2011
No disagreement. Software Factories are really about meta programming: building tools and other artifacts, such as models and templates, which write some of your code for you. The factories you use to build your application (n.b., there may be many, each helping to automate the construction of a piece of it), and the application as you define it using the factory (e.g., the models, template parameters, configuration, custom code, etc.), should all evolve as needed. So, you see, it's not about "stamping out an application". In the book and articles we've written on this topic, we make this point very clearly. I think the problem we've had with the term "Software Factory" is that it's too familiar, so many people assume they know what we're advocating and respond according.y, without really looking to see if they're right.