The parallels between traditional industrial processes and those of software development are becoming easier to recognize. The term “quality assurance” was taken directly from traditional industrial manufacturing; “capability maturity model integration” has worked itself into the vocabulary of the software industry. Even mass production, a phenomenon of industrialization, affects software development.
But software differs from traditional industrial products because the production costs of individual products like a disk are negligible. What remains the same, however, is that the sale of large numbers of software products can reduce some of the tremendous cost of development.
Automation has been a goal of software development from the very start. But unlike traditional industries, rationalization – a result of automation – here tried to create ever-more complex systems rather than reduce manual labor. Even the tendency to standardize products is present in software development. For example, programming languages help standardize programming. The mass market for PCs and PC software was first captured with the availability of propriety standards like the Windows operating system. Standardization continues to march ahead, as seen in the growing interest in platform strategies whose art consists of meeting a multitude of individual needs with a few variations.
Industrialization also involves a lessening of vertical integration. Companies no longer manufacture complex components themselves; they prefer to purchase them, which results in better prices and higher quality software. An automobile manufacturer no longer stands out because of competence in manufacturing. For success, a company must dominate the entire system and lead the way in processes. Software today is no longer an individual product, but a component of everyday life – just like cars or assembly lines. Computer scientists must be able to understand and have a command of complex systems controlled by computers. In the automobile industry, the electronic and software components of vehicles are an important driver of innovation. Comprehensive thinking about a total system is needed to understand the entire system – the vehicle.
More than a commodity
A commodity effect usually accompanies industrialization and standardization. Mass-produced items become everyday objects, or commodities, that many manufacturers can produce. Rationalization rapidly reduces manufacturing costs, which move ever closer to the sales price, and the price spiral continues to push downward. Many feel that as part of this development, software will become more intuitive and always available, much like electricity. But that doesn’t necessarily mean that it will become less important.
The commodity effect and standardization, however, do not forcibly exclude innovation. As a result of commoditization, companies have a choice. Automation and rationalization force companies to grow to a certain size so that they can work economically. But innovation and specialization can also add a great deal of value. The software industry has a lot of room for new development both for software applications and for manufacturing the software. Higher abstraction levels like Business Process Execution Language (BPEL) or service-oriented architectures (SOA) already form the foundation for innovation. Software is becoming increasingly standardized, but a significant portion of it will be more than common goods in the future. The advances in standardization make new application areas possible. Complex tasks can be solved by integrating existing components – at reasonable prices – and tuning them to user requirements.
Another consequence of industrialization is that more products are sold with services. For an automobile, that means that it’s just not the car, but the service of mobility as well. In the case of software, such offers range from traditional maintenance to a complete change of the price and operating concept and even to utility computing. Much like purchasing electricity or telephone service, customers purchase IT services from a service provider who charges for the services used. Industrialization also affects management, which must increasingly operate with key figures and shift its focus to economic questions. Infrastructures are changing; to achieve economies of scale and cost advantages, companies are consolidating computer centers and extending server farms and communications channels. In the market, the result of industrialization is the increasing conglomeration of economic power when companies merge into larger companies and corporate groups. A prolonged process of concentration is beginning.
It’s all about coordination
Some things are changing for software vendors: increasing pressure on prices and a switch to a larger-sized company or a niche market because of the commodity effect. They must decompose processes to control software development reliably. They must attempt to profit from the benefits of industrialization by using special tools, involving specialists, or working with competent vendors or subcontractors. The realization of projects in a distributed environment ensures cost advantages with offshoring. Project and interface management, coordination, and the certification of deliveries and quality assurance are becoming more important for German vendors, for example. The focus is moving to software architecture, design, and consulting, but an understanding of the application itself is just as important as ever.
These developments also challenge customers. They must make even more important decisions about a cheap or a fast solution, and decide whether they want to bet on standards or on innovation. Components must be purchased carefully and controlled properly, sometimes across many levels and in a distributed environment. In some cases, the ability to deal with other mentalities and work cultures can be an even more important factor than understanding the technology. The multiclass society created by the tremendous pay differential between onshore and offshore employees might well require a psycho-social solution. For vendors and customers, tasks like management, coordination, and conception are more important. Developers increasingly think of themselves as industrial engineers, and not – as is often the case today – as artisans. Professionalism and improved command of processes require more disciplined procedures.
A foundation for success
Industrialization affects all industries. It means improving tools, using components cleverly, controlling projects efficiently, and optimizing costs. But costs are not always the decisive factor: it’s also a matter of innovation. Software vendors are expected to be innovative enough to produce better software. That includes developing software that manages greater complexity by integrating components, needs less maintenance, creating new application areas, and improving quality. The phenomenon of mass production will not completely shut out individualization and innovation. Software engineering and its further development are the preconditions for successful industrialization. That’s why there are constants even amid all the change. An excellent education in theory and practice is elementary in general and in programming. They are all basic to architectural consulting and decision making, design, and product selection.