Is not the software technology and engineering capability good enough in creating high-growth software firms? Although most software companies are small and struggling with financial hardship, there are a few large, rich ones. Does it mean that small and struggling software firms are relatively weaker than high-performing ones in technology and engineering? Of course, that might be a reality in many cases. But even having the same technology capability, a few may outperform the most. At the core of this differentiation is software engineering management. Making software is no longer a complex task. Software technology and engineering practices are good enough to develop syntax error-free large software applications. Meeting timing and defect density targets are non-longer unsurmountable either. The most challenging part is to convert software technology and engineering competence into profitable revenue.
Once engineering was an odd terminology in the world of the art of computer programming. In those days in the 1960s, the focus was on knowing machine language and mastering the art of translating mathematical logic, like how to sort numbers, into code. But soon, the art of programming reached the limit. Growing size kept overflowing the mental model-centric design, coding, and testing practices of software craftsmanship. Hence, software engineering in the form of structured and object-oriented programing, waterfall or spiral models, and unified model language kept emerging. To give a production line shape, the software engineering process from CMU started to unfold. Hence by 2000, more or less, software development took a form of engineering, except aberrations like agile or scrum.
So far, software engineering has focused on making software. But the success of software firms does not only depend on the engineering of high quality and complex software. The ultimate success criterion is creating economic value in a competitive market out of software production.
Software business models:
There are three major software business models: (i) customized application development, (ii) developing and trading software assets, and (iii) leasing programmers for development.
Developing customized software applications is often the entry route of many software firms. It has a shallow entry barrier. Just skill and a computer could be good enough to get into the business of developing software as per the need for the customers. This model may grow as a full-blown contractor responding to customers’ RFP calls. Payment could be made per hour, day, or as a fixed prized contract.
The next one is about leasing programmers to customers. Training is provided to graduates to qualify for some skill certifications to do software development work for the client. Clients lease them on a monthly or yearly basis. It’s called work for hire model. As revenue is linked to how many programmers have been leased at what rate, the revenue shows a linear model. Large Indian software firms are in this model. Instead of developing software for the clients, they lease programmers to clients. However, it has become very successful in developing software firms with large headcounts. For example, India’s Infosys has more than 250,000 employees on its payroll.
The 3rd software business model is about developing software assets and trading them. The trading may be done as (i) licensing of standalone software application, (ii) software as embedded assets of software-intensive products, (iii) software as a service, and (iv) software library or components. For example, Apple trades software embedded in iPhone. Microsoft has been trading software as a service. By the way, once Microsoft used to trade software by licensing the right of use. Besides, many firms have been trading software plugins and libraries.
Economics for software engineering management:
The Economics of software production has two major dimensions. The first one is about how many units of outputs are produced per unit of time. The units could be lines of code, requirements, design, test results, or so on. It’s also linked with related productivity parameters like defect density, reusability, maintainability, and so on.
The 2nd most crucial factor is how much willingness to pay it creates among many customers. Although the first output is visible and immediate, the latter one affects the bottom line. As the cost of copying software is zero, software firms have the potential of enjoying substantial economies of scale effects. Economic benefits could scale up further by taking the economies of scope advantage. Firms can leverage additional value by developing a family of products around core assets. For example, Apple has been enjoying a very high scope advantage by creating multiple products like iPhone, iPad, and iMac around the same software core assets. Furthermore, software innovations are highly amenable in creating positive network externality effects–perceived value keeps growing with the rise of user baser.
Although trading of software modules as reusable assets greatly benefits from economies of scale and scope advantages, software firms in offering customized application development suffer from a diseconomy of scale. Although complementary roles and job division and specialization create scale effect initially, the overhead created by interdependence and poor communication and knowledge transfer shows a diseconomy of scale. Hence, the production function suffers from diminishing return, taking an S-curve-like shape. On the other hand, companies pursuing leasing programmers enjoy a linear revenue model.
Invariably, all software products emerge in primitive form. It takes a high upfront cost. Despite having the potential of enjoying very high economies of scale due to the zero cost of copying software, software products suffer from low penetration. It happens due to low willingness to pay. Hence, we should manage software product engineering in such a way that the marginal revenue outweighs the marginal R&D cost. The engineering effort should consider its implication on additional willingness to pay.
Software engineering process management:
Dividing software engineering as a set of discrete tasks and arranging them in a sequence can reduce defect density, increase reusability, and improve knowledge transfer. As a result, managing software engineering as a process reduces the diseconomy of scale effect. Although SEI’s capability maturity model is about a detailed process framework, software firms face the challenge of turning the process improvement into a positive return on investment. Hence, software engineering management should look into an avenue of addressing the diseconomy of scale effect instead of getting certification.
Software project management:
Software project management has a few common problems like high estimation error, measurement complexity, and having a balance between cost, scope, and time. But for software engineering management, there is another challenge. That is about how to keep reducing the cost of delivery of software projects out of growing reusability. Yes, nine knowledge areas of PMI help address many challenges of software project management. Still, there is a challenge of addressing reusability by linking with software process and marketing focus. If we develop projects randomly, any amount of process effort would not be of much help.
Software technology and innovation management:
Software business success depends on leveraging technology and innovation management. As software engineering technologies have been evolving, managing skills and transferring assets from older technology base to emerging one are ongoing management challenges. On the other hand, managing software innovation as a creative destruction force is part of software engineering management. Besides, there is a management challenge of releasing successive better versions for sustaining software innovation in a competitive market.
Software engineering management looks into the economics of production, the creation of willingness to pay, and extraction of the value from the market. It also focuses on the process part for addressing the diseconomy scale effect. Although still to date, we look into software engineering from the perspective of technology, there is a growing role of management in creating economic value out of it in a competitive market.
Hence, Software engineering management focuses on productivity, economies of scale and scope, and technology & innovation management for ferreting out economic value from computer science and engineering.