On commercial software
One of the consequences of industrial revolution was the conversion of town artisans into city workers. In medieval times craftsmen were respected and seen as an important part of a community. This was such an institution, that entire regions of countries were (and still are) known for their crafts. Such is the case with Nimes, in France, that is still known for it's clothing industry, altough most of the actual production is nowadays performed abroad, or with toledan steel works or Murano's cristalry. Craftsmen performed all of the work involved on their craft: They knew how to design it, how to build it, how to decorate it, and were responsible for selling it to the final costumer.
With industrial revolution, however, all of this changed. Craftsmen were not seen as an efficient mean of producing money and delivering goods an services in a resource efficient way, and labor was split among several workers, who didn't own whatever they made anymore. It was not a craft, but a mere job of repetition, that brought no pride to it's performer. The good being produced was not his, but belonged to whomever owned the factory.
This was good from a capitalist point of view: More goods were being produced, at a cheaper price, maybe even, of a better quality (debatable point). But the pride derived from making it was gone.
But this was not the result the capitalist aimed for, just a minor subproduct. What the capitalist wanted to do was to make labor cheaper. Instead of needing a genius craftsmen, that costed $1000, he could do ten times the work with 100 monkeys that costed $5 each. The craftsmen had to know it's craft, the monkeys, with help from machines could be almost brainless.
Software might be on the same path. Technology is slowly stabilizing. Right now it is not imperative to change computer every two years, as it might have been when significant breaktroughs in usability were being achieved. Changing from monochrome to color, or from no mouse to mouse, or from no sound to sound is far more exciting than just adding memory to be able to run the lates game. Besides, other than the gaming community, processor hungry genetic coders and freaks, most people use PCs for word processing (writing letters), spreadsheets (adding columns of numbers), e-mail and internet, which are more than covered (despite what latest windows sales people might say) by today's machines.
This non obsolescence that is just starting to attack (or benefit) PCs has been a companion for a while for bigger commercial applications, because of increasing power of machines, and high costs of migration. Companies can't afford to be changing their technological infrastructure every two years. Maybe not because of the cost of development itself, but because of the cost of teaching their monkeys how to use their new tool, with the learning curve that it involves.
Thanks to this, commercial applications have been done in the same way for a while now (and, in some market niches, will still be done in the same way for a while). The problems the programmers of such applications have to face are the same as three, four, ten years ago, so they know how to deal with them. The problem is not about "what to do" or "how to do it", that is already known. The problem is how to do it faster, cheaper, more productive. So, the solutions are the same as the ones that the industrial revolution brought: bring machines to help you and specialize labor, so that you can use a cheaper workforce to perform tasks.
In this case, however, machines are already there. You need to make programming faster and cheaper, so that a graduated rocket technician is not needed to program. The solution is simple: Bring hyperspecialized tools, that make programming code generation simple for the group of tasks you perform, and start churning out software like a madman.
Under these scheme of things, the strain is on resources and communication, instead of being on the technical side, so it becomes an issue of logistics and business administration, instead of being an issue of technical management of technology boundaries. You will still beed rocket scientists, to make the hyper specialized tools, but then maybe, you might cut a deal with a company of rocket scientists ( or one that has taken this "divide and conquer" technique one step further and can make hyper specialized tools with baboons, instead of monkeys) and buy the technology.
This might produce money, but it doesn't really produce knowledge, in the same way that fabricating bottle caps does not really produce knowledge. This is not bad, it is just a way of doing things but, are the aims of "producing knowledge" and "producing money" (in that order) contradictory? Let me pray they are not.