Skip to main content

Five out of twelve left in ninety days

Constantin Potapov
12 min

2013, Yekaterinburg, Python. 42% gone in the first three months. After two weeks with a buddy, bugs and a mentor it was 14%. What worked, what did not, and how remote breaks it.

Five out of twelve left in ninety days

Yesterday at an HR conference they said again that young people will not stay anywhere. I have read a departure in the first three months differently for a long time. The person may have been fine. The system failed to catch them.

You hunt for months, talk a junior in, three weeks later the desk is empty and the recruiter's invoice is already paid. In 2013 in Yekaterinburg we were hiring Python and Django. The market was tight. We took people we could afford and who were willing to learn.

In three months twelve people arrived. In the first 90 days five left. 42%.

They wrote: they did not understand what the company actually did; they sat alone in the code for a month; they did not know who to ask; the tasks were either childish or impossible; another place offered more money and we had not yet shown why staying was worth it.

There was no process. Here is a desk, here is a laptop, swim. The stubborn ones swim. The rest take the other offer.

The hypothesis was simple. Clear first two weeks, a mentor, tasks in steps. We wanted early attrition under 20% and a faster path to independent work, so a person would not sit a month in an empty folder.

The first fourteen days

Day one used to sound like: set it up, ask if you must. It became something else.

09:00  lead: what we live on, who the clients are, where we are going
10:00  team lead: laptop, GitLab, Redmine, mail, Slack, a setup note
12:00  lunch with the team
14:00  map of the code: where things live, what the rules are
16:00  buddy for household stuff (not a mentor): kitchen, pass

By evening the newcomer has a desk, access and two names to write to. They are not an onboarding hero. They are simply not abandoned.

Days 2-5: two or three simple bugs. The mentor drops a ticket, the person hunts, commits, gets a detailed review, fixes, lands in production. The week's goal is not a feature. The goal is not to get lost in the repo and to learn how we accept code. The metric: at least one commit to production.

Week 2: a small feature of 4-8 hours, several modules, a soft date. The first day two or three hours next to the mentor. At the end of the day fifteen minutes: where are you stuck. Review on every commit, not a pile on Friday. By the end of week two their first finished thing sits in production. Two weeks with no commit and no name to ask is how "not my thing" is born.

Three months in steps

Monday, half an hour: a live incident from last week, what broke, how we fixed it. Wednesday, an hour: two or three other people's pull requests, we teach reading code, not only writing it. Friday, 45 minutes: a mid or a senior unpacks the ORM, indexes, decorators. The knowledge base grows inside, not in a side course.

Each junior gets a senior. Half an hour a week. What was hard, what they learned, which questions hang, where they want to go. The mentor does not write for them. If they write, that is no longer mentoring, it is a hidden extra developer. Stuck more than two hours: they have to ask. Tasks are sized: not insultingly small, not a wall.

Month 1: bugs, a small UI change, a short refactor, a clear edge. Month 2: a one-or-two-day feature, a change to an existing API, tests on old code. Month 3: a 3-5 day feature, an endpoint from zero, a speed-up under a watchful eye. By the end of the quarter the person picks a backlog item and takes it to production.

What the numbers did

Six months after we started.

No program
With the program
Left in 0-90 days
42%
14%
67%
Still here at 6 months
58%
86%
48%
Still here at 12 months
50%
86%
72%

Early attrition shrank by three. People who survived the first three months almost always lasted the year. Repeat searches got rarer. Independent work used to take 4-5 months, then 2-3.

A survey after a quarter, scale of five. "I felt expected on day one": 3.2 to 4.7. "I knew what was expected": 2.8 to 4.5. "I had someone to ask": 3.0 to 4.8. "I can see my growth": 3.1 to 4.6. Average 3.0 to 4.7.

They wrote about day one, about the mentor they would have drowned without, about Friday teardown, about a week of bugs then a feature then something harder reading as a route, not fog.

What did not work

Nobody read fifty pages of process. Those who did asked the same questions. A live person and one cheat sheet beat a volume.

A mandatory Django course before day one was ticked off. The tutorial blog and our repository live in different universes. A ticket teaches. A side module does not.

A daily standup for newcomers demotivated them: "I did nothing again." They need time to write, not to report. A weekly talk is enough. Every day only if they are already spinning in place.

What changed by 2025

The tools are different. The person is the same. They need an edge, a name and a visible step.

In 2024 a junior asked a model for a Django view. The code passed tests and brought a function-based view into a project that had lived on classes for years. It works. It breaks the agreement. The rule is simple: use the model to learn how middleware works and to generate a test skeleton. Do not paste a chunk you cannot seat. That code we review out loud: why this, why not that.

Remote without the first three live days is loneliness. People are shy on Slack, a question goes stale in four hours, there is no team behind a screen. First three days synchronous: hello, setup with a shared screen, lunch, a walk through the code, a buddy. Then two or three live sessions a week and a mentor on the same hours. A weekly one-to-one is mandatory. Presence first, async later. The other way around, people leave.

In 2013 we counted left or stayed. Now I also watch a few more cells. Time to first commit: I want under four hours. To the first meaningful pull request: under five days. Mentor score once a week: four out of five or better. Share of closed tasks in 90 days: above 80%. Review rounds on first code: under three. No commit in week two is a flag. You intervene before the resignation, not after.

On remote the first three days I write harder than in an office. Otherwise the person sits alone with Notion and is shy to write on Slack.

Days 1-3, all live:
09:00  hello with the lead and the team
10:00  setup with a shared screen
12:00  lunch on camera, not "go eat"
14:00  walk through the code, they can interrupt
16:00  buddy + a short ping

Days 4-14: two or three live sessions a week, mentor on the same hours.
Months 1-3: a mandatory weekly call, the rest async.

The reverse order, async from Monday, burned people for us. A question written at 11:00 is stale by 16:00. By the end of week two the person decides they are spare.

What an hour before they arrive is worth

Name a buddy and give them fifteen minutes: Ivan comes tomorrow, show the kitchen. Three to five simple bugs in the tracker. Fifteen minutes with a lead on the calendar. Hardware, or a shipping track.

Day one: a short "we are glad, here is where we are going", an hour on access, lunch, a map of the code, the buddy, one bug before evening.

End of the week: half an hour, what landed, what is muddy, feedback on the first commit even if it is not merged, a task for week two.

A mentor spends 2-3 hours a week, the same on shared teardown. A replacement hire is 3-4 weeks plus an empty first month plus a hole in the team. Cutting early attrition from 42% to 14% pays those hours back in the first quarter.

Documentation is secondary here. A person stays if in two weeks they have a commit, two names and a next step they can see. In 2013 those were Python people in Yekaterinburg. The shape is the same for a remote designer, if the first days do not leave them alone with a fifty-page manual.