Coderetreat — or why you should go and do it!

Once a year, Hello Heart employees from all over the world are gathering in one place to review the past year and plan next year goals and roadmap.

This year we decided to try something new and dedicate a whole day for a skill and improvement workshop for each department.

Hello Heart R&D is a diverse group, from culture to expertise. How can we find one workshop that will benefit everyone?

We decided to start from a goal list, what we want to achieve in this kind of workshop:

  1. Encourage teamwork — as a thriving startup, each engineer has its own responsibilities and projects. We don’t find time to switch between them and work with people from different teams.
  2. Tackle problems in new ways — our group is comprised of top-notch seniors engineers, but as a result, when it comes to solving a problem, we are all focusing on how we already know to solve problems and don’t explore new directions
  3. Step up our game — we want to be the best at what we do and improve all the time, but in a real-world environment, we don’t have time to brush up on the basic principles we learned earlier in our career.
  4. Healthy competition — because who doesn’t like a good win? Especially when it comes to engineers :)

After defining our goals it was easy to find the workshop for us — Coderetreat!

What is a Code Retreat?

Coderetreat is a day-long, intensive practice event, focusing on the fundamentals of software development and design. By providing developers the opportunity to take part in focused practice, away from the pressures of ‘getting things done’, the Coderetreat format has proven itself to be a highly effective means of skill improvement. Practicing the basic principles of modular and object-oriented design, developers can improve their ability to write code that minimizes the cost of change over time. (taking from

Basically, it means taking a step back from our daily race toward new features and go back to the basics. Remember what made us love programming and brush up some fundamental principles of good software like SOLID and the 4 rules of simple design.

Now what?

First, we needed to decide if this is something we wanted to handle in-house or use an external facilitator. We decided to go with an external facilitator for the simple reason we wanted everyone to join. If you have the extra budget for it, we recommend you to do the same.

We approached Corey Haines, who is one of the founders of Coderetreat initiative and we were lucky enough that he was willing to join us in this event!

From that point, the rest was on Corey’s shoulders, and as expected he did an amazing job!

Let’s program!

The day consisted of five sessions with the goal to implement Conway’s Game of Life.

In each 45 minute session, we were coding in pairs, mixing the pairs after each session. The pair were forced to delete their previous work (believe me, you don’t know how hard it is until you try!), choose a common language and go bananas. By mixing pairs, we were able to work closely with teammates we don’t usually have the opportunity to work with, which was a ton of fun.

Sounds relatively easy, right? Think again! The first session was pretty straight forward but afterward… each session introduced a new constraint designed to force you out of your comfort zone and make you doubt the things you know. For example, you must write your entire program with no if statement. A small break for jaw drop.

The most interesting part for me was the last session in which we were asked again to implement Conway’s Game of Life without the previous constraints. This gave us the opportunity to really reflect on the progress we’ve made during the day and see how far is our code from 8 hours ago.


At the end of the day, we were exhausted but satisfied.

Besides the simple fact that this day was a lot of fun, we successfully answered our goal list. We left the CodeRetreat with a better understanding of how to write clean, simple and flexible programs that minimize the cost of change over time. Big win for everyone.