Establishing Manager Relationships

Black Trans Lives Matter. Before you get started here, consider setting up a monthly repeating donation to a non-profit such as LGBTQ Freedom Fund.

Note: This was originally a Twitter thread, but I’ve converted it into a blog post after the bird platform became X-tinct.

Hello! I’ve been working as a professional programmer for more than a decade, worked at 5 companies, and had 22 managers (including 14 in 4 years at Twitter). As a result, I’ve had a lot of experience establishing new relationships with a manager.

In any good relationship, communication is key. Your manager isn't a mind reader, and neither are you. You need to talk to your manager about things which are bothering you, and your manager needs to talk to you about how things are going from their end. As you start out a relationship with a new manager (especially as you get more senior on the career ladder), ask them about their own values and goals. Managers have a tightrope to walk: they balance the needs of the individual people with the needs of the team. Bad managers value the team above all else. Good managers help the people but also push them for the sake of the team. Great managers are able to grow their people to invest in the team.

Prioritize Growth #

As with managers, ICs have two priorities. The most straightforward priority is to help your team succeed. The less-well-defined-but-equally-important priority is to grow as a contributor. Take the time to invest in your own growth and learning, because that helps the entire team in the long run. Growing as a contributor becomes much more complicated once you hit the senior level, and you will need active support for your manager to accomplish it. Finding time for learning in a professional environment can be quite the challenge.

Until you hit the staff engineer level as an IC, a supportive manager should be actively working to develop you as an individual contributor. They need to have a plan to help you grow by ensuring that you get the right types of work and challenges. That, however, is often something that managers don't learn how to do until they've been at it for a while. ICs don't start off able to architect multi-quarter roadmaps, and managers don't start off able to help engineers grow. People are a lot harder than code.

Once you hit the staff level and above, a whole lot of your growth is going to be unique to you. Staff is the point in most ICs' careers where they are no longer waiting for work to come to them -- even getting to this point often requires demonstrating a significant drive to identify and resolve completely new tracks of work with little oversight. This is also, in many companies, the point at which your manager becomes more of a partner and a peer, rather than an overseer. If you don't already, you should also be seeking to build relationships with director-level leaders in order to find broader challenges to feed your growth. A lot of the rest of the suggestions here will still apply, but they will also apply for how you work with even-more-senior leaders than your manager.

No matter what your level is: if you aren't getting the opportunity to grow, something has to change. Don't wait for it, because learning how to drive the change you need is an growth opportunity of its own.

Progress via Repetition #

To get the most out of your relationship with a manager, you'll want to have a specific goal in mind. If you know what you want, a competent manager can help you get there (or point you to other people who can help get you there). Career-oriented goals are great. Getting promoted at tech companies is often challenging, because even seemingly-detail-oriented critera end up being not-very-specific in practice. Engineering ladders are great guidelines, but you'll need to have a plan in order to explain why you have earned a promotion.

For example, let's say that you really want to get a promotion to a "senior" engineer title. You've just changed managers when you felt like you were nearly ready to apply for the promotion, and now it can feel like you've lost a bunch of progress. When establishing a new relationship with a manager, I always center the discussion around three questions. While I don't do it every week, I try to ask those three questions in every 1:1 I have with a manager while working toward a specific goal. With a promo-to-senior example in mind:

  1. What am I doing that I need to do more of <for you to consider me a senior engineer>?
  2. What am I doing that I need to do less of <for you to consider me a senior engineer>?
  3. What am I not doing that I need to start doing <for you to consider me a senior engineer>?

These weekly questions keep conversation centered on my goal, and allow my manager and I to list specifics for achieving it. As you start out, I recommend having a shared document that has a dated entry for each meeting and the answers given for each question in order to track progress.

If your manager cannot give you specifics about what you need to do for your promotion, then it's their job to go figure it out. Your manager cannot guarantee a promotion in larger companies, but the goal can be for them to feel that you are ready to submit for promotion. If your manager cannot give you specifics about what you need to do, you are very unlikely to get promoted (or achieve your other personal growth goals). Documenting specific answers gives you a way to track progress on goals which are otherwise difficult to measure. It also helps your manager know what to prepare for your 1:1s, and ensure that the time is spent in a productive way. If you're ever lost, it gives you a touchpoint. Along the same lines, don't let your 1:1s turn into more-detailed discussions of your weekly work. 1:1s are a very valuable resource, and should not be wasted on project updates that could be shared in chat, an email, or a ticket tracking system.

Going for a promotion is a specific goal, but your goals can also be more diffuse. In the past, I've used these questions to make space for working on projects outside of my team's scope, such as refactoring gnarly tech debt. In that case, the questions might be phrased like:

  1. What am I doing that I need to do more of <so that I can spend time on the project>?
  2. What am I doing that I need to do less of <so I can spend time on the project>?
  3. What am I doing that I could be doing better <in terms of the project>?

Note that for work of this type, I typically also try to ask a fourth question: "How do you feel about how I am balancing team work with this other project?".

Conclusion #

Managers can help you accomplish goals, but they can't fill the void if you don't have goals. The best way to have a fruitful relationship with your manager is to have real goals to reach for. Prioritizing growth is extremely important, and the three repeated questions shown above can be a great tool for evaluating that progress and ensuring that everyone is on the same page for how it's going. This allows you to avoid surprises. There will inevitably be more than this as part of your 1:1s, but having a pattern allows everyone to adjust their expectations.

The most important thing you can establish in any relationship is trust. Your manager needs to be able to trust that you're telling them what you need, and you need to trust that your manager will tell you what they need. Trust goes a long way to making things work.

Finally: your managers are doing a really hard job. As I said before, people are a lot more complicated than code. When you do achieve your goal or you're feeling good about your progress, let them know. Thank them. Their jobs involve far fewer wins than coders get.

Since you've made it this far, sharing this article on your favorite social media network would be highly appreciated 💖! For feedback, please ping me on Mastodon: