Lessons from a Facebook Engineering Manager on the Journey from Coder to Leader
In Turing Talent’s first ever Coders to Leaders #AskMeAnything session, Daniel Bernhardt joins us to share his experiences, give career advice, answer questions about working in different roles & places, how to become a manager, and how to thrive as a technical leader.
Daniel is an engineering manager at Facebook London. His current focus is on fighting fake accounts, abuse, and attacks at scale. Previously, he led teams building search systems for Facebook powering more than 1 billion searches a day. Prior to Facebook, Daniel was an engineer and engineering manager at Microsoft working on the Bing search engine. He was primarily in the London office and went on secondments in Microsoft Beijing, China. Much of his experience has combined the applications of machine learning with large scale and low latency systems.
Daniel graduated with a Computer Science undergraduate and PhD from University of Cambridge. During his studies, he worked for brief periods at MIT Media Lab’s Robotic Life Group in the US and at Google Zurich.
Let the AMA begin!
Let me quickly say a few words about what I’ve done so far …
I joined Microsoft as a software engineer straight from university. I did a BA in Computer Science and then a PhD in an area spanning HCI and machine learning. During my research time, I did a few internships; both doing research but also one doing software engineering. And I found that I really enjoyed the idea of building things for the public than working on less practical projects.
At Microsoft, I worked on a number of Search problems that largely spanned areas of machine learning (ranking and classification), some areas of data science, and quite a lot of backend programming. I worked on some of the Bing services that power business search, news search and typeahead suggestions. Towards the end I started managing a small team of engineers before joining Facebook in London.
At Facebook, I went back to being a software engineer for quite a long time; working on Search problems, before the fast growth of the team enabled me to yet again try my hand on managing a small team. At the same time I started a completely new team from scratch with one other engineer to start with, which was much like a startup experience, with clients being largely inside the company. One year ago I switched to managing two teams that help keep Facebook users safe by finding and disabling fake accounts, and this journey continues until today.
Thanks for sharing Daniel! You’ve had quite the journey from Coder to Leader.
To start with the first question from our community member Christina: When you changed jobs, how did you decide what role/company to move on to? What did you decide to do and NOT to do?
So I actually only changed jobs once so far, when I moved from Microsoft to Facebook. Back then, one of my main reasons was the prospect of future opportunities in terms of career development. Back then I had worked in the Search space at Microsoft for over 4 years and it looked likely that this wouldn’t change if I stayed there. The Facebook office was building out a number of different product teams at the time, and although I initially actually ended up working on Search again, I subsequently switched to a completely different team, which has been great for keeping things interesting. So one thing I wasn’t really doing was optimising for the immediate change, but more for the long term prospect, as I think a career is really about the long term. Something that helped was that one of my interviewers was the co-inventor of Google Maps, so the prospect of being able to learn from great people was definitely one of the driving factors behind moving jobs.
Thanks for sharing your perspective Daniel. What do you mean by optimising more for the long term could you please elaborate? And how does one actually do that?
More recently I changed jobs inside FB, moving to a completely different organisation. This was definitely driven by my desire to try out something new after having worked in the Search space for a really long time. There was also a trigger from some internal disruptive changes to my existing team, which made it quite natural to look for something new. One thing I learned from this was that often big disruptions are painful at the time, but almost always also present an opportunity to shake things up.
The stars aligned for you to change jobs and then later to change teams it seems! Plus, it’s great to move forward to new and challenging things when the time is right in your career, to maintain a fresh and exciting work life.
Optimising for the long term: sometimes when I talk to Facebook applicants in interviews they have a very specific role in mind. Say, they want to be a machine learning expert in a specific space. And sometimes for different reasons we wouldn’t be able to hire them in that role at the time, maybe because there isn’t such a position right then, or maybe we don’t think they have all the required experience etc. But the real question is whether they will be able to find the opportunities to develop those skills, or whether one day they might be able to create an opportunity for themselves given the values of the company. And sometimes short term thinking will make the end goal actually harder to achieve.
Yes long terms goals are definitely more valuable than short term ones!
To piggyback off your answer for optimizing for long term: How did you find yourself in management positions at both Microsoft and Facebook? Was it due to timing, that you had the most & longest experience on the team? Was it more based on your skill and the results gained from your work? Were you trained up into your management positions?
Timing is definitely always a factor. Usually management positions become available much less frequently than software or other engineering positions. If a company is growing quickly, usually there are more frequent opportunities. For Facebook, this has definitely been the case. But it is usually also a much more challenging step, especially if you come from an engineering background. Having experience in technology is usually a requirement, although different companies might have different philosophies on what they look for. One thing that is almost certainly the case is that as a manager you shift your attention much more from solving technical problems to helping people grow and succeed in their careers. This requires a completely different set of skills and what I end up doing now all day is very different from when I was a software engineer. I wouldn’t say I had a lot of the required skills when I switched to be a manager, but I definitely had a passion for helping others and an interest in getting better at it. I did have a good amount of help, but like in a technical role, you make mistakes and learn new things every day.
Very good point, it’s all about being open to learning and growing
For the next questions submitted by our community member Tomasz: What would you recommend to people who want to switch roles from developer to leader/manager? Is it better to get a promotion in your current job or look for management position in other companies? Does it make sense to pursue leadership positions in corporations where you have limited possibilities to influence the corporate culture or rather choose smaller companies where you can have a bigger impact?
The first advice I would have is to search deeply about the motivation for becoming a manager. In my mind this is different from being a leader. As you become a more experienced engineer you will likely work on bigger projects and systems, and start leading others in a technical domain. There will likely be some element of mentoring there, but likely it won’t be your main goal to progress others’ careers, unblock them, help them overcome weaknesses etc. If the latter is what excites you, then you might want to aim to become a people manager. I know that not all companies will make a clear distinction around this and sometimes in order to progress in a technical role you will have to start managing people. But I definitely don’t think it’s for everyone, and at least at Facebook we make a pretty clear distinction around this, which I like. In terms of how to get there: I’d say if it’s possible in your current company it’s likely easier and quicker. I’d have an open conversation with your manager around your career aspirations and see if you are likely going to get support. Your manager should be your closest ally in making that transition. Changing companies, I would imagine that you’d be an engineer for a while to learn the ropes before making the transition to management. Although coming back to my previous point about the long term outlook: if there are other companies that are growing quickly and maybe from talking to people there you get a good feeling about their support for you to become a manager there eventually, then that might be a good option.
Thanks for sharing that answer Daniel!
That is good advice to have open communication with team members and your managers to express your own ambitions of moving up to management.
In terms of company size: In a larger company you are likely going to get more support as a new manager. If you talk to some managers there and like their management philosophy then that could be a good opportunity to bootstrap quickly. It is definitely possible that you will be more constrained by a corporate culture and politics, but you might be able to figure that out in an interview process too. Sometimes in a bigger company you can have bigger impact just because of the scale, while in smaller companies you might have to deal with many tangential issues.
For what it’s worth, at Facebook we actually don’t talk about the management transition as moving up, but moving across. I realise that’s not how many other companies see it, but at least at Facebook you can become just as senior as a software engineer as you can as a manager. You just solve different problems.
Very interesting way of management at Facebook!
We are nearing the end of our time but do have a couple more questions for you Daniel.
Posed by our community member Sacha; Why do big tech companies like Facebook require a PhD for Core Data Science / Machine Learning positions? Aren’t a few years of industry experience good enough to apply to these jobs?
Core Machine Learning and Data Science roles tend to be highly skilled positions, where you can shoot yourself in the foot very easily if you don’t have the right theoretical basis. This knowledge can certainly be acquired by practicing, but it’s definitely harder than the more traditional software engineering roles, so a PhD filter might make sense. Usually bigger companies will have a mix of roles, some of which will have a stricter requirements, others like Machine Learning Engineer or data scientist will usually be ok with enough experience. It’s usually good to build a diverse team, some of which has strong academic background to influence and teach the rest of the team.
For my teams, I definitely value highly diverse backgrounds and we have a mix of people.
That’s great! Diverse backgrounds and experiences are what makes teams thrive.
One final question from Diego: I’m currently a senior year student in Barcelona, Spain. And I’m working as a software engineer at a VC funded startup. What advice would you have for somebody like me who wants to enter in the world of machine learning and software engineering. I was thinking of applying for a PhD program in the states.
So doing a PhD would definitely give you a very thorough underpinning for venturing into Machine Learning land. But it would likely also be a hefty time and financial investment. There are definitely ways in which you might acquire knowledge in this space that could meaningfully broaden your career opportunities. There are now plenty of really good online courses from good universities and teachers that can deliver foundational material. Also sites like Kaggle provide good opportunities to try some of those ideas in practice. Good luck!
A special thanks to Daniel 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 face on the path from Coder to Leader. 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 on your own career path from Coder to Leader, 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 training and development programmes to further your learnings with future AMA sessions and more!