So what exactly is a dev lead (EDL), at Criteo? The term has been widely used and abused and it definitely means different things in different companies. To accurately describe the purpose of this role we first have to talk about music, classical music to be exact.
A concerto is a type of composition in which a solo instrument, such as a piano or violin, is accompanied by an orchestra. The person playing the solo part is required to be a very good musician, a virtuoso. They spend hundreds, if not thousands of hours practicing and they know their instruments inside out. The other players in the orchestra can learn from them and they look up to them as role models and sources of inspiration.
On the other hand, a concerto, much like all types of compositions involving an orchestra, needs a conductor. The person wielding the baton makes sure that everything goes smoothly during the actual performance by keeping the tempo. On a side note, the general public has long wondered if learning to keep the tempo also requires thousands of hours of practice. However a conductor is usually also a music director and as such they do many other things off stage as well. For instance, they make sure that their orchestra is properly staffed and they follow the evolution of each individual musician.
If you transposed these roles to the software engineering world, you could say that a concerto soloist is a master developer whereas a conductor is a manager.
Enter Daniel Barenboim. He’s an Argentinian born musician who is widely regarded as one of the best pianists of our time. He is also a conductor. Among his many achievements is the recording of all of Mozart’s piano concertos, for which he was – and here’s the catch – both the soloist and the conductor. Because, well, nobody said that these roles can’t be filled by the same person.
Daniel Barenboim is thus a Criteo dev lead. That’s because people on the EDL track are expected to show both technical expertise and leadership, as well as people-management skills.
On the technical side of things, a dev lead has the same responsibilities as an individual contributor (link to the ENG track). On a daily basis these include writing robust code, doing code reviews and participating in Scrum meetings. Additionally an ENG or EDL also gets involved in recruiting by doing technical interviews and shares knowledge with his peers by attending and preparing presentations – both internal and external.
On top of the ENG responsibilities an EDL is also expected to have a technical leadership component. They keep a close relationship with Product Management and provide feedback on the technical feasibility and appropriateness of product ideas. They also synchronize with other dev leads and are aware of other projects and of the general technical direction of the R&D. Finally they are the owners of their teams’ technical roadmaps.
For instance, dev leads show and make use of their technical leadership by participating in kick-offs. A project kick-off is a special meeting where it’s decided if a project is worth doing or not. This involves a lot of preparation on the side of the team proposing the project and a careful analysis on the side of the reviewers. The input of dev leads is very valuable in this context.
Finally, an EDL is also responsible for managing their team. An important aspect of this component refers to talent management. A dev lead is expected to support the career development of their direct reports by giving periodic feedback and doing performance reviews. At the same time a dev lead must balance what’s best for the team with what’s best for the people they’re managing. For example an individual contributor might sometimes have better opportunities for growth in a different team or on a different project. A good dev lead should encourage them to pursue such an opportunity.
But the management part of the EDL role isn’t just about doing one-on-one’s and talent reviews. There are also other, more easygoing responsibilities. A dev lead is for instance accountable for the team morale, which means that they get to organize fun team-building activities, cross-team drinks or even just a fancy lunch out from time to time!
You might be thinking at this point that what I’ve just described is a big pair of shoes to fill. In some sense you would be right. So, how does one do it?
On one hand there is an aspect of scale. A dev lead is definitely not expected to conduct a modern orchestra of about one hundred instruments. We can’t all be Daniel Barenboim. Instead, a typical team at Criteo will usually have between 5 and 8 people.
On the other hand there is an aspect of efficiency. Dev leads are expected to know how to delegate. A technique that’s widely used for this purpose is appointing topic owners: individual contributors that drive one of the team’s projects or are responsible for a part of the team’s scope.
All in all a dev lead’s main mission is ensuring that their team reaches its goals. It’s not always easy. But when you get it right it’s almost as satisfying as a one of Mozart’s piano concertos.