Over the last two decades, I have seen computing shift from big bulky desktops to laptops to smartphones to wearables. All of this has been powered by software written by programmers, most of them self educated, using technologies which keeps evolving so fast that we have to retrain and relearn everything every 5 years or so. There is a lot which has happened behind the scenes which has enabled this massive shift in computing.
Come to think of it, below is a list of all that has changed in the software development world in the last 20 years :-
- Processing Power has increased beyond anyone’s imagination making tremendous results possible, backed by Moore’s Law. Can you imagine that the smartphone you have in your pocket (any smartphone, not just the flagships) hold more computing power than what was required to put man on the moon in 1969?
- Abstraction is Magic – In the last 20 years, everything we do in the software word has been abstracted so many times that I have lost touch of how many layers deep does the actual bits of data move around. To give a simple example, when I started working professionally in 2005, we used to manually upload files to web servers via FTP to make a new release. Today I just push my commit and my changes are tested and rolled out automatically to hundreds of web servers automatically. Internally, still the same file copying is happening, but today it has been abstracted so much that to me it is almost magic.
- You are always connected now – to the internet. I still remember waiting (for a few minutes) to connect to the internet over slow dial up connections in the late 90s. Connecting to internet was an event we did rarely for specific tasks, and I always used to worry about huge phone bills if I spent a few extra minutes or downloaded a few big files while connected. Today, the internet is always ON, and hundreds of time faster and cheaper.
- Software Tooling available today makes me go ‘wow’. 20 years ago, we used to have an IDE with a compiler and a debugger. Today, an IDE can support multiple languages (Example – VS Code), and they have features like code formatting, auto update and integration with source control systems like GIT. Should I even talk about browsers and the developer tools available in them? All of this tooling makes our job as software developer so so much easier. And fun.
- Definition of software has changed from command line script to desktop app to website to mobile app to internet of things app. Any guesses what the future holds?
- Javascript being used for front end as well as backend. I could never have imagined Javascript being used for BE when I started working.
- The roles we play in organisations are continuously changing – from Software Developer, Frontend Developer, Backend Developer, Test Engineer, Full stack Developer, Server Admin, DB Admin, Dev Ops (or Site Reliability Engineer), Data Scientist, Machine Learning Engineer, Data Engineer and so on. Most of these roles were not there when I started working. And I guess this trend will continue in the future too.
- The Emergence of Cloud – When I started we bought dedicated servers and spent nights managing them and scheduled downtime for maintenance. Today we have Infrastructure as a Service. Who could have guessed that? And Amazon being the industry leader? What are the odds?
- We have no more flash and java applets. HTML natively supports videos now. Thankfully
- Bye bye Internet Explorer – The world moved on from IE to Firefox to Chrome to Firefox again. New we even have an IE (Edge) over Chromium. Everything runs in the browser, so they are very important now.
- We have a new Microsoft under Satya Nadella. Steve Balmer called Linux a cancer in 2001, and now Microsoft is the biggest open source contributor. And Bill Gates is no longer at Microsoft. Believe me I am not making this up.
- Distributed Systems have come on their own with the advent of Docker and Kubernetes. The way we manage them is abstracted behind many layers now and is a very simple set of commands (CI/CD) for the software developer.
- There has started to be a focus on quality of management in software development, with Google’s Project Oxygen leading the way. Still a lot needs to be done in this area though.
- Artificial Intelligence / Machine Learning has made possible what was impossible just a decade ago. The best Go player is not a human now but an AI, and facial recognition is almost everywhere. Self driving cars would be here soon too.
- Everything runs on the browser now. Browser is the new platform. As I type this I have 35 tabs open in Chrome. And I consider that number low.
- Remote Work is becoming the norm, and easier to do with awareness among management and tooling to go with it. There are hundreds of fully remote companies now, and tools like Slack, Zoom, Google Drive, Dropbox, Evernote, etc making it easier for companies to do so.
- Smartphones and mobile apps have enabled a new wave of people coming online for the first time. Hundreds of millions of people in China, India and other developing countries are experiencing the internet for the first time on their mobile devices.
- The smartphone has enabled the gig economy, with companies like Uber, Lyft, Airbnb, TaskRabbit etc now present in every city of the world. They allow for a more flexible work week, and are a great way to get active and make some money.
- Community engagement for programmers have evolved big time. From Usenet forums to phpBB forums 20 years ago to reddit and stack overflow now, help for programmers is so much better. On stack overflow, developers can look at Q&As with detailed information, and often get ready-to-use code snippets in any language you can dream of.
- Online learning and MOOCs have reduced the barrier to learning. To learn from the best teachers in the world, we no longer have to get admission to Stanford and Harvard and attend a lecture by a distinguished teacher. Today we can just go online and watch an online course by them. By sitting where we are, and at a fraction of a cost.
- GIT has been a huge step up from CVS and SVN. In the last 20 years, I started from not using any source control at all to using CVS, SVN and now GIT. With its distributed model, easy branching and merging, flexible workflows and speed, GIT is now the source control of choice for developers all over the world.