Find out what Justin James says will severely impact how we program and how we develop applications.
In the blog posts I wrote in 2006, I was primarily trying to bring some reality and common sense to the hype flying around many new ideas (it was a lost cause); discuss usability theory; and expose that mainstream programming is pretty mediocre. In 2007, my main themes were education, multithreading, and functional programming. This year, I will examine my prediction of a decline (not a demise but a decline) in traditional client/server desktop computing.
Here's a roundup of some of my previous writings that feed into this progression of ideas:
- I laid out some hard facts about the history of computing; those facts were extrapolated by Gordon Bell (a fellow much smarter than me) into a very solid and, I believe, reasonable and likely prediction of what the future holds for us. I believe that the still widening rift between "data" and "people" will contribute to this.
- Current desktop hardware development trends are out of step with mainstream programming techniques.
- I have learned a lot in the year and a half since I identified the underlying crisis facing the programming industry: Most users are "read only" for any content except some mouse work and text, and their text needs are fairly light (e-mail, IMs, filling in the forms on a Web store's checkout system). In other words, most users can do typical computing chores on a cell phone or a smartphone.
- Many of the existing standards that we program against are bad standards; they were written in an era when life was much simpler. Next week, I will revisit the topic of standards and go into more detail.
News stories of interest
Two seemingly unrelated news items that we should pay attention to are: Bill Gates is retiring this year, and phone manufacturers finally settled on an across-the-board power/connectivity connector. To put it another way: The man who drove the systems that 95% of us use is leaving the scene; and our cell phones, PDAs, and other devices can now easily interconnect to each other (and our existing peripherals) with a $5 cord without the need for a PC.
What does all of this have to do with programming? Everything. We are in the middle of intense change within the programming industry even though most of us can't see or participate in it. We will just be stuck cleaning up the aftermath five - fifteen years down the road. The programming industry prides itself on rapid change and instant obsolescence, but the reality is that it's changing very, very slowly. There are still a ton of important computing systems that are rooted in designs from the1950s and 1960s.
I have been learning a lot about the mainframe and supercomputer eras in an effort to try to mine that history for clues about our future. I believe that many of the standard features of mainframes are going to migrate to the current server hardware, typically in OSs adapted to take cluster configurations and treat them as a single addressable system. The result is that programmers are increasingly writing code that targets systems that behave like the Windows or *Nix servers of yesterday and today, but have the reliability and abstraction of multiple processors that mainframes have enjoyed for years. Look at the list of mainframe-like features that are sprouting up all over the place in microcomputer-oriented server rooms:
- Virtualization of resources
- Zero down time for hardware failure/replacement/upgrades
- In-place OS and application upgrades
- Bytecode interpreters and runtimes that abstract the hardware to the point that the programmers do not know or care what is underneath
Ride this programming wave
We are seeing the server room getting better and better, the desktop platform stagnating, and the mobile device platform improving. How much longer will it be before "the suits" ask themselves, "Do employees really need expensive PCs and phones if I have been using my BlackBerry as my sole computing and telephony device for a year?" The answer all too often is, "No, they do not."
As applications shift to the Web platform (or even just a server-based platform, so long as the client can be mostly lightweight), the only thing holding these cell phones, UMPCs, game consoles, and smartphones from entirely replacing the desktop PC as well as the desktop phone is the input situation and the output situation. Give these machines a USB port, and the problem is resolved with one connection to a docking station. I would love to replace my desktop PC with a UMPC with a docking station, but the prices need to come down some and my personal needs would have to be a bit less development oriented for that to be reasonable. But for an office worker with a $700 Dell and a $300 Avaya phone, it makes too much sense to the IT department to replace these with a $400 smartphone.