Jing Dong - Getting your senior software engineer role
Video Transcription
So let's start looking at um uh software engineer levels. So generally, software engineer uh can divide into uh following levels. Software engineer, senior engineer, staff engineer, uh principal engineer and distinguished engineer and uh fellow. This is a generalized list. So each individual company has a different structure.
Um So Google's structure is the most influenced um uh in the industry. So you can see uh this graph from level dot uh FI I and then you can also search uh levels and salary on glass store. Um So, so when we talk about software, software engineer, um we talk about the junior and then entry level software engineer. So uh the average salary of a junior software engineer is about 100 15 K per year in Bay Area. So senior engineer can go normally have a 3 to 5 years experience and the average salary in Bay Area is 100 34 K. And then here after senior engineer, uh you can go to two directions, you can become an engineer manager. So uh oh you can become an individual contributor to the project. So that would be staff engineer. Uh So staff engineer normally means you have six plus years experience and then have a salary average of um 100 40 k. The next level is the principal engineer. The majority engineer um will not progress to this level. Pri principal engineers average salary is between 100 49 K to uh 900 07 K. And then if you keep going on the engineer path, you can become a distinguished engineer or a fellow. So there's really no limit on your engineer salary, but this, this position is really rare. So um so here we only talk about um uh salary. So you will also got stocks, sign on boner and so on.
So if you combine the entire package together, the number will be bigger. So it wasn't a surprise if you heard uh a senior uh old staff engineer telling you about he or she uh makes 500 K per year. So um let's move on to the next steps. Um So here we are focused on the gaps between junior and the senior engineer. Uh We mentioned the salary in the previous slides. Uh The experience is a month of year you have worked, but this doesn't necessarily define you seniority for some people. They can reach a higher level in a shorter frame. Uh management and leadership skills is also important. A senior engineer is able to take more ownership of a project training, junior engineers. Um The knowledge part is the most important part. So to reach a senior level, you need to have expertise on a wide range of tools or technologies. For example, if you are backend engineer, you need to know caching, for example, reddit and you need no message Q uh for example, Rabbit MQ, and then you need to know microservice. So the list can keep going on and on. And then for your code, your code need to be easily maintained by other engineers and can be easily understanded by other engineers. So you need to know uh system architect, designs, performance, and then you need to take more ownership compared when you are a junior engineer.
So instead uh working on part of the project, you won't be able to guide the junior engineers on their project, um help them to finish their project. So how can they close the gap? So basically, we need to learn uh and uh professional growth. So professional growth, I mean uh is within the company. So you want to take more responsibilities. So you want to take responsibilities to the next level and then for learning part. So one thing is really good because you have the job, so you can get the on the job training. So basically you would learn, like for example, the uh rabbit MQ uh reddit, everything your company use, you would learn during your work and then you can also get some specific training program. Uh There are big companies or third party. So something you probably want to use a specific tools um inside the Google Cloud or Aws. Uh There's other online studies is really helpful. One place is called the Cora. Uh You can get say if you are uh engineer, you want to move to data scientist, so you can even get a certificate on Coursera. Um So yeah, and then uh you would need study system design. So you would study system design within the project in your company.
And also another really good way to study system design is the study system design interviews. A very popular one is called blocking the system design interviews. Um Yeah, so let's move on to the next slide. So, so while we were learning and then growing, we need to look at getting to the senior position. So one way to do so is we got promotion within the company. Another way is we interview senior software engineer at other companies. So, um but regardless like which one we uh going to get how, regardless how we get to the senior software engineer roles, we need to learn and um move to next one. So here I will talk more about uh senior software engineer interviews. So one thing you would say is a really simple one is uh lit code. Everyone knows lit code. Um So the good way to study lit code is um you do like a certain amount of questions in each category, say you do two questions in dynamic programming, two questions in linked list, uh two questions in tree. So you set up timer, for example, you set up timer for 20 minutes and uh you see whether you get to the solution, you or you don't, if you don't get into solution, don't look at a solution.
So you want to keep practicing, like you problem solving skills and you want to keep practicing um how, what, how you de develop this thought process. Um The most important part would be the system design question. So let's look at this graph from the level dot fi I, so you can see Google have uh a few levels. So level three and level four is basically software engineer. So level five is a senior software engineer. So if you ever talk to a recruiter, uh you get the interview for level three, you wouldn't get system design question. For level four, you will get one system design question. It won't be really difficult. But for level five, you would definitely get one or two system design questions. And then one of the question would be a hard system design question. So and then majority time when you get this interview that actually is really hasn't defined your level, say you are level four or level five, but they actually using your system design uh result to distinguish your level. So you can be marked to be senior or not senior. Uh So other questions to prepare a senior software engineer would be a behavior question. Uh As Aaron know, the popular one is the Amazon leadership principle. And then the third thing is to start building uh connections.
So you will more likely to get hiring attractions or have a faster hiring process if you have a referral in the company. So to build the connections, one way is uh is really simple. We just ask our friends and then we ask our friends, friends and then we can go to meetups, company events and then study groups. So even even when you meet someone is probably not directly give you a referral, but you like you slowly build new connections. And then especially if you start building connections with recruiters, you want to really keep a good relationship. Even if you pass the this interview, uh let's say um today at Amazon, you would be able to interview in six months. I'm talking about online assessment. So then you can go back to connect the same recruiter and the recruiter would send you a link for the online assessment. So today, uh we basically talk about software engineer levels and then we talk about the gaps between junior and senior engineer and then learning and the growth. And then we talked about uh senior engineer interviews. Um So yeah, I hope this one is helpful and then the most important is be curious, humble and be patient one step at a time. Uh Thank you. So much for taking time.
Uh If you want to get connected with me, uh you can check out my, my twitter. Thank you. Oh, I saw there's some questions. Um Yeah, I will aid you on the linkedin. Uh Yeah, yeah, I would love to be connected. Uh And another thing I think if you are a student, it's really good to join all the groups, some group like um uh women who code, they are really well organized group. And then if you look at their directors in San Francisco or the lead of a woman who called in San Francisco or something, they, they are actually um students in the university. So in that way, you would already can practice like algorithm and data structures and then a lot like you would um start making new connections and, and also they run a lot of like really good events and then you can also uh hosting event or to be a mentor in the event. So you can also practice your public speaking. So the second one is the resource for system design questions. Uh So one good one is uh uh is called uh so the system design question, one super super popular. If you check this website, the code that I do um I'll put in the chat. Uh So it's called the educative um dot IO, it's called the Groin, the System Design interview. Uh So this one is really um popular and then another thing is called uh Hi.
Um Like me actually pull up some of my list. So system design. Uh The second one is this website is called the high scalability. Yes, exactly. And then another one really good one is this one is on github, it's called the system design uh premiere. Yeah. So, and also you would also see a lot like free youtube videos about design um a system. But I would say look uh um look at the one at uh blocking the system design interview. So that is actually cover a lot, a lot of really important information. Uh So what do you think about titles, the start up? Uh And the big corporations uh um I would say don't focus on the title too much because I definitely know people um if they are like engineer manager in a kind of like smallish company, but then even some like a product manager, but when they get into the big companies like Google or Facebook, they still get this um like entry level engineer position, I think focus on what you learn and what you know.
So, yeah, uh I'll post my linkedin. Um um Well, who I this is my linkedin. Yeah. So any questions and anything I can help with? I don't really know much of in cyber security. Uh I don't think it is, but I do find that if you say if you start working in a media company, you're likely to get your next job in a media company. So if you start working on back end you're likely to find a job in back. Um, and so if you start working in a company in security, you, your next job more likely to work in security. Yeah. I don't think it's a must for software engineering position. Uh, do you think it's easier to promote within a company or get higher, uh level by changing a job? I think it depends. So, so if you want to get, so I think you would try, you would want to try both. So if you want to promote it within company, you probably um so just talking about promotion inside the company, so you probably want to um maybe have a list of things. What do you have done so far of what you uh you have improved and also you want to have a conversation with your manager. So there's a really common thing people call this thing is called the uh uh grab uh uh spreadsheet or something.
So basically you write down all you have done and what you all have you improved and then you keep communicating with your manager, keep getting feedback and also telling him what you have done so far. And then so he, because the new manager normally don't really track what detailed jobs you have been working on, so you can have the summary and then you get feedback from your manager. And then you um you tell him you had been in uh uh improved. But then um also, I think a lot of people saying it's good that you find a mentor in the company. But I would say is um uh how can I say this? So it's also even, sometimes even you try working a lot, you might just not get a higher position within the company, but you should try. And then also um yeah, and also you should making this continuous learning and improving to be your main goal. Uh So not promotion is part of your goal, but not direct goal, but you also have to be keeping good relationship with your coworkers and then you can support them eventually. Maybe you get this position or you don't but you actually improve. Um I hope I answer this question but I think you should always looking for the next job for, for the, for the job in other company because I definitely know someone, they're really junior level.
But then he just got accepted at a like a big company and he just worked for six months and he got promoted to senior. But his previous work, he never really got the chance to promote to senior. But I mean, you always looking at both directions. Oh, so one there's a few books. So let me go to the Amazon. So um uh mhm um actually let me get the book. Um So, so this book is actually called the Design um Design Data Intensive Applications. I think this book is really the best system design book. Uh It's really comprehensive, it's kind of like a reference book if you can understand, maybe not all uh like maybe even small percentage in this book. I think you is, I think if you completely understand you would be above staff engineer level. So this one is a really good book But I actually thinking all the online classes for system design is really helpful. So especially I personally find helpful is um to listen how other people design. I just say design uh um youtube, how other people like end up how they explain how they design the questions. So, so cause system design question is really open ended question. Uh You might just say, oh you worked on one part, maybe for this interview, you design youtube, but you end up just to really focus on the database part. But for different uh question company you get interview, same question.
Maybe they want you hear more about maybe um something like a load balancer or, or something. Um It II I find it's really uh nice to listen how other people uh design a system. Cool. Yeah. Thank you so much. Um Oh no, no, not this topic. Um Cool. I guess I'll close for the sessions if there's no questions. Cool. Thank you so much and also feel free to aid me on linkedin and to see if I can help you on anything. Thanks. Bye bye bye.