A Mob of Corgis

JUN 12, 2016 • Written by Andrea Goulet

Legacy code is fun? The team at Corgibytes thinks so. As a boutique software consultancy, we focus exclusively on modernizing codebases, championing the idea of “software remodeling” as a way to save money over performing a complete re-write.

Leading our Corgibytes team are Andrea Goulet (Co-Founder and CEO) and M. Scott Ford (Co-Founder, CTO, and Chief Code Whisperer). Andrea and Scott break the mold of traditional software consultants in all the right ways. Andrea spent most of her career in strategic communications, emphasizes values-based leadership, and infuses the findings from positive psychology research into her operations. Scott is a talented technician who is comfortable coding in over twenty different languages. He sticks out in the software world because his idea of a fun project isn’t something new and shiny, it’s taking what someone else started and making it better. Together, we’ve forged an interesting dynamic and have built a team that genuinely enjoys paying down technical debt, upgrading frameworks, building out test suites, and all the other tasks that are sometimes seen as “janitorial” by most developers.

The developers at Corgibytes are intentionally distributed around the world because the skill set we’re seeking is notoriously hard to find. We recruit what we call “menders”; people who like to fix and polish what the “makers” of the world build. Team members can work where and when they want, are encouraged to stay healthy and refreshed, and communicate with each other asynchronously as much as possible to avoid needless meetings.

Autonomy, balance, and empathy define our corporate culture. What holds it together are our five core values:

  • Adopt a Growth Mindset - Constantly find ways to expand your knowledge and learn new things. Your intelligence and talent is not fixed, it’s developed over time through perseverance, dedication and hard work.

  • Calm the Chaos - Urgency leads to errors; frenzy to frustration. Focus on developing the steady working rhythm and calm mind that works best for solving complex problems.

  • Communication is Just as Important as Code - No one at Corgibytes identifies as a “technical” or “non-technical” because everyone is both. Practice both types of skills regularly.

  • Act with Empathy - Coding doesn’t happen in a vacuum. Consider the other people who are impacted by your work: your clients, your users, your teammates, and even your future self.

  • Craftsmanship in Context- Match your solution to the situation. Sometimes, it’s a quick and dirty prototype to prove a concept. When the stakes are high, spending extra time getting it right is the best way to go.

So, why would a team who values individual freedom so much want to implement mobbing?

At the time Corgibytes learned about Mob Programming, most of our projects were staffed as one developer per client, a norm that developed from collective past experiences at other consulting firms. We noticed that silos were naturally forming, even though we had put a lot of effort into developing a cohesive culture built on values and trust.

Before we decided Mob Programming was a fit for us, regular reflection and retrospectives were already a cultural norm at Corgibytes. In fact, it was exactly these activities that ultimately led us to Mob Programming. During a recent hiring wave, several developers came on board at once, and they were assigned to work together to help improve an internal tool as a training exercise. The new developers took it upon themselves to reach out to each other regularly, ask for help often, and code as a group as it seemed appropriate. There was happy chatter in the team chat rooms. Everyone felt fulfilled and more progress was made on the internal tool than anyone expected. However, once these developers completed their training and moved to client work, the mood shifted.

Corgibytes team members use daily work journals to capture and share experiences from the day. The developers wrote in their journals how much they missed the daily collaboration. Because we had fostered a culture of trust and empathy, people felt safe admitting that they were starting to feel lonely and isolated.

When Andrea started reading that people were craving more interaction, she set out to find new ways to help her team collaborate. The first step was sharing a frequent message that collaboration was encouraged and that team members had the autonomy to work as they saw fit. This was the reinforcement of the Agile Manifesto’s fourth principle:

Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.

Soon we started exploring ways we could work more closely together, even if we were working on different projects and were geographically in different locations. This wasn’t a top-down initiative from management, but rather something that we continue to explore for ourselves. When we first met to choose a framework for getting started, we committed to spending at least an hour each day coding with another person on the team. Sometimes, just two people got together, but at other times, when a particularly challenging problem presented itself, we self-organized into a mob. Self-organizing has remained a core principle for us, since autonomy is such a driver for our organization.

The first mobs were set up using a screen sharing tool called ScreenHero. This worked great for small groups up to three people, but beyond that, we started experiencing reliability issues. Using the idea of “turning up the good” to make incremental improvements, we experimented with a number of different tools: Skype, Hangouts, Zoom, JoinMe, and GoToMeeting, among others.

Eventually, we settled on a cloud-hosted Linux desktop, using VNC to allow everyone to easily log into a shared desktop that didn’t rely on one person’s local setup. This reduced the load on each individual’s network connection and had the side benefit of adding consistency around which tools are installed, which wasn’t happening when we used local computers. We use a timer designed for Mob Programming to rotate drivers throughout the session. Mob Programming also accelerated the adoption of Docker on projects across the company. We noticed the amount of knowledge that was needed to set up a development environment for a specific project was greatly reduced using this tool.

This small shift from individuals to mobs had a huge impact. Developers started discussing how much they were learning from each other. Trust, which was already high, became even stronger. Clients became more engaged and several commented on how much value they were getting from working with the Corgibytes team. When clients felt like they were getting more value, sales, grew, too. Corgibytes started mobbing on other work, too. Several people collaborated to produce this experience report. Corgibytes also turned our one weekly synchronous event from a “team meeting” where Andrea and Scott gave a status report, into a mobbing session where the group works on project management tasks and dedicates time to improving operations. Interactions, morale, and revenue are all up at the time of this writing.

The lesson to take away from mobbing Corgibytes is that you can have success from Mob Programming when you focus on turning up the good among your team. Whether your company focuses on just one product or consults across many clients, Mob Programming can provide substantial benefits to your organization. Find out what’s working for your team and do more of it!