How I work with someone who is learning

đ I work on the Platform team at Mapbox, which is responsible for building and maintaining the infrastructure that powers all of our customersâ applications. Every day, members of our team are learning technical concepts â often javascript, AWS, or specific parts of the Mapbox stack. These are my rules for when Iâm working with somebody who is learning, whether itâs a recruit, a new hire, or a teammate who is scaling into something new:
- They do 100% of the driving, even if itâs slow-going. No matter how harmless it may seem to you, taking control of someoneâs keyboard or mouse is disempowering to them. It says:
You are not capable of solving this problem
. Use your voice to dictate directions (even to spell out words or syntax). If the problem youâre running into is out-of-scope, explain why & how, and help them navigate to a landing place where you can do a hand-off via git. Similarly, be wary of explaining something via you doing it on your computer â this has a low success rate. - Start with tests. Most people are already familiar with articulating desired outcomes â do it in English and then turn those expectations into code, together. Starting with tests provides structure and continual guidance. Tests chart a clear path for your work â points of reference that are not ephemeral like voice.
- Always respect the way they approach a problem, even if it is different from your approach, unusual, or likely wonât scale past the immediate need. If they are headed towards a dead-end, explain the challenges they may run into, and let them make their own conclusions. Again, starting with tests will ease the mechanics around this. If you really want them to do it âyour way,â explain why your approach makes sense to you. Donât frame this in terms of âright and wrongâ or âbest practices.â Donât worry about optimizing or style until there is an explicit need.
- Use exclusively positive language. If somebody mistypes or otherwise makes a mistake, try not to say
no
,not like that
,thatâs not going to work
, oryour parentheses are wrong
. Instead, saywhoops, I meant x
,instead of y, letâs try z
, orheads up, you may run into trouble with the parenthesis on line 34
. Avoiding directly negative language creates a sense ofweâre in it together
rather thanyouâre on your own
. - Let them fail. Even if your code eyes can see a syntax error, out of place callback, or unparsed object ahead of time, let them experience failure and the valuable debugging that comes after the fact â this is where learning happens. First let them try to debug, then offer tips on how to debug (
I wonder what youâll see if you console.log âdataâ on line 52
), then describe the problem generally â try to get them to find the solution via context instead of pointing to it directly. Donât abandon them here to âtough it out,â but donât swoop in and fix everything. - Be happy about errors. Model a positive attitude towards error messages and test failures. Mostly, code fails right up until it works, so itâs important to associate code failure with grit & opportunities for growth. Try to disassemble and reframe negative reactions.
- Be vulnerable, too. They are already in an incredibly vulnerable place, and youâll move faster if you can meet them there. Speak of mistakes youâve made, your learning experiences, and things that are hard for you. You donât need to know all the answers â youâre not an expert. Be upfront about the pieces that youâre still unsure of. When you need help, show them how you get assistance from others â set an example.
- Explicitly give them positive feedback. This is the fuel on which learning and risk-taking runs. Push them and show them how to get even better, but donât do this without a healthy dose of positive feedback. Some examples:
by the way, youâre doing great, this is hard â and youâre picking it up quickly
,thank you for working on this, itâs awesome
,Iâm really enjoying working with you
. Prioritizing personal growth is a risk â you need to make it clear why they should continue taking that risk. - Find a work style that works for them, and gently scale that. Prioritize in-person, and err on the side of too much attention early on. Then slowly back off as you both get more comfortable with the arrangement. Iâll often start by writing up a very detailed gist or ticket about what we will be working on together â including as much detail, examples, and starter code as they may need. Be explicit about what success looks like and how youâll know that youâre ready to move on to the next thing. Capture your thoughts really well once, and this will be a reference point they can use over and over again.
- Check in early and often. Go grab a coffee after youâve been working together for a couple days. Ask for feedback â whatâs working, and what isnât? Dig into their experience and what they want & need.
- Be relentlessly positive, patient, and calm. Be an emotional rock â level out somewhere around these qualities and refuse to budge.
The Mapbox team has used this list to focus on actionable, concrete steps to help people learning technical concepts. How do you support team members who are learning?