Engineering Management: An Overview
I was an engineer for most of my career and one day I became a manager and I was quite lost and afraid in the beginning, I realized I hadnât shared my experiences from back then. Iâve been doing engineering management on and off for the past couple of years and I decided to share a short summary of what I learned.
A lot of this is stuff I learned from books, articles, websites, and some of this is stuff I learned on the job. Full credit to all the resources I learned from is at the bottom in the âGreat resourcesâ section, and I heavily recommend exploring them if this article captured your interest. I like to use the term âMakerâ (engineer, designer, or anyone who makes stuff) and âManagerâ, both of which I learned from the book Leading Snowflakes. I wrote this from the perspective of someone who has been a Maker for most of his career and transitioned to Management a couple of years ago.
What to expect
You need to write, a lot
Meeting notes, peer feedback, feedback to you, documenting a task before you hand it to an engineer, and so on. Think of yourself as the standard for documentation in your organization or team, because you kind of represent that now. Youâll get so much in your plate that itâs impossible to remember it all, writing is your best friend.
Youâll talk to people and be in meetings a lot more
Management is all about people interactions, youâll be dealing with people a lot more than before and that means meetings. Too many meetings for your team is a productivity killer and thatâs also something youâll need to figure out how to cut down if it becomes an issue.
Learn to measure your success by your teamâs success, not what you make yourself.
When I started being a leader I was used to measuring myself as an engineer or as a âmakerâ (measuring by what I make). When I first started being a manager I used to feel like I havenât accomplished anything in my day and this was difficult.
Youâll be exposed to a lot more conflicts
Youâll see a lot of conflicts between people, sometimes over very small issues. A lot of your time will go towards handling them. This may not be the case for every manager but it was the hardest part of the job for me.
Hard Choices
Youâre gonna have to let some people go, youâre gonna have to step in to break up conflicts, and sometimes youâll have people who are trying their best but still hurting teammates. This isnât an easy path and itâs full of people issues and conflicts. Even if you have a great hiring process, it wonât be perfect and youâll hire the wrong person sometimes. Thereâs no right or wrong answer in almost any situation, you need to have peers and mentors you can trust and ask for guidance. Donât make hard decisions alone, and definitely donât make them when youâre not calm.
Youâll need to do things that many people donât want or arenât willing to do
Improving code standards, bug report structures, doing some things manually until theyâre automated, improving communication between your team and other departments, and so on. Your goal is to keep the team focused and removing obstacles from their way, and those obstacles are often easy/boring tasks that no one wants to do.
What to strive to do
1:1 meetings
Regularly sit down with your team mates, connect with them, understand their goals and what they want to achieve and learn, understand whatâs troubling them. Put this on a schedule, itâs extremely important to do this regularly. Write down the main points that go on in your 1:1 meetings, itâs important for everything you need to do on this job.
Mentorship
You need to help your teammates get better, sometimes in what they want to get better at, and sometimes in things you believe they need to learn for the sake of their team. This can be accomplished by pairing them with someone more experienced in an area they want to get better at, getting them access to websites like PluralSight, etc. Sometimes by mentoring them yourself. You have to give them goals, ask them to experiment with new things, help them write articles, give talks, and so on.
Scheduling
Youâll probably be in a lot of meetings and people need an easy way to sit down and talk with you. Have an easy way for them to book some of your time, Google Calendar, Freebusy.io, Calendly, etc. are all great tools for this.
You also need to learn to switch between your Maker and Manager modes, itâs good to regularly have this scheduled either some days of the week or some hours of certain days. You need time to hop on in and review some work (pull requests, designs, etc.) and contribute to them too.
Keeping your âMakerâ skills polished
You wonât have as much time for âMakingâ as you used to before, and you might get rusty. Take the time to keep yourself up to date with what your team is doing, and of new developments in your field. You need to be able to understand at a general level what your team does so you can help them prioritize.
Keep a list of tasks
Donât forget anything. Write things down. Anything anyone asks of you, jot it down on some app and slap a due date on it (I use Todoist). This list is also great for delegating. Got a complex task coming up that youâd like a teammate to have experience in? Delegate it. Got a lot of meetings today and your teammate asked for access to something or to try out a new tool, write down the task, donât forget them.
Hiring
The first thing you need to look at when hiring is whether these candidates will fit in with your team or not. Sit down with your teammates and peers and decide whatâs a must-have and whatâs a nice-to-have for your workplace. Do you care about about writing well in your organization? Are you ok with people learning it on the job? Or is it a must-have to even join?
Avoid brain teaser interview questions, avoid theoretical scenarios and whiteboard questions that people will never have to do on the job, and make sure your hiring process involves the most real scenarios as possible. Get the candidate to work with your team on an actual task, and compensate them for it. Microsoftâs new process is my favorite way to hire, I highly recommend reading it. Not all organizations have the resources to do all this stuff and thatâs understandable but try your hardest to accomplish these two things when hiring:
- Get the candidate to do some real work.
- Have your teammates and the candidate interact when doing real work.
Hire juniors
Too often organizations only look for people who already know most of what they need and donât hire enough juniors. Juniors are great to have in any organization because they want to learn and thereâs a lot of them. A lot of the time after juniors grow and gain more skills within your organization, theyâll start to get better offers from other places so some think this isnât a good investment, but I believe this is something organizations must try their hardest to do, especially in developing countries, because those juniors need to grow and they need help and training, and because youâll have more manpower to deal with the many small bugs that are often overlooked.
Let your team grow / delegate
As a manager, you need to delegate. Jumping into Maker mode to get something done is something you were probably used to before but you now need to let your team be responsible for most of the âMakingâ.
Learning by doing is the best way to learn. If thereâs an area youâre an expert in as a Maker, donât immediately jump in to Maker mode and try to do it, let your teammates experience it and grow. Write them a short guide of what needs to be done and things to look out for and trust them to get it done.
Encourage knowledge sharing
Ensure your teammates have an accessible place to find and share lessons learned, no matter how small they are (Something like StackOverflow for teams, etc.). Ensure that nobody on your team is afraid or embarrassed to ask questions, regularly encourage your team to ask anything they can think of, and make sure your team is composed of people who are ok with that.
Always be open for feedback and change
I like to have a GitHub repo in my organization for everything related to how I do management, how 1:1 meetings are run, what I strive to do as a manager, what teammates can expect from me, what I expect from them, and so on. I put it in a GitHub repo because engineers are generally used to working with GitHub and are used to changing things with pull requests, so I wanted to be like that. Make a pull request to change how your manager does something đ
Get your team to be able to function without you
This isnât to say that youâre supposed to be useless or make yourself obsolete but that you should not be a blocker for your team. Imagine yourself going on a vacation for a month, what would go wrong? What tasks are you a blocker for? Will the person leading in your stead know what to do? Have you left them the necessary information? Does the team know what to work on? Do they know what to do or who to talk to if some disaster happens? Try going on short vacations every once in a while and see what goes wrong. At the beginning youâll most likely find that a lot of the things you handled as a âMakerâ arenât being done anymore and you need to both make the team aware of them and delegate them.
Great resources
Books
Leading Snowflakes - Full of practical advice on day-to-day things you need to do as a manger.
The Managerâs Path - A guide for tech managers going through increasing levels of management complexity.
High Output Management - Great book on running and scaling a company.
Websites
Manager Readme - A community of sharing your âmanager guidesâ with other managers.
The Watercooler - A community for leaders looking to become better.
Articles
Googleâs 10 year research on what makes a good manager.
Rethinking how we interview in Microsoftâs Developer Division - Great article on hiring processes.
Undervalued Software Engineering Skills: Writing Well.
Newsletters
Software Lead Weekly - A weekly email for busy people who care about people, culture and leadership.
Iâm not much of a video/audio person so I donât have great resources for those mediums, if you have recommendations for more resources, share them below!