DEV Community

Cover image for Create a Professional Certification Quiz with Kiro
Olivier Lemaitre
Olivier Lemaitre

Posted on

Create a Professional Certification Quiz with Kiro

I have many AWS certifications. That doesn't mean I know everything about AWS, far from that. Actually, AWS is so huge that many certification questions test you on unknown situations. It's also difficult to have an experience with everything, especially with certifications like the "AWS Solutions Architect professional" which spans tens of AWS services.

Therefore, you have to prepare for your certification exams in order to "compensate" your weaknesses. The main solutions are to read the FAQs and the documentation of the services, practice them through workshops or at work, draw diagrams, take notes, follow videos on AWS Skill builder or Udemy, and train with exam-like questions on platforms like Tutorial Dojo.

The best preparation for me is a combination of all these, but the latest option (training on exam-like questions) is important. I remember how destabilized I was the first time I took an AWS certification exam. At the time (2016) we didn't have a lot of examples and I had no real techniques on how to read and answer questions.

Therefore, you must be prepared to answer questions. At least, the days before taking the exam, you must train your brain to it. Especially for Professional Certifications.

I recently had to renew my Solutions Architect Professional certification and I decided to use recent GenAI capabilities with AWS Kiro IDE in order to add another preparation tool and train on my weaknesses.

I wanted to share this. So, here is the story.

What is a Professional certification question?

First, let's see what is a Pro Cert question.

Professional Certifications are different from Associate Certifications on several aspects. They come with a combination of 4/5 services (instead one 1/2 service(s) for associate exams) which makes the questions longer and more complex. Moreover, more than one proposition can make sense sometimes, but you have to identify the less expensive solution to tick the correct answer.

A certification question example

You can find solutions architect sample questions here: https://d1.awsstatic.com/training-and-certification/docs-sa-pro/AWS-Certified-Solutions-Architect-Professional_Sample-Questions.pdf

Let's extract one of them (question 4):

4) A company runs a serverless mobile app that uses Amazon API Gateway, AWS Lambda functions, Amazon Cognito, and Amazon DynamoDB. During large surges in traffic, users report intermittent system failures. The API Gateway API endpoint is returning HTTP status code 502 (Bad Gateway) errors to valid
requests.

Which solution will resolve this issue?

A) Increase the concurrency quota for the Lambda functions. Configure Amazon CloudWatch to send notification alerts when the Concurrent Executions metric approaches the quota.

B) Configure notification alerts for the quota of transactions per second on the API Gateway API endpoint. Create a Lambda function that will increase the quota when the quota is reached.

C) Shard users to Amazon Cognito user pools in multiple AWS Regions to reduce user authentication latency.

D) Use DynamoDB strongly consistent reads to ensure that the client application always receives the most recent data.

One technique to answer a certification question

Here is one technique to answer the question (N.B. I sometimes use other techniques, depending on the question, but I won't explain them here in order to keep this part short enough).

So, as you may see, the question involves multiple services (4 in this case) so you have to spot the issue with the most certainty.

What I do when I see this kind of question is to try to visualize things in a "pattern" (in this case a multi-tier application pattern with authentication).

Then, I try to think of one possible answer without looking at the propositions. In this case I know that the bad gateway error (502) is probably an issue with the backend behind the API gateway. Probably a Lambda function issue, but I'm not completely sure at this stage.

Then, I read the answers, looking for inconsistencies or non-relevant answers that sound weird to me, like this one:

D) Use DynamoDB strongly consistent reads to ensure that the client application always receives the most recent data.

Which says the issue is due to the lack of freshness of data (that sounds weird for a 502 error).

The Cognito answer sounds weird as well

C) Shard users to Amazon Cognito user pools in multiple AWS Regions to reduce user authentication latency.

It does not seem to be a latency issue (I would better expect a timeout in this case).

So, I eliminated 2 answers, I can now make my choice among the remaining 2.

A) Increase the concurrency quota for the Lambda functions. Configure Amazon CloudWatch to send notification alerts when the Concurrent Executions metric approaches the quota.

B) Configure notification alerts for the quota of transactions per second on the API Gateway API endpoint. Create a Lambda function that will increase the quota when the quota is reached.

They both propose to increase a quota: should I increase the number of concurrent lambda functions or the number of API calls per second?

But, if the number of PAI calls per second was reached I wouldn't get this 502 response, but rather a 429 error code. Moreover, as I explained earlier, a 502 error is an issue behind the API gateway. Therefore that confirms the issue must happen due to lambda functions, therefore I choose answer A) with a bit of confidence.

Let's verify the answer

Let's see what the answer and explanation are from the sample questions document:

4) A – Amazon API Gateway will intermittently return HTTP status code 502 (Bad Gateway) errors if the AWS Lambda function exceeds its concurrency quota. Option B is incorrect because, in this case, API Gateway would
return a status code 429 error for too many requests. Option C is incorrect because the errors occur during calls to the API Gateway API endpoint, not during the authentication process. Option D is incorrect because stale data would not cause a Bad Gateway error.

Ok, my reasoning wasn't too bad, even though I rarely found myself in the exact situation described in the question.

N.B. : You make think that I could follow my first intuition with lambda functions and answer A) right away, but some questions can be quite subtle and I would advise to make sure you can eliminate other responses.

Of course, knowing the services (like DynamoDB) + HTTP and having some experience with those helps a lot. However, the way you read the question will also help, like identifying important words and elements that will confirm the right answers and/or discard others.

Can you get questions tailored to your needs?

Of course, I don't have experience with all the services covered in the certification, and maybe I want to focus on them when I'm preparing for it (that's also a way to improve my skills in general).

So, I asked myself, can I generate bespoke questions on specific services where I feel weak and answer them within an application that would look like a certification application?

Then I thought, let's try to develop this with GenAI and Kiro (the new name for Amazon Q Developer)...

Step 1 - Generate a GUI for the certification questions

We can surely generate certification questions with LLMs, but first I wanted to create a little app that allows me to answer questions with something that resembles exam conditions.

Let's do it with Kiro... in Spec Driven Mode

I want a simple web application that can work locally (a web page in an IDE) that asks one certification question with 4 possible answers

First I get a requirements.txt file containing 4 requirements that I can inspect and modify.

But, let's keep these requirements as is, and accept them all. Then move to the design phase.

The design phase gives you a document containing the application architecture and the design of the GUI components (like the HTML structure of the web page for this single page application). It's a bit like a readme for the developers of the application.

Again, I can modify that and change a few things, but in this case let's directly move to the implementation phase.

In the implementation phase, Kiro will generate a list of tasks. Then, I can click on "Start Task" to generate the related code (e.g. 1.1 create the index.html with container, question, 4 answer options (A-D), submit button, ...)

The result (that I can watch thanks to Live Preview VS Code extension) is quite basic, but that's exactly what I want.

Now what is *important * from there is to initiate a git repo so I can save the result and roll back if the next step fails or does not produce what I expect.

These 3 commands in the terminal are enough:

git init
git add .
git commit -m "create index.html page"
Enter fullscreen mode Exit fullscreen mode

I continue with the next task (CSS formatting), and in a matter of seconds I get this rendering:

That's nice for someone like me who is not an everyday front end developer 😊

Now, if I'm satisfied, I can commit this, or if I want to change something, I can reject it, modify the task description and regenerate.

Actually, I kept it as it was, and continued to iterate this way through all tasks.

After a 20 minutes or so, I got a working quiz with 4 possible answers.

Which is very nice.

Now, I want to quickly improve this first result and I have 2 options: carry on with the Spec Mode or Vibe Mode.

I chose Vibe mode, because my goal isn't to share this application with a team of developers, but to prototype a solution that suits my needs only.

Let's switch to vibe mode now...

So, I asked for some improvements in vibe coding mode, like this one:

Create a questionData with 2 questions (update the logic consequently)

Again, what is important is that I can test a modification, then accept or reject it (i.e. rollback if I'm not satisfied). If I reject, I can reformulate my demand; otherwise I can commit the generated code.

After a few iterations, I have an interesting application structure that accepts a list of questions and a score at the end.

This is exactly what I wanted to achieve first.

Step 2 - Populate the Quiz App with sample questions

Now let's populate this with more interesting (professional) questions.

Use the sample question document to feed the quiz app

For this I extracted the text from the solutions architect professional sample questions pdf because Kiro doesn't read pdf directly yet.

Then I asked:

From #Solutions-Architect-Professional-Sample-Questions.txt create a new questionData.js (update quiz logic if necessary)

The complete sample questions in the quizz app

That worked quite well (it even noticed when questions needed multiple answers and updated the quiz logic consequently).

Here is, below, the question I took as an example in the first paragraph of this blog post:

Step 3 - Generate new certification questions

This is where it becomes interesting😊.

Create questions tailored to you needs

Now that I have my application and data structure, let's generate/invent new questions.

replace existing questions with 5 questions having #Solutions-Architect-Professional-Sample-Questions.txt style related to api gateway, lambda, dynamoDB

And that works. I get questions pretty close to real exam questions for a first try.

Here are the generated questions if you want to have an idea:

Question 1:

Question 2:

Question 3:

Question 4:

Question 5:

Score:

What can we do next

I'm sure I could go much further by specifying more context to Kiro (i.e. using Claude Opus 4.5 LLM model in my case) to generate more questions with my preferences.

For example, I tried to use the AWS Documentation MCP Server that reads AWS services documentation. Actually, some certification questions are often related to some part of the documentation.

But, I believe we can have something even more tailored to our specific needs, in order to make us progress faster with more fun!

If you ever wanted to add improvements or test this prototype at home, here is a GitHub repo with the Kiro generated code: https://github.com/welcloud-io/wio-professional-certification-quiz-generator

Conclusion

Preparing a certification can be a challenge and you need to combine multiple tools to prepare them. Training your mind with exam-like questions can be an important one.

With today's GenAI we can create application quickly, at the speed of light compared to not so long ago. Kiro IDE, propose 2 approaches, Spec Driven and Vibe Coding mode to achieve this. I don't have a preference yet, even though I think Spec Driven Development might be better suited for large teams already using this kind of workflow. Anyway, what is important for me is to work in small steps whatever the choice.

And even if I could rapidly create an app and generate bespoke certification questions with Kiro (which was unimaginable just 3 years ago), I have the feeling that I just scratched the surface of this! And that we can do much better! Sometimes I'm wondering if certifications (and exams in general) will still look the same in the near future!

I hope that will inspire people to create quickly what they are missing in their everyday job (not only a certification quiz app). The kind of idea you thought would have taken days to build would now take a few hours to come to life. And obviously an IDE like Kiro can really help to achieve this.

Top comments (0)