practicing-coding-dojo-to-level-up-knowledge-between-engineering-functions-getyourguide
Engineering
Feb 8, 2021

Practicing Coding Dojo to Level Up Knowledge Between Engineering Functions

Alexander Xavier
Senior Backend Engineer

Alexandre Xavier, backend engineer, shares how his team practices Coding Dojo to help the Product Optimization team equalize knowledge between engineering functions.

A dojo is a training room in Japanese martial arts, and a kata is a detailed, predetermined movement sequence to fight an imaginary opponent. The routine is repeated to perfection so the fighter can recall patterns by instincts in a real battle.

Like in a real dojo, Coder Dojo is a software training technique where engineers solve a programming task many times in a row — each time better than the last. During the training session, engineers can get to know new platforms, frameworks, tools and languages. Alexandre explains how his team applied the technique to level up knowledge between backend, and full stack engineers. He then offers helpful tools and best practices to overcome social distance challenges while practicing Coding Dojo remote.

The Motivation

The Product Optimization team formed around two years ago, so at the time of writing, it’s relatively new. Our mission is to drive GetYourGuide’s growth by engaging travelers with incredible landing page experiences. A landing page could be our website homepage, the GetYourGuide Originals page, or GetYourGuide Magazine. We improve the user experience when they land on the city or the point of interest (POI) page. Then we look at the metrics to understand how our visitors are engaging with our pages such as add to cart rate, bounce rate, and conversation rate.

The team has three backend engineers and three full stack engineers.  To stay organized, we use Jira and tag tasks with a label called components. It’s value can be: backend, frontend, or both (where any of us can work on it).

The product optimization team.
The product optimization team

During our first year, we all primarily focused on delivering frontend initiatives. This could be something like redesigning components that are displayed across the GetYourGuide website e.g. activity cards. Or, it could be totally redesigning some pages such as the homepage or our Originals page. As a result, our full-stack engineers worked primarily on frontend tasks while we (backend engineers) gathered knowledge on the other kinds of tasks. These could be all the tasks that are not front-end specific, so both backend and full-stack engineers could work on it. Here are a few examples for context:

  • Defining API contracts
  • Redirecting a depreciated page to a new URL
  • Returning a new field on an existing endpoint
  • Removing a field from an existing endpoint

These are tasks that we are all capable of, but only we (the backend engineers) were doing them. This is mainly because we learned them first, during that period in which the full stack engineers were busy with the frontend tasks.

*from May 2020 to August 2020.
*from May 2020 to August 2020

This scenario changed recently when we started working on some backend-demanding initiatives such as:

  • Improve API response times to speed up the load time of our pages
  • Creating new backend services to serve content to our pages
  • Stack migration, e.g. moving legacy endpoints to the new stack
  • Integrating with new APIs

As we knew there was some simple work that so far had been done by backend engineers, it was the perfect time to share this knowledge with the full stack engineers so they could work on those tasks. So we looked for ways to enable our full stack engineers to get familiar with these tasks.

I thought that Coding Dojo would be an engaging way to narrow down the learning curve between engineers, so I proposed the initiative to the team, and we agreed on giving it a try. We’d been running one hour sessions biweekly since the beginning of September.  At first, we ran face-to-face meetings.  We had been working from home for quite some time and we wanted to come to the office to socially engage — while social distancing and wearing masks. But soon after, Germany adopted stricter restrictions due to the higher number of COVID-19 cases. This was when we had to go totally remote.

What is a Coding Dojo?

A workshop in which coders get together to work on a programming challenge in order to improve their skills through deliberate practice.

How does Coding Dojo work?

Before we jump into detail, I want to mention that there are many ways to run a Coding Dojo, in our case, we picked a widely adopted format called Randori and it works like the following:

Randori-kata-getyourguide.png
Randori Kata
  • There is a coding challenge (aka kata) that is prepared in advance.
  • This coding challenge is solved by a coding pair, the driver and the copilot.
  • The pair has a 5-minute timebox to advance in the challenge resolution using  test-driven development.
  • At the end of the timebox:
  • Driver goes back to the audience
  • Copilot becomes the driver
  • Someone from the audience steps up to be the new copilot

What do we practice during a Coding Dojo?

While we practice the specific tech stack we want to onboard our full stack engineers we also:

  • Exercise test-driven development skills by following the TDD-mantra:
  • Red 🔴
  • Write a failing test
  • Green 🟢
  • Make the test pass
  • Refactor 🔵
  • Improve the code
  • Make sure test still passes
  • Put agile principles into action given that the 5-minute timeboxes encourage us to work focusing on the outcome (short development cycles, incremental deliveries)

Does Coding Dojo work?

Indeed, it was very well-received by our full stack engineers:

"It's an amazing and fun way to learn new backend skills and collaborate with the team!" (Martin Rojas, Full Stack Engineer)

...“It's a great way to get into unknown territory and learn new technologies!” (Mira Vogt  - Associate Full Stack Engineer)

It was not only them that appreciated that, but other team members also liked it:

"Thanks to the Coding Dojo, I was able to easily implement my first ever API endpoint in PHP from scratch."  (Mauricio Gamboa, Engineering Manager)

...“These sessions bring everyone together and help the team grow its skills. Keep it up.” (Ryan Clare, Product Manager)

The engineers feel more comfortable working with the new tech stack, and this has shown results already. Since we started with the coding dojos, the number of both-components tasks resolved by full stacks engineers has increased by 35.3% (from 29.4% to 64.7%).

* From September 2020 to December 2020
From September 2020 to December 2020

How we connected despite social distancing restrictions

As mentioned above, we migrated the format of the workshop from face-to-face to remote and that came with some challenges. We had to come up with a tool that would allow real-time code collaboration (simultaneous editing).

Luckily, we tried Code With Me by JetBrains that had recently launched at that time.

As we use IntelliJ-based IDEs, the tool worked like a charm. It allows a host to share their locally running project with one or more guests. It is much more than a simultaneous editor; it also provided cool features such as:

  • Remote trigger of a test suite
  • Remote debugging
  • Follow a participant
  • Customize file, terminal and run access for the guests
  • Calls

The combination of all these features is key for us to keep the remote coding dojos as engaging as the face-to-face ones.

💡 In case you don't use IntelliJ-based IDEs, be aware that you don't need to stick with it. There are plenty of open-source alternatives over the internet. I am sure there will be one that suits your use case.

Key takeaways

Here are my key takeaways from running coding dojos.

  • Coding dojos can be leveraged to cover knowledge gaps.
  • The receptiveness might be surprising. It was greatly praised not only by the participants but by our managers as well.
  • Remote coding dojos can still be engaging.
  • Code With Me plugin by JetBrains is a powerful tool to assist you with remote code collaboration.

Here are some resources I used that you might find helpful:

Other articles from this series
No items found.

Featured roles

Marketing Executive
Berlin
Full-time / Permanent
Marketing Executive
Berlin
Full-time / Permanent
Marketing Executive
Berlin
Full-time / Permanent

Join the journey.

Our 800+ strong team is changing the way millions experience the world, and you can help.

Keep up to date with the latest news

Oops! Something went wrong while submitting the form.