What can we learn from playing games when we transition to programming the cloud?
how can we build an incremental reward system for our learning process
If you did not play video games when you were young, then this article might not resonate much.
But if you did, and if you feel you fall into the following two situations when learning programing the cloud:
procrastination;
can’t continue because it feels too hard at certain stage
then please read on. And we will illustrate why we may avoid falling into those situations by properly setting up our learning frameworks.
Why learning programming the cloud seems to be hard?
To engineers who come from transitional environments, transitioning to programing cloud feels
Hard to start with:
even though we heard from keynotes speakers saying “I swipe my credit card and then I can build my product” (I guess it implies it’s super easy, right?)
what end up with are typically the following “Why are you saying Beanstalk may be easier for me?”, “my friend said I have to setup an ELB in front of my app server, and he said it’s just two clicks away, what is it?” …
Hard to get rewards timely:
“Ok, I finally get why this is the right direction to go, but I need to finish all these stuff to get something tangible”
In our old world, isn’t it just something like `
./mvnw spring-boot:run
`?
Actually, we lied above: we were comparing apples to oranges
No, we did not lie — to certain extent, “hard to get started” and “hard to get rewards early” are true.
But yes, we did lie because we were comparing apples to oranges:
in our old world, i.e., open our code editor and run .
/mvnw spring-boot:run,
only handles the development stage — it’s at most only half of the story to deliver the final value (see why PM won’t necessarily work directly with you) and we are not delivering final value yet;when we started to learn programming the cloud, if we could manage to make it, we would have transformed ourselves into an end-value-delivering engineer — it’s a far more powerful and far more important role in our corporate environment.
So the difficulty comes with huge value growth by itself.
Learning by building vs. mastering a game by playing
How to become good at playing a game? I guess the answer would be “by playing it”, right?
How to become good at programing the cloud then? I guess probably the most efficient way would be Learning by Building.
(BTW, off the topic a bit, I personally have doubts about the real world effectiveness for a lot commercial activities helping people to pass cloud certificates — and our team never made hiring decision by judging whether a person hold a certificate or not.)
Building a hobby project does not need to conflict our day time job, and after we acquire some extra skills that make you a 10x engineer, we can surprise our boss and contribute to our organization in a positive way. So why not start building by learning?
If your day time job offer you an opportunity, talk to your manager trying to get that project;
Even if your day time job does not offer you such opportunities, you can start a hobby project;
What makes an engaging game?
I worked in a gaming company in the past. Though I am not in the gameplay design department, I got to know from several creative minds who I learnt some of their insights during casual lunches / coffee times.
Games must be simple to start with
e.g., no matter how powerful / complex / challenging your game will end up with, gamers should be able start playing with little manual reading.
Games must have timely reward and feedback systems
e.g., game levels shows how well we are in the game; a successful operation gives us game point rewards immediately
I am sure my friends in gameplay design area shared with me a lot of other insights, but those are the two principles that I still vividly remember.
What makes an engaging learning experience?
As engineers who intentionally grow our skill-set and seek the best path, we are the gameplay designers for the (learning) game we play.
We should intentionally set up our learning procedure framework in the following way:
easy to get started (actually, it should allow us seeing the result immediately)
constantly see our progress, i.e., constantly get the game (I.e., learning) reward
And the serverless paradigm (and JAMStack philosophy as well, which we would really like to discuss at certain time) could become your friend:
For example, if you are a Python / Node backend programer, several dozen lines of CDK code would set up your infrastructure architecture, literally you have already set up your production environment — easy to get started; from there, you could keep adding your backend APIs — constantly see our progress; when you’d like to be able to further learn AuthN and AuthZ, then you can open the chapter of Auth0, AWS Cognito or Azure AD — constantly see the progress again
…
...
Summary:
If you read a lot of online tutorials about “how to become a cloud expert” but still feel lost, don’t get frustrated. Start building a simple project — learning by building.
Pick an easy to start and constantly see the progress way, for example using CDK to build a serverless backend, and you will find you will easily get on to your next level of challenges (AuthN/AuthZ? network security? …
And at each new level, the experience will be refreshing and engaging. Happy gaming!
… oops, I mean ‘happy learning’🤓.