Building Core Cloud Skills at Scale

Juan Flores
CloudX at Fidelity
Published in
4 min readNov 22, 2021
Jacob Lund/Shutterstock.com

Introduction

To improve any skill takes practice, experiment and training. And one of the best ways to learn is by doing.

Author Stephen Nachmanovitch, in “Free Play: Improvisation in Life and Art,” says that “in practice we have a safe context in which to try not only what we can do but what we cannot yet do.”

So, the question is, how we can create this safe context where we learn as a group? Moreover, how do we improve and transform team practices and behaviours to become the organisation we aspire to be? Enter Streams!

Streams

Streams is our framework that defines how we grow and drive consistent and core cloud engineering knowledge across squads. We focus on core competencies that every engineer needs to be successful, regardless of their work context.

Within Streams, teams at Fidelity have successfully run four different learning initiatives on every Learning Day (an entire day once a week): Coding Dojo, Code Kata, Coding Retreat, and In-house Jam.

Nick Penston touched on a few of these in his recent Medium article on creating a continuous learning culture; the following will give you more of a look into our method.

Coding Dojo and Code Kata

Coding Dojo and Code Kata are all about creating an environment where you can practice deliberately. Deliberate practice is not the same as experience gained while doing your job. When you seek out experiences to stretch your skills and give you feedback that enables you to learn, it takes a great deal of self-discipline to sit down by yourself and try to solve a challenge on your own. In addition, it can be challenging to get good quality feedback without someone else present or at least available to review your solution afterwards.

Practising test-driven development (TDD) and refactoring are great examples of techniques that work in the Code Kata context.

Resilience and performance testing techniques are the best examples that worked for us in the Coding Dojo setting. This format varies from the traditional dojo. Before the actual practice, we run a set of foundational talks to educate teams and hold Q&A segments to ensure we are all on the same page. These talks cover every dimension of testing to define terminology, reinforce concepts such as stability and resilience, and understand where teams are in their testing journey to effectively cover each team’s needs when holding the Dojo activity.

In-House Jam

In music, a jam is an informal gathering of musicians improvising together. The main goal of our In-House Jam is to promote self-paced discovery and learning by solving challenges. In addition, a jam looks to increase and accelerate the knowledge of a particular technology or tool to better utilise and support it for the organisation. A Terraform Jam is an excellent example of creating a fun and engaging environment to advance Terraform adoption by solving challenges.

Coding Retreat

Lastly, we know that mastery comes from practice; practice comes from playful, compulsive experimentation and from a sense of curiosity. Coding Retreat is a multiday, intensive practice focused on the fundamentals of software development, design, and architecture.

While reading “Infrastructure as Code” (2nd edition) by Kief Morris in our Book Club, we wanted to apply the book’s concepts in a safe environment and experiment with tools such as Terraform and AWS CDK by provisioning the same infrastructure and comparing its results. After the Coding Retreat, we showcased each group’s work and compared each tool’s developer experience, advantages and disadvantages, and the possibility of using both in conjunction.

Joining Activities

As you may have guessed, these four initiatives have several things in common and can be used in an integrated manner, i.e. the experience acquired in a Code Retreat when focusing on simple design and TDD can also be exercised in a Code Kata and then applied in a Coding Dojo. The In-House Jam uses the learning obtained in those sessions, such as creating a challenge that uses the TDD technique when writing infrastructure using AWS CDK or Terraform.

Challenges

Running these activities when some team members are remote comes with a new set of challenges. Nonetheless, some tools such as Live Share in Visual Studio Code and Code With Me by JetBrains allow real-time code collaboration (simultaneous editing). It also makes the experience more pleasant and encourages everyone to participate.

In our first Dojos and Coding Katas, we spent a considerable amount of time discussing what certain concepts mean to us as a group, e.g., TDD, integration tests or different types of performance testing, which reduced the impact of the activities per se. Don’t be afraid to take your time and run foundational talks to define terminology, so everyone has the same level of understanding. Also, it helps to determine the champions that could facilitate running Dojos/Katas within your teams at a later stage.

Summary

Streams are a great vehicle to have deliberate practice, institute continuous experimentation and learning, and invest in the technical capabilities that grow expertise in our group. Every learning day creates authentic learning opportunities and tightens the feedback loop of acquiring new skills and expanding our expertise.

The four learning activities also create opportunities and spaces to showcase the learning experience. Thus, we encourage sharing and innovation by having demo days and forums; and most significantly, we celebrate our work and learn from each other.

--

--

Juan Flores
CloudX at Fidelity

Vice President of Cloud Engineering within Enterprise Cloud Computing at Fidelity Investments. DevOps enthusiast and Continuous Delivery advocate.