
A little over 5-years ago, I wrote a post titled “ 20 Things I Learned as a New Manager “, in which I laid out what I had learned in my first year as a software engineering manager. Some parts still ring true to me, while other parts feel naïve. I tried to remember the person I was back then, the challenges I was facing. In so many ways, it feels like a different person wrote that article and experienced management totally differently than I do today.
With that said, here are 20 things I have learned in the 5-years since penning that original article.
- Make data-driven decisions. You hear this all the time, but do yourself a favor and avoid any decision-making in the absence of data. Your intuition is a romantic idea that can help set a hypothesis, but you need to verify that “hunch” of yours using unbiased data sets.
- Deliver customer value. People will always talk about delivering x feature or y capability — try to focus on understanding the customer value delivered by x or y. It decouples you from the feature or capability and instead lets you and your teams focus on the bigger picture.
- Build relationships. Get to know people across your company. Just because you work in engineering doesn’t mean you work in a closed-loop system. Every person at your organization exists to fulfill a business need. Every person. Recognize that your job often involves needing help from Legal, Marketing, Accounting, Analytics, Sales, Customer Support, etc. Try to understand how your department can help them.
- Collaboratively set objectives with clear milestones. Setting objectives can be hard, and it can be even harder if you don’t have clear demarcations of progress. Collaborate with your teams to set a vision and a clear set of tactics that will help your teams achieve the end goal. Make sure you get buy-in from the people doing the work.
- Set a bar for excellence. Don’t be a maniac and set such a high bar of excellence that only you (or not even you) can achieve. Establish a reasonable but challenging standard that team members can maintain for an extended period. Recognize that not everyone will hit your standard on day 1 or day 100. You may need to put in the work to help people achieve it. Then adjust the bar upwards.
- Be compassionately candid. Don’t beat around the bush, but also, don’t be a jerk. When someone turns in sub-par work, be clear in telling them in what ways the work fell short and have them go back and work on it again. When you encounter behaviors that conflict with your organization’s core values, pull that person aside and explain why that behavior is in conflict, then offer alternative approaches which align more with the core values of your organization. Book: “Radical Candor”
- Admit you don’t understand. If your team takes on a legacy project, you probably don’t know everything about it. When someone throws out a term or concept you don’t understand, please raise your hand and ask them to clarify. You might be the only person in the room who isn’t clear on the concept, but then again, maybe other people were nodding their heads while also lacking clarity. Either way, you’ve just opened up the door for a culture where asking questions is always okay.
- Your calendar is your to-do list. A lot of managers tell me they never have time for their personal work. When I ask why that is, I’m often told, “People throw meetings into all the open spots on my calendar.” Well, schedule your work. If you need to reply to an e-mail and know it will take 15-minutes, find a slot and book some time to do it. Eventually, your calendar will fill up in places, but even if someone books a meeting over your work-time you can either a) notify them you already had a meeting or b) move that work time to another open slot. Remember, a to-do list is just a backlog — putting it on your calendar turns it into an actionable event.
- Build autonomous teams. I would love to tell you I know everything that happens on my teams. But I don’t. I know their mission; I know what they are currently trying to accomplish, what help they need, and who the stakeholders are. I have a rough sense of any ongoing defects they face, and I’m typically up-to-date on all Slack channels. But I’m not in every meeting; I’m not working through deep design discussions. I’m verifying decisions the team has come up with, being notified that there may be a meeting that I would want to attend, and the team understands the standards by which we should operate. Book: “Turn the Ship Around”
- Take notes during stand-ups. If you have many direct reports (over 10 or 12) or run 3 or more teams, try taking notes during stand-ups, which is especially easy if you work from home. Create a weekly standup document and write what each individual says. Group the document by Person and Day of the Week. This way, you can see what “Pat” did on Monday and Tuesday to detect any churn. Also, have a column for open floor questions and action items for yourself. This form of documentation will help you draw a connection to each person’s work throughout the week and let you ask more insightful questions as time passes.
- Inform teams on how the business is doing. Out of anything I can do for my teams, helping connect them to how the overall business is doing seems like the one request I always get (when I’m not doing it). People want to know how the business is doing — and you probably hear about it all the time that you feel like it’s obvious. Take some time, maybe once a month or once every two weeks, to let people know how the business is doing.
- Connect the dots from company goals to individual work. Help each person understand how their work is contributing to the overall company goals and how they play into the bigger picture. People want to know that their work matters — and it does, that’s why you hired them! Make sure that your teams understand where their work fits into meeting quarterly and annual goals. Help them see why their current project is important.
- Summarize conversations and include action items. If you have a conversation with someone and you want to ensure they complete the work, document a summary of the conversation, including any action items along with any expected due dates—schedule follow-up meetings. The act of putting a conversation in writing and sending it to all included parties creates an artifact that allows people to either respond to if they are in disagreement or be silently in agreement with. There will be times when individuals will only come to recognize that they’ve agreed to work once presented with it in writing.
- Help individuals grow as professionals. Your job is to grow and retain talent to deliver customer/stakeholder value through software development. Helping individual contributors understand how to navigate their careers and how to grow is on you. Being a software engineer is more than writing code — it’s about collaborating with other team members and across teams. It’s clear communication and follow-through. It’s handling a production outage, running post-mortem meetings, creating presentations to sell an idea, and documenting procedures for future team members. It is gathering requirements and being a driver for objectives. It’s holding others accountable and being open to being held accountable. Your job is to make responsible, collaborative engineers that others enjoy working with.
- Practice a healthy work-life balance. By taking at least a few days of vacation every quarter, you set a good example for those around you regarding balancing work and relaxation. Let people see you’re human. Also, if you are sick, stay home — I think that goes without saying after 2020, but seriously, be the example of what to do to avoid getting your entire team sick. And while I know everyone has a different health situation, try to establish healthy work habits, like working a normal set of hours. And while occasionally reaching out on Slack or email after hours is okay, try to establish healthy boundaries outside of work hours, which will allow your teams to feel like they can unplug.
- Speak up. After years in leadership, it still shocks me how quiet other leaders can be. Ask a room full of engineering managers a question, and it is shocking how few of them speak up. I’m not asking you to be the first one to voice an opinion, but if you notice there’s a lack of input, either chime in or try to get the ball rolling on the topic. We all know how awkward it can be to stand up in front of a room full of people and face a wall of silence after asking a question — be kind by getting the ball rolling.
- Know what is happening on your teams. This sounds so obvious, and yet it can sometimes be elusive. You have 1-on-1’s, meetings, interviews, and a small fire to put out. It isn’t surprising that we can lose track of exactly what is happening on our teams and the exact status of a project from time-to-time. If you are consistently experiencing hectic weeks, be sure to invest in developing team leads that you can rely on to help you stay on top of projects. And always make sure you can attend stand-ups.
- Be an accountability partner. Most of the time, if you are working with good teams, people want to do the right thing. It just so happens that there are often so many things to get done. So leverage quarterly objectives to help keep them focused on the most important work. Then check in on those objectives at least every month. People don’t mind being held accountable, but it helps if you can partner with your team members and regularly remind them of their objectives. Consider adding reviewing objectives as part of sprint reviews — ideally, your team members’ objectives are widely known and aligned to their work in the sprints.
- Every manager is different. This took me a while to realize. It seems obvious now, but when I started as a manager, I assumed that there were just a few different ways to manage. Then I came to realize that every leader is different. Some are amazing project managers, others are great people managers, while others are great technical managers. I have experienced directors who have deep insights into how people can improve — and VPs that can motivate their entire departments with amazing goals and consistently hitting their OKRs. All you can do is be you. You got this position because someone saw something in you. Don’t doubt that you belong in the position.
- Your team is made of the engineering managers that work with you. I used to think that my team was myself and everyone I managed. While I am part of those teams, my Team 1 is the group of engineering managers I work with. If you are fortunate to be in an organization of several engineering managers, those folks are your team. They are the ones to bounce ideas off of, the ones to grab lunch with when things go a little sideways at the office. Your problems and concerns are shared amongst that group. Only they can understand the exact pressures that your position holds at your company. Work hard to create meaningful relationships with those folks and try to meet with them regularly — even consider holding stand-ups with them several days a week.