The Future of Software
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 far away servers in the future. My argument was that with the advancement of technology, we wouldn’t 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 the minimum be aware of this. Software and web development are slowly merging 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 isn’t a Google Docs promotional ad (I truly used it a associate of times, and it didn’t 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 buy a license (just as I do now when I buy the CD), and use the software by a browser (or client application). I would perform some responsibilities, each one firing off a request to the server, and see the results on my screen. While the computing strength required from the servers would be enormous, technology can only enhance, so it’s a matter of time. In addition, the current cost of dispensing could instead be invested in needed hardware. Is this example far fetched? I don’t think so. The cost of hardware keeps dropping, while the cost of dispensing can only rise. ultimately, due to the need to stay competitive and technological progress, companies will consider going far away.
This concept can already include operating systems. There are a number of big companies that use diskless computers that load the OS from the main server by the network, so why can’t the network be the Internet? I can already 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 enormous advantages for such a concept to become reality. First, it would average the end of software piracy, which I’m guessing is important to development companies. Second, we wouldn’t have as much of a performance obstacle 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 wouldn’t 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 far away servers, but the advantages far outweigh any inconveniences, and tech sustain 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.