How to Transition from a Generalist to a Specialist in Cloud Computing: My Journey Through the Cloud Resume Challenge
Tags: aws, cloud, cloudcomputing, career
Published: 2024-07-08 12:24:57


![Cloud Architecture Diagram](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/timxg5himehsutz1d4n7.png)

After three years of my CS degree, I explored every field I could specialize in. From web development to machine learning, Java to C++, you could name anything, and I would tell you about a project I had made revolving around that particular thing. At this point in my life, I had become a jack of all trades, master of none. Why was that? The answer to that is simple. I couldn't settle on a field. 

Until I found out about the cloud, I didn't make much of it. It's another field I'd explore and eventually lose direction in. Plus, 'cloud computing' sounds like just about the most complex field ever. But I decided to take a step forward and get into it. I discovered that AWS has the largest market share of the three largest cloud providers, and I decided to start with AWS.

So what next? Certifications?

From my three years of studying computer science, if there was one thing I learned, it was this: to learn something, you have to get your hands dirty. That's right, hands-on work. I had to make projects. In the past, I've taken courses that contain 50+ hours of videos each, only to decide I don't want to be doing that in the future. Moreover, those videos wouldn't teach me more than theory; I had to do a project to truly understand anything. 

So, eventually, I found the cloud resume challenge, labeled as the entry point for beginners trying to get into the cloud. It immediately caught my attention. I got my hands on the AWS edition book and had no idea what I was getting into. I can say now that it was a life-changing experience. 

After completing the cloud resume challenge, here is my journey.

**You may access my resume website here:** [jawadify.xyz](jawadify.xyz)

**Prerequisites:**

The initial requirement of the cloud resume challenge was to acquire the foundational Cloud Certified Practitioner Certification. However, this step was optional. As I already had an IT background, I skipped this step. My goal was to do hands-on work before I started studying for certifications.

**Part 1: Building the front-end**

The first step of this part was simple: making a resume in HTML and CSS. I already had ample experience doing this, so I did the additional developer mod. I made the front end using React instead of simple HTML and CSS. Moreover, since I had recently updated it, I could replicate the exact resume I usually hand out to recruiters. What better way to say to someone asking for your resume, "Go to this website," and have the exact resume printed on their screen?

![Resume Preview](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/oaqqw2qht5y9964mct8a.png)

The next step, however, was much trickier. At this point, I started feeling the lack of cloud knowledge I had, perhaps from skipping the CCP certification. I was lost. Static S3 website CloudFront, Route 53? I had no idea what to do. I decided to pause to learn more about the cloud and cloud development. I started reviewing the [AWS docs](https://docs.aws.amazon.com/) and YouTube tutorials explaining AWS and the cloud and completed an [Introduction to Cloud 101](https://awseducate.instructure.com/courses/891) course by AWS Educate. Eventually, I cracked this part and could access my resume from anywhere using the internet. I thought I had done all the work, but it was just the start!

**Part 2: Building the API**

At this stage, things became more advanced. Thankfully, I had previous experience with developing APIs, and even though the boto3 library was new to me, I went back to the docs to gain guidance so I could set up my Lambda function using Python. Once again, I struggled to navigate the cloudy stuff, but the AWS docs helped. As for source control, I had set up my GitHub repository from the start, so I just pushed the changes.

![API Result](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v91y0vj7tph9zxgqufw7.png)

It took some going back and forth, though, as I had to spend some time testing the API to make sure it was doing what I wanted. There were few lines of code compared to what I have done before, but the errors, especially those CORS errors, made me question whether cloud computing suits me. After I went into the developer console on my browser, I discovered that they were the cause of all my problems.

**Part 3: Front-End/Back-End Integration**

I had to write my JavaScript code to display the visitor count on my resume, utilizing the call to my API. To do that, I also had to set up an API gateway to my lambda function. After this, I wrote some tests in Python to make sure my API was working properly. I wrote unit tests, integration tests, and end-to-end tests. I had some experience in Selenium, so this time, I chose to try out [puppeteer](https://pptr.dev/), doing something new.

I also wrote a test that directly called the API to ensure it was correct by comparing the values from the first and second calls.

**Part 4: Automation / CI**

The good part was that Infrastructure as Code (IaC) was the first thing I set up at the start of this challenge. I used AWS SAM, which was the one mentioned in the challenge. Working with IaC opened me up to the actual world of the cloud. It is truly magical that I could delete all the work I have done on the cloud by using one command and deploying it all again with all my settings with another command. IaC is where it's really at.

![SAM CLI](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ofo2zfqtlase5wvvrt5m.png)

I already had all my SAM code on the GitHub repository; my front end was with it. I chose to keep it as one repository rather than two for simplicity. I was already working with makefile to make my deployment effortless, but then I realized the magic of GitHub actions. I made a workflow template and, within it, created a bunch of jobs. One job was to test the code; another was to build my infrastructure, another was to deploy my site, and so on. 

![CI/CD Pipeline](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jr13ey1ncez0wsonunpb.png)

**Conclusion**

At last, my website was complete. I developed a complete end-to-end project from front-end to back-end, testing through CI/CD and automation. I don't believe I've ever made a project that was so complete. It touched on everything you'd do when developing a project, and it felt extremely satisfying. 

![CI/CD Run Results](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cb37b9hut8i9h4e6new3.png)

One thing was clear, though: I learned a lot. In the beginning, I struggled to make an AWS account and assign it permissions through IAM, which I needed to figure out what to make of. Now, I feel confident in my AWS skills. I could easily navigate the console, know what to do and where to go and build and deploy resources using code with an IaC tool. 

Now, I have started out pursuing my cloud journey. I did the project, and I found out what cloud computing is. I decided that this was it. Cloud engineering was what I wanted to be doing in the future. Therefore, I will now work on doing more projects and pursue the Solutions Architect Associate Certification to have an all-rounded cloud portfolio by next year, when I will start applying for a cloud role.