Let me take you back just three years. 2017. I am going into my second year at my current company. My job title is Frontend developer and on a day to day basis I was working mostly on the client-side using React.js. My knowledge about CI, CD, containers, and DevOps, in general, was dismal. One way I visualize my engineering skills is by imagining a video game where you can create a team of engineers and you can see the skill ratings for each individual engineer, sort of like NBA 2k. If you were to play Web Dev 2k17 and look at my skill ratings they would display the following.
Experience - 4 years, Height - 5’10, Weight - 170lb
Frontend - 8/10, Backend 4/10, DevOps 1/10, Teamwork 8/10, Logic 6/10, Effort 9/10
Specialty - Curiosity
It was a simpler time. Now if we return to the present day, 2020. Trump is still in office. My day to day work can change wildly. I might be on the client-side working with my old friend, React.js. I could also be deploying a Node.js application or spinning up a Node.js app using Ansible. In that three year span I crammed more knowledge into my brain then should be legally permitted. I was a sponge soaking up information and learning on the fly. It was partly an exhilarating experience but also partly a stress-inducing, mind-altering, brain-numbing, nihilism evoking experience. I didn’t have to learn DevOps though. I could have told my product manager that I want to stay on the frontend. I could have looked for another job where I only worked on the frontend. Instead, I chose to take on the new responsibilities thrust on me.
It started when I was asked to create a Drupal application that mimicked our existing node application. This was a learning experience in itself but I will spare you the details. At the time my team was extremely lean. I was the lone developer on the Drupal project. Since our team was bone thin my supervisor wanted to see if I could take on another challenge. It sort of played out like this.
Supervisor : Good job on getting this Drupal project completed. Looks great! Now we just need to deploy it. I want you to look into deploying this to AWS as a blue-green environment.
Me: Yeah! Let’s do it.
Me(In my head): Shit. I have no idea how to do anything like that
Supervisor: Awesome. Do some research and show me what you find.
Me: Sounds good.
Me(In my head): Fuck. Fuck. Fuck. I am getting fired.
At the time, I had never deployed anything to AWS. I had not even logged into AWS. I didn’t have the slightest clue what a blue-green environment was. I seriously thought I was going to be ousted as a fraud. Why would I take on a project when I have zero experience in it. I might as well take on a machine learning project. Any accounting work need to be done? Yeah, throw it my way.
So I'm at a pivotal part of my career as a web developer. I am given the opportunity to show that I can take on a new challenge in a field I have no experience in. I have this thing in me, I think I get it from my dad, where when things are getting difficult and the goal seems unreachable I feel visceral anger in me and instead of letting it out, I let it rage inside of me. Like a little version of me is running around yelling and complaining about everything. Why the hell am I in this position? Why can’t other people step up? I will show them. This isn’t anything. I can do this. No problem.
So while this rage monster was going crazy on the inside, I was calm and collected on the outside. I began working on the blue-green environment. I followed a tutorial that described all the steps I would need to do to spin up this kind of environment. Each step in the tutorial was a learning process as I was becoming familiar with services and concepts that I never knew about; EC2, RDS, autoscaling, mounting. I felt like Dr. David Bowman traveling through space at warp speed as he passes through of vortex of colors. It was exhilarating and terrifying at the same damn time. Things I do today without giving much thought were major milestones during that project. Successfully connecting the servers to the database. Mounting EFS to an EC2. Getting a Hello World to appear on the browser. Each of these milestones was cause for me to pump my fist and thank Odin.
I mentioned that I had a tutorial that helped me figure out how to spin up the environment but I had an actual living being help me accomplish this herculean task. Our inhouse DevOps Engineer, Matt Connor. He was the sole DevOps engineer we had at the time but he was part of a team that worked on a completely different app. My supervisor told me I can only bug him if I was truly completely and utterly stuck on something. I resisted the urge to send him a message on slack every time I contemplated quitting. Which was at least once an hour. His help was the best kind of help. Instead of giving me the answer directly he would lead me to the answer by asking me questions. It helped me formulate a way of thinking with a DevOps mindset. There were times when I would arrive at the conclusion to an answer and I would feel like an idiot. Like oh, I sort of knew the answer the whole time but I had to have someone hold my hand and think it out with me. I realize that I am not an Idiot but sometimes I just feel like an idiot.
After about a month of work, I was able to create a blue-green environment for the Drupal application using Elastic Beanstalk. Using Codepipeline, I was able to configure automated deploys which were pretty dope. I would argue that during that month’s timespan I evolved from a Web Developer to a Software Engineer with the blue-green environment project being my form of Rare Candy. The fear of the unknown could have prevented me from even taking on the project but I stepped up, smacked the problem in its face, and said “Not today, Satan!” Of course, things could have ended differently. If we live in a multiverse, there is a version of me that couldn’t get the environment spun up. That version of me probably lost his job, took up a serving job at Red Lobster, realized his true calling is in professional wrestling and is currently wrestling under the name, Massive Attack. Even though that does sound pretty fun, thankfully that did not happen. Instead, I conquered my own fear and it pushed me to be the engineer I am today. Is this a corny and cliche thing to say? Of course but all success stories are.