Lessons from an Amazon Principal Engineer on the Journey from Coder to Leader
In Turing Talent’s latest Coders to Leaders #AskMeAnything session, Eno Thereska joins us to share his experiences, give career advice, answer questions about working in different roles & places, and how to thrive as a technical leader.
Eno is a Principal Engineer at Amazon (AWS). Previously, he was a Member of Technical Staff at Confluent working on Apache Kafka and before that he was a Senior Researcher at Microsoft Research. He has broad interests in computer systems and enjoys the full spectrum of work from academic research to shipping and operationalizing real products.
Over the years he has helped ship several enterprise products used by thousands of customers, including AWS S3 Intelligent Tiering, AWS Managed Streaming for Kafka, Apache Kafka (in particular the streams library) and the Microsoft Research Storage Toolkit.
He received his PhD from Carnegie Mellon University.
Let the AMA begin!
Hi everyone, it’s my pleasure to introduce Eno Thereska. A warm welcome to Eno, thanks so much for taking the time to speak with us about your career experiences and journey from Coder to Leader!
Hi Everyone, happy to be here!
I guess I can start by quickly mentioning how I got here:
I received a PhD from CMU and then I had to decide between academia and industry. I chose somewhere in the middle of the two and went to Microsoft Research where I had 8 wonderful years.
After that, together with a good friend we joined an early-stage startup: Confluent. I had an amazing experience there for 2 years helping grow the company. And after that I went to Amazon where I started working at the intersection of systems & ML.
Throughout my career I’ve been an IC (individual contributor) and I’ve been lucky to work in places where there is a clear grown path for ICs, which is separate from the management path.
That’s it in a nutshell, happy to take any questions.
Thanks for sharing Eno!
When you were originally deciding between academia and industry, what led that thought process? How did you manage to land somewhere in the middle?
It was a fairly complex decision. Ultimately, it boiled down to the definition of impact I had in mind then (12 years ago), which, for my field of research, computer systems, was around building system that others use broadly.
The choice of Microsoft Research (MSR) allowed me to keep the academic doors open as well, so in retrospect it could also seem like an easy decision.
It was also a bit my advisor who I deeply respect: he worked a lot as an academic! I thought there was no way I could work that hard!
It seems like you got the best of both worlds!
Can you tell us more about your time with Microsoft Research? What were you working on? Did you gain leadership / management experience during those 8 years?
At MSR, I worked primarily on storage systems. Those are the systems where all our data is stored and they need to be robust and fast. The kind of work we did looked ahead a bit more than in a typical industry position (it was research after all) and we tried to look ahead 5–10 years to plan what to work on. The organization at MSR was fairly flat and each of us alternated between working on our own projects independently and together as a team for larger projects. We did a lot of deep work that required quiet time and thinking time.
As researchers, we mentored younger researchers and academic interns but did not go into management per se. As I mentioned, the organization was flat and supported really well the kind of work we wanted to do.
I think that was the first example of gaining leadership and confidence while still staying as an individual contributor. Most of the validation from our work came from our colleagues in academia and other research labs. We met in various conferences where we presented our work. Occasionally our work stood the test of time and had impact on the world. The validation in those cases was pretty simple. There were lots of dead ends too — — that’s what research is also about.
Yes totally, it’s about continuous testing of hypotheses. And that is great to directly see your work have an impact!
After MSR, what led you to the decision to join an early-stage startup? That is quite different from an expansive and mature company like Microsoft.
There were a couple of reasons. At that stage we had just finished some research that turned out to be successful. It felt like a good time to explore something different. It was quite easy to make the decision primarily because a lot of people I respect had taken similar “risks” in their careers. I put “risks” in quotes because it wasn’t a big risk after all. Confluent turned out to be one of the best managed startups in the Bay Area from the beginning.
As many know already, not taking any risks at all is itself a risk. But again, this wasn’t a random startup.
So overall, a good risk to take!
Yes but I had help.
Apart from what I mentioned about my friends doing similar things, a friend and colleague at MSR left with me at the same time and we both joined the startup together. it’s easier when you pair with someone else!
Oh yes, that makes a difference! It’s good to have a support system.
Hi Eno, I have a question that some others have asked me and here relaying on.
We are talking about “risks” at startups here. Surely almost every developer can find another job again should the current company fail, given how technically minded people are in demand these days. Do you think the dynamics have changed, hence allowing more people to be open minded about startups?
The general answer is “it depends.”
In general, I tend to agree that it’s actually not risky at all to join a startup. If nothing else, you learn a lot of different skills. It’s still good to be a bit mindful on what you want to get out of the experience though. E.g., joining an early stage startup with ~10 employees you’ll learn different things then when you join a larger startup with ~100 employees and so on.
On the other hand, if say, you are an academic, it might feel difficult to make the move since you might have invested a lot in satisfying the success metrics of a distinct group of peers.
In that case, I’d advise to find a third way perhaps, where you can do both the startup and stay in academic or take a sabbatical. That is one way to hedge the risk. It’s also a good way to find out if you like being in a startup environment.
So you can work it out.
That’s a good point, startup environments are not everyone’s cup of tea. So good to test it out.
We’ve got a couple more questions from community members to relay.
Question 1: How do you switch roles from a software engineer to AI/machine learning engineer? What steps do you recommend for this switch?
So I didn’t quite switch. I’d say I kept doing what I did before but added a few additional ML parts to my “pipeline” of work.”
That’s easier than making a big decision like “I’ll be an ML engineer from now on.” Also as it turns out, making ML work in production is 95% software engineering and 5% ML.
Interesting! That’s a bigger percentage difference than I would have expected
Question 2: What is the tech industry/machine learning sector like in London, compared to Silicon Valley?
So I think at the intersection of systems & ML we have a good edge here in London (or Cambridge where I currently reside). We have a ton of great software developers + people who are good in theoretical aspects of ML. In some subfields, like Gaussian Processes, we’re even ahead.
On the other hand, in systems (btw by “systems” I mean things like operating systems, networks, infrastructure) there is no substitute to Silicon Valley. The centre is still there.
The beauty with Confluent was that we opened an office in Palo Alto and another in London to capture all the goodness of both places!
Very nice, leveraging the benefits and innovation in both locations.
Question 3: Could you tell us more about your overall upward management experiences? What are some alternative ways to becoming a leader/manager i.e. software architect? Principal engineer? Different areas? Product manager/scrum master/agile coach?
So I’m happy to report I’ve done 0 management and that’s been fine. At Amazon for example, being a Principal Engineer means technically leading challenging projects across different groups. The difference is that leadership is done completely by example and through positive influencing rather by title. In many ways that can be harder, but it’s quite rewarding.
So the actual path is by continuously working on solving real technical problems and bottlenecks for the team, leading by example and mentoring younger engineers. Often being a sound board for them.
So the path of the Principal Engineer is an alternate path to leading in a company and a path that Amazon, for example, really values. So did Microsoft as well. And I know from my friends at Google and other places that it is similar there.
That seems like a great alternative to management, and also more suitable for tech teams.
Question 4: What are ways that a developer’s career may turn? What are possible ways of self development when you are a senior developer? Do you recommend changing technologies to avoid boredom or going deeply into some narrow specialty?
So typically I suggest being moderate in selecting when to change. I suggest a hybrid approach: first, be an expert in one thing and go deep. E.g., be the go-to-person on Apache Kafka in your company. Second, know well other areas too, either through changing technologies or jobs. For example, I still feel like the go-to-person on storage systems even now at Amazon (although that’s what I did at MSR) and I keep up with learning there. At the same time I’ve tried branching out to other parts of the technology too (e.g., ML).
Often I don’t suggest trying out 10 different things just for the same of gaining breadth. The reality is that being good at anything will take a while and jumping jobs every 6 months won’t cut it.
Others might disagree. And being bored sometimes is part of it.
It takes 20,000 hours to become an expert in something. I agree it’s good to focus on one area at a time!
Ok one more question before we go.
Question 5: What is your experience with applied machine learning in mobile networking applications?
Probably limited. Most of my experience tends to be with backend systems that support such applications.
Thanks so much for taking the time to share your experiences and insights, and to answer our community’s questions today Eno! We are happy to have the chance to learn from you.
A special thanks to Eno for leading this session and answering Turing Talent Community’s questions! From his eloquent, informative answers based on his own experiences, we learned a lot about the journey developers may face on their own career journeys. It’s full of continuous learning and growth, with a little help from teammates and managers along the way.
If you’re a developer eager to learn and grow, join Turing Talent Community to tap into an elite peer network of fellow international developers, engage with tech industry leaders and game-changers, and gain access to tech leadership trainings to empower your career.