About 6 years ago, when I started thinking of software development as a career, I had a conversation with a friend, a C programmer working for a local firm, about the future of software. My opinion was that desktop applications (what we know them as today) will be 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 I was silly.
Today, with the growing popularity of Google Docs (and there are lesser known others), my silly projections are starting to look more and more like reality. I think it's important for anyone thinking of going into software development to at least be aware of this. Software and web development are slowly bringing into one. Going back to Google Docs, you can edit text, spreadsheet, and presentation files purely online with no necessary installation, and then save the files locally once done. No, this is not a Google Docs promotional ad (I actually used it a couple of times, and it did not take my breath away), but this is just the tip of the iceberg when it comes to user applications.
Let me present a hypothetical example of a popular application being run remotely. Suppose Photoshop, a graphics editing application, ran on servers administered by Adobe. To use it, I would purchase a license (just as I do now when I buy the CD), and use the software through a browser (or client application). I would perform some tasks, each one firing off a request to the server, and see the results on my screen. While the computing power required from the servers would be massive, technology can only improve, so it's a matter of time. In addition, the current cost of distribution could instead be invested in needed hardware. Is this example far fetched? I do not think so. The cost of hardware keeps dropping, while the cost of distribution can only rise. Sometimes, due to the need to stay competitive and technological progress, companies will consider going remote.
This concept can even include operating systems. There are a number of big companies that use diskless computers that load the OS from the main server through the network, so why can not the network be the Internet? I can even see a world where I can load up Windows one day, and Linux the next. There are sure to be quirks to work out, but that no longer requires a miracle, but an investment.
There are massive advantages for such a concept to become reality. First, it would mean the end of software piracy, which I'm guessing is important to development companies. Second, we would not have as much of a performance barrier due to open competition among developers. I'm confident Microsoft would think twice before asking me to buy a new machine in order to use their software since I could easily switch to their competition. Also, the virus and spyware issues would not be the problem of the user, and I trust that companies running the servers would do a better job in dealing with it than individuals as it is the case today.
We would have to deal with numerous issues such as the users being dependent on remote servers, but the advantages far outweigh any inconveniences, and tech support would be much easier to deal with as companies would have to resolve issues with their servers, and not with individual user machines.
This is my view of the future, and while it might be far fetched, it is definitely an idea to be explored further.