If you know me, you probably know I'm a "Tech" guy. I'm that guy who has automated his home, has 12 (maybe 14) Alexa devices which I use to talk to my house, and who you call when you're looking to buy a new notebook (the answer is an Apple M1 Macbook Air if you are looking). As a kid, I found I could do incredible things using a computer. As an adult, I'm even more fascinated - especially given the technological climate we live in today. We are super fortunate to be witnessing a significant tech paradigm shift which has ripple effects on the way the world works and lives.
Innovation comes in cycles, which have been dubbed “Kondratiev waves”. Consider the printing press or steam engine as examples of these world changing events. Cloud, which just blows my mind, is undoubtedly the next wave which is crashing upon us right now. The avenues and possibilities are endless. If you ever had to wait for an excruciatingly long download of a 4MB (pirated) mp3 over a 14,400bps dial-up connection, you appreciate the instant Spotify stream over a fibre or 4G internet connection that much more. In much the same way, after having to wait months for infrastructure planning, procurement, clearance and commissioning - I appreciate the speed, flexibility and versatility of Cloud - be it Infrastructure or Platform as a Service.
Cloud is not a game changer. Cloud is the new game.
To get into the game, my initial strategy was certification. I completed 5 Cloud certifications (see My Formula for AWS Certification) in a few months. This approach is quite similar to picking up the instruction manual of a Boeing 747, reading it from cover to cover, focusing on the procedure for take off and landing and passing a theoretical exam. Unfortunately, without actual flight time, this is a wasted effort. During a recent Cloud Knowledge Sharing session, I observed another approach - the 100+ participants on the call were in awe and reverence of the experienced DevOps presenters. Possibly everyone on that call wanted to build Cloud skills - to widen their horizons, career longevity and open themselves to new opportunities. But this strategy is similar to watching a pilot take off and land and wishing upon a star that you could do the same some day too. Simply getting a certification or joining a Cloud pep talk every week, is, in my opinion, a fundamental mistake with an approach to enter the Cloud arena.
By way of example - I have been extremely fortunate to have first-hand experience in building Cloud native solutions over the last 5 years. Concepts such as containerisation and microservices, technology like Docker and Kubernetes crystallised from fantastic promises on a white-paper into tangible entities. I learn best by doing and by working hands on with the technology, my comprehension, understanding and more importantly, my confidence grew. Much of this journey is detailed in my book - API Marketplace Engineering (available for a great price right now - just kidding). Simply, if you want to fly a plane, you not only need to understand the theory behind it or secure the services of a good instructor, but most importantly - you need actual flight time. Watching YouTube videos of difficult landings is great. The “muscle memory” of course correction in response to a sudden gust of wind, as those wheels touch the tarmac, is far more valuable.
To really know the game, you need to be in the game.
This is the motivation behind this series. It provides a route for me and hopefully you to get more familiar with Cloud. My approach is to identify (simple) "real-world" use-cases, determine requirements, design a solution (using Cloud tech), prototype it and analyse it. Based on your availability and area of interest, you can choose which part(s) of the process to focus on or how deep you would like to go. Again, the key is active participation. You can simply observe how I build a Cloud solution to address a specific problem but I hope you will choose to ask why or follow along or even implement a sliver of the solution on your own. I would like to highlight at the outset that there is no right or wrong questions or comments - as long as it is done constructively.
I intend to use the following approach:
- Background - establish the context or parameters of the focus area
- Problem Statement - what is the itch we are attempting to scratch?
- Requirements - definition of done
- Solution - how does it work?
- Evaluation - does it really work?
- Optimization - improvements, maybe outside the immediate focus area where we can do better
Choose the area(s) of the game you want to master and start playing...
Let us take a quick checkpoint before we continue. I would love to hear your thoughts and feedback if you agree or are vehemently opposed to any of the following.
- Cloud is the future.
- Hands on experience is essential - from requirements analysis, solution architecture, development to operation.
- Build your adventure - select the area to focus on based on your career trajectory (where you want to be) but importantly based on your area of interest (what you want to do).
Now, lets get into our first challenge. As luck would have it, this relates to a real game.
My daughter and son play a mean game of badminton (they get this and all other skills from their Mom, I’m waiting patiently for the coding gene to kick in). Games are played until 21 (must win by 2), 3 games in a match. Events range from training sessions to socials to regional and national tournaments.
- Scoring: One or both parents may not be able to attend their matches. As the scoring is done manually, we often have to relay scores over WhatsApp or wait on tenterhooks for an update from someone at the event. This becomes a little tricky as their games could be played concurrently.
- History: I take my role as a “shadow coach” quite seriously (much to the player’s annoyance). My recollection of the game and the large lead they squandered often differs to theirs and is the topic of much discussion (more like intense debates) during the car ride home ("if you're not first, you're last" - kidding again!).
- Analysis: As part of the game post-mortem, I (erm.. we) would like to know how the points were won or lost. Was a point won by a clear winner or due to an unforced error by the opponent. Similarly, for a point lost.
In the next instalment, I will define the Requirements for this use-case, then tackle the Solution - from design to technology selection to prototype. I am quite certain that if I spent enough time in the App Store, there is probably an App out there that I can use. It is key to note that the objective is to use this as an opportunity to get “hands-on” experience by building a custom solution using Cloud technology. The end state may be a design blueprint or a quickly coded prototype at best - it is unlikely to go into production. Source code will be provided to allow you to review, follow along, fork or optimize.