Buy My Book, "The Manager's Path," Available March 2017!

Thursday, April 28, 2016

Ask the CTO: Getting Information without interruptions

This is reposted from my Ask the CTO series on O'Reilly

The problem: I don’t know how to figure out what’s happening on my teams without asking people directly, and it’s driving them crazy!

I am in charge of a team that is running a big, critical project. My boss is breathing down my neck at all times, asking me for status updates, wondering when different pieces are going to be done. Usually, I know what is happening because I’m doing some of the work myself, so I can give the answers because I’m deeply involved in the project. This time, however, I’m not actually doing any of the work, and I don’t even have the time to attend every planning meeting and standup. When my boss asks me for status updates, I feel that I have no choice but to ask a member of the team.

Of course, there’s also the outages. Did I mention that this big project is to replace a system that is crumbling and causing incidents all the time? So, if I’m not asking about project status, I’m trying to figure out why we’re down, what the status of the incident is, if there’s anything I can help with.

I just got some feedback from the tech lead: I’m driving the team crazy with my one-off questions. They complain that I’m distracting them, interrupting their work, and derailing other important discussions to get status updates. I don’t want to do that, but I don’t know how to figure out what’s going on without tapping someone on the shoulder to ask. What do I do?

The solution: Know where to look

When you are embedded in the team you are leading, the details of their projects are the air you breathe. But add on more teams or a level of management and all of those details provide hard to discover. How do you get the status of projects when you are a step or two removed? How do you figure out what is going on without constantly tapping an engineer on the shoulder and asking her for a status update?

To begin with, you have to know where to look. If it is important that you know the status for projects at the drop of a hat, then you should learn how to read the project management dashboards the team is using. If the teams are not using task tracking and project management software, at this point I must ask, why not? It is one thing to avoid the overhead of formal task tracking in a very small group. However, as the team grows, you need to have transparency into progress. This means that you need a sense of what the tasks that make up “progress” look like, which requires some sort of breakdown and tracking, even if it is in the form of sticky notes on the wall.

This also goes for your production incidents. What is your incident management process? Are incidents managed via chatroom, or by people sitting in the office together? Do you have a postmortem process? If ongoing incidents don’t have a communication process and structure, it might be time to throw something together.

Knowing where to look is the first element, one that managers often skip over too quickly. You owe it to your team to look at the existing tracking software and look for the status there first, before firing off questions directly to the engineers. However, looking through the project tickets and work-in-flight status does not always provide the full picture. Sometimes the person managing the project tracking is themselves a bit disorganized. Sometimes the details that you are concerned with are not represented, or not represented well. Then what do you do?

Practical advice: Manage up, read the room, and let the team lead

Let’s break down this situation further, because “then what” really depends on the time and the urgency, and the reasons behind your question.

Scenario 1: You’re asking because your boss asked about the project and you didn’t have a great answer.

That’s fine! But does your boss need more details this second? Or can you ask the team for details in the context of scheduled meetings or via less-urgent communication channels (email or chat)? Usually when the boss asks us something, that makes us want to jump quickly. What we really need to do is just make a note to get more information and then get it when the time is right. This requires some managing up. Predict the questions that your boss tends to ask, and have some general answers prepared. That will give you some ammunition to use as you push back for time to get details on specific concerns. And you will need to push back occasionally. The worst outcome is having your boss go directly to the team themselves and ask for a status update.

Open office plans provide the most tempting setup for interrupting people. Picture: you have a question you’re itching to get an answer for, the manager of the team is in a meeting that you can’t interrupt, but there’s one of the engineers sitting there typing away. The temptation to tap him on the shoulder and ask can be overwhelming. I know it is for me. If you’re going to do this, for goodness sakes, respect the signals. Is this person wearing headphones and look really focused? Or is he chatting, walking around, or otherwise out of the zone? Be sensitive about your impatience versus their focus, and apologize when you are forced to interrupt their work. Apologies don’t cure all evils, but making an effort here is important.

Scenario 2: You’re asking because launch of this work is imminent, or this work relates to an immediate production issue and you need nuanced details that only a developer can provide.

In this case, you may very well need to interrupt someone and reading the room will be essential. There are times when managers, for whatever reason, are themselves either occupied with something else or don’t understand the nuance of the situation you are concerned with, e.g., a release is at-risk and you don’t know why. Sometimes, asking the developers for details will tease out decisions that could change a release from “late” to “on-time minus a non-essential feature.” The goal is to do this very sparingly, and use it as a teaching opportunity instead of a chance to undermine.

In the book Turn the Ship Around (an essential leadership text for engineering teams that I've recommended several times already), the authors spend a lot of time discussing how to resist taking the wheel every time a small problem happens and thus undermining the leadership and ownership of the members of the team. The way you choose to ask for details in the moment can make the difference between encouraging leadership from the team and enabling learned helplessness that causes the team to be paralyzed without you around. Instead of barking orders in a production outage or telling people to cut features close to a launch, practice using these situations to ask them what they intend to do. Asking what they intend to do puts the ball in their court, and forces them to practice taking leadership of the situation. You want the whole team, not just the tech lead or manager, to feel capable of speaking up and sharing leadership for resolving these situations. Use this direct interaction to push that team-driven leadership and encourage the team to be in charge of situations instead of victims of them.

Scenario 3: You’re asking because an idea occurred to you, you just heard of another team doing a related task, or you have an unspecified concern about the project and knowing more details will help clarify.

Getting details from the developers directly is often useful when you have an intuition nagging about a project. Again, the trick here is to do it without interrupting a developer who is in the middle of flow. Unfortunately, you’re the boss. Even if you try to communicate via non-urgent channels like chat or email, often the person will notice and drop everything. Some situational awareness helps. If you work in the office with them, try to wait until they are getting up from their desk, going to lunch or coffee, or notice when they are out of the zone. If they’re not in the office with you, encourage them to make active use of chat status to indicate when they can be bothered or not, or make it clear at the outset of your chat or email that the topic not urgent but you would like to get some details later.

Have you heard of “swoop and poop management?” It describes what happens when a manager or other senior party unfamiliar with the details drops by the team, makes a suggestion for something the team should look at, and then leaves. Swooping down, pooping out an idea or comment, and flying away without seeing the effect of the interaction is, at best, a distraction or annoyance and, at worst, causes people to start focusing on a causal idea instead of the important tasks at hand because The Big Boss said so.

In all of these situations, you want to defer to the team’s immediate manager, tech lead, or product manager as it makes sense. Going directly to the team should be an occasional event, not a regular occurrence. It’s not that you can’t have a relationship with the team directly, but it is the job of the tech lead or manager to manage and communicate project status specifically so that the engineers can focus. When you do choose to go to the team, do it productively and positively. Use it to share ideas with the developers, help them grow as leaders, and affirm your connection with them in a productive way.

Find more of my columns here!

Tuesday, April 12, 2016

Ask the CTO: Navigating the hands-on to hands-off transition

I'm writing a new series for managers on Here is a teaser for my first post!
The problem: I’m a new manager and I’m overwhelmed

A few months ago, I was given the opportunity to run a new team in a growing area of my organization. The company thought I was ready for a bigger leadership role, and I agreed. I think I have a good track record that prepared me well for this: I've been a successful tech lead, had a couple of direct reports, and created some great software. I was excited to grab this chance to lead a large team and set the technical direction for part of the business, so I gladly took the job.

But lately, I've begun to realize that instead of having a few hours of meetings a week, more than half of my time is booked before the week begins. I have regular 1-1s, touchbases with peers across tech, and meetings with the product team for planning, interviews, and strategy sessions, and the list goes on. I was excited to write some code for the new systems my team is building, and I've tried to, but the only time I can find is in the mornings before everyone arrives, or at night after I've eaten dinner. I'm totally stressed out trying to balance all of this, and my team is starting to complain that I am canceling my meetings so I can have more time to code. So, my question is: how do I learn to balance my days so I have time for all these meetings and management tasks, but also time to write code?

The solution: Think of management as real work

Let me ask you a question, before I begin. Do you believe that management is real work? Do you believe it is work that is just as valuable as coding, architecture, and other hands-on technical tasks?

We start with that because if you do not think that management is real work, you will continue to treat it like an unfortunate burden to be dealt with so you can get to the fun stuff. Which, sadly, is the attitude that many managers in tech seem to take. I say that this is sad because it causes not only suffering on the part of the manager, but a lot of damage to the team as well. Your team needs you to be there as a manager for them, and it is almost impossible to show up fully for a role that you don't think is valuable. Management is work, and it is important that you put your management priorities front and center.

Great managers know that their value comes from the ways in which they create functioning teams, focused on the right work. When you can do that job well, you will almost always create greater value to the organization than you would as an engineer; yes, even a 10X engineer. If you shortchange your role as manager by fighting for code to write and technical work to deliver, it's likely that you will end up, at best, totally stressed out, and at worst, slowing down your team.

Sometimes we managers feel that we have to keep writing code because otherwise things won't get done. However, if your team isn't getting enough work done, your job is not to do the work yourself. Your job as a manager is to figure out how to help the team get more done. It is incredibly hard to make the overall team stronger and spend half your time focused on doing the work yourself, especially when half your time is actually overtime. Yes, immersing yourself in the technical details may give you some insights into the day-to-day challenges of your team, but you can also get many of those insights by training your team to notice them, and helping your team know what to tell you.

Going hands-off is hard, even if you do value the work of management, because you no longer have a simple, easily measurable thing to look at. Experienced engineers get frequent strings of wins as they write code, fix bugs, and see new features come to life. The feedback loop as a manager is much, much slower. There's no red-green-refactor for guiding humans. It's okay to mourn the loss of that endorphin hit. You spent years getting good at the job of being an engineer, and now you have to do something that you probably aren't as good at yet. It will get better, but it will not be the same.

Friday, April 1, 2016

You can bring a horse to water...

Trying to Convince People to Change

I was talking to a friend who was frustrated with one of her engineers. This engineer had a tendency to fall into some bad habits when stressed out, and my friend had given him a book to read on the topic, but he hadn't bothered to read it. Why not read the book, which would shortcut all of these conversations and corrections my friend needed to make over and over?

Are you familiar with this story? I am, having lived it several times. I have given my team various books to read over the years. Some of those books include:

Creative Mission Critical Synergy For Leadership
Turn the Ship Around
Leadership and Self Deception
Making Things Happen
The Five Dysfunctions of a Team

I have even held reading groups for some of these, I wanted so much for my team to read them.

I love to read, and I have grown to love books in the "self-help/business/leadership" genre. These books have taught me a ton, heck, I blogged my defense of the repetitive business book because I find so much value in them. They're great!

However, getting value out of books like these is predicated on two important factors:

1) You have to actually read them
2) You have to read them with an open mind to learn from them

Asking my team to read books has had mixed results. The most successful book I tried to get folks to read was Turn the Ship Around. I read it with my leadership team, and we would discuss it in our team meetings. It is a book that is so deeply applicable to the practice of managing engineering teams that I think it was easy for my team to appreciate its value.

For most of the rest of the books, the people who were already interested in the topics read them, and the people who did not want to change what they were doing did not. Even when the doubters read them, they read them with a mind towards disagreeing with their message, and I'm not sure they got anything out of the books.

This is not a fun lesson, but it is an important one for anyone who is managing a team. You can't force people to want to change. You can give them information, books, classes, coaching, but if they don't see a need to change, none of that will help. So the first thing you have to do, before giving them books, is to really convince them that they need to change.

Ah, but this is tricky! Do they actually need to change? If they change, it will make your life easier. Will it make their life easier? 

Sometimes, we want people to change when in fact what needs to change is the situation we've put them in. If someone on your team is acting really negative, do they need to change their attitude? Or perhaps, do you need to move them to a team where they are not being ignored by their manager?

Before you look to change the people, make sure that the change that needs to happen isn't in fact something in the environment that you can control. 

Most people are going to behave in unhealthy ways when they are in unhealthy environments. Asking someone to change the way they react to stress is a tall order. Sure, it would probably be good for them to chill out, be nicer, stop blaming others for their problems, but I've been working on my unhealthy reactions to stress for years and I know I still have a long way to go. Even when people want to change, personal change doesn't happen overnight. It is usually easier for a manager to change the environment than it is to change a person's reaction to that environment.

Looking back to my successful reading suggestions, they have almost all come when people had control over their environment, and the book was about helping them drive change in the team. It is pretty rare that I've given an unhappy person a book for reacting better to unhappy circumstances and seen them embrace it.

Poor reactions to difficult situations can negatively impact the team and it's your job as a manager to help people identify these behavioral issues. Books can be great for this, but they are rarely going to shortcut the process of change. No matter what, don't forget to look at the circumstances that are triggering the behavior. It is unlikely that you'll coach your team to Buddha nature but you might be able to reduce the stress that is causing the problems in the first place, and that's a win for everyone.