This summer, I was appointed to the role of the Big Data group Tech Lead.
“Tech Lead? Don’t you mean ‘Team Lead’?”
No, I mean “Tech Lead”, but let’s take a step back for a minute.
About myself and the team
My name is Itai Yaffe, I’ve been a part of the Nielsen Marketing Cloud since the time it was still a mid-size start-up called eXelate.
When I first joined eXelate, in May 2014, there were about 25 people in the R&D department, and the Big Data team was only 4 people (including myself).
Back then, our tools were scale-up solutions (e.g standalone Java processes for the ETLs, IBM Netezza as our DWH) or solutions that weren’t quite intended for the purposes we used them (e.g Elasticsearch as our OLAP DB).
From where we were to where we’re now
My (then) team lead, Yoav, quickly realized that this type of infrastructure won’t be able to handle the rapidly increasing amount of data we needed to process, and so we set out to move to scale-out solutions.
As a side-note, we’ve presented some of the things we’ve done since then in various forums, e.g building an ETL pipeline for Elasticsearch using Spark (recording in Hebrew, slides in English), or moving to a more suitable OLAP solution called Druid (recording in Hebrew, slides in English).
Fast forward a few years, our 4-people Big Data team has transformed into an 18-people Big Data group (divided into 3 teams).
Over the course of these years, I was lucky enough to play a part in the team’s growth, and I’ve been offered the role of a team lead once or twice.
I was already a team lead (and even a group lead) in the past, during my military service in Mamram (one of IDF’s top tech units), so being a manager wasn’t new to me, but I rejected the offer (for personal reasons).
However, when my group lead, Yakir, approached me this summer, offering me the role of the group’s Tech Lead, I knew this was the right position for me.
Team lead VS Tech lead (and what’s the military has to do with it?)
The way I see it (and pardon my military analogy), the role of a team lead is equivalent to the role of a military officer commanding a platoon, in the sense of both managing the team’s tasks (priorities, who does what, etc.) and supporting each of the team members on the personal level (from time-off through performance reviews to personal growth programs).
The team lead’s profession is management, and so they must have good knowledge in the team’s domain of expertise, but they are not necessarily experts in that domain.
On the other hand, the role of a tech lead is somewhat equivalent to the role of a military non-commissioned officer, in the sense of training team members for their job (teaching best-practices is just one example, but basically helping each team member be the best programmer they can be) and help setting the right path for the team to achieve its goals (e.g choosing the right tools for each task at hand).
The tech lead’s profession is programming, and so they are experts in the team’s domain of expertise.
This to me doesn’t mean they have to be the best programmers in their team, but they must possess a high level of expertise in the relevant domain and the ability to provide technical guidance to others.
In addition, good tech leads should be passionate about their job; Always in a quest to improve their knowledge and skills in the relevant domain (reading blogs, watching conferences’ recordings, attending meetups, having vibrant discussions with their teammates, etc.); And last but not least — Eager to share their knowledge (presenting in meetups and writing blog posts for example 😉).
I would also argue that being a people’s person is a good character trait for a tech lead (I can only hope my colleagues think of me as having it 😉).
As a side-note, I feel the need to clarify that I don’t see myself as the best tech lead out there (or even the best tech lead in my company), but I am passionate about my job, I’m eager to learn and share my knowledge, and I hope I’ll be able to use the role I’ve been given to help my (awesome) colleagues become even better at what they do.
So what have we learned?
- A team lead is a manager, managing the team’s tasks and support each team member individually, while a tech lead is a lead programmer, training team members for their job and help guiding the team on how to achieve its goals.
- A good tech lead should be :
1. An expert in the relevant domain (but not necessarily the best programmer in the team).
2. Able to provide technical guidance for others.
3. Passionate about what they do.
4. Eager to learn and share their knowledge.
5. A people’s person.
If you’ve read so far, I’d like to thank you for reading :)
I’m sure many of you have different opinions on the subject, and I encourage you to comment with your feedback!
For a somewhat different point of view of the role of a tech lead, I suggest reading this post.
We’re planning to publish some more posts in the upcoming months, including a very interesting one about how we significantly reduced our AWS Lambda costs (here, here and here you can read a few past posts describing some of the things we do around here).