In short
Dwayne Reeves’ career story at Meta (Facebook pre-IPO), centered on becoming a tech lead for Hack/typed PHP, the “uncanny valley” of type migrations, and lessons from promotions and managing teams.
Guest backgrounds
Dwayne Reeves is a Senior Staff Engineer (IC7) at Meta. He joined as a new grad from MIT, after interviewing at Facebook as “practice” for Google/Twitter interests (Scala at Twitter). He helped build Meta’s Hack language adoption and later moved into management before returning to IC.
Key claims
Writing code isn’t the only job; solving problems and aligning strategy matters. Type systems improve large-scale codebases by communicating intent and enabling tooling. During migrations, unreliable typing behavior creates an “uncanny valley” where bugs become subtler and worse.
Notable examples
Migrated PHP call sites to Hack API (about 20–30% to 60–70%); found null-handling errors at scale. Led a redesign of Hack collection/array systems with runtime team; promoted to IC5/IC6 after vision-driven progress. Mentioned ICs Kendall Hopkins, Paul Bizinet, and Andrew Kennedy.
Written by AI. May contain mistakes. Listen to the episode to check what was said.
Chapters
Tap a time to open that second in VODwayne's Career Beginnings
0:45 to 2:48
Dwayne discusses his unexpected journey to joining Facebook from MIT.
“All right, well, let's start at the beginning of your story.”
Choosing Facebook Over Others
2:48 to 4:52
Dwayne reflects on his decision to join Facebook instead of Google or Twitter.
“And I mean, I imagine at Google, they're also, you know, they were obviously doing real engineering too.”
The Impact of Education on Opportunities
4:52 to 6:23
Dwayne shares insights on how his MIT education affected his career prospects.
“Yeah, hearing that you went to MIT, it's not controversial to say that obviously is a big leg up when getting interviews and kind of, You mentioned one of your peers had already been working at Facebook.”
Working on Programming Language Development
6:23 to 10:46
Dwayne describes his experience with developing a new language at Facebook.
“It definitely increases the opportunity and chance, like those kinds of elements of it.”
The Benefits of Static Typing
10:46 to 13:10
Dwayne argues for the advantages of statically typed languages in large codebases.
“It's subjective, but I think a lot of evidence points to, yes, they are superior.”
The Uncanny Valley of Type Systems
13:10 to 14:00
Dwayne explains the uncanny valley phenomenon in the context of programming languages.
“Like formally verifying that this bug cannot happen because of those types.”
The Challenge of Static Typing
14:00 to 14:51
Learn about the complexities and benefits of static typing in programming languages.
“And the reason I felt this way is at the time, people only worked with dynamic languages that are only fully statically typed languages.”
Personal Growth as an Engineer
14:51 to 19:22
Discover the pivotal moments that shaped the speaker's career and understanding of value in engineering.
“In the process of migrating to a fully statically typed code base, that last bit, actually things start to get worse because you're almost there.”
Transitioning to Tech Lead
19:22 to 22:20
Explore the transition and responsibilities of becoming a tech lead in a growing team.
“So it was like me, another engineer I brought on the team who I worked with before, and like a new grad hire.”
Becoming a Manager: Challenges and Insights
22:20 to 28:00
Understand the speaker's path to management and the challenges faced along the way.
“And now there's this, it kind of like the, you've left orbit at that point.”
Show all 22 chapters
Navigating Management Choices
28:00 to 29:07
Learn about the challenges and decisions faced while transitioning between roles in tech leadership.
“I was a good manager, but I had to do that job successfully.”
Understanding IC vs EM Management
29:07 to 30:54
Explore the differences in managing individual contributors versus engineering managers.
“working through technical problems versus people problems.”
The Feedback Loop in Management
30:54 to 32:43
Discover the complexities of feedback loops in technical versus people management.
“From a standpoint, the team, the org was doing well, but I wasn't necessarily focused on optimizing the org.”
Promotion Insights and Responsibilities
32:43 to 34:08
Gain insights into the promotion process and responsibilities of a tech lead manager.
“Trying to switch to 20 % of my brain of like, well, is this even the right structure we have to best execute on this plan?”
Shifting to a Fully Typed Codebase
34:08 to 35:34
Understand the challenges and achievements of migrating to a fully statically typed codebase.
“So if you're at M1 and you're a tech lead manager, like, no, you're just a manager.”
Collaborating with Influential ICs
35:34 to 37:57
Hear stories about working with impactful engineers and the lessons learned from them.
“you know, plus a bunch of other work we did of changes to the language runtime and other things that had kind of paid off at that point.”
The Importance of Approachability
37:57 to 40:32
Discover the value of being approachable and fostering open communication in tech.
“Working with him has really showed that I shouldn't be afraid of someone's prestige, right?”
Staying Motivated at Meta
40:32 to 42:00
Learn about the motivations behind staying at a tech company despite challenges.
“And each time I reached that point, I would just objectively look at, well, what are the problems I have?”
Navigating Value and Discomfort in Career Choices
42:00 to 44:04
Explore how discomfort and feeling valued influence decisions to stay in a job.
“And so if there is a moment of like, yeah, there's some discomfort that was for like two months, is that really worth changing over?”
Reflections on Opportunities and Personal Growth
44:04 to 44:31
A personal reflection on career achievements and the appreciation of opportunities.
“as a high school student, you know, the child of Jamaican immigrants, I would have never in my wireless dreams have thought that I would have end up with the opportunities I've had working at this company.”
Advice for Aspiring Coders: Beyond Coding
44:31 to 45:28
Insightful advice for new graduates about the importance of decision-making beyond coding skills.
“college and give yourself some advice, what would you say?”
Imposter Syndrome and Career Success
45:28 to 45:38
Acknowledgment of imposter syndrome by a successful individual, offering hope.
“And I feel like someone with your amount of career success, sharing that you had imposter syndrome, I think that can be helpful for a lot of people.”
Transcript
Automatic transcript. May contain errors.0:00Writing code is not what my job as a software engineer is. My job is to... This is Dwayne Reeves. He's a senior staff engineer or IC7 at Meta who joined the company as a new grad from MIT. Those promotions were kind of a surprise for me because... He shared a bunch of lessons he learned the hard way getting to that level. I was having the worst half I ever had at the company and I was really upset. What's the story behind you becoming a manager? You know, one of the things I had to get used to as a manager is... If you could go back to yourself and give yourself some advice, what would you say?
0:34Here's the full episode.
0:38Thank you, Duane, for coming on. I really appreciate your time. Today, I kind of wanted to go over your career story. I feel like there's a lot of interesting stuff because you started at Facebook when it was Facebook and pre-IPO and all of that. All right, well, let's start at the beginning of your story. I see that you started at Facebook right out of college and you went to MIT. I'm kind of curious, were there other offers that you're considering and what was the story behind you joining Facebook? It's actually an interesting story because I really wasn't interested in Facebook, to be honest.
1:12I was like really interested in Google and Twitter. Twitter because I was a big fan of Scala as a programming language. I know they use that at Twitter. and Google because I grew up on the East Coast and they had offices in Boston and New York and Facebook didn't at the time. Why I ended up interviewing for Facebook was actually as interview practice. I had a friend who was working at Facebook and he was trying to, he joined, I think back in 2007, actually. And he was trying to convince me throughout my time to come for internships or other things. I was like, I don't really know. I don't see myself going to California.
1:52And he was like, finally, hey, this will at least be good practice for your Google interviews. So I was like, sure, let me do it. So I did end up interviewing and ended up making to the final rounds. And when I actually got on campus, my whole viewpoint kind of started to change and open up. Just being able to talk to actual engineers and the kinds of problems they working on. I was, you know, obviously a user of Facebook being a college student at the time. And it was hard for me as someone who is kind of interested in more core CS problems of like, oh, Facebook's just a website. What is it really for me to do?
2:26And when I actually got on campus hearing like some of the problems they had to solve with Memcash and just how to scale up a system like this, hearing things around how they optimize PHP by having their own custom runtime time for it. All these things made me realize like, oh, they're actually doing some real engineering work here that got me pretty interested. And I mean, I imagine at Google, they're also, you know, they were obviously doing real engineering too. So what was the thing that made Facebook really stand out? Yeah. Uh, well, when is they actually gave me an offer, but I think, I think overall, the other thing is like, it's just a level of care I felt from Like they, they really wanted me and they showed it in, uh, sometimes not so sudden ways.
3:14Two things that come to mind. One was when I got my offer, it was the best offer I had. I think I didn't, I didn't end up getting an offer from Google. I did have an offer from Amazon. You know, I didn't accept right off the bat because I needed some time. I said, Hey, I need some time to mull over my offer. And a week later, I got a email out of the blue from my recruiter saying, Hey, we just increase your offer. I was like, oh, yeah. I was like, wow, I didn't need to ask for this versus like Amazon. I like talked to the recruiter and they're like, yeah, we don't negotiate with new grads. You just take what you give you.
3:49The second thing is at the time I remember, I think I had already decided to join Facebook at that time, but there was something where the CTO at the time, I think Brett Taylor, he actually came to MIT's campus and took all the new grads that were accepted and took us out for lunch at a local cafe to talk with us. So all these interactions, I was like, wow, I couldn't imagine any C-suite level person at Google or any of the other companies I was working at actually taking the time to talk with us personally. So that really felt special. Because they were smaller, they're able to do that more tailored recruiting.
4:28What was the rough size of them? Just to give people a sense of like, is this startup or is it kind of like growth stage Yeah, I think at the time it was probably between 1 ,000 to 1 ,500 employees. So not small, but also, well, given we're like, I think, 100 times bigger now, it is small. It's all relative, right? Yeah, hearing that you went to MIT, it's not controversial to say that obviously is a big leg up when getting interviews and kind of, You mentioned one of your peers had already been working at Facebook. But one thing I'm curious, now that you have all this experience in the industry, how much of a correlation is there between maybe the prestige of the college you went to and a career success?
5:19I think very little of it has to do with the actual education piece you get at different universities. My education at MIT was fantastic. There's a lot it taught me. I do think that's valuable. immensely valuable. But I've also met lots of engineers who I work with who some of them didn't even go to school. And so the thing I really know for sure was a big differentiator between me and them was I just had more opportunities because MIT had this name recognition that for my freshman year, I was talking to recruiters from any tech company. They would always come to a career fair and be willing to talk to me just because of the school I went to versus others, uh, engineers I work with is it was almost just by chance that even got on Facebook's radar and they were just as capable of engineers as me.
6:12But just because of, I guess, a different path they took in their career, they very easily could have not ended up at Facebook, which would have been a huge loss for the company. It definitely increases the opportunity and chance, like those kinds of elements of it. Yeah, I mean, I remember my freshman year, I had an internship from Microsoft. And almost that alone was enough for me to get an internship offer from Apple as well. It was just kind of crazy because I remember, you know, I grew up in Bridgeport, Connecticut, growing up in the inner city, going to public school, you know, child of immigrants, like working at companies like Apple or Microsoft was like the dream.
6:55I never thought real people actually worked there. Immediately going from that to, oh yeah, there's recruiters here and they actively want me to work with them was not anything in my head I would have even imagined being the case. But MIT was just normal for the students there. You joined Facebook. You got the offer. They kind of sold you in. What was the thinking behind joining a team like that when you entered Facebook? We were looking at developing kind of like a service that was meant to evaluate some pieces of code and move it outside of the main PHP code base because PHP was seen as like not a great language to develop in.
7:36So we were like, yeah, we can, if we use this new language we develop, we can do some computation closer to the data stores and all these ideas, you know, this will help efficiency and all these big dreams. Honestly, this was something like, it was not a team on my radar at all. But they reached out to me because, well, maybe my resume, they thought it would be interesting. And that was like, I think one of the great, like first times of actually trying to do something language related, where for the most part, all I was doing was trying to translate PHP code into their own custom DSL that they were developing.
8:13But I was on that team for maybe two years, and by the end of it, I was actually trying to develop new features for this language. Ultimately, that project ended up getting canceled. Then I started working on more things related to privacy infrastructure and how do we find ways of representing privacy policies and rules in an easier-to-manage way than just simple if-or-else statements. and I did that for a couple years. At that time, Hack was introduced to the code base and we were kind of the newest framework that like decided, hey, we're going to go all in on using Hack and types, which is what I love because I grew up working in statically typed languages.
9:01I just thought they were superior. So PHP was always weird. And after that project, I was trying to figure out what I wanted to do next and there was this opportunity of kind of different parts of the code base and all that was written with PHP was not typed in hack and I was like I could make an attempt of trying to type this using hack so it was meant to be like I think a week or two project it ended up taking a whole quarter but it was very rewarding because it allowed me to interact with the hack team a lot because they're anxious of like interested in having more people use hack in code base.
9:42And I was trying to do something which honestly no one else had attempted at the time of how do we take a very core piece of API that was not designed to be typed and how do we actually go about doing that? And there's a lot of hacks, a lot of bash scripts, a lot of ingenuity, I guess I would say. So the end result was after I completed this migration, about 20 % of the call sites, they're moving it to the Hack API, discovered that there was some kind of error in the code, usually around how it handled null types. This was kind of like, I view it as one of the big results of like, hey, Hack is not just this cool tool.
10:23It's actually finding mistakes in the code base at scale. And I feel that is really what started to have hack be taken a bit more seriously. It's like, hey, should we be more aggressive in terms of replacing PHP with hack? You mentioned dynamically typed, statically typed. Are statically typed languages objectively better than dynamically typed ones in industry code? It's subjective, but I think a lot of evidence points to, yes, they are superior. particularly in in the ways to think about is particularly if you think about the problems we face at a company or code base at the scale of we develop here at meta or any large industry it's like it's more of like a information communication problem where as the size of a code base grows the more you have to keep your mind of the context of like well this code is meant to do this and this code is meant to do that so if i change it this is how it needs to work it starts to break down as you have more people who are working in the code base and the size of the code base grows that you just naturally need tools to help you manage that.
11:31And type systems just happen to be a effective tool for communicating intent. Maybe there's cases if you're just you're hobbyists and you're working on your own and you could just keep everything in your own head. Yeah, you could probably move faster with a dynamic language at the scale we operate with where you even if you get like a hundred engineers, like you need something that helps you communicate ideas and keeps track of that. And that's where I feel types really help. Types also help with tooling, right? So you have all the complete, it helps you search the code base and all these other things beyond just like given errors that it provides value in.
12:09It's not surprising. You see, even for dynamic languages, most of them have some form of optional types, at least for that reason alone. I guess some of the obvious advantages are it brings more of the state or what we're trying to communicate explicitly written into the code via the types. And then also because of that, tooling and various static tools can traverse that and provide value to us. So that's a big value add for industry code. Is that right? Yeah. And it's actually kind of incredible to think about that you write some text in a file, and because you write it in this way, that we have developed ways of proving that, hey, this text you've written does not exhibit these classes of errors at all.
12:59And you could just rely on it. And that's really powerful. Right. And it's, you know, one of the, I think, main achievements we've had in the space of computer science. Definitely. Like formally verifying that this bug cannot happen because of those types. Exactly. In my research and kind of studying some of the type migrations, I think you mentioned before this uncanny valley of type systems. I'm curious, can you explain what that phenomenon is and what you mean by uncanny valley? I grew up playing video games. So this is a term I learned in that space where from there, it's from more like if you have computer graphics, as you try to make something look more human-like, in general, you feel better about it.
13:45Like you feel more connected to it as it starts to look more human. But then it gets to a certain point where it's almost human-like, but it's off in subtle ways. And all of a sudden you get kind of put off from it. And me being familiar with this term, I feel the same thing will happen in terms of as you move from dynamic languages to static languages. And the reason I felt this way is at the time, people only worked with dynamic languages that are only fully statically typed languages. And they didn't necessarily have the muscle memory or weight trained in their brain. What does it mean if I have a type?
14:23It actually is not correct. And as you add more and more of these, the places where the types actually aren't doing what you would expect in a static language that exists, the more off-putting it will fail. And so that's how I came up with that concept, right? Was comparing this to how it applies to the space of graphics, human graphics, and trying to make a similar analogy to communicate this point. And it proved to be a really effective way of contextualizing the problem we were trying to solve on the hack team at the time. In the process of migrating to a fully statically typed code base, that last bit, actually things start to get worse because you're almost there.
15:07And so the bugs that come are much more subtle and the behaviors are much more subtle and it's actually worse for a bit, till 100%. Yeah. And I think there's even something particular because we were, you know, the foundation of the language was PHP, was that at the time there were certain behaviors PHP had, which were incompatible with trying to make a sound type checker for. And there were some questions at the time of like, well, should we keep those behaviors or should we get rid of them? And I think my post was more making the statement, we should get rid of those behaviors. Because if you have a language, even if you had everything typed, the fact that the types can't be relied upon because of these subtle behavior differences, then that will be a problem or will create a less than ideal state for development.
15:59So I think that it's also some of it is, you know, because of PHP and some of the peculiar decisions they made of how their runtime would operate. I see. I see. That makes sense. And so in your time as an IC, I know eventually you transitioned to management. So you must have had some promotions and things that helped your career grow. Are there any stories, like particular times where you felt like, okay, that was a really good learning experience and helped you grow as an IC? Yes. Two of them come to mind. So one was when I got promoted as a senior engineer. I kind of mentioned earlier about this project I worked on of trying to create a hack API for the ENTS framework.
16:44So since that went well, I was asked to, hey, can we do this at a larger scale? Like, can we move more code from PHP to hack? And so I ended up spending a half doing that. And at that time, up to that point, my idea of what value I gave to the company was 100 % based off of what code I was able to output. And so when I started this, I was talking to so many people. I was like giving ideas to the hack team, giving ideas to other engineers who were to work on that had almost no time to actually write code myself. And because of this, I felt I was having the worst half I ever had at the company. And I remember like having a conversation with my manager about this.
17:30And she was like, you know, it's important that, you know, you're doing the right thing in terms of talking to other people and getting them involved. But you should find some time to write some code on yourself. And I don't know if she talked to her manager afterwards, but I think the next one or one, she was like, yeah, that thing I told you, that's actually wrong. Keep on focusing on just what the end results were. And for me, the thing that really connected is still at the end of the half, I thought that I was like, yeah, we had some results. Yes, we increased the amount of hack adoption or coverage from like, I think, 20 or 30 % of the code base to like 60 or 70%.
18:12Now, like hack felt like it was a fixture in the company. Like people weren't really looking to write PHP first. Everyone was starting to write hack first. So I felt like I had good results. But again, I wrote the least amount of code in my career so far. So I wasn't sure how it was going to play out in terms of my performance review. and the thing that really connected was like oh actually that was the highest review I ever got I ended up getting redefined set half um wow and I got promoted to IC5 which I wasn't even in the conversation because I thought oh I'm not writing enough code to even justify that and it really solidified to me that writing code is just is not what my job as a software engineer is my job is to identify and solve problems sometimes that's the best way of doing that is writing code sometimes it's me bringing clarity to a problem in the path forward for how to solve it and if others end up writing the code then that's fine um so that's something i think was a pretty big mind shift there of experiencing of like okay i don't have to be the most uh efficient you know coding machine out there right there's other ways i could add value so that was definitely one of the one of the pieces and the second one was also I guess what led to my promotion to IC6 so after that half right I just explained I was asked to join the hack team so I wasn't even on the hack team at the time so this was started in I think 2015 I joined the team they said like hey you would be the tech lead I have no idea what that was and most of the engineers who were on the team before, they ended up leaving.
19:53So it was like me, another engineer I brought on the team who I worked with before, and like a new grad hire. And we were like, this whole system we were now responsible for. I quickly struggled for a few years trying to understand what was my role as a tech lead. You know, I was comfortable that my output didn't necessarily need to be related to the code I wrote, but I still felt like I was responsible for seeing the outcomes end to end. so one of the things I worked on was trying to redesign how our collection system work arrays and stuff within hack and I spent all this work on the design spent a whole year on it convinced our runtime team to implement it started with the implementation and started to roll in we had some people join the team and I was like all right here's my you know project to get me to IC6 is trying to complete this.
20:44And I remember my manager telling me, okay, Duane, I actually want you to work on something else. And I was really upset because I was like, why are you telling me to work on something else? This is my project. It's up to speed. Why do you want me to do something else? And this is my path. And he was saying like, and he gave this analogy, which is really interesting. It's like, think of what you're doing. It's like, you're like a rocket ship and like there's different stages as you are firing. And like, you know, you have the initial set of like engines that are meant to like leave the orbit. Right.
21:14But once you escape the orbit, there's like other jets that can fire. And he was like, I only cared about you getting us out of orbit. Now that we've done that, you should pass this off to someone else. And now you can find something else to do instead. And he wouldn't let me leave the 101 until I agreed to do it. And, you know, I passed this on to another engineer and I was I don't even remember what I was focusing on. But I remember, you know, the half ended. And again, I was like, okay, well, I did that. So let's talk about, you know, what my path for six to be. It's like, oh, actually, I just got you promoted.
21:48So congratulations, you're now six. So in both cases, like those promotions were kind of a surprise for me because I had a mismatch between what my expectations in my head of what I needed to do to perform at the next level versus what in reality was important. And each time it felt like being okay with having less direct control on the outcome. And the real important thing I did was just align in what the right strategy and what the right problems were in the first place. a lot of more senior ICs, the value is they come in, they figure out what's important to solve, why, you know, get all the alignment.
22:28And now there's this, it kind of like the, you've left orbit at that point. This is something everyone's interested in. Then you hand it to someone who's great at, you know, getting it done. And so, and it's cool that your managers were proactive and driving your growth because it sounds like you weren't really eagerly involved and figuring out hey what do i do to six and you know scale myself okay i'm gonna go scale myself it's almost like you begrudgingly did the things and they were coaching you and you just got promoted as a byproduct yeah uh you know it was also a bit earlier at the company so some of it was like probably they were willing to move faster like hey duane we we see the potential in him why like hold the promotion for another half.
23:13Having a strong relationship with your manager is the thing I see most consistent in like my career. Whenever I felt disconnect with my manager is when I felt most frustrated. The times when I felt most connected is when I felt I was doing my best work. And I think I see that through line in a lot of people's careers. Like almost everyone who has had success, they had a good relationship with their manager. And so speaking of management, I know you eventually transitioned to being a manager. Curious what made you want to try management? What's the story behind you becoming a manager? It's interesting because it's kind of similar to how I ended up at Facebook.
23:52It's like I didn't want to be a manager. It was not a part of my career plans. The team was at this point growing rapidly. And my manager at the time, he was like, hey, we need more managers on the team just because of the growth rate. Here's an opportunity for you. And we could either try and find another manager externally, or you can give this a shot. And I said, no. And the next time I met him, I heard about the TLM role, like tech lead manager. And I was like, oh yeah, I could do some coding and maybe a little management. This might be a nice transition. And I mentioned it to my manager. And he was like, oh, you don't want to do this.
24:28I was a TLM at another company. It's like you're doing two jobs. I wouldn't recommend this as a manager. So I was like, oh, okay, that's fine. I won't be a manager. and I think he probably talked to my director because he came back the next 101 he was like actually yeah we should we should try this you could you know be a TLM or whatever you want you know just try this management thing and since I you know was starting to get more comfortable with like delegating I was like okay if I'm still technically evolved so I could try being a manager and still have some technical influence on the team and for me the main decision around like And that point in my career was there's so many times that I've discovered if I was set in my way of just trying what I felt comfortable with, that anytime I did the opposite and did something I felt was like I would be uncomfortable with led to better results.
25:20So I was like, OK, I don't really want to be a manager, but it will force me to learn a lot and it will force me to be uncomfortable. So I was like, OK, I'll give it a shot. I hear that advice often on that TLM is, you know, two jobs and it's not super sustainable. After you tried it, what was your experience with being a TLM and would you recommend it to others? The first couple of years, it was actually pretty, it went pretty well. As a new manager, I was quickly, you know, I started off with like three reports, I then went to four and five. Then like there's this big shift where essentially I had the whole team under me.
26:01they were supposed to be a manager in seattle for part of her team that had left so i had maybe like 12 or 13 reports and i started you know saying like all right can i convert this person to be a manager as well and i started having managers report to me and i was still given technical direction but i think the thing that became tough was as the org started we we were successful so continued to grow and it came harder and harder to think about all right how can i continue to contribute as a tech lead while also figuring out how to scale out this org and there was you know some ideas i had around how to do it which was basically i need fewer reports that we get like three managers to do all the management and i'll just manage them then i have time to think as a tech lead.
26:52You know, my own manager at the time, he didn't think that was the best outcome as for building a healthy org, which I think makes sense because he has a lot more experience being an org leader. Ultimately, I got scaled down to here's a fewer direct ICs I worked with, and I continued being a tech lead overall. So it wasn't necessarily the workload that was the issue, but it became something where does the thing that helps the team the most align with the base responsibilities I need to do as a manager? So here's a way to kind of demonstrate this, right? So as a tech lead, at the time, I think there was something like 35 to 40 individuals on the larger team that we were working with on the language team.
27:37And so the best thing for that 35 to 40 group of individuals of what I should do is different versus the maybe six or seven ICs I was directly supporting. And so I had a PSC where if I would be great as an IC, I was told I would get a GE. Like basically my role as a tech lead for this group of 35 to 40 individuals I was doing really great at. But as a manager, I wasn't failing. I was a good manager, but I had to do that job successfully. I wasn't necessarily looking to exceed as a manager or do or maximize the growth of those six to seven individuals I was supporting directly. And this became something is like, is this actually what's best for the team long term?
28:25And ultimately, I had a choice of I could basically try to replace myself as a tech lead so I could focus on being a org manager or go back to be in the IC so I could focus more freely my time on what the needs of the larger organization needed from technical leadership. And the choice became obvious for me as like, it was just easier to find a manager for six to seven people than me trying to find someone who can be effective tech lead for a group. So that's what led me back to be in the IC. You mentioned that along that journey, you managed some EMs and you managed ICs as well. I'm kind of curious, what's the difference between managing an IC and EM?
Read the full transcript
29:06It's really the difference between trying to support someone as they are working through technical problems versus people problems. You know, one of the things I had to get used to as a manager is, you know, when you're at IC or you're doing something technically, the feedback loop between you doing the action versus you seeing the results of that action is shorter versus what you try to do as a manager, right? So if I'm working with a IC, I'm trying to up-level them so they could take on larger bits of work or learn how to be more creative or thorough in terms of the work that they do. As a manager, the things I attempt to do in one meeting, one, one, and one, I have no idea if it helps, right?
29:53There isn't something I could tell like, oh, I hit compile and then it passed or I run the unit test and now it passed but as a uh manager like it might be like six months nine months down the line where like something clicks or they come to a meeting or one-on-one and say hey i finally got that thing you said and i'm actually seeing results from it now that same thing applied to uh a people manager is even like a longer loop i'll say of like the problems they have of like And some of it was I was a new manager, so I wasn't always necessarily clear around like, well, what's the best ways of getting them the things they were struggling with as a manager?
30:38What advice can I give them? How can I coach them up? It wasn't something that I actively went in. It's like I need to do something different for these managers. I was kind of a vibe manager. I was just like, this feels like the right thing. And I think for the most part, things were fine, right? From a standpoint, the team, the org was doing well, but I wasn't necessarily focused on optimizing the org. I was like, fine if the org just ran, right? And I was able to do technical work. So, you know, I know you asked about what's the difference between the IC and the manager in terms of management.
31:14it was more like for me i was realizing my brain was focused more it's like still as i see it's like the org is fine for the most part i'm not looking for other opportunities to see this organization operate more and those are the kinds of stuff i think you should be thinking more about as you are more of an org lead and are supporting other managers is helping them think about as they have their own team like how they should coach others or how what opportunities they should be thinking about or even seeing like doesn't even make sense for them to be a manager still or should I or is there some other opportunities so these are the types of stuff I probably should have been doing more of as a as a skip manager you know I think the thing I enjoyed the most around management though was around the coaching and so that's what I leaned on a lot more was like one-on-one was like what's your problems how can I help and it sounds like the coaching that you enjoyed most was IC coaching because you liked being in IC yourself.
32:16And you're saying that for EMs reporting to you, the best thing is to kind of flip that switch and start thinking about the best org design and how do we grow people and how are they going to support their team? Yeah, and that just wasn't the natural way I was thinking, like day to day, particularly because, yeah, I was the tech lead. So if I came in 80 % of my day focused on what's the technical challenges we have and how can we best tackle them. Trying to switch to 20 % of my brain of like, well, is this even the right structure we have to best execute on this plan? I just was not good at switching between the two.
32:53Yeah. At some point you're promoted to senior staff or IC7 equivalent. I'm curious, what's the story behind the promotion? So we talked earlier about this uncanny valley like post, and that That was really that vision was what drove the team for a while. Like as we started to scale up the size of the team and what we were pursuing a lot, if you ask anyone on the team, what will we do? And it was like, oh, we're trying to cross the uncanny valley. And I think what led to the promo was basically enough things lined up as we were executing and we were making progress towards this that was like attributable to my vision that it made sense to be promoted.
33:38Right. at that point. It was something I remember being a bit more active, talking to my manager about. And at that point in time, it was kind of seen as like, it's just a matter of time. We just need to see more results. Because I had a clear vision I had laid out, and we were starting to see results from it. So we just needed to see it a little bit further along before we got the promotion through. And yeah, I ended up getting it the half before I switched back to being in the IC. So I was actually still a manager when I got promoted. I think at the time they said officially TLMs didn't start until M2 equivalent.
34:13So if you're at M1 and you're a tech lead manager, like, no, you're just a manager. But I think the promo to M2 was based on the technical contributions I gave as more of IC as opposed to my ability as an org lead. If I'm understanding the blast radius of what you'd done was basically a migration of the full to fully statically typed on one of the base I guess languages that almost everyone was using I don't know the exact percentages but you know hundreds at least maybe even thousands of engineers using this is that right yeah I joined a team in 2015 we had a mix of some hack and some php and we soon moved to basically everything being hack.
34:58We also had some notion of like hack strict mode versus a partial mode where strict had requirements that you wrote all the types that were necessary versus partial you could leave things out or whatever. And by this time I got promoted we basically got all the code base. So back in 2015 out of the hack files which were in the code base maybe only like five or ten percent with strict. So by the end of this, right, around the time where I got promoted, we more or less had all the code base now being strict hack. And so that was like a pretty remarkable difference, you know, plus a bunch of other work we did of changes to the language runtime and other things that had kind of paid off at that point.
35:42Coming to the end, there's, I kind of want to go over like some career reflections going over the story. But one thing that I was curious about is because you're early at Facebook, you've probably had a lot of chance to work with some very legendary ICs. Atreus, is there any IC that you worked with or you thought you were really impressed by them or maybe you have a story working with someone? Oh, yeah. There's so many excellent ICs I've worked with, so I almost feel a mess if I call some out. I'll mention one, Kendall Hopkins. I worked with him when he first joined the company, and he's an excellent IC who was really good at understanding for a code base, or main code base that was running Hack.
36:28I was thinking from a language perspective. He was thinking more from the developer perspective, like, what are they actually trying to do? Like, what are products needs? Like, what do product engineers need within this code base? and he just was an excellent engineer and helping to think and strategize, like how do we make these larger changes at scale across the code base? So he was very key, I think, instrument of my success. Another one that comes to mind was Paul Bizinet. You know, I don't know if I said this explicitly, but when I joined Hack, I had no prior experience with languages or compilers or anything.
37:04Honestly, I didn't even know where the Lexer was, which is like a very base component of a parser. and Paul he answered he was my sounding board like I could ask him anything and I felt comfortable no matter how dumb it was he would take the time to explain it and so I don't think I would have survived particularly when talking with the HHVM team if I didn't have Paul there to kind of teach me different concepts yeah and another one I just want to call out is uh you know he's still colleague of mine's uh andrew kennedy uh this guy is incredible he's literally written foundational papers on type theory like you would do some research like let me look up some things around type theory and you're like oh andrew kennedy his name is here and he and he kind of figured this out and um it was one of those cases i did that when i first met him i did not know how amazing or his pedigree that he had and he's one of the most humblest guys i i've met for someone who's so accomplished already.
38:02Working with him has really showed that I shouldn't be afraid of someone's prestige, right? I have value to add, even if it seems like I'm not, you know, you know, I'm more junior or anything else, right? That there's always something, everyone has their strengths and there's something you could always add to that. And with Andrew, there are times where we talk about different language features or ways of typing. and even though I didn't have the same background he had, finding ways where we can communicate and see, like, he'll say, oh, Dwayne, that's actually an interesting viewpoint. I hadn't thought about that.
38:38Made me feel like, hey, I could actually, you know, punch and hold my weight. And then there's stuff he'll do. I'm like, I had no idea, like, how to even think about this problem. So, yeah, those are just some of the ICs I really call out. It's like me having worked a lot with and seeing just some of the amazing work they've done at the company. It sounds like it was humanizing working with him. I mean, I guess if you had just heard about him, you'd think this guy's untouchable. But getting to work with him, seeing him be friendly, adding value in discussions kind of made it so that you were, I guess, not scared of his prior degree.
39:16Is that right? Yeah. And that's something for myself, you know, having, you know, been on Hack now for 10 years and been at the company for almost 14. It's something I'm sensitive to as well, because I still remember that time when I was just a younger engineer. and so every once in a while I'll go I'll meet someone and I'll introduce myself and they're like wait you you're the Dwayne like you're like the hat guy and I'll be like oh like oh don't think of me like that you know I I want to be approachable I want people's ideas to feel valued and you know yeah we're all humans we all learn things right and just because of whatever I've accomplished in the past or any ideas I have doesn't mean I'm always right.
40:05I'm always looking to learn more. And I think that's one of the things was great around the team I had was just so many senior ICs, those with, you know, some I talked to had more experience working on programming languages than I was alive at the time. But yet, how willing they were to talk to me and explain their their approach and i just think that's something all all senior ic should try to emulate that like humility you mentioned you've been at the company for a long time i'm curious like what is the thing that you find keeps you at meta i think in this industry a lot of people you know hop jobs yeah so there's definitely some times i think of where and i was considering jumping ship and the thing that i always reflect on right is is my motivation for moving is it trying to solve a temporary problem so let's say like hey at the time i'm not particularly happy with the project i'm working on is that really a reason for me to leave the company right and versus like um and each time i you know i would interview and i'll have an offer and i'll think Like, is me making this change or move really going to change, like, the fundamental problem I feel I have at the moment?
41:25And each time I reached that point, I would just objectively look at, well, what are the problems I have? And what are also the things I enjoyed about the work I did? And particularly growing up at this company, you know, things that I was being, I had a voice that had carried weight. I had opportunities to help bring in diverse talent into the company. And frankly, how many opportunities is there to work on a programming language? That was also the piece. And I had a great team. And so if there is a moment of like, yeah, there's some discomfort that was for like two months, is that really worth changing over?
42:11And for me, I always was like, yeah, I could sit through it. And most of the time, things ended up improving. And so that was, for me, my perspective is that I don't want to make permanent decisions based off of temporary circumstances. And it sounds like, I guess in those cases when it wasn't good, the situation was resolvable. It was not something that you couldn't change or your manager couldn't help you with. Yeah. Yeah. You know, I feel some of the things in terms of what would lead, what would have led me to like leave, right, is if I didn't feel valued. And in a lot of cases, I, when I would look at it, it's like, no, there's all the signs that I am valued here at this place.
42:56And so the issues was not focused on that. It was like something else, like, oh, it's the project I'm working on. Do I feel it's not getting the recognition it deserves? and some of it realistically might be like I just have a warped view of what I think should be recognized and if I talk it really faces like yeah I'm actually wrong here or maybe they are wrong and me with enough time they've realized that you know if I fundamentally did not believe in the mission of the company or like I felt my manager was creating a toxic work environment things like that would be more of what I would see is like, yeah, if I'm in that situation, I would have left already.
43:39But none of those were like the circumstances I had. And honestly, I feel I'm a bit privileged and fortunate of that to experience that in my career. And it leads to a lot of like, there's just been so many great people in my time I've been able to work with both managers and others at the company that it's let me really have a career so far that like goes beyond my wireless dreams, right? When I was first learning the code as a high school student, you know, the child of Jamaican immigrants, I would have never in my wireless dreams have thought that I would have end up with the opportunities I've had working at this company.
44:19And it's not, I don't want to say sentimental, but it's really appreciating that, like, I've actually been really blessed and really fortunate. And I guess the last question I want to ask you is, now that you have all this experience, if you could go back to yourself right when you graduated college and give yourself some advice, what would you say? I get asked this often. And the thing is, the thing I'll say is, hey, Duane, I know you like coding, but the thing you should realize, right, is when someone goes and tells you, hey, can you write some code to do this? You should stop and think, how do they know that's the right code to write?
44:56You should aim to be the person who's making those decisions around what's the right thing to do. There's a lot of imposter syndrome and other stuff I dealt with early in my career that having this clarity is like, it's not about, you know, I'm more than what I can type on a keyboard, right? My ideas and the value I derive is greater and like focus not on just being an output machine, but really being the one and focus, like, can I be in those rooms that's deciding what's the right thing to do? Yeah, thanks for sharing. And I feel like someone with your amount of career success, sharing that you had imposter syndrome, I think that can be helpful for a lot of people.
45:38So yeah, thank you so much for your time, Dwayne. I really appreciate you coming on. Yes, it was a pleasure, Ryan. Thank you so much. hey thanks for watching the show i don't sell anything or do sponsorships but if you want to support you can subscribe on youtube or you can leave a review on spotify and i'm always looking for new guests to interview so if anyone comes up who you think you really want to hear their career story let me know and i'll try to reach out to them and get them on the show thanks for listening as always and i'll see you next time
From the publisher
Dwayne Reeves is a Senior Staff Engineer (IC7) at Meta who is the Tech Lead of the most used programming language (Hack) at the company. He started at the company as a new grad from MIT and shared the story of how his career grew. We discussed:
• His promotions to Senior (IC5), Staff (IC6), and Senior Staff (IC7)
• The value of type systems
• Transitioning to a TLM and why he switched back
• Working with brilliant engineers and overcoming imposter syndrome
• Advice for his younger self
Timestamps:
(00:00) Intro
(00:39) Joining Facebook
(04:52) Did MIT help with career?
(07:13) His first team
(10:37) Why static typing is superior
(13:17) The uncanny valley of type systems
(16:11) Senior Eng (IC5) promotion story
(19:24) Staff Eng (IC6) promotion story
(23:38) Manager transition story
(28:57) Managing ICs vs EMs
(32:54) Senior staff Eng (IC7) promotion story
(35:42) Impressive ICs
(40:33) Why stay at Meta
(44:28) Advice for younger self
(45:46) Outro
Where to find Dwayne:
• LinkedIn: https://www.linkedin.com/in/dwaynereeves/
Where to find Ryan:
• X/Twitter: https://x.com/ryanlpeterman
• LinkedIn: https://www.linkedin.com/in/ryanlpeterman/
• Threads: https://www.threads.com/@ryanlpeterman
• Instagram: https://www.instagram.com/ryanlpeterman
• Newsletter: https://www.developing.dev/




