Working with Your Manager

33 minutes, 9 links
From

editione1.0.1

Updated August 7, 2023

Your professional relationship with your manager is one of the most significant factors affecting your career growth. You are ultimately responsible for your own career, but your manager has more influence over your career trajectory than anyone else in your company, so it’s critical that the two of you work well together. They sit above you in the organizational hierarchy, which gives them power to make decisions that can affect your career, both positively and negatively. This relationship has far-reaching consequences, such as which projects you work on and the opportunities you’re given. Many say that your relationship with your manager is the single biggest factor that affects your job satisfaction.

Some managers are great to work with, but others may prove more difficult. No matter how good or bad your manager is, it’s your job to make the relationship work. Every professional relationship between a manager and a programmer is unique, and you’ll have to work hard to figure out what works best between the two of you. Your relationship with your manager will evolve over time, and you’ll have to continue to adjust and make changes to how the two of you work together.

Build Trust

Trust is an important foundation for working well with your manager. If you can’t trust each other, your relationship with your manager will break down and your job will be more difficult than it needs to be.

If your manager can’t trust you can do the job they ask you to do, you’ll miss out on projects and opportunities to grow and be promoted. If they can’t trust you’ll communicate openly and honestly about the status of a project, they’ll have no choice but to micromanage you to get the information they need.

So, how do you build trust with your boss?

The first step may be obvious, but it needs to be said—do your job. There’s no way around this. It’s table stakes for everything else discussed in this section. If you don’t do your job, you’re going to have a very difficult time building trust with your manager, so that should be your number one priority. It’s literally just doing what is asked of you according to your job description.

The next step is to do your job reliably. Your manager needs to know you are reliable and that they can count on you to complete the tasks you are assigned. Doing your job reliably does not mean you won’t make mistakes, your estimates will always spot on, or your projects will always be completed ahead of time. Nobody is perfect and timelines will slip, bugs will happen, and estimates will be wrong. That’s just a part of building software that you need to learn to live with. Being reliable means that your boss can count on you to take on a task and see it through to the finish line. The more often you do this, the more your boss will know that you can take on whatever they throw your way.

There’s more to being reliable than just completing your tasks. Here are some other examples of what it means to be someone your manager can rely on:

Unlock expert knowledge.
Learn in depth. Get instant, lifetime access to the entire book. Plus online resources and future updates.
Now Available

doFollow through on your commitments. If you tell your boss you’ll do something, do it. (And if you can’t, tell them as soon as you know it’s likely to slip so you both can decide how to mitigate the issue.)

doAsk for help early if you’re blocked on a project or if you think you’ll miss an important deadline.

don’tSidestep your manager and leave them out of decisions with upper management.

don’tRefuse or avoid boring but important tasks or projects.

A reliable software engineer is someone who is predictable (that is, does what they say they will do) and who is able to complete their tasks from start to finish. Doing just these two things will help develop a good foundation of trust between you and your manager.

Understand Your Manager’s Goals

While your manager expects you to deliver results each quarter, they have their own goals, milestones, objectives, and key results that they need to deliver as well. They are responsible for all the work your team delivers. Understanding this point will help you better understand some of the decisions your manager makes.

As a software engineer, your job is to do everything you can to support your manager so they achieve their desired outcomes. Therefore, your manager’s goals are your own goals.

important This is an important concept that not many engineers understand early in their careers, because most of them are primarily concerned with proving their technical abilities.

Your work is just one piece of the puzzle that your manager needs to solve. When you understand how your work fits into the bigger picture, you’ll be able to identify which tasks will help your manager reach their goals and prioritize those first. If you can manage to do this, you’ll almost certainly gain your manager’s trust. Conversely, if you hinder your manager’s ability to meet their objectives, you may lose the trust of your boss.

exampleYour boss has a goal this quarter to upgrade the programming language for your legacy codebase to the next version. They need to do this because the version you’re on is no longer receiving security updates and there are new features in the next version that your team can take advantage of during development.

doYou focus your tasks on identifying parts of your codebase that contain backwards incompatible changes, resolving issues with dependencies, ensuring the critical parts of the system have sufficient code coverage, and spinning up a new environment to test your code on the newer version. All of these tasks move your team closer to achieving the desired objective.

don’tYou focus your tasks on building new features, refactoring old code to use a new design pattern you learned, and adding a new dependency to the codebase because there’s a new library that’s gaining popularity. None of these tasks help get your team closer to being able to upgrade the programming language version. In fact, things like adding additional dependencies may even make it more difficult to upgrade if the library isn’t compatible yet with the new language version.

In the bad example above, you may think that you’re demonstrating your growing technical skills and showing your manager that you’re a good engineer who can solve difficult problems. The issue is that the tasks you worked on were not aligned with your manager’s priorities for the quarter, whereas in the good example, you helped your boss get closer to their goal of upgrading the programming language version. If you want to build trust with your boss, you need to figure out how to align your own goals with your manager’s goals.

Adapt to Their Management Style

Everyone works differently. There’s no single way to maximize your productivity that works for everyone, and everyone has their own way that works for them when they need to get things done. This is especially true when it comes to managing people and projects.

Different managers have different management styles, so when it comes to working well with your manager, you’ll need to figure out what style they prefer. You’ll need to consider the following questions when determining how your boss prefers to work:

  • How do they prefer to communicate?

    • Email

    • Asynchronous chat

    • Voice or video chat

    • Face-to-face conversations

  • How often do they expect updates from you?

    • Once a day

    • Once a week

    • As needed

  • What time of day are they usually available?

    • Mornings

    • Midday

    • Evening

  • Do they prefer if you provide them with objective analysis for each option, or do they prefer to hear your personal judgment when making difficult decisions?

Although these aren’t things you need to think about often, knowing the answers to these questions can make your life easier during high-stress situations like production incidents or tight deadlines. When you understand your manager’s preferred way to work, you’re less likely to make costly errors due to miscommunication.

Similar to how trust is a two-way street, a healthy relationship with your manager takes two people to make work. Treat your relationship with your boss as a partnership—you both share a responsibility to make it work. Unfortunately, part of that working relationship is out of your control; you can’t control your boss, after all, but at least you can do your part to uphold your end of the deal. As long as you’re making an honest effort to adapt to your manager’s work style, they can’t hold that against you when it comes time to conduct your performance review. However, if you don’t make any effort to work well with your boss, they may use that against you.

So, what do you do if you’re not sure what your manager’s management style is?

Ask them.

It may be awkward, especially if you’ve been working with them for a while now, but it’s an important conversation to have, and being both aligned on what you should be doing will help you in the long run.

During your next one-on-one, ask them how you two can work better together. It’s important to be open and honest here, even though it may be a bit embarrassing because it’s such a trivial question to ask. If possible, try to communicate your preferred style so they get an idea of how they can work better with you.

Honesty will always contribute to a better working relationship with your boss. The conversations may be uncomfortable or difficult, but they are worth it to build trust and respect. Your ultimate goal is to find the right balance when it comes to communicating with your manager.

Think of communication as a spectrum—one where you want to avoid the two extremes:

  • Under-communication: Solving problems completely by yourself and not even telling your boss.

  • Over-communication: Asking for help, guidance, or approval on every detail.

Neither extreme is right, and they will hinder your ability to build trust with your manager. The goal is to balance how much time and attention you demand from your manager when giving visibility or getting help, direction, or input.

It’s a balancing act, and as a junior or mid-level software engineer, it’s your job to figure out how to make it work. At the very least, try to build a habit of asking your manager for help only after you have at least one potential solution. This shows that you’re not just dumping the problem in their lap, but instead asking for their help in refining the potential solution you already have. If you ask for their assistance empty-handed, it signals to your manager that you’re not putting in the work before coming to them for help.

Learn to Manage Up

Having a healthy relationship with your boss makes your job easier, but there will be times when the two of you aren’t on the same page. If your boss is overcommitted, overwhelmed, or even if they’re not the best in a certain area of expertise, you need to learn how to manage up in order to make the relationship work.

To start, you need to recognize the situation you’re dealing with. Perhaps you’re dealing with:

  • A boss that has been at the company for years while you’re just starting.

  • A boss that has just started while you’ve been with the company for a while.

  • A manager who is a know-it-all.

  • A manager that is new to the industry and may not know a lot.

  • An indecisive manager.

  • A manager that goes with their gut feeling instead of relying on data or the opinions of their team.

  • A first-time manager that is still learning.

caution Before we dig deeper into how you can manage up, you first need to understand what managing up does not mean:

  • Manipulating or deceiving your boss.

  • Covering up a mistake you made.

  • Hiding information from your manager that makes you look bad.

  • Inserting yourself into office politics.

When applied correctly in the right situation, managing up can help you achieve the outcomes you’re looking for, but if used incorrectly, aggressively, or in the wrong situation, it can backfire and hurt your image. It may take some time to learn how to effectively manage up, but when done correctly, you can get the results you’re looking for.

As you pick up tickets, you may be able to complete some on time without any outside help, but other times you may run into issues that require you to seek help from your team members. This may be as simple as mentioning what you’re stuck on during your team’s stand-up and asking for help from someone familiar with the part of the codebase you’re working on. Occasionally though, you may find yourself stuck due to external factors such as a dependency on another team or a technical reason why you can’t continue.

Use Leverage

As an engineer working towards a senior role, you should first try to figure out the issue on your own. Part of being a senior engineer is that you are able to complete small- to medium-sized tasks without any supervision from your manager. But sometimes you’ll get stuck and need to bring in some help. Your boss may be able to help unblock you, and if not, they should be able to point you to someone who can.

In cases where you’re stuck because of a dependency on another team within your company, your boss may have more leverage to ask the other team to do whatever you need them to do. Let’s look at an example where you could leverage your manager’s position in order to get what you need.

exampleSuppose you’re implementing a new feature for the sales team in order to simplify their workflow. If you don’t have enough information to move forward on a feature request, reach out to the appropriate person on the other team to get your questions answered. If you’ve been blocked because you’re waiting for a response, ask your boss if they can help get the answers you need. Sometimes, all it takes is getting your manager to contact the manager on another team to get your questions answered. Just be careful not to use this lever too much. You can earn a bad reputation with your manager if you escalate too often. It shows that you’re not able to handle roadblocks on your own. Only use this as a last resort after you’ve done all that you can.

Tell the Truth

Sometimes, you may need to inform your manager about something they may not be aware of. Your boss has to make many decisions each day, and sometimes, they may not have all the information they need. Speaking up in these cases is part of managing up.

Your boss needs to know that you have their back, and sometimes that means telling them things that they need to hear, even though they may not want to hear it.

example
  • Perhaps your company is planning a new feature to bring in some new business. Your manager may agree to take on a new project with a tight deadline without realizing there are technical limitations that will make that deadline impossible without taking on a lot of technical debt. You should let them know as soon as possible so the team can adjust the timeline as needed.

  • You may have a boss that is new and isn’t aware of a risk factor that could cause you to miss one of your quarterly goals, such as integrating with a third-party system. If the other party is dragging their feet and there’s a risk of not hitting your deadline, let your boss know as soon as possible so they can manage expectations and modify the plan for the quarter.

It’s better to have difficult conversations with your boss about something than to let it simmer and boil over. By then, it’s already too late, and you’ll have a high-stress situation on your hands. If possible, it’s better to be open and honest with your manager so they can pivot or change directions if needed. In the end, they will appreciate the fact you gave them honest feedback.

Make Your Wins Known

As individual contributors, we’re deep in the codebase each week. We’re naturally familiar not only with the inner workings and how different parts of the system fit together, but also with which parts of the system need work. It’s easy for us to understand why a seemingly small bug is especially hard to fix, but it may not be apparent to someone who isn’t writing code every day. You may deliver a feature that seems trivial but was actually a really challenging technical problem that needed to be solved.

Your manager’s day will be filled with meetings, so they’ll always be further away from the day-to-day technical challenges than they’d like to be. Your boss may not know all the details about the problems you’re solving, so don’t just assume your boss is aware of the exciting accomplishments you’ve made recently, or the technical challenges you’ve overcome.

Part of managing up is learning how to inform your boss about your accomplishments. This is especially important if you’re close to or working towards a promotion. Ideally, your company will have a self-review process through which you can describe what major objectives you accomplished during each review period, but you don’t have to wait until the performance review process to let your manager know how you’re doing. Keep in mind your manager regularly gives progress updates to his boss, and he’ll want to communicate about his team’s wins and the progress they’ve made. To do that, your boss first has to know about what you’ve done. Try to find moments to let your manager know about your accomplishments, whether it’s in private or public.

exampleWork with your manager to establish expectations on the types of outcomes and behaviors an engineer at the next level demonstrates, then find ways to let your boss know when you think you’ve demonstrated them.

Dealing with Conflict

You and your boss are both adults. You’ll each have your own way of doing things, and you’ll have your own opinions on how something should be done. Hopefully, you’ll be able to figure out a way to work well together, but sometimes the two of you will have different opinions on how to accomplish a task.

If you have to disagree with your boss, do so politely and in private.

caution Do not surprise your manager with news in public. Doing so may catch them off guard and make them look unprepared in front of their colleagues, or even worse, their manager. It’s possible your manager may interpret your actions as being disloyal to them.

Context before Content

When you and your boss have a disagreement, they may get defensive because they may think you’re challenging their goals. Oftentimes, they may focus on the intent of your actions, rather than the content of what you’re discussing, which is why it’s always good to clarify the context for why you’re disagreeing with them. If you can manage to help your boss understand your perspective, they may be less defensive and more willing to see the argument from a new point of view.

If possible, try to frame your opinion in the context of a bigger goal or objective. Doing so will allow you to be more candid and honest when discussing your opinion, in addition to helping focus your manager’s thoughts on the shared goal. It will also demonstrate that your difference of opinions is due to an external factor, rather than a personal attack on your boss’s views. If you fail to provide context for your point of view, your manager may perceive your disagreement as a lack of commitment to their own interests.

Respect the Decision

You won’t always be able to achieve the outcome you want, and in the end, your boss has the final say when it comes to important decisions that affect you and your team. If your manager considers your point of view only to decide against it, don’t take it personally and don’t hold it against them. It’s better to respect their decision, be professional, and move on than to continue disagreeing with them. If it’s not clear to you why they made the decision, consider bringing it up during a one-on-one. Perhaps there’s another aspect to the problem that you’re not seeing, and it will help to talk to your boss about the decision they had to make.

Part of becoming a senior software engineer means accepting that not every decision will go your way. Sometimes you need to let go of an opinion you are passionate about and move on. It’s better to work together with your boss as a team and trust that they’re making the right calls, rather than pushing back on every decision they make.

One-on-Ones

Recurring one-on-one meetings are your opportunity to receive direct feedback from your manager about how you can be better as a software engineer. A common misconception among junior software engineers is that one-on-ones are meant to give status updates on their current workload. The conversations with your manager during your one-on-ones should be about career growth, not your day-to-day work. Don’t waste your opportunity by giving a status update about what you’re currently working on. You should be talking about higher level things than individual tasks.

These meetings are just between you and your boss, no one else. It’s precious time for you to be honest and talk about personal things. Try to avoid talking about things that can be discussed in the open with the rest of your team, because that’s not a good use of your time during these meetings. Your one-on-one is a chance to talk about the difficult things that you wouldn’t want to discuss in front of your teammates.

important This can be awkward and uncomfortable at first, but the more open and honest you are about your feelings, the easier it gets.

Just be honest. This is your opportunity to get things off your chest. You have a direct and uninterrupted line of communication with your boss for a short period of time, so make the most of it.

While it’s your manager’s job to complete their team’s long-term goals, they also need to fix processes and protocols that are broken or are not working for their team and their direct reports. They can’t fix what they don’t know is broken, however, so it’s your job to be honest with them when something isn’t working.

example
  • Let them know what challenges or frustrations you’ve had recently.

  • Let them know if you’re having trouble working with a difficult teammate.

  • Let them know if a process isn’t working and why.

  • Let them know if you’re feeling overwhelmed or burned out.

So, how do you make the most of your time during your one-on-one?

Come Prepared

Set a meeting agenda ahead of time and make a point to discuss everything on the agenda. Add any topics you’d like to discuss or questions you may have for your manager. Setting an agenda ahead of time gives your manager time to prepare and get you the answers you’re looking for. They may not always have an answer themself and may need to reach out to someone else for it.

Additionally, if you know ahead of time that they are going to ask you about a specific topic or task, make sure you have all the information you need in order to give them a sufficient answer. Your boss may set their own items on the agenda, so be sure to check it to see if there’s anything that you need to prepare for.

Take Notes

You should be looking for both positive and constructive feedback during these meetings, which means you should leave the meeting with concrete things you should be working on. Be sure to write these down during the meeting so you’re able to reference them in the future. You have hundreds of decisions to make daily and multiple projects you’re responsible for, so it’s easy to forget specific things your manager asked you to do during your one-on-one conversations.

Plus, when you can look back on your notes, you can remind yourself of the things you need to work on. When your boss provides feedback, they expect you to listen and apply the feedback to your day-to-day work. Remember what you talked about, since they may bring up these areas of improvement during the next one-on-one. You want to be able to demonstrate you heard and reflected on the feedback.

Ask Specific Questions

This is your opportunity to ask for answers to specific questions you may have. “Specific” is the key word here. The goal here is to look for ways in which you can receive constructive feedback from your manager. This will help identify key areas you should focus on that will help you become a better software engineer, or things your boss is looking for in order to help you grow as an engineer.

exampleSo what are specific questions you can ask?

  • What are your top priorities right now and how can I help?

    • Remember that your job is to support your boss and help them achieve their goals. Asking them directly how you can help them reach their goals will help build trust, and they may give you specific tasks or projects that relate to their goals.
  • What am I doing well that I should continue to do?

    • This question focuses on positive reinforcement for good habits and things that you’re doing well. If you’re doing a great job at something, you want to make sure you continue doing so.
  • What are some things I can improve?

    • You’re looking for constructive feedback here. Your manager may give you specific things you can do to become a better engineer.

    • It’s important that you make an honest effort to improve these things each week. You want to go into your next one-on-one and be able to show progress in these areas. When you can demonstrate to your boss that you are improving in the areas they are asking you to, you’re showing that you listen to their feedback and are making a meaningful effort to improve yourself.

  • Ask for advice on specific topics.

    • Your manager has been around much longer than you have. They’ve navigated difficult situations and have a wealth of knowledge and experience. Use that to your advantage and ask them how to deal with specific scenarios.

      • “How do I get better at saying no to requests that come in from other teams?”

      • “In your experience, what’s the best way to deal with a difficult teammate who doesn’t listen to my suggestions?”

Just doing these few things will help you get more out of your one-on-one meetings with your manager and provide you with plenty of concrete things for you to work on in order to grow as a software engineer. As long as you remember that your one-on-one time is meant to discuss personal and career growth opportunities and not status updates, you’ll be able to make the most of the personal time you have with your manager.

The more you can demonstrate to them that you listen to their feedback and apply it in your day-to-day work, the more you will show them that they can trust you and that you deserve their respect.

How to Recover from Mistakes27 minutes, 8 links

At some point in every programmer’s career, they’ll go through the inevitable “oh crap” moment when some code they wrote suddenly breaks in production. It happens to the best software engineers, and it’ll happen to you. No matter how many steps you take to mitigate risks, sometimes bad code will slip through the cracks and cause a catastrophic failure in production.

In some ways, this is a rite of passage on your journey to becoming an experienced software engineer, because you’ll gain valuable experience identifying, triaging, fixing, and recovering from an incident in a high-pressure situation.

Software engineers work on complex systems. It’s impossible to fully understand how each new code change you deploy will behave in a production environment. We can take measures to mitigate risks, but it’s impossible to avoid them. So, what can you do if you’re not able to completely steer clear of breaking code?

You’re reading a preview of an online book. Buy it now for lifetime access to expert knowledge, including future updates.
If you found this post worthwhile, please share!