Originally published at andredevries.dev
A few months ago I passed the AWS Certified Developer Associate Exam. This exam tests your knowledge of the core AWS services that you need to use for developing, deploying and debugging cloud based applications. AWS Certifications are currently one of the most sought-after credentials that you can have in the industry and I thought it would be helpful to share my experience and tips for this exam. This should therefore be a helpful blog post for those that want to start out in the tech sector or have an interest in becoming a developer who uses Amazon Web Services. I found the exam itself quite hard but it was really rewarding and a learned a ton!
Amazon Web Services (AWS) is vast and there is a lot to learn. It currently comprises more than 200 services. I was pretty overwhelmed when I started delving into it. The first exam that I tried was the Cloud Practitioner. I passed that one earlier this year. To me, that exam felt kind of an entry exam into AWS and the cloud. There were lots of high level questions about a myriad of services, ranging from virtualization to machine learning and databases. This made it really hard to know beforehand if I studied enough. That was different for the Certified Developer Associate exam - the focus point of this blog post.
The format of the exam is multiple-choice. There are no open questions and you don't have to write an essay. Typically the exam is held in a test centre but because we are living in a global pandemic AWS has moved all their exams to an online proctor environment. I'm still on the fence if I like that setup. A proctor is someone that constantly pays attention to you while you do the exam. For the full 130 minutes! This means that with even the slightest of movements of your hands or face the screen will be paused and you will be asked why you are moving. I literally got stopped while I was grabbing my glass of water that was standing next to the laptop. I found this really frustrating and it dropped my focus, especially the first time when I did the Cloud Practitioner exam. The second time around, for the Developer Associate, I just accepted it (and didn't drink any water).
Before we jump into the specifics of the exam I want to explain how I prepared myself for this exam. I think that everyone has a different way of learning so please don't take this as gospel. I think the time between registering for the exam and actually taking it was about 3,5 weeks. Even though I've used AWS quite a lot in the last few months I had to learn a lot about certain services I had never used. I mainly studied through the Udemy course and the practice exams that I mention below. Especially the practice exams give you a good sense of what you know and what you need to focus on. For me this was mainly learning more about DynamoDB and the CI/CD Pipeline. Whenever I study for a particular topic I try to immerse myself into the material. I do that via books, podcasts and YouTube videos. I have listed out a whole bunch of resources at the end of this blog post but the main reason I read books and listen to podcasts is that you get some 'real' opinions about the AWS services you are learning about. The Udemy course from A Cloud Guru is great, but it's a very structured and un-opinionated approach to learning about the cloud. While if you, for example, listen to a podcast about Serverless (e.g. the Real-World Serverless podcast by The Burning Monk) you get more in-depth explanations of the various study topics.
Let's start with the requirements for this exam. The Developer Associate exam is one of three associate level exams. The other two are the Solutions Architect and the SysOps Administrator. Find more information about those exams here. AWS states the you need a certain amount of experience and in some cases even a few years of hands-on experience to pass them. However, there are no real prerequisites to register for the exam. Anyone can therefore sign up, even if you don't hold any AWS certifications.
The breakdown of the exam questions are as follows:
- Deployment: 22%
- Security: 26%
- Development: 30%
- Refactoring: 10%
- Monitoring: 12%
AWS recommends you have the following knowledge and experience for the Developer Associate exam:
- In-depth knowledge of at least one high-level programming language
- Understanding of core AWS services, uses, and basic AWS architecture best practices
- Proficiency in developing, deploying, and debugging cloud-based applications using AWS
- Ability to use the AWS service APIs, AWS CLI, and SDKs to write applications
- Ability to identify key features of AWS services
- Understanding of the AWS shared responsibility model
- Understanding of application lifecycle management
- Ability to use a CI/CD pipeline to deploy applications on AWS
- Ability to use or interact with AWS services
- Ability to apply a basic understanding of cloud-native applications to write code
- Ability to write code using AWS security best practices (e.g., not using secret and access keys in the code, instead using IAM roles)
- Ability to author, maintain, and debug code modules on AWS
- Proficiency writing code for serverless applications
- Understanding of the use of containers in the development process
This is a big list and you are tested on each item. But some are more important then others. I'll therefore break down the most essential ones below:
This is the first one in the list and might scare a few people. Do I really need to know or even learn a complete programming language to be able to pass this exam? The answer is a no, but it might help. What I mean with that is that you don't actually have to write code, but you have to understand it. It also helps with your further career in AWS. Even though you can do a lot in the AWS Console, many Cloud Developers are using the CLI and CloudFormation to deploy their 'infrastructure as code'. Because the questions are multiple choice you can use the art of elimination to get to the right answers for these types of questions if you're not too certain. The ones I got that involved code where related to caching and which code snippet demonstrated caching most effectively.
Even though this exam focuses heavily on the developer side of AWS, I would still recommend that it is important you have a solid understanding of the core services such as EC2, S3, IAM and RDS. Many questions have these services listed in possible answers so knowing what you can (and can't do) with them is very important. I didn't get any questions around actually designing or architecting solutions in a VPC. This is mainly because lots of the developer services are all moving towards a 'serverless' setup. With serverless a lot of the detailed architectures are already taken care of for you. Another point that always comes back in AWS exams is best practices. These often relate to security best practices. A rule of thumb when you work with AWS is that you are responsible of securing what's in the cloud, while AWS secures the cloud itself.
This one is super important and I got a lot of questions on. CI/CD stands for Continuous Integration and Continuous Deployment. These are paradigms that developers use when they (automatically) deploy and build their code. Understanding what 'blue and green' deployments are is important, but you're not being tested if you know the definition of these terms. Often the questions are written as little case studies where you have to select which deployment strategy is the most suitable. 'Suitable' is then also defined in the question itself. I would recommend using or playing around with AWS Codepipeline on your own to understand the moving parts. This AWS service is kind of an umbrella service that comprises 'Codecommit' (AWS's Github), Codebuild & CodeDeploy. Another tool that you need to understand in this category is X-Ray. A tool that can help you with analyse, debug and monitor your applications.
You can take this requirement a bit broader and think about serverless applications as a whole. Because in the exam there are quite a few questions related to serverless computing. You need to be able to articulate the differences between a 'traditional deployment' and a serverless deployment. In the former, the user has to provision their own instances, maintain and update the operating system, install applications and handle and configure autoscaling themselves. All of this is not needed when you move to a serverless framework. You only have to take care of writing the code of your application and monitor it. Everything else, like autoscaling, is taken care of by AWS. Services that you need know in this section are: AWS Lambda, API Gateway, DynamoDB, Step Functions, Athena and Kinesis. Of this list I would really recommend studying Lambda, Gateway and DynamoDB.
This is something I didn't focus on at all while studying. I didn't get many questions about it either so I wouldn't worry to much if you've never used Docker and Kubernetes. However, I would read up a bit on the AWS services that help you with deploying containers on AWS (AWS ECS) because they might be mentioned as potential answers in other non container related questions.
There are a whole bunch of resources that I used to study. The most important thing to stress when you are studying for AWS exams is to get hands-on experience with the services. This hands-on experience gives you a good grips on the console. However, for the Developer Associate exam I would also focus on learning CloudFormation and how to use the AWS Serverless Application Model (SAM). Almost all the things you can do in the console you can also do by using the various APIs that AWS offers (e.g. AWS CLI). The majority of resources that I list below will give you this firsthand experience:
- A Cloud Guru Developer Associate Course (Udemy): a well-known resource for online cloud training. A Cloud Guru has a whole bunch of courses and this one is quite good and gives you a solid understanding of the developer side of AWS.
- Exam Readiness AWS Certified Developer Associate (YouTube): recording of a presentation that walks you through the various elements of the exam. Contains practice questions and lots of tips & tricks.
- TutorialsDojo (Website): this is where I bought access to practices exams. This was my primary method of testing what elements of the exam I had to pay more attention to.
- AWS Simplified (YouTube): very informative YouTube channel that has lots of bite-size videos about various AWS services.
- DynamoDB Guide (Website): built by Alex DeBrie. He's an AWS Hero and the author of The DynamoDB Book
- Off-by-one (newsletter): I signed up for two AWS related newsletters but also had a look through the backlog of this newsletter by Jeremy Daly. It's a great way to learn more about the vast and growing ecosystem of serverless.
- Last Week in AWS (newsletter): not specifically focused on the developer side of AWS but a good all-round weekly newsletter that keep you informed about what's new in AWS.
- Serverless Chats (podcast): a very informative but sometimes highly technical podcast from Jeremy Daly.
- Real World Serverless (podcast): a podcast by Yan, who is an AWS Hero who specialises in everything related to serverless. Contains lots of very good examples of serverless implementations from various companies.