I helped one of my customers to move a legacy on-premise project to AWS. The test case was lifting and shifting the project to AWS, and this part was done successfully.
Now the customer wants to move to the next obvious step in the process, migrating instance-based services (Like databases and caches) to managed services, and updating the current architecture (and code) from its monolithic structure to a more modern, manageable, and efficient microservices and serverless based architecture.
The customer’s development team has no knowledge about AWS and to be ready for the next phase this knowledge gap had to be addressed.
A self-paced learning program was considered and rejected because it was too complicated to enforce, follow up, and manage.
So the customer asked me to prepare a training plan based on AWS’s classroom training for the developers to be executed by one of the training partners of AWS.
I already posted previously about planing your Learning path in the AWS universe. So the plan I prepared for the customer is one example of how to use the concepts and guidelines discussed in that post to build a concrete and practical learning plan, taking into consideration specific customer constraints and requirements.
If you know nothing about AWS, going straight to “Developing on AWS” is a pure waste of time and money. You can’t learn to program a system you know nothing about. At the minimum, you must know what are the ticking parts and how they interact with each other. The best starting point for technical people to learn about AWS is “AWS Technical Essentials” it is a very condensed one-day course, that gives you a good overview of AWS and AWS services.
In today’s DevOps-oriented world, it is not enough, I encourage every developer to take the 3 days “Architecting on AWS” course too. This course digs much deeper into AWS’s most used services and gives you, the developer, a lot of useful knowledge that enables you to make better programming decisions.
From my experience as a trainer, I recommend taking both courses with at least a week or two gaps between them. Although there is some overlap between the two courses, doing this two-step strategy makes jumping into the deeper water of Architecting on AWS much easier, especially for novices. And again, from my experience, it increases significantly the learning efficiency.
The next step is “Developing on AWS“, This course includes all the fundamental knowledge every developer must know, about developing applications using AWS services (assuming the developer knows enough about AWS services, hence the previous paragraphs).
After learning the basics there are another two courses that are of interest to developers. The first one is “Advance Developing on AWS” which goes deeper into the tools and processes to break a monolith into microservices. The second one is “Developing Serverless Applications on AWS” which is dedicated to developing serverless applications.
I recommend taking those courses only after you did the developing on AWS course. The order you take the last two courses is not significant, but give at least two weeks breaks between each course to let the material sink and sync.
So this is the plan I prepared for the customer:
- AWS Technical Essentials
- Architecting on AWS
- Developing on AWS
- Advanced Developing on AWS
- Developing Serverless Solutions on AWS