The evolution of complex software
Software used to be an enterprise-only business. Companies with huge capital were able to fund, research and build large mainframe computers on which to create software. Initially, programmers would have to load code into the mainframes by flicking switches or using punch-hole cards.
Stacks and stacks of paper that would reach the height of a normal human being contained a single program. The loading of the program was a tedious and time-consuming process.
For decades, software used to be written on mainframes by computer programmers at universities. That is, until the Rise of the Microcomputers (anyone getting a Terminator vibe?).
Probably the term “microcomputers” can also be applied now to smartphones or single-board computers such as the Raspberry Pi. In hindsight, microcomputers were much smaller than their mainframe ancestors.
Computers such as the Altair 8800, which we mentioned in the first chapter was one of the first mail-order microcomputer kits. Hobbyists flocked to it, the most famous example being Bill Gates and Paul Allen, developing the Altair BASIC OS under their newfound company, Microsoft (1975).
Back then, software used to be distributed on external media such as cassette tapes and cartridges. Some software was even distributed inside hobby magazines.
Users would have to manually enter the code in their computers in order to load the software; typically, this practice would be much too tedious even for smaller programs, not to mention larger programs, which would not fit inside a single magazine.
A new era dawned upon the IT community with the arrival of the IBM Personal Computer, which brought with it the IBM PC compatible hardware platform. The platform used to let different PC’s use the same software and expansion cards between them.
This meant that software could be developed for one PC, and run on a different PC, which was not possible up until that moment. Before, dedicated software needed to be developed for a specific computer with a specific architecture.
The evolution of programming languages and the reduction in size and price are considered to be two harbingers of the IBM PC and its compatible hardware.
Fast forward to the 21st century, and we now have software which spans multiple technologies, APIs, servers, and architectures. It is a blend of different flavors of tech.
Software is vastly more complex today, creating it being not necessarily more cognitively demanding, but connecting more platforms, libraries, and technologies than before.
With the unveiling of the Apple iPhone in January 2007, a new computing milestone has been achieved. Steve Jobs militated for the development of native applications on the iPhone.
With the release of the App Store (July 2008), the tech visionary also announced an SDK for third-party developers to use in their development:
“Let me just say it: We want native third-party applications on the iPhone, and we plan to have an SDK in developers’ hands in February. We are excited about creating a vibrant third-party developer community around the iPhone and enabling hundreds of new applications for our users. With our revolutionary multi-touch interface, powerful hardware and advanced software architecture, we believe we have created the best mobile platform ever for developers.”
Android, the mobile operating system and competitor to the iOS, bought by Google in 2005 brought its own SDK and app store (October 2008) to the table. Thus, the mobile behemoths gave third parties the tools necessary to build their ideas.
There is a lot more to be said about how we got to the software that is currently powering our devices, which is a subject that is tackled more in-depth in our book, From A to App Success: How to turn ideas into apps that make a difference.
The excerpt you have just read is taken from the second chapter of the book, called “How complex software evolved”.
The book gets into all sorts of topics, from the ideation phase, through the business analysis, design, development, testing, etc. all the way to reaching success. It covers a wide array of ideas, phases and even the job specifics of those involved with app development.
You can download the book for free by accessing our website here.