About 6 years ago, when I started thinking of software development as a career, I had a conversation with a friend, a C programmer who works for a local company, about the future of software. My take was that desktop applications (as we know them today) will run on remote servers in the future. My argument was that with the advancement of technology, we would not need to install software and run it locally. He thought it was silly.
Today, with the growing popularity of Google Docs (and there are others less well known), my silly projections are starting to look more and more like reality. I think it is important that anyone who is thinking of dedicating themselves to software development is at least aware of this. Software and web development are slowly merging into one. Going back to Google Docs, you can edit text files, spreadsheets, and presentations purely online with no installation required, and then save the files locally once done. No, this isn’t a Google Docs promotional ad (I actually used it a couple of times and it didn’t take my breath away), but this is just the tip of the iceberg when it comes to user apps.
Let me introduce you to a hypothetical example of a popular application running remotely. Suppose Photoshop, a graphics editing application, runs on servers managed by Adobe. To use it, I would buy a license (just as I do now when I buy the CD) and use the software through a browser (or client application). I was doing a few tasks, each one sending a request to the server and seeing the results on my screen. While the required computing power of the servers would be enormous, the technology can only get better, so it’s a matter of time. In addition, the current cost of distribution could be invested in the necessary hardware. Is this example implausible? I do not believe it. The cost of hardware keeps falling, while the cost of distribution can only increase. Over time, due to the need to remain competitive and technological progress, companies will consider going remote.
This concept can even include operating systems. There are a number of large companies that use diskless computers that load the operating system from the main server over the network, so why can’t the network be the Internet? I can even see a world where I can load Windows one day and Linux the next. Sure there will be quirks to solve, but that no longer requires a miracle, but an investment.
There are huge advantages to making this concept a reality. First, it would mean the end of software piracy, which I suppose is important for development companies. Second, we wouldn’t have such a huge performance barrier due to open competition between developers. I’m sure Microsoft would think twice about asking me to buy a new machine to use their software as it could easily switch me over to their competition. Also, virus and spyware problems would not be a user problem, and I am confident that the companies running the servers would do a better job of dealing with them than individuals, as is the case today.
We would have to deal with numerous issues, such as users relying on remote servers, but the benefits far outweigh any drawbacks, and the technical support would be much easier to handle as companies would have to solve problems with their servers and not with single user machines.
This is my vision of the future and while it may seem implausible, it is definitely an idea that needs to be explored further.