The migration of business opportunities of software development from craftsmanship to innovation poses new challenges. In the 1950s, it started as craftsmanship. Either user themselves or programmers working with them used to write code to implement evolving requirements. Prof. Knuth termed it as an art. Knowledge about computational algorithms and how to transfer it into programming instructions used to be the challenge. Hence, the challenge of succeeding with software development was limited to computational science and technology knowledge. In those days, computer programmers used to work as in-house employees of software user organizations.
However, in the late 1960s, the practice of engaging contractors started emerging. As opposed to writing code to translate evolving requirements, the challenge moved to articulate requirements and prepare contract documents. Moreover, the scope of software changed from bits and pieces of applications to an integrated system. To win the contract, the contractors had the challenge to propose the most feasible solution, which could be cost-effective developed. Hence, the issue of optimization of design started to emerge—giving birth to engineering. The challenge had been winning contracts and delivering customized applications within given financial and time budgets.
Since the 1980s, the software business has been gaining significant attention due to the exploitation of its innovation potential. Particularly, Bill Gate’s success in building Microsoft and becoming the richest person in the world out of software innovation has been quite remarkable. As opposed to developing software as an in-house employee or contractor, Microsoft has been in the mission of developing software and diffusing it as an innovative product. Each customer pays a very small fraction of the cost of the development of software, while the producer makes a profit. The challenge has been to take advantage of economies of scale, scope, and externality effect to create the economic success story.
Technology progression for easing craftsmanship challenges
One of the major challenges of the craftsmanship approach was making programming easier and less error-prone. The challenge was to develop bug-free software as per the requirements. The focus was on developing easy to program computer languages and compiler features for detecting errors to overcome them. Furthermore, code writing editors also started having features for detecting and flagging errors and providing some assistance. To address the productivity issue, reusable library development got quite a bit of emphasis too.
For dealing with the complexity of designing large scale software applications, improving maintainability, scalability, and testability, and making it easier for a team of programmers to work collaboratively, structured, and object-oriented programming techniques were developed. The craftsmanship-based approach’s success primarily relied on technology development for making it easier to design, write, and organize code. As opposed to the cost of delivery, the challenge was to produce bug-free software in the shortest possible time.
Challenges of managing and winning as contractors for delivering customized software applications
In addition to having the technology capability of developing software, succeeding in software development through contracts poses additional challenges. Some of them are i. requirements articulation and developing specifications before floating the request for proposal, ii. conceiving optimum design and estimating cost as well as time in preparing the bid, iii. upon winning the contract, the contractor faces the challenge to make sure the delivery of specified software within estimated time and fund, iv. customers face the challenges of monitoring progress, and v. both customers and contractors face the challenge of assuring quality. These additional challenges are significant enough for making the software development through engaging outside contractors unmanageable. To overcome these, some notable developments are NASA’s and IEEE’s software engineering standards. Furthermore, the software engineering process model of CMU’s software engineering institute (SEI) and ISO standards for software development are for addressing these issues.
The transition of software development from craftsmanship to innovation poses quite unique challenges
To succeed as an in-house developer through craftsmanship skills, the challenge is to master technologies and have the mental capacity to articulate the translation from requirements to design to code. The cost of delivery is not a very important issue, as inhouse employees are mostly salaried. But, the challenge to succeed as a contractor stretches the limit of technology and craftsmanship skills. Hence, diverse engineering practices have been developed. However, if the contractor fails to make delivery within the estimated time and budget, the contractor will suffer loss even upon developing the software.
The challenge to succeed as an innovator is far more than being very good in software development as an in-house craftsman and outside contractor. Unlike in-house employees and contractors, customers do not offer requirements to innovators. There is no certainty that someone will pay for the software that the innovator is developing. However, the innovator has a strong potential to charge a small fraction of the cost of development to each customer and make a profit as well. The challenges and opportunities have been to leverage economies of scale advantage as the cost of copying software is zero.
But how to create the willingness to pay for the same software among multiple customers is a daunting challenge. Hence, innovators are quired to perform upfront analysis of requirements desired by a target customer group and make R&D investments for developing the software. Often, innovators add conceivable all features that target customers will likely be asking for. Such reality demands huge upfront investment for opening the opportunity of making a profit by charging each customer only a small fraction of the R&D cost.
Sustaining the sale of innovative software application is a big challenge
Upon the release, the innovated software application faces a number of forces. Some of them originate from the competition in the form of imitation and innovation. The resultant effect of these forces invariably keeps the wailings to pay for the innovation drifting downward. Hence, software innovation faces sustaining challenges. To overcome this reality, the innovator is required to keep releasing successive better versions, preferably at a lower price.
The challenge hinges on adding new features and improving existing ones. Consequentially, it will increase the willingness to pay among the growing number of customers. Innovators should also look into the prospect of adding features for creating a network externality effect. Positive effects will keep increasing willingness to pay among the growing user base. The leveraging of scope advantage through the development of a family of products around a common core asset is also essential. Reuse of core assets among multiple products strengthens winning strategy in software innovation. Therefore, the transition of software development from craftsmanship to innovation has been a demanding winning strategy.
The natural tendency of monopoly makes winning with software innovation quite challenging
Zero cost of copying software creates both economies of scale and scope advantage, facing no limit. Moreover, through compatibility, standards, and network effect, there is also a scope of creating a positive externality effect. In the competition race, often winning strategy is to outperform the competition by increasingly adding more and better features and creating a positive externality effect. Such an approach increases the willingness to pay among a growing number of customers. As a result, the opportunity of reducing the price and improving the profitability simultaneously opens us.
Hence, in the competition race of software, invariably, the winner shows up with the offering of the highest quality at the lowest cost. As a result, the winner attains the price-setting capability to make a profit, while compelling the competitors to take lower price and suffer loss. Hence, succeeding in software innovation demands a smart monopolization strategy. In its absence, craftsmanship, technology, and engineering skill run the risk of suffering from loss.
Over the last 70 years, the focus has been on developing technology, lately engineering practices, for acquiring software development capability. But the opportunity has changed from in-house development to contractor to innovation. Innovation is a preferred option for both customers and producers. On the one hand, customers get high-quality software at a very low price, as the development cost is divided over many customers. On the other hand, innovation offers an exponential growth opportunity of revenue and profit for the producers.
But the challenge of winning as an innovator is far more than knowing technology and engineering. Unfortunately, the existing body of knowledge of computer science and engineering and software engineering does not offer the toolbox to succeed as an innovator. Hence, the migration of practices of software development from craftsmanship to innovation deserves serious attention.