How I develop engineers
At Teladoc I had no promotions to offer my contractor team. I measured growth through the scope people could own, the ambiguity they could handle and how independently they could deliver.
My principles
08 operating rules
Look at scope and autonomy
For about four years, my engineers at Teladoc had no formal promotion path. I looked at the ambiguity they could handle and how much review their work still needed. Going deeper in one domain counted as much as working across several.
Understand the motivation
Money, harder problems, recognition, a working day that ends on time. Often more than one. I shape the growth path around what matters to the person.
Increase scope as judgment improves
Start with bounded work, then add ambiguity, end-to-end responsibility and direct stakeholder contact. I expand responsibility when the person shows they can handle the decisions it brings.
Make the next step explicit
Each engineer needs to know what they can take on next and what they need to demonstrate first. I explain those expectations so they have something concrete to work towards.
Review your own changes first
I ask engineers to read their own code as if someone else wrote it. Find the problems and explain the choices before asking another person to review it.
Bring options and a specific question
When someone is stuck, I ask for two possible implementations and the question that separates them. We work through the choice together while they keep ownership of the problem.
Talk directly to the other team
Engineers can work through questions directly with the teams that need their work, without a PM or me carrying the conversation. Principal and senior engineers can advise on technical choices without taking over ownership.
Keep primary ownership clear
I rotate work deliberately and sparingly. Moving people around just to keep things interesting loses system context. Each system keeps an explicit primary owner.
How responsibility grows
- 01
Bounded task
A real piece of work with a clear edge, and the difficulty raised one step at a time. Self-review before my review.
- 02
Ambiguity
The problem stops arriving as a task. The engineer frames it before anyone hands them one.
- 03
End-to-end delivery
The whole change from framing through release, rather than the slice of it that fits in a ticket.
- 04
Direct stakeholder contact
Talk to the team that consumes the work directly. No PM and no me standing between the question and the answer.
- 05
Framing the technical options
Two candidate implementations and the question that separates them, instead of an open request for help.
- 06
Product and platform trade-offs
Treat the system as a product they will still be maintaining a year later, and own the trade-offs that come with it.
Three people, different kinds of progress
03 cases
Taking on harder Android work
- Case
- An Android engineer joined with limited independence. Requirements, teamwork, code style and review quality needed work, but he wanted to improve and was good at solving problems.
- My decision
- I started with smaller tasks and increased the difficulty gradually. We worked on self-review, explaining uncertainty and discussing options with the principal engineer. Responsibility for the answer stayed with him.
- Result
- After about four years, he could handle complex third-party SDK integrations end to end. I could trust him to clarify the problem and deliver the work. That was senior-level capability, even though his title had not changed.
Finding a strength in accessibility
- Case
- An iOS engineer wanted to improve but struggled to deliver consistently across different kinds of work. Accessibility was a clear strength.
- My decision
- I helped him build on that strength. He reviewed his own code, brought possible solutions before asking for help and consulted senior engineers. For component integration, we used a structured AI workspace with human review.
- Result
- He became someone the team could turn to for accessibility problems and improved his component delivery. His progress was more focused than the others, and still valuable to the team.
Working without a ready-made task
- Case
- Another engineer delivered well with clear instructions, but wanted the task spelled out before starting.
- My decision
- I gave him more responsibility for deciding what to build and how. We talked about the system as a product he would keep maintaining, including product trade-offs and the maintenance debt his choices could create.
- Result
- He grew into taking unclear work from the first questions through delivery. He also became strong at using AI in that work. I no longer had to turn every problem into a detailed task for him.