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 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).
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:
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.
This scenario changed recently when we started working on some backend-demanding initiatives such as:
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.
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:
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%).
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:
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.
Here are my key takeaways from running coding dojos.