What Does A Staff Software Engineer At FAANG Do?

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
there's this concept of a terminal level right so it's not only kind of a engineering challenge but also kind of a marketing challenge or a communication challenge you're talking about company-wide impact and oftentimes industry-wide impact what's up everybody how's it going today i'm joined by a very special guest his name is rahul he works at facebook as a staff software engineer he's also an adjunct professor at stanford i believe that he teaches an android class there he also has a youtube channel where we did a video about coding interviews and he asked me a bunch of questions i'll put the links to that in the description down below and today we're going to talk about what it is that a staff software engineer at a big tech company like facebook does so rahul thanks for joining us if you want to give just a brief background about yourself and then we can dive into the questions yeah for sure i mean so first off thanks for having me i'm really excited that we got to make this work um i think yeah your intro was great i have been working in silicon valley for seven almost eight years now um i've been at pinterest and facebook and i went to stanford uh for my undergrad and master's degree in computer science cool and now you now you're like making the world go round by teaching at stanford exactly yeah so that's a really fun part of just being able to go back and and interact with students as a lecturer now which is super fun cool cool and we might touch on that at the end of the video but first i want to talk about your job as a staff software engineer i feel like the term staff software engineer is a pretty kind of a intimidating term sometimes and a lot of people wonder what it is that a staff software engineer does so maybe you could tell us what you do on a day-to-day basis you know what your daily life is like as a staff software engineer yeah totally so let me start by saying that i feel like for staff engineer and certainly even more senior like senior staff or principal engineer there's not really a template of like here is what a staff engineer should do day to day it really will depend on what kind of engineer are you and you know what are the needs of your team or of your company at that time so i can talk about my experience i would say about half of my time goes into actual technical work and that basically is you know reading and writing code making code changes putting out a desk you know like a diff is kind of like a github pull request that's criminology we use at facebook um and then the other half of my time is spent in doing architecture review so you know typically as a staff engineer you're going to be the expert in at least one part of the code base right you're going to be the person that people come to for questions about that area and so if they're going to make a change it's your job essentially to give them guidance unblock them and maybe provide a alternate way of thinking about the problem i see and then there's a another last component which is around direction setting and that basically means you know um talking to the product manager the engineering manager maybe the designer if you have one and figuring out what is the roadmap for your team for the next three months six months one year and how can you be the technical voice for that planning so you can be the person to advocate for a particular solution because of the technical needs or you can anticipate that hey we want to do this thing but we're not set up for this at all we need to have this big re-architecture before we can actually make that happen so we need to start preparing for that now right so you have to be kind of the engineering voice the engineering leader in these meetings both internally on your team and with other teams to to provide that uh technical direction i see so you definitely need that sort of proactive uh technical liaison or so with these product managers and other departments and teams i guess perhaps one question that would be interesting for viewers here and of course like you don't have to go into nitty gritty detail or confidential stuff but what would you say your domain of expertise is that some people come to you for you know architectural guidance yeah so i would say that where i operate is as a product engineer who sits between the actual feature engineers who like are building on top of the product that i own along with the underlying architecture so kind of being that glue layer okay um so i can't talk too much about the specifics of you know like what the product is that i'm working on or how it works but you know kind of any time that there is a need from a feature engineer to do something different with the framework i usually will jump in and say okay here's how the best here's the best practice for how to achieve that and here's kind of the things you want to watch out for or the questions you want to ask before implementing it so kind of making sure that people are aware of what might go wrong and how to succeed with what they're trying to do i see and it's very interesting because like i feel like at these big tech companies people don't realize just how big some of these products and code bases are and so i bet that just as you kind of sit in between you know maybe some sort of front end and back end you know kind of i'm sure there are peers of yours who are also staff software engineers but who might be the the points of contact for just the features you know or just the infrastructure yeah that's a good point i feel like when you work at one of these large companies what happens kind of organically is that you have many layers of abstraction built up on top of each other right and so you actually need people who are really aware of these abstractions and how to peel back those abstractions to figure out how real things really work and you mentioned earlier about being proactive right i feel like a really good way of describing the job of a very senior engineer is shifting from reactive to proactive so you should be able to understand okay here's how the front end roughly works here's the area that i'm expert in that i know like everything about it and i have a pretty good idea of how the back end works right and so where can i anticipate problems so if there's a change coming up how can i make sure that that will actually be a seamless change that doesn't cause tech debt it doesn't cause you know issues for users and how can i make it happen on time with high quality so a lot of the job is kind of anticipating these abstractions and like what might happen what might go wrong when you try to integrate different things interesting very interesting and it's a very nuanced type of role now here's a nuanced type of question what would you say is the difference between a staff software engineer which you just described and maybe a senior engineer so the level right below or a senior staff the level right above and then maybe even you know a principal engineer yeah so i think fundamentally it's about impact the higher up level you are the more impact you expected right that kind of kind of makes sense um but i think what some people miss in terms of promotion or talking about the different engineering levels is that it's not so much that you get promoted because you do good work and you're you know you've you've finished a feature or you're you know fixing a bunch of bugs promotion happens because of behavior not because of output and that's kind of the key difference in my mind between a senior or staff engineer or senior staff is that the kinds of problems the types of problems that you're able to tackle are going to be fundamentally different at each level like let me give you a concrete example my first manager kind of gave me this framework which is that one way to assess how senior you are is think about the question how far in advance do you know what you're going to work on so if you're a very kind of you're a new grad and you just graduate from college you might be knowing what you work on for the next three or four days right you have a bug to work on and you kind of are going to work on that for a couple days if you're a mid-level engineer you probably know what you're going to work on maybe for a couple weeks because you're going to be working on this feature if you're a senior you probably know for the next maybe three months so you're kind of owning this whole project and that's going to take up the next three months once you start getting to staff engineer or senior staff you have to have the vision in your head about what you're going to work on for the next six months or longer and not only you but also the people on your team right so you want to be able to take a huge problem decompose it down and say okay i want to work on this part and the three other people on the team or the five other people on the team here's definitely what they're going to work on as well for the next six months and that's kind of one really concrete litmus test to evaluate you know how senior are you in terms of your operational level very interesting yeah i remember when i was still at facebook i had read this internal document obviously i won't go into the weeds of it but it was written by an l9 engineer i believe at facebook who explained kind of how he had gotten promoted to l9 and it was in l9 being kind of like two or three levels above staff software engineer and it was interesting seeing how yes he was describing like the projects that he would work on were things that he would kind of anticipate you know a year and a half in advance you know like oh we're gonna have to do this entire revamp of like the entire infrastructure layer at facebook i'm just giving an arbitrary example but um yeah very interesting um conversely in here i might uh shamelessly plug algo expert raw if you if you don't uh uh if you're okay with that please do but it's interesting because like all these software engineers even though they have like different seniority levels they end up still you know writing code and still doing like the same fundamental work and they're interviewed the same way you know they have the same coding interviews although the more senior you get you have systems design interviews and for those you can go to algo expert and use the pro um sorry i messed up uh i just messed up my my promotion of value expert raw is probably like like completely face calming i've done this so many times how could i mess up but no for those if you're preparing for your coding interviews or systems design interviews for any level then you can go check out algo expert you can go to algoexpert.io and use a promo code clem clem for a discount on the platform well thank you for uh you know allowing me to do this shameless promotion but let's move on to the next question that i think might be really interesting which is can everyone become a staff software engineer i know that it's difficult to become a software engineer or a staff software engineer do you think that everyone has what it takes should everyone become a staff software engineer and here the reason i ask that is because like it probably comes with a lot of stress probably comes with a lot of responsibilities do you think that for some people it's just better to stop at you know like let's say senior software engineer right and it's a very interesting question for the can everyone become a staff engineer i think the answer is yes it takes time and effort though right it's not something that you just get on a team and you become staff even if you're a phenomenal phenomenal engineer and the reason is because i feel like once you get to that level there's a big expectation about you setting the direction and vision technically for your team right and the way you do that is by building trust with your product manager your engineering manager the other folks other engineers on the team right and you don't build trust overnight so even if you're a great engineer you have to prove to them that okay you can deliver uh projects on time high quality you can help unblock other people and that's how you're able to build that trust build those relationships and then advance to staff engineer so i think kind of the ingredients to actually get there and i think everyone could find it is you have to be on a team which actually has a lot of scope and it's expanding that scope so you can kind of grow with that right yeah second you have to obviously have the technical underpinnings right so you have to be able to deliver projects that are high quality on time and the third component is you need to be able to start having an opinion about where the team should go right so it's not enough just to be kind of reactive and like doing the projects that you're told you need to start advocating for here is what i think we should do here's what i think the the good and bad parts about our current architecture and here's how we need to adapt right and so i think if you find a team where you have that opportunity everyone could become a staff software engineer now the question is you know you asked should everyone become a software engineer i think that one's a little trickier because i think like you mentioned the higher up you go on the ladder the more expectation there is to land impact and that can become actually quite stressful so for example if you are very content just putting your head down doing your work not having to think about you know getting buy in and like setting the vision for the team then maybe you don't want to be a staff engineer right because there's going to be some expectation on your time to actually do that and like you know convince people and like be in these meetings where you have to advocate for a certain technical direction right right and so if you don't want to spend your days doing that kind of thing then maybe you're actually going to be happier and actually more successful as a senior engineer and maybe there's also other paths you could explore right like we i think we might talk later about engineering management or some companies have this role called a tlm tech lead manager right there's other paths available to you that are not simply climbing up the engineering ladder right and i think that's a really i think important point uh that some people really need to hear because i think some people kind of blindly through no fault of their own think that they just have to go up the ladder you know you become a software engineer and you just gotta go up the ladder but like you said yeah like ultimately you might actually end up being not only happier but even better performing as a senior software engineer and depending on you know your motivations you might also be perfectly content with let's say the compensation that you're getting because i mean you're getting great compensation at these types of companies if you're a senior software engineer and so that's a really good point i guess now we could dive into engineering management since you mentioned it what is the difference between an engineering manager and a staff software engineer for example because as far as i know like if you're a senior engineer maybe you would want to instead of a staff software engineer go into engineering management but how would you say like those two roles are different totally yeah so i think um again let me caveat this by saying again that the definition of like what is the engine manager tlm versus tl it's going to vary a little bit company to company yeah i think broadly speaking at fang right at these big tech companies in in silicon valley um or you know these big companies that are primarily us-based i would say that the job of an engineering manager is very people-focused yeah so their job is actually at least at facebook their job is not to they have no responsibility to set architecture or technical vision it's much more about are the people on your team are they happy are they being challenged enough um and are you minimizing the amount of work that they need to do that is not actually having any real impact right like getting like basically can you unlock as much productivity as possible for your engineers and there's some overlap there with a staff engineer where you know like one way to think about staff engineers are that they're a multiplying force for the engineering team so they're the ones who are setting the architecture which will allow everyone to move faster or they're kind of solving a whole class of bugs right so that's like kind of overlapping in that dimension but um the big difference is that there's no responsibility to to kind of grow the people around you on uh in their career right there's no kind of mentorship requirement as such even though that does happen organically sometimes um it's much more focused on technical vision and technical architecture whereas the engine manager is gonna be much more people focused yeah i think that's that's a perfect way to kind of summarize it that last sentence and i think that to anyone who's wondering like which path they should go down that's really the main question you have to ask yourself are you the kind of person who wants to not only work with other people because you're obviously going to work with other people as a staff software engineer but who wants to have other people truly depend on them you know like their happiness almost depend on you that's end manager where a staff software engineer is like if you want to keep doing a lot of technical work that's probably the the path you want to go one thing i just want to add on there is i think i 100 agree with kind of the way you described it the one thing that i think people might forget is that if you're an end manager it actually still it's actually quite valuable to have the technical background though because when someone comes to you for a problem or they want to advance their career in a certain way being able to speak the language of an engineer and actually having been an engineer is invaluable in order to gain respect as a manager so even if you end up even if you already decided right now in your career that i want to be a manager for sure when i um advance my career i think it's still it's gonna pay dividends if you really focus on the technical side right now because that's going to basically give you a lot of respect and it'll help you in your end manager career as well yeah definitely and i think that at a lot of these big tech companies it's almost a requirement if not certainly a requirement to have been an engineer in order to become an engineering manager now if you want here here's one fun question that i just thought of um kind of a controversial question so feel free to to answer however you you wish but do you think that it's harder to become a staff software engineer than an engineering manager yeah okay this is a very interesting question i feel like so okay one one way to look at the question is through data right and if you look at the median manager level you'll actually find that the median manager is at a higher level compared to the median engineer in the sense that you know like this concept of a terminal level right terminal level basically means that you can get to the point of your career and stay at that level for the rest of your career and no one's going to force you to change right you're like you're productive you're doing good work and that level is actually one level lower than the terminal level for management right and so from that perspective you could argue that hey you know like if i wanted to just simply optimize my place on the ladder you could argue that you know it's better to go on the management track and i think honestly i think that's for some people that might be a motivation to go to management even though that's not kind of the best reason to do management ideally you want to go into management to help people right um but i think yeah like from that perspective it is kind of easier to kind of hit that terminal level um at a higher level on the manager track compared to the ic track yeah i think that i think that makes sense and i think that like here is just relying on data but then also you know relying on kind of um intuition obviously this can be debated but i think that the the higher up you go in the software engineering track like not ends manager track the more you really need to have like technical brilliance right and and yeah through technical prowess and that is again very debatable but but it's it's arguably harder than um influence or you know impact on people i mean it's a tough question it's a tough question there's no clear answer but it seems like the data indicates and and intuition kind of uh pushes you in the direction of believing that that engineering is a little bit more difficult than than management i and that's a really good point that you brought up like you talked about how you read this profile of this level nine like super super senior engineer and like when you get to that level of an individual contributor then you have to really be operating on the scale of like the work that i'm doing has not just team impact or organizational impact you're talking about company-wide impact and oftentimes industry-wide impact so you have to be inventing frameworks or inventing libraries that are now going to become the standard across the whole industry that's like the level that you have to operate at so yeah like i think that that's a really good point you could argue that that's actually very very hard to do consistently over the course of of your career whereas if you're a manager you can climb up the rank simply by trusting like building relationships with the right people and like getting that context and being able to put people in the right positions right so like there is an argument to be made that you know managers you don't need as much technical brilliance to advance up that ladder right which is debatably or debatably makes it a little bit easier but yeah awesome listen uh raul maybe we can talk about one last thing here which would be um what would you say the toughest thing you've had to do as a staff software engineer at facebook so i can't talk about the specifics of the project but i can talk about it kind of a higher level which is this is like a year-long project that i i took on and basically i was integrating this architecture into our product and the interesting thing here was that the architecture was already developed by another partner team um in the company and so my job was basically evaluating this architecture and trying to understand where would be the difficulties with integrating that into our product because our product actually had certain assumptions about it that made it not just a vanilla integration there were certain things that we had to tweak or modify so that was like one part of it that was actually quite interesting and the other part is i mentioned how i kind of sit between the front end and back end a little bit and so the other part of it was convincing all the people who who were going to be building new features on this architecture that i was migrating to and basically convincing them about the value of the new architecture and helping them in the migration so it's not only kind of a engineering challenge of gluing these pieces together but also kind of a marketing challenge or a communication challenge of making sure that people were aware of this migration and how can i make it as painless as possible for everyone on my team to be able to adopt this new architecture and in some cases that required actually doing the work for them or in other cases it meant being able to like consult and like give them technical guidance as they did the work but it really was kind of a wide-ranging project that touched almost every part of the stack it's very interesting how you put it like marketing i think that's actually a brilliant way to put it it's almost like technical marketing right you are you you effectively have to market to internal engineers your peers why this technical project is technically sound and this is like surprisingly hard when you are touching so many different teams and products and people and all that i remember like at google i was on google cloud and we had this big like google cloud-wide framework migration and it was just a huge like marketing effort to convince people engineers engineers like tls staff software users that it was a worthy migration to do so very interesting listen ralph thank you so much for sharing all this i think that this was super insightful super valuable i really hope that all of you watching uh were able to get a clearer picture of what a staff software engineer is does how to become one what's difficult about it i certainly learned a lot from this conversation um we did another video on raul's channel where we talked about coding interviews and and uh he asked me like what i thought about them we kind of dug deep into why companies assess candidates with that so definitely go check it out if you're interested i'll put the links in the description below and bro any last words no i think it's great i'm really glad we were finally able to find time to to put this together um i love teaching um like you talked about the stanford part and most of my youtube channel is actually focused on teaching primarily about android but also a couple other topics so i'd love to connect with people if they're interested um you know i can leave a comment on the video to just point people toward my my youtube or twitter i'd love to connect if anyone has any questions definitely and i know that like android is a pretty um mobile development in general but android is a pretty hot uh or highly sought out um sort of like skill these days so definitely go check it out if you're interested thanks again and um if you enjoy the video please smash the like button it really helps with the youtube algorithm subscribe to the channel if you haven't already follow me on linkedin and twitter if you enjoy short form written content instagram if you like pictures and otherwise i will see you in the next video bye see you all
Info
Channel: Clément Mihailescu
Views: 198,118
Rating: undefined out of 5
Keywords: what does a staff software engineer do, what does a staff software engineer at faang do, what is a staff software engineer, chatting with a staff software engineer, staff software engineer google, staff software engineer facebook, staff software engineer faang, day in the life of a staff software engineer, how to become a staff software engineer, how to become a staff software engineer at google, how to become a staff software engineer at facebook, rahul pandey
Id: qgKTof6rO2g
Channel Id: undefined
Length: 23min 51sec (1431 seconds)
Published: Mon Apr 26 2021
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.