I’m constantly amazed at how much the software development landscape has changed since I first started my professional software programming career nearly twenty years ago.
If I had to name THE single pivotal event that steered the ship of software programming in a radical new direction, it would have to be the birth of the internet.
For those of you old enough to remember life before the internet, you probably will remember what it was like to install and run software on your computer.
I’m sure lots of young people these days don’t even recognize or understand the concept of “shrink-wrapped software”, which you had to purchase from a brick & mortar retail store. It came in a physical box and the software came on a floppy disk or CD-ROM disc.
You took the floppy disk(s) or CD-ROM(s), insert them into your floppy drive or CD-ROM drive, and you kicked off the process of installing the software from the disc media locally to your computer. Depending on how large the software was, it could take a significant chunk of time for the entire installation process to finish.
If the installation went off without a hitch, you could then launch the newly installed software from your computer.
Keep in mind, this was the installation process for just a single software application.
If you wanted to install a different piece of software, you’d have to purchase yet a different boxed set of shrink-wrapped software from whatever brick & mortar retail store carried the specific software you were looking for, and come home and start the manual installation process all over again.
Word processing, crunching numbers into a spreadsheet, and computer games …. these were what most consumers typically purchased for their computers.
And let’s not forget that you had to purchase the RIGHT kind of software targeted for your particular computer platform.
If you had a Mac, you’d have to make sure you purchased the Mac version of whatever software application you wanted to use. If you had a PC running MS-DOS or Windows, you needed to make sure you found the MS-DOS or Windows version of the software written for your IBM-PC compatible system … the Mac version of a word processor would definitely not be able to run on a Windows or MS-DOS machine. If you bought the wrong version of the software, you’d have to make yet another trip back to the brick & mortar store to return the wrong version, and get the correct one.
The Pre-Internet Software Landscape
The distribution of software was definitely a pain point back in the pre-internet days.
Commercial software back then, before the rise of the internet, was also quite costly.
It may be hard to believe nowadays, when there is an overabundance of free or low-priced software that can be purchased for a fraction of the cost of what software used to cost before the internet.
Take Microsoft’s Office suite of software, Word, Excel, Powerpoint and Outlook.
I remember the days when each of these standalone applications cost in the hundreds of dollars. If you wanted to get all four, Microsoft would lure you with a special bundled price. But at the end of the day, you’d have to pay well north of $500 to purchase.
And who was the king of software development companies? It was unquestionably Microsoft.
Microsoft’s market share of the operating system and office productivity software was so massive and dominant, they caught the attention of the United States Justice Department, who launched an investigation into Microsoft’s business practices for possible antitrust violations.
With so little market competition, Microsoft had free reign to call all the shots, so to speak, and charge customers handsomely for the privilege of using their software.
This was the software landscape before the rise of the internet.
As a software developer, it was just as tedious to distribute the software you created, to your target audience.
I still remember the bad old days of desktop application development deployment. It was a major hassle for developers like myself to deploy apps to our customers.
The deployment tools for us Microsoft developers back in the early days of my programming career honestly weren’t very good. It was quite a hassle to install my apps for my customers.
Oftentimes, it was just easier to physically walk to my customer’s computer and handle the actual installation myself.
Even worse, anytime I needed to add a bug fix or patch or a new feature or enhancement, I’d have to go back to my customer and reinstall my updated app to their machine.
Now if you only have a few customers using your app, it’s not too big a deal. But imagine if a hundred people need your app. Or five hundred. Or a thousand. Would anyone enjoy manually installing an app 5000 times?
How The Internet Transformed Software Development
The rise of the internet was unquestionably a watershed moment for software development.
A web browser is the one and only piece of software a computer requires, and pretty much every computer, tablet, and smartphone device on the planet already has a web browser pre-installed on the machine.
You type in an internet address from your browser, and once the content finishes loading into your browser, voila, that’s it. You’re ready to run any sort of internet-based application available on the planet.
A web-based application is a snap to update. You make your changes to the web application, upload your changes to the web server hosting your application, and boom, it’s instantly updated. The next time a person refreshes their browser and navigates to your web application, they will instantly see all your changes and updates.
There are certainly many advantages to web-based application development, but this one stands out as one of the primary reasons why so many software developers have flocked to the internet to create software applications. The power of a fully networked and all reachable internet platform that can potentially reach any person on the planet is a powerful incentive for many software developers.
One of the annoying things about early based web applications was the irritating way your browser required a full page refresh when you clicked on the “reload” button of your browser.
It would blank out your screen while the browser was busy revisiting the web server to re-download the content of a web application from the server and back down to your client browser.
You can see this AJAX behavior in action if you’ve ever used Google Maps or Google’s Gmail web applications.
You’ll notice that once your browser finishes the initial page load, from then on, you’ll notice there’s never any full page refreshing or “flashing” of the page …. everything gets updated seamlessly and behind the scenes, just like a traditional desktop application.
Web applications have come a long way since the early days of the internet.
You can literally use a web browser to accomplish pretty much all your daily computing needs.
It’s given rise to companies like Google, who make the lion’s share of their revenue from creating web-based internet applications.
With just a web browser, you can use Google for your e-mail, photo management, cloud storage, music streaming, movie/tv watching, word processing, spreadsheet, instant messaging, web meetings, mapping, presentations and many other useful applications, all running within the confines of your browser.
Google has been pushing hard for the use of Chromebooks, which are essentially laptops that run a specialized version of their flagship Chrome internet browser-based operating system, and nothing else.
With that single desktop based application, you run all your applications within the Chrome browser.
It’s given Microsoft some serious competition in the productivity software space. The internet has made operating systems less relevant these days, which has traditionally been Microsoft’s bread and butter crown jewel revenue maker.
Are there any use cases where desktop software still has an edge over internet applications?
To be honest, there probably aren’t many compelling reasons left to stick with desktop application development. There are software development kits and libraries available for application developers which help you create web-based applications that can harness native capabilities of a computer, tablet or smartphone device, like GPS, the camera, and other useful hardware features.
Desktop applications are by no means extinct, but the new internet kid on the block is definitely swaying armies of developers to the internet platform.