#CloudGuruChallenge: Your resume on GCP
Looking to land a Google Cloud job — or to boost your GCP skills? Take on our GCP resume challenge and get endorsed on LinkedIn by ACG. Let's go!
Jun 08, 2023 • 14 Minute Read
Challenge Topic | Google Cloud Platform (GCP) Resume Challenge |
Challenge Creator | Mattias Andersson |
Challenge Goal | You will build a serverless resume / personal brand website on GCP with API backend and GitOps-based CI/CD |
Challenge Outcome | You will gain authentic experience with many skills, including coding, storage, compute, networking, source control, CI/CD, Serverless architecture, GitOps, and technical communication. |
Challenge Deadline | Site with write-up must be submitted by Sept. 30, 2021. Follow-up video call (30 mins) must be completed by Oct. 15, 2021. |
Hello, Cloud Gurus! Are you interested in being successful in a real-world cloud role? And specifically Google Cloud? Wonderful! But even if you’re unsure, I invite you to continue exploring the challenge I’m about to present and decide later.
Let me introduce myself. I’m Mattias Andersson, and I’ve taught Cloud stuff to lots of people — maybe a hundred thousand, by now. And I want to be able to strongly vouch for you: to say that you would rock in a cloud-oriented technical role — especially one with Google Cloud Platform, also known as GCP.
To do that, I want you to do three things: Build, Explain, and Present. This is the GCP Resume Challenge. You will Build a system I describe, Explain your system and project in a write-up, and then Present it to me in a video conversation.
Now, don’t get scared off by any of these. I mean, there is a reason we call this a challenge, but you will glean lots of value from the entire process, no matter how far through it you get — and not just from the final result. (But the final result is really awesome, too.)
Let me briefly explain the three stages.
The stages
- Build
You will start by building a personal brand or resume website. Something that tells a bit about who you are.
It will include a web frontend and use a backend API and database. You will use source control for the frontend, the backend, and the backend deploy configuration; and you will have CI/CD connected to all three. Everything—frontend, backend, database, source control, and CI/CD—will be serverless, secure, reliable, performant, and cost-effective. And, for this challenge, it will use a lot of products and services from Google Cloud Platform (or GCP).
You must build this system yourself, but it’s fine for you to get some support, which I’ll cover shortly.
- Explain
After you build, you will explain your project in written form. You should write a section on your site or a linked blog post which explains:
• What you did,
• How you did it, and
• Why you did what you did (both what and how)
(Just for completeness, the Who is you, the When is between now and the end of September 2021, and the Where is online and specifically with communication on our Discord.)
This explanation is a public artifact, so give it due care and attention. Even still, this explaining should take much less time than the original building.
- Present
The last step in the process is to Present your explanation to me, verbally.
We’ll jump on a video call and chat for maybe 20 minutes about what you’ve done (i.e., built and written). You could consider this a mock interview, if you’d like—or a project review, or whatever—but I see it as a relaxed chance for you to practice your technical communication skills and for me to learn about you!
Primarily, though, I just want to see that you actually understand what you’ve done. (Disclaimer: In the unlikely event that we get inundated with entrants, I may not be able to personally talk with every single one, but we’ll work something out.)
- Result
After your successful completion of this challenge, I’m going to herald your success to whomever will listen to me about it. At the very least, I’ll post on LinkedIn about your accomplishment and general awesomeness (I mean, unless you want to opt out for some reason)—and the official A Cloud Guru account will do the same.
I’ll endorse you on LinkedIn for Cloud, Google Cloud, Serverless, and CI/CD. But I’m thinking I might also make a YouTube video about this, and we’ll see what else.
Oh, and there is definitely also swag to be had! We’ll enter your name into a giveaway. And if I get my wish, there will be as many prizes to be won as we have entrants. ;-)
WATCH: Solving The "No Experience" Cloud Hiring Problem
You can’t get experience without a job. But who’ll hire you without experience? Conundrum! Watch this free, on-demand webinar featuring a panel discussion on cloud career development and getting your first cloud job.
The details
OK. So that’s all the preamble. Now, let’s get into the nitty-gritty.
System Requirements (Build)
Here are the System Requirements for what you need to Build:
- Frontend (FE):
- Personal Brand / Resume website
- Using (all of) HTML, CSS, and JavaScript (JS)
- Feel free to use a rich template—or start with a very basic example, if you’re ambitious
- Must include your name and link to your LinkedIn profile
- Should ideally list you having the Associate Cloud Engineer (ACE) cert
- I would also consider the Cloud Digital Leader (CDL) cert, since it’ll be paired with all this practical experience.
- And I could be convinced to overlook this point (so don’t let this block you) but I do very strongly suggest ACE, in particular.
- I also know this foundation will help you a lot with this challenge, because I’ve made a course for the Associte Cloud Engineer cert. (To be clear, you do NOT need to take my course or any other A Cloud Guru training to join this challenge.)
- A section/page/link to describe your challenge entry (see below), including a least one architecture diagram image
- Must include a visitor hit counter (via Javascript call to your own API; see below)
- Using (all of) HTML, CSS, and JavaScript (JS)
- Hosting:
- Set it up as a static site on Google Cloud Storage (GCS)
- Give it any custom domain name you want (this will cost for registration) — yoursite.com (or any TLD)
- You could — but don’t have to — use Cloud Domains for this ($12/year for .com)
- Use Cloud DNS
- Use a Global HTTPS Cloud Load Balancer (this will cost to provision)
- HTTPS is definitely required
- Use Cloud CDN for caching
- Frontend Code/CI/CD:
- Store your site code in GitHub
- Use GitHub Actions or Cloud Build to republish your frontend whenever the code changes
- You may want to invalidate the Cloud CDN cache on redeploy
- Personal Brand / Resume website
- Backend (BE):
- Write some simple API code — ideally in Python — to connect to Firestore to increment the site visitor count and return the running total
- Your Firestore DB should not be publicly accessible
- You do not need to use Distributed Counters, but it is an option
- Deploy your API as a container on Cloud Run
- You might want to put this under either api.yoursite.com or yoursite.com/api, but this is not required
- Code:
- Store your API code in GitHub
- Use Cloud Source Repositories (CSR) to mirror your API repo from GitHub
- CI via Cloud Build:
- Have Cloud Build trigger from Cloud Source Repositories
- Even though straight to GitHub can work
- Do not use GitHub Actions for this one
- Build your hit counter code into a container
- Ideally, do some basic unit testing
- Push the container to Artifact Registry
- Employ a GitOps-style approach and update the current API deployment config in another CSR repo
- Have Cloud Build trigger from Cloud Source Repositories
- CD via Cloud Build:
- Triggered by update to API deployment config CSR repo
- Deploys specified container to Cloud Run
- Write some simple API code — ideally in Python — to connect to Firestore to increment the site visitor count and return the running total
- Stretch goal:
- If you have the time and inclination, use Terraform IaC to create your setup in a blank new GCP project
OK. That’s a lot; I know. But this is both possible and valuable. Seriously valuable. You will get authentic hands-on experience in a real-world system with all (to varying degrees) of: coding, storage, compute, networking, source control, CI/CD, and Infrastructure as Code (IaC) — not to mention Serverless architecture.
But you will need to take some responsibility to work through the challenges you hit. (That’s why we call it a “Challenge”, right?) I won’t be holding your hand. But that still doesn’t mean you can’t get any support! In fact, peer support is one of the very best kinds because it helps more than just the person asking the question. So, to participate in this challenge, you must join our ACG Discord. That’s where discussion around this challenge will be focused—and specifically the #gcp-resume-challenge channel. And although you are not required to help anyone, that is where you will submit this whole thing.
Explain System & Project (Write-Up)
Next, you need to Explain your System and Project in a write-up. This doesn’t have to be very long or take you tons of time to make, but it should include the following.
Publishing
Ideally, you would publish this as a section or page on your site, with updates that you make running through your frontend CI/CD. I guess you could link to an external blog site, if you really want, but you’d be giving up the extra hands-on interaction with the system you built. And making it public gives people a real example of your technical communication ability.
High Level
Start by describing your challenge project, at a high level. What is the purpose of the project? And what key benefits should the system offer? Are there any core constraints or principles that matter?
Run-Time Architecture
Next, describe the architecture of the user-facing system. What’s the data flow to serve the site? Make sure you include a system architecture diagram. There are lots of good diagramming tools available.
Dev-Time Architecture
After that, walk through the internal/developer perspective on this system. How does data flow from source code on a dev machine to the running system you previously covered?
Key Tradeoffs
Another thing you should write about is some of the key tradeoffs you’ve made.
- What alternatives did you consider?
- What benefits(s) could those alternatives offer? And...
- Why did you finally choose what you did? (Note: Choosing something because of expediency can be a perfectly acceptable answer — maybe even an admirable one!)
Next Steps
Now that you’ve finished building this system, what opportunities would you pursue next, if you had more time?
- What “features” would you add?
- What refactoring would you do?
- What tooling would you build?
- For all of these, why?
Lessons Learned
Finally, describe some of the key things you’ve learned by going through this process. This is really important. You have to be able to continually learn new things, to be hirable.
It is NOT a sign of weakness or incompetence to research and/or try things that don’t work out. In fact, that is absolutely essential to every technical job. And it’s critical to be able to share what you learn with others on your team.
- If you were to start this project from scratch, today, how much faster would it go? What would you skip or do differently?
- What is your biggest regret about the system you built?
- What is your biggest regret about this challenge project?
Present (Video Conversation)
I wasn’t quite sure what to call this section. “Chat” seemed too unfocused. “Defend” seemed too combative. Other ideas I considered include “Interview”, “Talk”, and “Converse”. But in the end, I think that “Present” captures the idea that I want you to verbally describe the project to me and answer a few questions about it.
Yes, I would like to have some conversations with people who finish this project! I’d like to jump on a video call to talk with you about the project you did. Have you explain some things to me in a pseudo-mock-interview-style thing. Just to talk things through in real-time, based on your understanding.
Now, I might have to limit this offer, somewhat, if I get overwhelmed. But I will commit to doing a ~20 minute call with at least the first 15 people who finish this challenge by the deadline. And if we need a bit of extra time on our call to overcome language challenges or just because we’re having such a good conversation, that’s fine, too. I’m pretty friendly, and I don’t want to scare you off. :-)
In the end, if I simply finish that call with the sense that you do pretty much understand what you built, that’s good enough for me. So don’t stress about it.
But this situation — of presenting some technical thing to others — is a very common and important one. Sure, this is somewhat similar to a job interview, where you need to give the interviewer confidence in your skills. But this is also just like a chat with your boss about the project you’re working on; or with your coworker about your part of the shared project; or with the people who report to you when you’re explaining what you’ve designed so they can help build it. Communication is a critical skill, even for technical roles.
Submit Your Project
When you’re all done the Building and Explaining stuff, above, then pop back onto our Discord (you should be pretty familiar with it, by then) and post the link to your site on our #gcp-resume-challenge channel. And tag me so I can see it and so we can schedule a call to do the Presenting bit.
You must submit your finished site (Build) and write-up (Explain) by September 30, 2021. Our subsequent video call (Present) must be finished by October 15.
I’m really looking forward to seeing your project and having a chat with you about it!
Challenge Skills Inventory
OK. By the end of this challenge, you will have accumulated a lot of honest-to-goodness job-relevant skills. Things you could list on your resume site. Things you could talk through in an interview or a project discussion with your boss. Things you have enough sense about to understand technical blogs or news reports about. Don’t falsely claim to be a world-class expert, or anything, but do feel good about these valuable real-world skills. Let me know if you feel I’ve missed any key ones, but here are some that stand out to me.
- Coding
- HTML
- CSS
- JavaScript (JS)
- Python (optional)
- Storage
- Google Cloud Storage (GCS) (object storage)
- Firestore (NoSQL database)
- Compute
- Cloud Run (Serverless container-based compute)
- Networking
- Cloud Domains (optional)
- Cloud DNS
- Global HTTPS Cloud Load Balancer
- HTTPS
- Cloud CDN (edge caching)
- Source Control
- CI/CD
- GitHub Actions (optional)
- Cloud Build
- Artifact Registry
- Terraform (optional)
- Process/Methodology
- CI/CD
- GitOps
- Infrastructure as Code (IaC) (optional)
- Communication
- Documenting and diagramming architecture
- Describing and justifying tradeoff decisions
- Verbally presenting and explaining a technical project
- Personal
- Taking initiative
- Self-motivating
- Overcoming challenges
Get the Cloud Dictionary of Pain
Speaking cloud doesn’t have to be hard. We analyzed millions of responses to ID the top terms and concepts that trip students up. In this cloud guide, you’ll find succinct definitions of some of the most painful cloud terms.
Conclusion
Interested? Great! Then feel free to start whenever you’re ready and I’ll see you over on our Discord! The #CloudGuruChallenge is FREE and available to everyone! Remember that you must complete your submission by September 30, 2021.
Keep being awesome, Cloud Gurus!
FAQs
Can I only do this if I want to get a (new) job?
Absolutely NOT! This challenge does happen to be valuable to job searchers, but this is because the skills being practiced are extremely relevant to virtually all technical roles. Sure, some roles will focus more on this than others, but if you are (maybe already) working as a dev, or a PM, or a sysadmin, or whatever, then you can get value from both (1) building a system like this, hands-on, but also (2) practicing your written and verbal communication skills. No one can succeed in a technical job (claimed with many nines of reliability) unless they have both technical and communication skills.
If I do want a (new) job, will this guarantee me one?
No, I can’t make any such promise. But I can say with conviction that if you are able to build, explain, and present this project, you are light-years ahead of the vast majority of other applicants.
Tips
- You don't need to build this all at once. Start small with something (anything) basic, and keep adding things incrementally.
- Feel free to DO things in the console, to get the feel for how to connect everything. The Console UI surfaces lots of good information and suggestions.
- Feel free to NOT do things in the console: use the CLI and keep a file with all the commands you run so you can repeat them. You could choose to work out a lot of pieces for this project in ACG’s Cloud Playground before you set them up in your own GCP project.
- When you do go into your own project, try to use a new GCP account with free trial credits, if you can. This won’t eliminate all costs—especially longer-term—but it will definitely help.
- Start by getting connected on Discord. Don’t wait until you’re struggling.
Advance your career in the cloud
Join A Cloud Guru and get access to courses, hands-on labs, quizzes, and learning paths, which take you step-by-step from novice to guru in your chosen area of the cloud. Get a 7-day free trial or check out our free courses.