Last year I started working on a new project.
You know those kinds of projects where you do the same thing over and over again and you don’t learn anything new from? The kind of project that makes you question why oh why did you become a developer?
This wasn’t one of them.
This project has everything a great developer dreams of. Great team, all the new technologies (ReactJs, Flux, Docker, etc.), CI & CD, a DevOps culture, openness to new tech and best of all the willingness to consult on important decisions.
Working on such a project affects more areas of your life than you might know beforehand.
Apart from being more excited about going to work every day, seeing how to do things the right way or at least in the right direction will lead you to trying and applying what you learn in other areas or projects as well.
Case and point we recently updated our website. Like many presentation websites, we could have followed the same old approach we are all to familiar with and build a monolith application in PHP that generates the pages and processes the contact form, but we didn’t.
Instead, we chose to learn new things and experiment with new technologies.
We split the frontend from the backend, we used NodeJs instead of PHP, we put all configuration in Consul and loaded it from there for each section instead of saving password and other data in configuration files, we added a nginx proxy in front of everything that uses data from Consul to create the final server configuration and instantly reacts to changes in this configuration, we used Docker containers to contain each application and easily start new instances of them, we installed SSL certificates for the entire website for the first time and most importantly we wrote a bunch of shell scripts to allow us to deploy future versions locally and on Google Cloud by simply running a single command in the terminal.
It may seem a lot to do for a 3-page website, but without making a first step into new territory and learning along the way you can not expect to be given the opportunity to work on a career-defining project without screwing it up.
It also allows you to find new opportunities and pushes you into new and exciting directions. Places that you would never have thought you would end up into.
I recently started learning Go in order to move away from these shell scripts and have a single tool for deploying an application online with just one command.
Expect and demand to learn something new in every project you work on and you never run out of opportunities to improve and reach higher limits.