The AWS Certified Solutions Architect Associate Certification SAA-C03 exam is a timed, 65 question, multiple choice/multiple answer exam. It covers topics relevant to professionals designing and building applications on Amazon Web Services.

Download the exam guide for more details.

On November 9th I took and passed my exam*. I thought I’d share my thoughts on why I sought this certification and how I prepared.

Why

I’m a software developer. I have been writing all types of software, professionally, since 2006. Within the last 7 years, I really found writing distributed software really challenging, but interesting. During this timespan, I have had the opportunity to build really new and interesting products that worked in a distributed fashion. Some of these products were able to scale really well, while others were not. Some of these products were operated in an on-premises data center while others were in a cloud like Amazon Web Services or Digital Ocean.

Before talking about my journey, I always ask myself why become an AWS Certified Solutions Architect? It wasn’t required for my role as a software developer. Going down this road helped me formalize my training and experience as a software developer who builds distributed software systems. It exposed me to a whole world of technology and concepts I wasn’t really familiar with. It makes me a well rounded developer. The certification is just the frosting on this cake.

Journey

Feel free to skip through this part, but I feel it adds a little bit of context.

My first foray into cloud computing came with a side project, PremoFM. PremoFM was an Android podcast app with a server-side component that did the podcast RSS feed crawling and parsing. I built it on Digital Ocean droplet virtual machines (application servers, API servers, and a pretty sizable database server running MongoDB). I used Redis as my message bus that loosely coupled the application services together.

I first got hands on with Amazon Web Services in 2017. I had just transitioned from full-time Android development, to full-stack development at a social media archiving company who’s software was deployed and operating on Amazon Web Services. I built a distributed website archiving product that leveraged several AWS services like EC2, SQS, Lambda, and RDS.

It was in 2020, that the motivation to become certified on a cloud platform became front and center. Despite having motiviation in 2020, I didn’t actually schedule my exam until September 2022. I ended up re-scheduling several times before taking and passing it this November.

How

There are hundreds of AWS products and services to cover in order to feel well prepared for the exam.

The most important part about achieving most things is the preparation. It took me 2 months of consistent study to get to a point where I felt comfortable enough to take the exam. Given my score1, I probably over did it by about 2 weeks, but I wanted to be prepared.

Hands-on Experiences

First and foremost, I have years of AWS experience at this point. I’ve built and released several products on AWS. There’s nothing like real world experience as a teacher. I struggled in my exploration of many AWS products I encountered. That struggle help to solidify my understanding of the product, the suite of problems it solves, and how to set it up and get it running.

For example, I was tasked with setting up a Site-to-Site VPN between a VPC and a datacenter. We needed to export data from a DynamoDB database into a Microsoft SQL server run in a datacenter, run by one of the vendors a customer used. I spent weeks working (and sometimes spinning my wheels) on:

  • AWS networking (VPCs, public/private subnets, route tables, VPC endpoints)
  • Lambda functions running in a VPC and using VPC endpoints for AWS services
  • Configuring the Site-to-Site VPN and aligning with the specifications of the VPN device at the other end of the tunnel
  • Conditionally spinning up a MS SQL Server instance in RDS for the test environment
  • Querying and paging through DynamoDB data

Fortunately the documentation on AWS is good enough and StackOverflow proves yet again why it’s a great resource. In lieu of having on the job experience, AWS has a free tier for many of it’s products that allow you to experiment different products without running up much of a bill. If you don’t have a ton of experience with an area of AWS, I encourage you to do some of the labs or build a side project on AWS. You’ll build a skillset that helps for the exam and as a software develoer.

Read “Designing Data Intensive Applications”

Cover of Designing Data Intensive Applications

This is optional, but it goes a long way in fortifying foundational knowledge about building distributed software systems. I originally read “Designing Data Intensive Applications” to prepare for the System Design portion of a Google software engineering interview2 a few years ago. It walks readers through how the components of a distributed system build on top of one another to form a breathing and living product. I read it again because I read it pretty fast the first time around.

This book is valuable because many of the products and patterns covered on the exam, are talked about in excrutiating detail in DDIA, such as:

  • Relational vs non-relational, OLAP vs OLTP databases
  • Synchronous vs asynchronous replication
  • Decoupling services with message buses and queues
  • Interface protocols
  • Batch and stream processing systems

Frankly, as one progresses in their software development career and begins to work on products larger in scale, “Designing Data Intensive Applications” gets a strong recommendation from me. We all don’t work building database software, so concepts like “quorum consistency” rarely come up in our day to day work. However, knowing how it all works helps us build better, more resilient software.

Online Training Courses

There were several online resources I used for preparation.

I chose Stephane Maarek’s Ultimate AWS Certified Solutions Architect Associate SAA-C03 course on Udemy. This was my primary online resource. It’s 30+ hours and walks through every single topic that’s going to be on the exam. It also includes record walkthroughs of the AWS product in the AWS console. It includes smaller exams after very chapter to help reinforce learning. This course was helpful as there are hundreds of AWS products and services to review. Going into the exam, you all need to know how to combine them to answer a potential question on the exam. Stephane Maarek’s course did a decent job covering the material from this angle.

TutorialsDojo has several AWS cheatsheets available online for free. They are useful for reviewing. I leveraged them for some last minute cramming in the days leading up to the exam.

Practice Exams

Practice exams are EXTREMELY helpful for preparing for the exam. They help establish where you are in your preparation. They are also give you experience with the type of exam questions asked on the exam. Many questions present you with multiple answers that are technically correct. However, they’ll often add an additional constraint that the solution should be “the most cost-effective” or “require the least amount of development” or “least amount of operational overhead”. Practicing with those constraints greatly increase your chances of succeeding on the exam.

If you take Stephane Maarek’s Udemy course, he’ll also provide a practice exam with 65 questions. I’d recommend carving out a couple of hour and taking the exam as soon as your finish the course. This will set a baseline and help you identify any areas where you are weak. I failed the first practice exam, but the explanations for the correct answers were really helpful.

I also purchased a pack of practice exams from TutorialsDojo. These were helpful for all the reasons stated above. I regularly took a practice exam every week leading up to my final exam.

My Exam Experience and Tips

I chose to take my exam, in-person, at a PearsonVue test center. I tintentionally took it in the morning, around 10:30 AM. This is when I’m at my maximum from a mental standpoint. The night before I got plenty of sleep. During the morning of, I woke up and went for my normal run. I drank plenty of coffee, then got the kids ready to go to school. I returned home, drank more coffee and did a little more studying and a practice exam to get my mental vibes right. Finally, I drove to the test center. I arrived about 20 mins before my scheduled exam time. The only items I brought into the test center were two forms of identification (driver’s license and passport) and my car keys. I left everything else, like my phone, wallet, watch, etc. in my car.

Some thoughts regarding my exam experience:

  • The exam questions are somewhat harder than the practice exam questions. The exam questions were more detailed than expected. There were also a couple questions that were really ambiguous and I was unable to confidently choose an answer, even though I understood the technologies being asked.
  • Read the question thoroughly and try to mentally visualize the architecture or scenario.
  • Read ALL of the answers. This is key, even if you know the answer comes to you immediately after reading the question.
  • There are two distractors to every question on the exam that are wrong. Identifying those gives you a significantly better chance at choosing the correct answer if you can get rid of the distractors.
  • Flag any questions that are remotely questionable. In some cases, other questions may contain hints in their explanation to other questions encountered on the test. Flagging them gives you an opportunity to review questions you were shaky on before submitting your exam.

Some final tips:

Revisit topics with regularity, especially topics you aren’t familiar with. They may take longer to take hold and understand. Consistently revisiting them helps you build a last understanding that you’ll take with you to your exam.

Finally, practice exams, practice exams, practice exams. They can be a moderate time commitment. It’s better to take practice exams multiple times and pass the real exam the first time than it is to take (and pay for) the real exam multiple times.

Notes

1. I scored 846 out of 1,000 on the exam, I was genuinely surprised to have done so well. You need a 720 to pass.

2. My Google interview prep was really intense, but it actually helped me as software developer and in my exam preparation. Besides reading DDIA, I also read a handful of Google whitepapers on Google File System, Google BigTable, and Google Map & Reduce. These technologies all have parallels in AWS (ie. Elastic File System, Elastic Map & Reduce, and DynamoDB).

🍂