Skip to content

WA1. Why software engineering is different and difficult

statement

A passenger aircraft is composed of several millions of parts and requires thousands of persons to assemble. A four-lane highway bridge is another example of complexity. The first version of Word for Windows, a word processor released by Microsoft in 1989, required 55 person-years, resulted into 249,000 lines of source code, and was delivered 4 years late. Aircraft and highway bridges are usually delivered on time and within budget, whereas software is often not. Discuss what are, in your opinion, the differences between developing an aircraft, a bridge, and a word processor that would cause this situation.

discussion

Software development is an engineering work that differs from any other engineering work. It is not a process of creating a product but a process of creating a process.

A normal engineering artifact involves a certain amount of sharpened experience maintained by solving similar problems. While -in most cases- the problems that software engineers solve are fairly unique, the engineer must start the analysis process from scratch at the beginning of every project.

In the process of building the parts of a bridge or an aircraft, every single part is designed and built to perform a specific task that will never change. If there is any change in its structure, it is no longer the same product; indeed, it is a completely different product. While it is not the same for software, the dynamic nature of the problems that software tackles require constant adaption to various external factors to keep the business alive.

The laws of physics and mechanics that helped build the bridge (or the aircraft) never change; indeed, the new laws build on the old ones; a new physics law rarely proves older ones wrong. With software, things are different; the industry’s dynamic nature showed instances of new methodologies or technologies completely replacing existing ones. The possibility that technologies may quickly be outdated makes spending time and effort to adopt them inefficient, putting us in the first square where each problem needs to be handled uniquely. The estimation process is hard and, most of the time, inaccurate.

Proven quality assurance methods assess product quality at the very early stages. A civil engineer can know the important parts of the bridge during the planning process, where blueprints and diagrams are sufficient for all estimations and calculations related to the project. While in software, engineers can not identify the important parts of the product before the actual implementation commences.

In summary, software products are different because of the industry’s dynamic nature, where every problem is unique. Adapting to market changes requires constant modifications to the product in a world where technologies may get outdated quickly.