I started my first programming job in October 1981, developing desktop software on Apple II and Act Sirius. For the next twenty years, although I changed jobs, the tasks still involved developing desktop software—first on MS-DOS and then Windows.
But since the early 2000s, the number of web development jobs (and within the past decade, mobile jobs) has increased exponentially, and it sometimes seems that desktop development is now almost non-existent. Is the end of desktop development actually upon us?
Reviewing rankings of popular programming languages (such as the one produced annually by IEEE Spectrum), it’s clear that a number of the most-used languages are utilized in many different contexts, including web, mobile, and desktop; however, it’s pretty clear that most usage targets mobile and the web; just look at how Apple has been trying to desperately convince developers to build for macOS in addition to iOS and iPadOS.
The Advantages of Web Development
It’s kind of understandable why web in particular has taken over. When I worked as a mobile developer in the taxi sector (from 2014-2017), I had a colleague who’d developed and sold taxi-centric server software for roughly 20 years. This desktop software let operators accept bookings from a phone, and then scheduled jobs to a fleet of taxi drivers.
The software used to work in conjunction with specialist radios in cars, but since Android phones came along, the platform mutated into an app-and-server combination that tracks journeys, displays bookings, and integrates with Google Maps software.
This taxi server software is written in VB6 and sold for Windows 10. My former colleague has to install it on PCs with many customers across the UK; he spends a fair part of his week visiting them and performing support, installing updates, etc. Most are small firms and don’t have technical staff of their own, so they rely on him. Being a one-man outfit, he drives between 500 and 800 miles a week as part of his job!
Over the last few years, he has seen rivals come along and take business from him with web-based systems. These have many advantages compared to a desktop system. No on-site support is needed, as they all use web browsers. A website can be amended or upgraded anytime, and clients can switch their server to newer, faster hardware without customers even noticing.
His system works with local servers and the taxi firms control all their own data. But rivals now offer mobile apps running on cheap Android phones talking to centrally located servers. As Uber has shown, taxi firms don’t need local systems to run their fleets. The same web-based system can work for different firms all over the UK. As more customers sign up to a system, it can scale up.
The web and mobile have made massive inroads into areas that used to be dominated by desktop. Although Web UI has never matched the versatility of desktop UI, it hasn’t really needed to. The “thin client” that was once thought so desirable back in the 1990s is now a reality. For instance, Microsoft Office 365 is available in both web or standalone versions. If you were Microsoft, wouldn’t you prefer the recurring subscription of the web-based application rather than the “once every few years” upgrade purchase of the desktop version?
Conclusion: Desktop (Barely) Hanging On
It’s not just the technical advantages of web/mobile but the financial incentives of getting regular subscriptions that is shifting many developers away from desktop. Ironically, the popularity of the Python language (and the recurrence of C++) with artificial intelligence (A.I.) development, including machine learning and Big Data, may yet save desktop development from dying away completely. The JetBrains survey of Python development in 2018 showed data analysis as the most popular (58 percent) with web development at 52 percent, machine learning at 38 percent and explicit desktop development at just 19 percent.
Also, some large companies and banks in particular still have a need for bespoke desktop software. You wouldn’t write high-frequency trading software to run in a browser app.
Another strand of development that may bring desktop and browser development together is WebAssembly. Eventually, desktop applications will be browser-enabled through transpiling to WebAssembly, though we’re a little way from that yet. Desktop development might not be what it was, but it still has the power for many developers’ specialized needs.