In this article I will share the changes that I have seen and experienced in the software engineering space as a Software Engineer.

I started my career as a front-end developer in late 2010. At that time I was converting PSD files to HTML pages. It took time to learn the basics of photoshop, HTML and CSS. But, slowly I became a professional frontend developer. Not actually a frontend developer was called HTML/CSS developer.

I did not limit myself on what I was doing. Slowly I started learning PHP, MySQL and other necessary tools to build dynamic websites. I built my first dynamic website by using WAMP(Windows, Apache, MySQL, and PHP) stack. And, hosted my website on a shared server. FTP client (FileZilla) was used to upload files to the shared server from the development environment.

Until then I was not aware of JavaScript and git. I learned the basics of JS and jQuery while adding a dropdown menu, photo gallery, and sliding images into the website. And, I learned GIT while working in a team.

I have invested more than a decade of my life in the software engineering space. Played different roles, and learned a lot. Also, I witnessed progressive changes in the software engineering space.

Now, there are numerous programming languages, frameworks, tools and software development best practices are available. To become a software engineer, someone has to learn a lot. Moreover, one needs to invest hours in front of a computer, keyword and mouse to sharpen their skills.

I have seen an evolution in the software engineering space. I will list out a few changes that I have experienced and witnessed as a Software Engineer.

Waterfall to Agile Methodology

waterfall to agile

Back in those days, Agile Methodology was in theory but the Waterfall Software Development Life Cycle(SDLC) was followed by the developers/organizations. Nowadays most developers/organizations follow the agile methodology. They work in small teams, involved in backlog refinement, sprint planning, daily standup, showcases, retro etc.

Shared/On-Premise hosting to the Cloud Services

Shared hosting to cloud

Back in those days, we used to get either a dedicated server or a shared-hosting solution. Sometimes we also used to host the application on On-Premises. Nowadays most of the software engineers use the Cloud Solutions provided by AWS, GCP, Azure, Alicloud, DigitalOcean etc.

FTP client to CI/CD Deployment tools

FTP Client to CI tools

Mostly I used FileZilla and Cyber Duck as an FTP client to transfer the codes and files to the share servers. It was a manual process. Every time I had to connect to the server via an FTP client and transfer files to the server. That was a manual process and was completely replaced by the CI/CD tools (Jenkins, GitHub, BitBucket, CircleCI etc). No need to worry much, just push the code to the correct repository, create Pull Request (PR) and Merge to the main branch. All the deployment process is handled by the CI/CD tools.

Javascript(JS) as a scripting language to Javascript(JS) as a powerful backend programming language

Javascript Evolution

Javascript was created by Brendan Eich. He created JS as a scripting language. In my early days, I also used JS as a scripting language like to add the dropdown menu, image gallery, sliding images, etc. Also, I used JS libraries like jQuery and Ajax for advanced features. Now, JS is not only the scripting language. We can build a fully functional application by using JS. NodeJS powered JS as a backend programming language and frontend frameworks like React, Angular, Vue etc. made JS a more popular language.

Monolith to Microservice Architecture

Javascript Evolution

I have worked on a really big monolithic application where we used to package all the modules (both client side and server side) together as a single deployable unit of execution. Now the concept has changed. I typically worked on decentralized, loosely coupled units of execution. Generally, API is created to communicate between the services.

Relational Database to NoSQL

Relational database to NoSQL

As I mentioned above, I developed a LAMP stack skill to develop a full-phase application. At that time I was using MySQL heavenly as a relational database. Later on, in my roles, I used MS-SQL and ORACLE databases. All those were relational databases. Nowadays I also worked on NoSQL databases like MongoDB while developing MERN stack applications. NoSQL is not replacement of RDMS, it’s just another option.

Host Machine to Container world

Relational database to NoSQL

In my early days, I was using my machine as a development environment. Sometimes, it was a headache to configure my environment for different versions of software on a single machine like running different versions of PHP or MySQL for newer and older projects. Later, I learned about virtual machines like vagrants which helped me to overcome many problems. But, Docker has changed everything. Now, I can create an isolated environment by using docker containers for every version of the app and each container holds a separate isolated environment configuration that doesn’t affect the configurations of the OS or any other container running concurrently on my machine.

Multi-Page Application (MPA) to Single Page Application(SPA)

Multi-Page Application (MPA) to Single Page Application(SPA)

I worked a lot on multiple-page applications while developing web applications. All the rendering used to happen from the server after the page refresh. AJAX and Javascript were used to achieve some interactivity on the page. Now, SAP has changed everything, application is an app that works inside a browser and does not require page reloading during use. React, Angular and Vue changed the world. Also, created a new role called Frontend Developer/Frontend Engineer.

Desktop-friendly web app to Responsive Web App

Desktop-friendly web app to Responsive Web App

Back in those days, I used to create web apps only for desktops. Very few people were browsing the web app on mobile devices. I used to target IE browsers :) . Slowly technology changed and many people started to browse web apps on mobile devices. So, I had to learn responsive design to develop device-compatible web apps. I learned responsive design and all those CSS media queries from the bootstrap CSS framework. Now these days, peope perefer mobile first web design approach.

Regular Software (Traditional) Applications to SAAS platform

Regular Software (Traditional) Applications to SAAS platform

Thre was concept of software as a service (SAAS) but only few organizations were providing those solutions. SAAS is a multi-tenant architecture concept where software provider hosts their application on the cloud and makes available to their customers over the internet. Now these days, Larger company like microsoft, google provides software as a service.

I have seen many more changes than what I discussed above. Everything has changed form development process to deployment process, tools to technology, job roles etc. Many new software engineer don’t know what we were woking on those old days. Software engineering is all about learing, practicing and evolving. Future belongs to those who learn more skills.