Gone are those days when you could be an expert of a certain language/framework and survive as a developer in the Industry. In today's fast-moving tech world, you are expected to be a problem solver. Companies want people who can understand the business problem and build a solution to it, rather than have a solution and try to see if the problem gets solved or not.
To be a problem solved developers now have to keep on learning SQL databases, No-SQL databases, frontend frameworks, backend frameworks, no-code platforms, low-code platforms, on-premise setup, cloud setup, serverless setup, and the list goes on. I remember my initial programming days when I was super excited to learn a new framework or language, but the moment I got into the installation setup, it would kill all my excitement, since there would be some or the other config which was tricky to do and I would spend at least couple of hours to find the solution to that problem over the internet.
I still remember, somewhere in mid-2019, one weekend I wanted to learn something new and then picked up Docker. That weekend has been a game-changer for me. Prior to that, I knew that there was something docker and in my previous company HealthifyMe, we had a way to setup docker locally, but most of the developers avoided it due to the learning curve, and I too joined the herd.
I took a PluralSight course "Docker for Web Developers" and the rest was history, for that weekend onwards I got additional confidence in trying new frameworks and technologies, because, I didn't have to worry about messing up my local system.
Here are a couple of things that I owe to Docker
- Improving the speed of execution.
- Pick random technologies which are trending and start experimenting local without the hassle of installation and config.
- Dockerize all the projects I tend to work with. The first task I picked when I joined Postman, was to dockerize the current repository for local development. Definitely, it wasn't a smooth experience, but the journey was worthwhile. Now all the services which I work at my work are dockerized and any developer can set up the system, up with just a single docker-compose command. No more we have the issue of updating the onboarding doc on steps to install the project.
- No more I had the fear of working with anything new because I realized installation of any new technology was just a single
- Pick freelance projects and switch between projects using a different version of the language without any worry of breaking existing projects.
Here are a few downsides(upsides also) that I have experienced
- I tend to dockerize every project I work on. Would spend an additional couple of hours on setting up a project with docker
- My MacBook pro becomes a furnace when I work with docker and JetBrains IDE.
- Make every developer I work with, start working with Docker, (make them hate me in the initial weeks, only to thank me later 😎)