Sharing Domain Knowledge and Building Better Teams
When I joined a multidisciplinary startup team, one of the first questions we were asked was:
“How will you handle cross-team collaboration, especially with people from different backgrounds and competences?”
At the time, I didn’t have a good answer. But as I became more involved, I started to understand how crucial this question really is.
In the early stages of a startup, figuring out how teams are built and how people will work together is essential for creating a strong culture. It’s also important to get everyone involved in building the product — but that’s not always easy.
My First Encounter with Pair Programming
I first heard about pair programming when I was applying for jobs in Estonia. I didn’t get that job, but the idea stuck with me.
Later in my career, I found myself coding and explaining what I was doing to project managers who had no coding experience. They were curious and eager to learn, and I didn’t mind showing my work and talking through my process. This wasn't pair programming yet, I always had the control but I was getting the questions and practicing how to answer those questions.
It was later that I discovered the true power of this kind of collaboration — especially when working with people from different domains within the team trying to build the same product. We often covered each other’s gaps in competence and learned from one another in the process.
Not everyone is comfortable with pair programming. I’ve always been okay with someone watching me work, but I realized that’s not the case for everyone. Some people do their best work when they’re left alone, and sharing control of the keyboard can feel challenging.
Making Pair Programming Work
If you decide to try pair programming, a few things make a big difference:
-
Keep it truly collaborative.
Don’t dominate the keyboard or make all the decisions. Both people should contribute equally — switch roles often between driver (who types) and navigator (who reviews and guides). It's easy to forget this and without a good balance it's going to be difficult. -
Use the right tools.
For remote work, tools like VS Code Live Share or Excalidraw for quick sketches are great. If you’re in person, a whiteboard or sticky notes work perfectly. -
Be patient.
It might feel slower at first, but that’s just how it works. I realized that if I had to understand and implement the other person’s part alone, it would have taken me even more time in the long run so giving it time pays off. -
Accept what you don’t know and be humble
You’ll get questions you can’t answer right away — and that’s okay. Stay humble, keep an open mind, and remember there are no dumb questions. -
Stay available.
Even when you’re working separately, make sure your partner can reach you. Sometimes, just staying in the same call (muted) helps keep momentum when quick questions come up.
The Benefits of Pair Programming
One of the biggest benefits is knowledge sharing — it happens naturally during sessions. You quickly align on technical decisions and gain a shared understanding of the system’s architecture and direction.
Pair programming also helps build empathy and teamwork. You learn how others think, how they solve problems, and how to communicate effectively under pressure. Over time, you start covering each other’s competences, and the sessions naturally become more balanced.
I’ve even tried sessions with three people, where each focused on one part of the problem. It was trickier to manage, but interesting — almost like a taste of mob programming. maybe.
Another important benefit is productivity, You get more done in the long run. Features are also built in a better way and you write better code. I don't know if it's just me, but I think I write more structured and cleaner code when I do it with other people.
Final Thoughts
Pair programming isn’t something you need to do all the time, but when it makes sense, it’s an incredibly powerful way to build both a product and a team, even if it feels slow at first.