Pair Programming in Jina - Onboarding via Pairing
This post is the first in a series of blog posts about how we use pair programming at Jina in an efficient and fun way. These posts will be highly opinionated by what works for us. Each social interaction is different, so all "should's" and imperatives should surely be taken with a grain of salt.
But before we start, let's get the most important thing settled right at the beginning:
Pair programming is not about programming. It is about pairing.
About working with two minds on one problem and increasing the amount of complexity that can be lifted. Only by coincidence, Engineers do programming when they work together.
Today we want to explain how we leverage pairing during onboarding and what benefits arise from it.
Onboarding or Giving a Task to a Junior Engineer
Onboarding someone to a team is very similar to giving a task to a junior engineer. We followed the same procedure for onboarding in November and December as we do for giving a Junior a task. With huge success - in our opinion.
The procedure is as follows:
- Senior: Give a task of roughly 2 days work.
- Junior: Play around some time to figure out questions and knowledge gaps (which naturally will be plenty) and implement a draft.
- Both: Start a pairing session. (More technical details on pairing below)
- Senior: Check out and have a short look at the Junior's code.
- Senior: Write code snippets all over the place.
- Senior: On the way explain as exactly as possible why you choose what.
- Junior: Ideally, ask a lot of questions whenever it is not totally obvious what Senior does.
- Senior: Answer any questions that arise during that process.
- Senior: Delete all the code
- Junior: Implement the ticket from scratch.
This takes a maximum of one hour, often less.
While the first session with a newbie almost always looks like that, follow-up sessions may vary in multiple ways. Often at the beginning the Junior shares the screen to clarify the problem they face. During the session we might switch screen sharing back and forth multiple times.
What are the Benefits?
For the Senior
- Get to know the newbie on a technical level, but even more importantly build a personal connection.
- Have social interactions in times of dire need, e.g. during a pandemic. Have some fun.
- Understand engineering capabilities and how much autonomy can be given to the other on future tasks. This enables better planning of future teamwork.
- Understand knowledge gaps.
- In case the Senior is a team lead: Stay in touch with the technical details of the team's work.
For the Junior/Newbie
- Especially at the beginning you don’t feel that overwhelmed anymore.
- Get to know a person that you will work with a lot in the future. This eases future social interactions.
- Direct feedback on questions in a super efficient way.
- Your team backs you up. Team feeling grows in no time.
- Learn small productivity/coding/working hacks which after one week already pay off the effort.
For the Team
- The team feeling grows really quickly after a newbie joins the team.
- Direct alignment on coding/social standards.
- Leverage different approaches to solve problems.
More Details About the HOW
- Both participants keep the camera and audio activated the whole time.
- We share the full screen.
- The screen sharer usually behaves as if they would work alone.
- Anyhow, during onboarding there should be regular pauses and explanations of context.
- Thinking aloud should happen the whole time and be regularly encouraged by the Senior.
- The Junior should ask as many questions as possible.
- Try not to be overly-conscious of yourself.
- Knowledge gaps should be actively embraced the whole time.
Behave well. Have fun.
What Happens Next?
Even when two Seniors pair, they profit a lot from it. We regularly do it when a task is complex. Understanding and breaking it down is much faster and higher quality when more brains work on it (but not too many!).
So stay tuned for: Leveraging pairing for breaking down complex tasks
Fun Fact: This blog post was written in a pairing session. We switched roles: The Junior Engineer became the Senior Blogger and vice versa.