This past winter, I took the AWS Developer Associate certification exam because I wanted to gain a deeper understanding of DevOps and the AWS platform. In this blog, I'll cover what the certification is and why a software engineer would want to get it, how I prepared, the most important topics to study, and some interesting things I learned.
For those who are not familiar with Amazon Web Services (AWS), the simplest way to describe it is a cloud-based environment where you can host your website or application along with data and asset storage for things like photos, videos, and documents. And it extends beyond that to services for machine learning, video processing, analytics, and more.
As of 2021, AWS is a very complex set of over 200 products and services. There are DevOps professionals who devote their entire careers just to AWS. But the certification I took is specifically geared towards software engineers who want to incorporate knowledge of AWS and DevOps principles into their everyday software-development work.
So why would a software engineer want to get this certification? Because the paths of a DevOps professional and a software engineer cross when the application built by a software engineer is ready to be deployed. Having knowledge of AWS services allows you to build cloud-first applications and explore different deployment options, which can greatly impact the speed and efficiency of your application and the financial cost of hosting it. And decoupled service-based cloud applications are replacing monolith applications generally, so software developers need to have knowledge of these cloud-based services.
So what is the certification exam? At the time of writing there are 6 general AWS certifications and 5 specialty AWS certifications for software engineers, DevOps professionals, Network security professionals, etc. Each certification has a suggested number of years of experience you should have before taking it. The Developer Associate exam was the best fit for me because I already had more than one year of experience using AWS, and I am a software engineer looking to incorporate the certification knowledge into my everyday work. Engineers with no prior knowledge of AWS could start with the Certified Cloud Practitioner certification and then move up to the Developer Associate certification.
The exam has around 65 questions, all of which are multiple choice (some ask for one answer, and some ask you to select all that apply). The time limit was around 2 hours. You have the option to take the exam at home with a remote proctor who watches you through your camera or in-person at a local testing center. I took the exam during the COVID-19 pandemic, so I was glad they had an online version of the exam. At the time of writing, it costs $150 USD to take the exam (I used my Giant Machines education budget). The certification is valid for 3 years and then it will expire.
Hands-on experience is a must before taking any AWS certification exam. I had on-the-job training, but if your company is not using AWS there are many different courses and workshops available. One workshop a colleague of mine suggested was BackSpace Academy's AWS certification preparation course on Udemy.
Reading the AWS documentation is also a must, but reading through all of it would probably take years and be painfully boring! A great way to know which parts of the documentation to study is to take practice exams on WhizLabs. I purchased the practice exam package. I would take an exam, see which questions I got wrong, and then WhizLabs provided the correct answer and the link to specific areas of the AWS documentation that I needed to study. I also watched this YouTube video by freeCodeCamp.org, but not all in one sitting because it is 12 hours long.
As I mentioned earlier, AWS has over 200 services, but there are only 15 that you MUST know for the exam. These are DynamoDB, Lambda, API Gateway, KMS, CI/CD, X-Ray, SQS and SNS, ECS, Cognito, CloudWatch, Elastic Beanstalk, IAM, VPC, EC2, S3, and R2D2. (Just kidding about the last one—there are so many acronyms!) The service that has the most questions on the exam is DynamoDB, so make sure you are familiar with it inside and out.
The most interesting things I learned while studying for this certification were from the questions that start with the phrases "what is the most cost efficient way to..." and "what is the easiest way to..." Not only did I learn about an AWS service, I also learned about cost-saving techniques where you spin up and tear down services as needed, so you only pay for services that are being actively used. (Businesses love cost savings!) These types of questions also helped me learn to compare the different AWS services and choose those which best fit the needs of the business and the application.
While studying, I also learned some very important application architecture design principles. For example, if you know that your application will need to process thousands of requests per minute, you should set up a Simple Queue Service to hold incoming requests and have the application process a certain number of requests from the queue at a time. This will prevent your server from running out of CPU and crashing because it can't handle the load.
I also learned about how AWS services can be used to support some interesting business models. Take, for example, a company that provides tier-based pricing for their service, meaning that if you want faster service you must pay more. The company set up two Simple Queue Service queues, and the lower-tier requests were sent to one queue and the higher-tier requests to the other queue. The application would then process the items in both queues, but when an item came into the higher-tier queue, it would take priority over the items in the lower-tier queue. As a result, the higher-tier items would be processed faster than the lower-tier items.
My experience getting the AWS Developer Associate certification was a positive one. I feel like it helps me out in my current role as a senior software engineer at Giant Machines because it has given me the ability to make important application architecture decisions. I am also able to provide guidance to clients on how to obtain the best performing and most cost-effective architectural solutions. And having an AWS certification on your resume helps you become recognized as an expert in these sorts of complex architectural and deployment issues.
I would love to hear from readers about your experience studying for and taking AWS (or other cloud providers') certification exams. Please leave a comment with the name of the certification exam you took. And it would be great if you could add a link to the study guide that you used, so others can research these options when they decide to take the exam. Feel free to ask questions regarding the exam as well.