Software has evolved quickly over the past decade. This evolution was driven by the fast advancement in computer technology and the availability of devices. Not so long ago, a computer was a device only owned as a luxury item. Households typically only had one computer at the most. Many households did not have any computers. When the Internet started booming with email, computers shifted from a luxury item into something every family had to have.
Once computers became commonplace in a household, the .com bubble grew. Online startup companies starting making large amounts of money in stock trade. Every company was trying to break into the technology market, which was very volatile at the time. Many people ended up losing money when the .com bubble ended up bursting. It burst because of the quality of services provided by many of these companies. Their services were not what the consumer wanted.
I remember growing up during the technology boom at the start of the new millennium. It was a very difficult time for consumers because both hardware and software products were expensive. The Internet did not have the shopping infrastructure that it has now so it was hard to find reliable reviews on products. One would have to take a leap of faith when purchasing new technology. The greater gamble of purchasing hardware or software was definitely software.
The gamble of purchasing software during this time was due to the underlying craft of making software. This comes down to the argument of whether it is actually engineering or an art. Some companies definitely were only into creating software at the time to make money. I remember purchasing software more than once and getting the feeling that I had been ripped off. There were just too many inconsistencies in the market.
At that time, if a consumer wanted to purchase software, they had to drive to the store and purchase the software from a box on a shelf. Each store had a computer software section, which are mostly nonexistent now, that displayed all of the software. The selling point for the software was a blurb written on the box and a compatibility chart on the back. The chart was not very helpful as Linux was not prevalent at that time. If you wanted Mac software, you had to buy a separate box. The chart on the back of the box just listed different Windows versions with a check beside them if it was compatible.
Windows itself was part of the problem as well. Each version of Windows that came out seemed to be drastically different from the previous version. I remember upgrading the operating system on my computer from Windows 95 to Windows 2000. Most of my computer games did not work on the new operating system. I do not believe that this was the fault of the software creator because they would have to plan for an operating system that they did not know about.
There were times where the failure of the software was a problem for the developer. I purchased video editing software once to edit some videos from my family camcorder on a Windows XP computer. Both of the boxes on the back of the software had checks showing compatibility with my devices. When I actually went to use the software, I received an error stating that the codecs used by my videos were different. I had no idea what that meant at the time, so I went back to the store to ask for help. They said I had to buy a separate piece of software to convert my videos between encoded versions. They had marketed the software towards my demographic, which was just interested in having out of the box software that worked. That was usually never the case. There were always add-ons or trial periods of different tiers of the same software to improve it. Somehow, we as consumers were supposed to believe that if we sent more money to the creator of an incomplete software product, that it would improve.
Loka states that it is up to the consumer to research the software to see if it meets their needs (Loka, 111). In the time of bubble burst, this was not the case. The reviews and online software marketplaces were not there. The creation of software at that time was more of an art that needed marketing. Once a piece of art becomes famous from word of mouth, the price for that piece of art increases dramatically. I believe that is how software used to be. Software engineering used to be less of engineering and more of an art. There were not volumes of documentation on how to create software for a specific operating system. There were not powerful programs that checked your code as you wrote. A software engineer had to make fixes to their program on the fly while sometimes making crafty fixes to bandage mistakes.
Software has evolved over time. The availability of devices has helped software development stay profitable. The introduction of controlled mobile operating systems has helped with the stability of software development. Now there are complete guidelines and development environments created to help developers create software. It has morphed back into more of an engineering profession than an art. Sure, a developer can still write elegant code, but more often than not code across developers is looking more similar because of the advancement in the coding environments. Loka states that developers focus on creating programs because they can and not because they are trying to solve a problem (Loka, 110). This is true and why there is still an artistic element to it.
Software development has become very similar to the music industry. The music industry, focusing on rock bands, are using the same equipment as musicians from over 40 years ago. The music sounds different because there is an artistic element used. Software development has moved along the same path. All software developers now use the same programs to write code on the same systems. Most developers are not writing programs from scratch using a low level programming language and an archaic editor like vi. Developers are now using programs that highlight code to make mistakes stand out. These programs build the outline of code for the program as soon as the developer starts a project. Some of these higher level programs even finish lines of code for the developer.
A guitarist using the same type of guitar as someone from the 1970’s can produce a very different sound. That is because of the craft behind it. There are video games that teach individuals how to play guitar. That does not mean that all guitarists will sound the same. The same goes for software development. Somewhere there is going to be a human element to the development of a program, which will fall on the artistic spectrum, but programs need to be engineered to work.
Denning thinks that engineered software needs to go through the same types of tests that engineering uses (Denning, 25). Software already uses its own benchmarking tests, which he admits in his paper. I think the biggest reason engineers reject software development is because of the backend code that they do not get to see. Most typical engineers looking at code will try to write it off as not some type of engineering because they see the code in a text document. To them it appears to be more like writing. Since writing is an art, they are probably assuming that code writing itself is an art.
Multiple types of engineering relate less to engineering than software development. Take social engineering or political engineering for example. Trying to get people to react a certain way or figure out how they behave is very similar to trying to figure out how to get a computer to behave using software. The engineering team behind a piece of software creates a system that meets the architecture plan then turns it into the user interface (Denning, 26).
In conclusion, software development has evolved from more of an art form to a more traditional form of engineering over the years. This has been due to an advancement into the methods used to create the software along with the traditional advancement in the technology itself. Devices are now set up so that developers need to engineer software in ways that make it power efficient while using little processing power. This is important because we have shifted from a desktop centered user base to a mobile friendly one where devices rely on battery power. It is up to the developer to engineer a user friendly solution that works as advertised using the same types of failure tests used by engineers. That alone helps classify software development as engineering.
- Denning, P. J., Riehle, R. D. (2009). The Profession of IT: Is Software Engineering Engineering?. Communications of the ACM, vol 52(3), pages 24–26.
- Loka, R. R. (2007). Software Development: What is the Problem? The Profession, February 2007, pages 110–112.