Old Man Yells at Cloud: Mid-Career PM Finishes Cloud Resume Challenge in AWS with Terraform
Tags: cloud, aws, terraform
Published: 2022-01-03 15:47:50

Nearly 20 years ago: a college professor told me that a career in tech is an agreement to being a perpetual student. For me, winding up in a technically "conservative" sector like energy infrastructure meant I was shielded from much of that churn. The industry has been slowly adopting cloud technologies: mainly for enterprise connections and analytics. 

For the busy professional, I can't imagine a better way to set out on that journey than the [Cloud Resume Challenge](https://cloudresumechallenge.dev/). Even though it effectively doubled the time to complete the challenge, incorporating Terraform in my approach sets me up to address the multi-cloud issues my clients are facing.

## Why I Accepted the Cloud Resume Challenge
My industry is currently at "Most Presentations Mention 'The Cloud is Just Someone Else's Computer' As An Key Insight" point on a "Cloud Maturity Curve"

I was in the market for a cloud-based development opportunity and I came across Forrest Brazeal's [Math Tweet](https://twitter.com/forrestbrazeal/status/1403094035825365003), followed him and discovered the [Cloud Resume Challenge](https://cloudresumechallenge.dev/).

A summary of the challenge is that participants are to get the basic certification and setup a website on a major cloud provider. This site presents their resume includes a counter that leverages the compute and database services of the cloud provider. The deployment should utilize "Infrastructure as Code" (IaC) and CI/CD pipelines for the front and backend.

##Settling on Terraform and Completing the Challenge
In the Summer of 2021, I started the challenge and chose to get the AWS Practitioner Certification as my first step. I utilized AWS Cloud Practitioner Essentials and A Cloud Guru's Exam Materials to pass.

Following [getting the certification](https://www.credly.com/badges/3990a3ee-f3a5-4dcf-a6dd-823cd7af4b3c), I got started on the work. My first pass was to follow ["LouJayBee's"](https://dev.to/loujaybee) YouTube playlist on [this challenge](https://www.youtube.com/watch?v=e7vZe7qZFmE&list=PLEk97Q5Nj5oesA1WNk7DzaUpZUnCsQFVQ). I got through the DNS step until I tried to find a shortcut, because I unfamiliar with Java. That started my second pass - going through the [AWS CDK Workshop](https://cdkworkshop.com/30-python.html). I completed that workshop and - in banging around the Internet - discovered different approaches to IaC. I found Terraform intriguing: mainly because any cloud future I'll have will be multi-cloud. 

In the [Cloud Resume Challenge Discord](https://discord.com/invite/2PTwAth), another participant - JAG - utilized Terraform: that provided inspiration for my third pass at the challenge.

![Project Diagram for https://justinthibault.xyz](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xsnofvffs2kfhlvocxjh.png)

The diagram above shows the entire project that resulted in the [justinthibault.xyz](https://www.justinthibault.xyz) site hosted on AWS with Terraform IaC.

##Helpful Resources

**Free Tier** 
- [Cloud Resume Challenge Discord] (https://discord.com/invite/2PTwAth): Don't even start without joining this. People are so quick to help and offer encouragement and advice. Every, single person there wants to help and [Forrest Brezeal](https://dev.to/forrestbrazeal) does a good job at keeping the joint in line.
- [LouJayBee's Open Up The Cloud](https://www.youtube.com/watch?v=e7vZe7qZFmE&list=PLEk97Q5Nj5oesA1WNk7DzaUpZUnCsQFVQ): Regardless of the path you choose, Lou's a great guide.
- [AWS Cloud Practitioner Essentials](https://aws.amazon.com/training/digital/aws-cloud-practitioner-essentials/) course is great for newbies. If you're taking the certification, I'd direct you to the one on [Coursera](https://www.coursera.org/learn/aws-cloud-technical-essentials) that has labs.
- Any aspiring Terraformer should check out [Hashicorp's Tutorials](https://learn.hashicorp.com/)

**Paid Tier**
- I'd suggest [A Cloud Guru](https://acloud.guru/): especially if you're learning this as a professional...it's a good timesaver. It's sample test was clutch the night before my exam. I'd suggest that if you're getting started, be on the lookout for a sale...they come up every now and then.

##Retrospective: Advice for Professionals Starting in Cloud

1. **Learning Cloud is Worth It**: If you've got at least 10 more years of work in tech: you're going to want to invest some time in developing cloud skills AND set realistic objectives for what you'll do with it. For me, I've got two modest app ideas (a demonstration of a new approach to something at work and a reminder service for [T1D parents](https://beyondtype1.org/12-things-that-only-a-t1d-parent-understands/) ) that I'm going to tackle in 2022.
2. **Think Marathon - Not Sprint**: [And, no, that isn't just a cliche for me] (https://www.athlinks.com/event/20296/results/Event/882085/Course/1688299/Bib/1335). My tax return has 5 people on it and I've got a cool - yet demanding - job. So, making the time to properly grok cloud development was very difficult. The flip side of this: unless you're in some sort of career crisis, you'll actually learn more valuable stuff if you take the time to not just complete a challenge - but understand it. 
3. **You don't know enough about what you're doing to properly estimate this effort**: The PM in me had to shut off the "progress bar" a few times and let myself be a learner. The strangest things will take more time than you'd expect. Here's a few highlights, in no particular order:
   - The frontend took me longer than I'd imagine. Part of it was learning Bootstrap and part of it was my total lack of design skills
   - While IaC is cool, you really should only fully "Destroy" your site ONLY once as demonstration. I got a little carried away with Terraform's "Apply" and "Destroy" resulting in the need to go into Route 53 and setup name servers by hand. That's a Saturday I'm never getting back.
   - Explaining how APIs work to support enterprise architecture is a couple of orders of magnitude easier than setting it up in AWS API Gateway and figuring out CORS. I had to [use the Feynman Technique](https://medium.com/taking-note/learning-from-the-feynman-technique-5373014ad230) on myself just to understand what I was putting out into the interwebs.
   - If you learned Python as part of a data science course, you probably didn't learn about writing tests. Let that irony sink in for a bit.  

4. **If you do it right: your previous learnings will translate, but you'll still be amazed**: I'm old enough to have gotten paid to solve IRQ issues - so the first time I saw USB work: it was magic. I had a similar experience when watching my site come to life via IaC (and killing it and resurrecting it within minutes). While there is a learning curve and there are some new development philosophies and approaches from on-prem deployments: if you learned that stuff, you can learn cloud. The people are the most supportive in all my years in tech.