How to Prepare for an Engineering Manager Role?
In this article, I want to show how a technically experienced Software Engineer can prepare for a transition to an Engineering Manager role, by starting to grow skills in their current role that they can later rely on in a management career.
I will cover:
- Key skill areas for an Engineering Manager: Leadership and People, Communication Skills, Strategy and Project Management, Technical Confidence, and Self-management.
- The importance of self-assessment in identifying motivations, strengths, and areas for growth — and the role of your manager in the process.
- 50 concrete actions and ideas you can try in your current Software Engineer role to grow the skills necessary for an EM career.
Let’s go!
What skills are needed for an Engineering Manager — and do you really want to be one?
Necessary skills for an Engineering Manager can loosely be grouped into the following five categories:
👥 Leadership and People
Building a healthy team of capable individuals and motivating them to deliver consistently high-quality products is probably the most important skill of an Engineering Manager. You should be able to build an attractive vision and rally people to work efficiently towards shared goals. To do it well, you need to be caring and empathetic.
💬 Communication
Excellent communication is one of the key differentiators of great managers. You must speak your thoughts precisely to avoid misunderstandings and misinterpretations, finding the right tone depending on the audience and the context. Mastering how you communicate in writing and conversations is critical for Engineering Managers, but these skills are also useful for the technical career path.
🎯 Strategy and Project Management
The Engineering Manager is ultimately accountable for an engineering team's output, so they must excel in strategic and project management areas to ensure effectiveness and efficiency.
🧑💻 Technical Confidence
It’s important for an EM to be technical, but probably this is an area where you will have the smallest gap to close. On the contrary: In my experience, coding can be a typical trap for first-time Engineering Managers, a familiar space tempting to escape towards when faced with too much discomfort in their new role. Prepare yourself for coding less while keeping a high level of familiarity with the technological aspects of your job.
🙋 Managing Yourself
Managing time and tasks are crucial skills of a good manager, and to be a solid support for their teams, they need to take care of themselves first.
Self-assessment and confirming your motivation
Go through each one of the above skill areas, and ask yourself the following questions:
- Would I enjoy working on these skills?
- What in my past experiences can I rely on to help me be good at this?
- What things I’ll have to leave behind if I go down this path? Am I OK with that?
- How difficult would this transition be for me?
- Am I motivated to learn and grow to be a manager?
Check my lists of reasons to go into Engineering Management – and also its evil twin. Make sure your motivations are towards the right things. Focus on the assessment aspect now, I'll list ideas to start closing the gap later.
Do a written self-assessment. Ideally, your company has a career ladder from which you can take the expectations for the Engineering Manager level — if not, choose a public one that you like, there are great ones available on the web. Do an honest check-in on how comfortably you think you could perform on this lowest managerial level. This exercise will help you identify missing skills and will be a great tool to track your progress as you learn and gain confidence. Finally, having this documentation ready when you work with your manager on an eventual promotion package will be gold.
The format doesn’t matter much, but I had a good experience with a simple spreadsheet, listing the various behaviors and expectations in rows, and having columns for “How much is this already expected from me in my current role?”, “Would doing this motivate me?”, and most importantly “How confidently can I perform on this one?”. The cells can be filled out with a simple Red/Amber/Green status, or a percentage scale, it doesn’t matter much — I haven’t found a lot of value in perfecting the granular details here. Instead, the self-reflection that goes into figuring out how you’re doing and what motivates you; and the eventual discussions with your manager are far more important than deciding if your mentorship skills are exactly 68% or rather 72%.
I mention your manager here. While your career progression is your responsibility, and you need to be the one pushing for your growth, your most important ally in this will be your manager. Share your motivations early, and then work together with them on identifying the actions you can take. Make it clear that this is the direction where you want to develop. It’s irrelevant if there are current EM openings or not within your organization, that shouldn’t be your worry today. It's not like you can do anything about it. Opportunities will come, now you should focus on learning new skills and preparing yourself for a future career that you’re enthusiastic about.
There are two goals of this exercise:
- Understand the real source of your motivations and commit to growing in this direction.
- Evaluate the size and nature of the gap between your current skills and the expectations you'll need to start closing.
What can a Software Engineer do NOW to develop EM skills?
Once you’re sure this is the direction where you want to grow, and have a realistic (and ideally, validated, by an experienced manager) view of your skills, dive into the learning — and one of the most efficient ways of learning something is by trying to do it!
I assembled concrete actions and practices below, grouped by skill areas, that you can already start doing in your current role. Most of these have relevance to the technical leadership path too, so even if you’re finally not too motivated by the people-management aspects of the job, the skills you’ll develop and experiences you’ll go through can be useful assets to rely on later in your career.
👥 Grow your Leadership and People Skills
1. Find ways to move out of your comfort zone, and learn to embrace the unfamiliar. Sign up for dance classes, try networking at a conference, or volunteer at a local charity doing something that forces you to talk with strangers. Build tolerance to being seen as vulnerable and allow yourself to fail, focusing on the learning aspect of what went wrong, why, and how you’ll do better next time now that you have had this experience.
2. Find a junior developer to mentor, in the team, the organization, or outside of it. Have regular sessions and hold them accountable for their development. Understand what their true needs are instead of pushing your agenda on them.
3. Organize a fun activity for the team. It’s not just the sole monopoly of the manager, and not every occasion needs to be an explicit team-building exercise. Do a game night, online if you’re distributed, visit a meetup together, go on a hike, or arrange a potluck lunch in the office.
4. Step in to facilitate a team ceremony. This is a safe practice ground because you are familiar with the context, the people, and the way of working. You might find having to drive requires more skills and confidence — but this is exactly how you start to gain those. You can start with simple standups, then move on to something deeper, for example, organizing and running an incident postmortem in an area where you already have deep technical context.
5. Participate in interviewing. Prepare well, understand what the Hiring Manager needed when they opened this position, and how the candidate’s skills could complement the team. During the interview, get to know the real person, not just their work experience. Leave a clear, decisive scorecard after, to help the hiring team’s job.
6. Ask to onboard a newcomer, or if that’s not possible, reach out to someone new in the company to get to know them better, and help them integrate. Beyond building new connections, this will help your empathy skills and allow you to hear an unbiased fresh review of your organization. I also found it motivating to talk with an excited newcomer, who sees every positive thing I already got used to and might take for granted.
7. Improve your active listening skills. During conversations, don’t focus on changing, but on understanding the other person's point of view. A good exercise is to repeat their argument with your own words before addressing it. This technique is also useful for finding better compromises and resolving conflicts faster.
8. Practice giving and asking for feedback. If you see a colleague doing something great, point out to them what is it exactly that they did, and what exactly was the positive impact of their actions. Being this specific differentiates great feedback from shallow praise or criticism, increasing the chance of the other person continuing the expected behavior. After finishing a project, presentation, or a big refactoring, go further than a code review, and reach out to an experienced colleague, asking what they think could have been improved in your work.
9. Ask for a skip-level meeting with the CTO, the VP of Engineering, or even the CPO or CEO. Hopefully, they are not so busy that they’ll have to refuse. High-level leaders can get a good insight into their organizations through these discussions, so there’s value for both of you. Let them know your aspirations (after you broke the news to your manager), and ask for advice. Make it clear that this call is not a push for a promotion at the company, you want to learn and are genuinely interested in their experience and wisdom to share.
10. Similarly, interview other EMs at the company and ask what made them choose this profession, what they find the most rewarding part of it, what advice they would give to their young selves, and how they navigated the transition from developer to manager in case they have a technical background.
11. Furthermore, build more connections within the organization, and go out for a coffee with someone whose job seems interesting, regardless of the department. Build your empathy skills by focusing on being immersed in their context. This point of view can give some surprising feedback about the work of your team too.
12. Read a book! I have four recommendations specific to entry-level Engineering Managers at the end of this article, but if you want to choose something specific in a different leadership area, I recommend my friend Jeremy Brown’s List of Good Books To Read For Leaders. Extra tip: Write a review after reading the book, or even better, organize a book club with colleagues or friends to learn together.
💬 Improve your Communication
13. Whatever you write, optimize for reading! As a rule of thumb, spend at least as much time editing as writing. Structure your text, start with your main point, and delete everything unnecessary. Don’t send anything you haven’t re-read if it goes to more than one person in a casual chat. Words have power, and this power can work for or against you.
14. Start a technical blog, internal, or even better, public. Anything that you’re enthusiastic about will help your motivation. For example, you can document and share your learnings on a technical area, or this journey of becoming an Engineering Manager. Doing so has the added benefit of better memorizing the new information.
15. Pay attention to how you comment your code, and what you write in commit- and Pull Request messages. What’s the audience and what is their context? Is what you wrote clear, concise, and understandable for them?
16. Examine your team’s documentation and find ways you can improve it. Create a table of contents with short, descriptive subtitles. Remove obsolete information. What are typical questions people ask from your teammates? Ensure those questions are answered by your documentation, and those answers are easily findable wherever people typically ask for them. This will also help protect the focus of your team as your support practices move towards being more self-serve.
17. As a small exercise, explain what your team does in one sentence, one paragraph, and one page. Write these down and add them to the appropriate places - Slack channel description, internal Wiki, presentation template, etc.
18. Learn to organize your proposals, and ask for feedback in a structured way: write RFCs! This is a great way to practice technical writing for a critical audience and to learn how to handle written debates pragmatically.
19. Sign up for newsletters and select interesting articles to share with colleagues - but always add a sentence or two summarizing them and explaining why you recommended them to this particular audience. This curation and editing exercise is an excellent way to improve both your empathy and writing skills.
20. Discuss with your manager to present a project update with Q&A that you are familiar with to stakeholders. Or, record a quick demo video showing a recent feature you’ve worked on. Simply record your screen explaining what you did in a few minutes. Showing your work is much more powerful than talking about it.
21. Hold a mini-training for your colleagues about something you’re passionate about. You can choose something technical that you’ve learned recently or a hobby of yours. Ask a few colleagues if they would be interested in a short session, and announce to the wider company when you have the time and place settled. Practicing this will help your confidence and improve some project management skills too.
22. Find local meetups where you can talk about things you worked on recently. These are usually low-risk environments with a few dozen participants, yet still are a great next step after internal speaking, and can build valuable external connections too. Once you have some experience, find relevant conferences, and apply to be a speaker. Working on your paper is also helping your writing skills.
🎯 Get familiar with Strategic Thinking and Project Management
23. Ask your manager to include you in stakeholder meetings, and planning discussions with the Product Manager or Project Manager assigned to your team. Understand the purpose of these meetings, observe how conversations are held, decisions are made, and conflicts are resolved. You can bring useful technical context to these discussions to make your presence valuable for others too.
24. Increase your involvement in one project extending your presence at both the start and the end: Understand what problems you are solving or product opportunities chasing. Monitor QA, rollout, A/B test, and user feedback gathering if these are not part of your team’s regular practices yet. Reach out to the PM on the team to help get the missing context.
25. On a higher level, understand the product metrics of the features you’re working on. See what data the Product Managers base their decisions on, how they A/B test, and what key performance indicators they continuously monitor. If your company lacks a strong product development culture, look outside: join a local product meetup, and get familiar with the tools and processes PMs use.
26. Sign up to participate in calls with your users, regardless of whether the discussion is support-, sales-, or product-development-related. In my career, most of the customer interactions I participated in left me with increased motivation, a feeling of purpose, and clarity of the work to be done. This context is a great help for a manager to prioritize — but equally useful for a software engineer to understand better what’s behind the features they are working on.
27. To extend the previous point, talk with your customer success team, and ask what are the most common support inquiries in general, and specifically about your team’s product. If possible, volunteer to handle a few support tickets yourself, or shadow a support specialist: the experience is invaluable to extend your understanding of user behaviors and pain points.
28. Get familiar with the job market: understand typical salary bands in your area and dig into recruiting trends. There are plenty of salary guides and similar material available for free or in exchange for an email address. Take these with a grain of salt, but work on having a rough idea about how much people are making on various experience levels, and how difficult or easy it is to find qualified candidates in the current climate.
29. Spend some time understanding the company’s business situation, and ask questions from your manager or department lead if something’s not clear. You should be able to get familiar with the basic financials of the business, the big revenue drivers and costs, and the trends and forecasts in these numbers.
30. Participate in other teams’ public updates, office hours, or similar ceremonies to get a good high-level understanding of what’s going on in the extended Product and Engineering organization.
31. Join a Production Incident response team, or at least ask to be allowed to shadow them. Focus on the dynamics: how temporary mitigation is prioritized over permanent resolution, making creative “duct-tape fixes” OK if they help the situation. Understand the importance of clear and frequent communication in crises, and the tools used to facilitate that during an efficient mitigation process.
32. Volunteer to help the Office Manager organize the next company event. It can be a great way to train communications and project management muscles - and you can get to know your colleagues better.
33. Understand how your manager does quarterly and yearly planning, and if possible, shadow them while doing it. Even better, ask for a smaller technical scope you can fully represent. Write down what excellent looks like for this area, the most burning problems to address, opportunities to change, and how balancing tech debt with feature development should look like. You might face resistance to your proposals from your manager, but the resulting discussion and understanding of different priorities will be useful regardless of the outcome.
34. Do an audit-like exercise about the processes and ceremonies of your team: what works and why is it so efficient? What could be improved? Practice empathy: understand the true motivations behind processes, who they serve, and why. Something might seem frustrating to you, but it perfectly satisfies a specific stakeholder need. Discuss your findings with your manager, but ensure they don’t take it the wrong way: frame it as discovery and a challenge for you to understand the context better.
35. Becoming a manager means you have to switch your focus from Self ← Team ← Company ← Customer to the other way around. Have a mental exercise about a current project of yours to discover and understand how your work helps the customer, contributes to the company's bottom line, adds to the team’s strategy, builds the experience of its members, and finally, yourself.
🧑💻 Re-balance your Technical Contributions
36. Participate more in Code Reviews - it’s not just a good way to understand the code outside of your scope, but also to practice giving efficient and respectful feedback to others, something you’ll have to do a lot as a manager.
37. Comment on RFCs and ADRs - if your company has these processes, find documents open for comments. Dedicate time to understand their context better, and constructive thoughts. Besides gaining a deeper context of your company’s product, this will also help you practice efficient and pragmatic communication, and potentially build valuable connections across the organization.
38. See if you can assign some of your simpler coding tasks to a junior person on the team. This will free up some time, allowing you to focus on more impactful coding works, but more importantly, it will help grow your delegation and mentorship skills. Nail the delegation aspect: be clear in what you want to see, but leave autonomy in unimportant details — and don’t mention if something there is not implemented the way you would’ve done it, if it has negligible consequences and is more about preference than quality.
39. Try to work with static code analyzers and similar tools, propose their introduction, or get in touch with the person or team maintaining them in your company. Using these tools will give you a good high-level overview of the codebase, and you’ll receive useful feedback on how healthy your team’s code is compared to the rest of the organization.
40. Participate in a company or external hackathon, but in a role you’re not very familiar with. For example, code in a different programming language, or even try yourself in UX, copywriting, or other product-related areas. Besides the innovation, learning, and team-building aspects, these events can be exceptionally motivating, while being a safe space to experiment.
41. Find an Open Source project and see how you can contribute — this will force you to quickly and efficiently understand an unfamiliar codebase, and identify effective entry points to add improvements to.
🙋 Manage Yourself
42. Be conscious and proactive in time management: today, most of your work is done in solitude or pairing with other developers. In the future, it’s important to separate and protect focus time from interaction time. Having the skills to assign time for deep, concentrated work will also help you as a Software Engineer. Add clearly and transparently to your calendar what you’ll work on and when — this helps communicate your focus to your teammates and, also organize your day and hold yourself accountable.
43. Experiment with quitting internal chat or email from time to time when you plan to focus on something. Minimize multitasking, and have clear expected outcomes from yourself after every focus time session. Evaluate how this is going and adapt as needed.
44. Take small breaks during the day and set clear boundaries between work and life by implementing day-starting and day-ending rituals. This discipline will help when you have more responsibility and need to decide what tasks you have to say “no” to.
45. Start a self-reflection practice: write a journal, maintain an ongoing list of wins and fails, dilemmas you’ve struggled with, decisions you’ve made, and the reasons why you chose what you did. Read back regularly, to ensure you’re finding the learnings and incorporating them into your day-to-day. Sharing a version of these with a trusted group of people, including your mentor or manager ideally, can help receive useful feedback.
46. Build goals for the month, quarter, and year. Track your progress in writing towards these goals. There might already be a regular goal-setting exercise at your company. If it makes sense, integrate the two, but it’s perfectly fine to have your personal goals not heavily influenced by organizational requirements.
47. Maintain an up-to-date task list, and select the most important thing to focus on for every day that gets you closer to your goals. Curate this list regularly, to ensure things you don’t want to work on now are not tempting to take your attention. Experiment with task-management frameworks like Getting Things Done.
48. Exercise your note-taking muscles: capture the main points from meetings, just for yourself if it doesn’t make sense to share. This skill will be inevitable when you’ll have to juggle half a dozen 1:1s every week with interviews and team meetings.
49. Learn about decision-making frameworks and how you can apply them in your life. Get used to having to decide in ambiguity. Board- and card games where limited available information plays an important role can improve your confidence in these situations. Poker is a good example, but I’m a big fan of backgammon. I find it a perfect game to teach you to accept the role of luck in life, and still encourage you to concentrate your energies on assessing quickly changing situations and focus on what you have the means to impact.
50. Build a support network that you can rely on during difficult times. Share your aspirations with a trusted friend or relative, and explain what you’re doing to achieve these goals. Find a mentor you can learn from and share challenges with, ideally within the organization, but not in your management chain, so the person has both context to be relevant and distance to stay objective.
Final Steps
By this point, you should have a validated aspiration of going into Engineering Management, assessed your current skills that help you prepare for the role, identified gaps to close, and have a few ideas to try to get the experiences needed to be able to do a good job. Congratulations! It’s a great milestone to reach — but the hard part of the work comes now.
Align with your manager on a growth plan, break down the missing skills to have no more than 2 things to focus on at the time, and create a development plan with a timeline describing what activities you want to try and when. Do regular check-ins and follow-ups to track progress and document your development.
Useful reading
The learning won’t stop with a successful EM promotion - to the contrary. I found these four books valuable to start a successful Engineering Manager career:
- James Stanier: Become an Effective Software Engineering Manager - An easily approachable and practical guide for the day-to-day life of an entry-level Engineering Manager.
- Camille Fournier: The Manager's Path - A concise and practical guidebook to navigate the various stages of an Engineering Manager's career, offering insights on leadership development and team dynamics.
- Kim Malone Scott: Radical Candor - A deeply human management approach combining personal care with direct challenging, building a healthy culture of open communication and support.
- L. David Marquet: Turn the Ship Around! - A leadership model centered on empowering team members with decision-making authority, promoting a culture of accountability and innovation.
Good luck on your journey!
I write about Engineering Leadership topics similar to this one. Sign up here to receive my future articles by email.
Update: We've discussed this article with Jeremy on our weekly podcast The Retrospective, adding thoughts on the topic. Check out the episode here, the segment discussing Focus starts around 30:25.