Why web developers should know how deployments work
Learning how to deploy an application
Why does this matter?
When I first started my career my team had a really simple deployment pipeline. The technical lead on the team took 2 days to set up a Jenkins server and automatically deploy our React application to an AWS S3 bucket on each push to the main branch. At the time I enjoyed this convenience without thinking much about it. I knew my code reached customers with speed and we kept them happy by sending bug fixes promptly.
Being a small web agency, we had a good degree of flexibility and a good customer understanding of the need for a good process. To me this was a given, I started my career thinking most companies and projects are well organized. This is however not the reality. A lot of legacy applications are deployed on a weekly or even on a monthly schedule in some companies.
You can overcome this!
Even if you are working on a big legacy codebase in a company that is slow to change you can overcome this! In all the companies I have worked for, questioning the status quo is a welcomed quality for a developer. As a developer, your job will be easier to do if you can deploy your code often! This is why you should propose improvements to how your application is built and how often it is deployed! Most of you might think that to accomplish this you need experience in cloud development or DevOps.
While this bears some truth, you should try to develop an understanding of your
build and deployment process! If you have added a script to the script section
package.json you already have some scripting experience!
You already have the underlying skills
- copying files
- making HTTP requests
- reading and writing JSON
- infrastructure as code (more on that later)
However, in a lot of situations, you will not be able to change your hosting provider and you will not be able to move to a company like Vercel unless you plan a rewrite of your whole application. In that situation don't accept the status quo! Propose to your engineering manager or tech lead to try and deploy the application more often!
You will not get to automated deployments in 1 week on legacy projects
One thing to keep in mind is that going to a fully automated continuous deployment process will take work. As a web developer, you probably cannot spend all your time focused on this but by learning the basics of cloud development and DevOps you will be able to challenge old mentalities. This will bring you closer to getting a promotion since it shows you have at heart the improvement of the company and technology organization!
It takes time to learn complex build/deployments. You should start by trying to deploy a static site on AWS s3 or by trying to create a Serverless Express API. These small learnings will eventually compound into something bigger! You will soon acquire knowledge of bundlers, transpilers and even tree shaking!
How you can learn
The last course in the nano degree (the one I teach) will show you how to:
- deploy cloud infrastructure
- interact with cloud services with a CLI
- write relevant scripts to automate operations like build and deploy
- write a complete pipeline to automate the deployment process using CircleCI
This post is not about selling this course, you could decide to learn all of this by reading documentation and reading tutorials. However, if you are looking at a well-structured introduction course to deployments this will give you all the tools you need to progress quickly!
Coming soon: my DevOps course for Web Developers
- bundlers and transpilers
- cloud providers
- Mono repo management
- much more!
This obviously will take time to build but I look forward to sharing my knowledge of those topics! I strongly believe that learning this will empower you and increase your value as a developer!
Connect with me on Twitter @guibibeau if you have any questions about this platform!