BrandGhost

Mid to Senior Level Engineer - Engineering Manager's Advice

As software engineers, one thing that's important for all of us is understanding our career progression. Unfortunately, this can be a difficult thing for many of us to manage, especially in mid-level engineering positions trying to work toward more senior software engineering roles. As an engineering manager for over a decade, I wanted to be able to offer you my suggestions on going from a mid-level to a senior-level software engineer. While I can't promise you that this will get you promoted (nobody can), I can stand behind this being the advice I give to the engineers that I manage.
View Transcript
as software Engineers one of the things that's top of mind for all of us is how we can progress in our careers and having level set expectations at work to understand what you should be focused on in order to be making that necessary progress is really important I've seen a lot of other creators online offering some great advice in terms of their experiences as senior software engineers and how they were able to get there and they share that with you so that you can understand their journey and how they did it I wanted to chime in because as a principal level software engineering manager at Microsoft and someone that's been an engineering manager for over a decade I've had to work with a lot of Engineers on this type of transition in their career so instead of sharing with you my personal experience about how I went from a mid-level software engineer to a more senior software engineer I want to share with you my experience as an engineering manager about how I coach more junior or mid-level Engineers towards their senior software engineering position it's not for me to say that my perspective is better I just want to give you a different perspective than what you might be hearing from other people if that sounds interesting just a quick reminder to check that pin comment for a link to my free Weekly Newsletter and my courses on dome train if you want to level up in your C development so the first thing that I want to mention as we get into this because I feel like it's the most important part is about expectations with your manager and I want to call this out in the beginning because I think that anyone offering you advice if you're hearing what they're saying and they're saying something like follow these steps here's the path to being more senior the reality is that it's not really going to make a difference with your current manager if that's not what your manager thinks that you need to be doing the advice that you might be hearing might be great and I'm not trying to Discount that but it might feel frustrating if you're following this advice that someone gave you on the internet and your manager just has a different perspective about what they want to be seeing in your development so this first piece of advice that I'm trying to offer you is make sure that you're making the time to talk with your manager about your career progression I can't speak on behalf of every software engineering manager that's out there but I do feel like that it's literally our responsibility as engineering managers to help you grow in your career and part of that is making sure that you and I have the same expectations about what you need to be focused on in your career development so how do you approach doing that well if you have one-on-one time with your manager try to carve out some of that time to be talking about your career development things like status updates can be helpful but they're not really going to be helpful in terms of you making progress in your career if you don't really know what the expectations are so try to give your manager some notice maybe say hey in our next oneon-one I'd like to be able to talk about career EXP expectations and the things that I need to be focused on and try to make it clear that you are looking for clarity around expectations and transparency about the important things you need to work on I realize that this sounds very general but I think this is the most important part because I could tell you anything like oh just double down in your technical skills or double down in your you know informal leadership abilities but the reality is I don't know you because I'm not your manager maybe I am depending on who's watching this but without knowing your skill set what you need to be focused on like that's what your manager and you should be talking about and I think that if you have that cleared up it's going to be your best bet for making sure that you're having progress in your career development and I'll mention that if you're having difficulty having this type of conversation with your manager because they're not open to it that honestly it might not be a great team to be on they might not be a great manager if they're not able to have career conversations with you so do try to bring it up with them without springing it upon them give them a little bit of a heads up because sometimes engineering managers were a little bit awkward and if you just surprise us with something it doesn't give us enough time to prepare and have thoughtful responses so provide a little bit of a heads up make it clear that you're just looking for some transparency about what to focus on and try to have a constructive conversation about level setting expectations okay now with that big generalization out of the way I have three different categories of things that I think are again generally the most applicable aspects for trying to advance towards senior those three categories of things are doubling down on your technical abilities so things like design and architecture the next one is looking at project management types of things so how you go from a strategic level to like tactically trying to organize projects and get work done and the third is going to be more of this informal leadership and mentorship now these things are separate but it doesn't mean that you need to be only isolating and focusing on one of them in fact I think all of them are equally as important they're all super beneficial but depending on where your strengths are the different things that you've been talking about with your manager and some of these opportunities that you maybe have not demonstrated at your current level you may want to double down and focus on some of these in particular again I'll reiterate that doesn't mean ignoring the other two if you're focused on one it just means that you might want to pay more attention to one if you haven't had a great opportunity to demonstrate it okay let's talk about the technical design and architecture aspect what I don't like to do with the engineers on my team is say hey look the way that you're going to get promoted oted to the next level say that's getting towards a senior level position is you just need to complete the architectural design for this have a really good design make sure you get it reviewed and if people have positive feedback on this that's your that's going to be your ticket to you know senior promotion and I don't like doing that because it's just not accurate and it's not really right but what I do like to be able to say is that if someone needs to be able to bring up some technical skills or they haven't had an opportunity in recent time to be able to to demonstrate the depth of technical knowledge and Architectural design then I'll say like we should be trying to look for some projects where you can be able to demonstrate that it's not going to be a check the box do it once and that's your ticket because the reality is if priorities and things pivot and change and they don't have that opportunity come up I don't want them to be sitting there thinking well I guess I'm screwed here I can't get a promotion because I didn't have this opportunity but I do like to call out to them that I think it's a focus area that would be beneficial and if together we can look for projects for them where they they can demonstrate that that it would be a really good opportunity the way that I might expect to see this done is going to vary entirely on your organization and how you guys approach your different architectural designs but in general being able to say something like we have this problem that we're trying to tackle and we need to either create a new system for it or we're trying to update an existing system to be able to accommodate something but that current system or the new system it's not something we entirely understand yet we have to come up with something that's going to explain how we would go Implement these things things so whether that's including a new technology whether that's creating that new technology doing some type of analysis and breaking it down it could be like a one pager that you start with explain what the different problem scenarios are and your initial approach for how you might go tackle that and why and from there collecting some feedback from your peers right it could be other people on different teams as well if they're going to be involved and trying to just get this initial idea where the stakeholders that are involved with that are understanding like yeah we're on the same page this is a problem we agree that we want to tackle and in this direction at least and once you have some buyin from that you'd be looking at saying okay how do we start breaking this down into an actual system design and this is where things are going to look completely different depending on what you're building of course but that could mean like doing block diagrams and trying to talk about the different components of a system talking about what's existing what you're going to reuse what's new trying to talk about how these pieces work together maybe some Concepts around the analysis about why you're picking these things so that other people when they go to review this document you're having conversations about it they can understand the reasons that you're trying to select these different pieces of Technology they can understand why you're saying these blocks should be working together in the system and then they can offer their feedback on that but when it comes to technical design I think that there's a couple of things going on here and one of them is really your ability to communicate ideas about complex systems and how your systems are going to solve problems and part of that clear communication is going to be thinking about the stakehold holders cuz that's probably going to be other more senior level software Engineers they're going to be signing off on this work it could be different roles like project managers or product managers to make sure that they're aligned with some of the things that are going on there but ultimately you need to be considering the audience that's going to be reviewing this document and that way you can think about the ways you need to clearly articulate what you're thinking going back and forth on the feedback is going to be another really valuable thing because that's going to give you this opportunity to have constructive debates right you might be proposing something and maybe another engineer or another stakeholder has a different opinion about that and then you guys can have a really good conversation about the different pros and cons and the way that you're weighing things out you'll often find that the best solution is not yours and it's not theirs but it's something in the middle and coming together on these different things can be really enlightening but that's kind of a high level view of maybe diving into some more technical things and having that under your belt the next one that I want to talk about though is around projects and being able to take something a little bit more strategic and then trying to show that you can Implement that tactically and one of the really cool ways that you can do this is if you're positioned to be able to take a little bit of technical leadership in an area and that way if there's more junior level Engineers working with you you can work on delegating tasks to them so what this means is that you're able to take more complex things trying to find different ways that you can parallelize work or order work in terms of dependencies and try to align some of that work for the different team members that you have of course you're going to want to have conversations with your manager about this because if not how your team's organized and you're just sitting there delegating tasks to other people that might feel a little bit weird but I try to work with the engineers of my team to make sure that if someone's going to be doing a project like this that I establish someone who's going to be the Project Lead and that way I'll let the more Junior Engineers know hey look this person is going to be leading this they're you know responsible for some of the design here they have you know they want your input they're getting input from other people that's kind of been figured out and then from there you're going to be working with them on the different parts of this and that means that ultimately they're going to have some ownership in the different priorities in the order that we want to go tackle things and I think this can be a really awesome opportunity for engineers working towards senior because it shows that they're able to try and analyze how things have to get done it's kind of this Middle Ground between looking at the different technical pieces that we have and some of the informal leadership aspects where you need to get people to Rally behind things and get motivated to get work done and you tie it all together with trying to deliver value in the product or the service that you're working on so really bringing it back to this business value and truthfully this is a really unique set of skills that's difficult to work on if you're not given the opportunity but if you can practice this it's really awesome to be able to figure out how you decompose these priorities how you try and order them how you work through different blocks especially if you have other partner teams you're working with different stakeholders you might have things that come up where other teams are blocking you from getting work done so how do you navigate that right how do you problem solve across these different teams and maybe come up with an alternative strategy for how you have to go approach something it does truly require having a good technical understanding but it's also going to get you focusing on some of these human skills where you have to make sure that you're problem solving and communicating with other people this can be a challenging type of thing to have an opportunity for but again this is something that I try to make sure with Engineers on my teams if something like this comes up that I can try to make sure that people that are kind of heading towards that mid-level to more senior level engineering role that I can get them kind of slotted to do that and it might depend on their skill level and the priority of the thing cuz if there's maybe a really high priority and a more senior engineer that's able to tackle that it might be a better fit for the business to be able to do that but it could be a really awesome growth opportunity for that engineer that maybe is a little bit more Junior but still positioned pretty well to stretch a little bit into that role and that's going to bring us to this third area that I really like to have people focus on and I think that it's just universally valuable and that's going to be more informal leadership and mentorship I honestly think that this is is something that you can't go wrong with in your career and that it's always going to be a beneficial thing even if you're trying to help other people get better selfishly by trying to teach them different things you are going to reinforce your own learning because you have to come up with ways that you can teach people and you'll notice that maybe you don't know things as well as you thought this happens almost every time I make a YouTube video it's just such good practice to explain Concepts and find different ways that you have to articulate that to different audiences but selfishness aside when you're trying to help other people level up so they're more junior level Engineers right you're taking the time to make sure that they're getting unblock that they're understanding things more quickly you're giving them those opportunities that either you had and it worked well for you or you didn't have and you wish you did when you were gramping up what you start to notice as you become more senior in your role is that when you work together it's ultimately going to be more productive than if you're working alone so if you can make everyone around you a little bit better it's going to be a bigger net positive effect than you just trying to double down on the work you're doing it's literally the reason that we work in teams now having this type of focus doesn't mean that you're automatically going to be going in like the engineering manager Direction because truthfully a lot of these skills when it comes to informal leadership they're going to have a lot of really awesome carryover into the two other things we already talked about and if you're sitting there going well Nick how is it possible that doing some of this informal leadership and mentorship is going to be valuable at all when it comes to something like technical design right how is that going to play into the architecture well a really simp example is if you're working on trying to Mentor someone and explaining complex topics to them in a way that they can understand that could be super valuable in an architectural discussion you might be proposing something and you have a solution for it and if you're able to articulate clearly to the other people why this is valuable because you've been practicing this kind of thing you might have an easier time selling your idea to the other people that are involved truthfully just working on your communication overall is going to be a net benefit for the more senior level software Engineers that I work with so as their level is increasing I do have a greater expectation that they are helping the other Engineers around them this might look different where you work it might not be you know rewarded as much for being able to do that because they want to see more uh individual contributions so I can't make this statement in general for everyone everywhere but at least for the engineers I've worked with you know as I said being an engineering manager for over a decade now this is something that I've rewarded and I've worked in organizations that reward this kind of behavior as well but that's going to summarize these three different areas that I think are really important for you to be able to focus on and again none of them are necessarily just better than the others but there could be an opportunity for you to focus on one more than the others so what we looked at was architectural and this technical Focus there's this concept of being able to manage projects so taking something strategic and then tactically implement it and then this idea about informal leadership and mentorship and if you're trying to figure out which one of these is most important for you to work on next remember what I said at the beginning of this video and that's have a conversation with your manager to have level set expectations about what's most important for you to focus on next if you feeling a little bit lost about this feel free to reach out to me on social media I'm on basically every platform send me a message give me a little bit of background I'm happy to have a quick chat with you and see if I can have an understanding of where you're at and what I might think would be beneficial and because I'm not your manager that doesn't mean it's going to help you get promoted right away or something but it might just help give you some more context about what I think would work I hope you found this helpful and if you have any other questions just leave them in the comments below and I'll try to respond to you and help you out thanks and I'll see you next time

Frequently Asked Questions

What should I discuss with my manager during one-on-one meetings to advance my career?

I recommend carving out time in your one-on-one meetings to talk specifically about your career development. It's crucial to have clarity around expectations and what you need to focus on to progress. Let your manager know in advance that you'd like to discuss your career expectations so they can prepare thoughtful responses.

What are the key areas I should focus on to transition from mid-level to senior software engineer?

I believe there are three key areas to focus on: enhancing your technical abilities, improving project management skills, and developing informal leadership and mentorship capabilities. While all three are important, you might want to prioritize one based on your strengths and the opportunities available to you.

How can informal leadership and mentorship help me in my technical role?

Engaging in informal leadership and mentorship can significantly enhance your communication skills, which are vital for technical discussions. By explaining complex topics to others, you reinforce your own understanding and improve your ability to articulate ideas, making it easier to gain buy-in for your architectural proposals.

These FAQs were generated by AI from the video transcript.
An error has occurred. This application may no longer respond until reloaded. Reload