Categories
Managing while Remote

Hybrid is coming – how do I make meetings inclusive for remote workers in hybrid setups?

As COVID19 vaccines start to be rolled out, more teams are wondering what it means for them, and more leaders are preparing for a life of hybrid office and remote work setups.

Some teams will be going back to an office for the first time in a year. Other teams will stay working remotely, often with hybrid setups where some of the team is going to the office, and others are staying home.

Before we move on, let’s face the elephant in the zoom call: hybrid setups are like playing in the hardest mode. They are harder to keep running smoothly than a remote-first setup, and they are harder than office-first setups, too.

To do Hybrid Remote work in a way that doesn’t completely obliterate your culture, you need to prepare. You may not like this, but the way hybrid works, or the way I and many others I’ve talked to have seen it work, is that you operate as if everyone was remote when it comes to communications, meetings, and decision making processes.

The good news is that in the last year, you developed some mechanisms to make remote work feasible even if you had no experience with it before. The other good news is that this time you have the luxury of preparing for the changes ahead of time.

The bad news is that just like it happened in 2020 for office/not-remote workers around the world, you will be thrown in the deep end, and you’ll feel like you have to learn a new skill every day to keep your team engaged and operations running smoothly.

Joining hybrid meetings.

Everyone joining from the office should join with their own laptops, their own camera, and their own microphone. This will seem terrible. You will probably not like it. It’s still necessary, because the minute you allow a meeting to prioritize office workers talking over each other and as if everyone were in the same room, you will alienate remote workers who will end up missing half of what is said and unable to get a word in.

Why can’t I just buy an Owl and be done with it.

The temptation to buy an Owl or other similarly cool gadgets for your conference room will be sky high. Unfortunately, once you buy it, people will pressure you to use it. There is a non-financial cost with buying great gear that costs a lot of money; the sunk cost fallacy will hit you and your bosses, and you’ll “experiment” with that gadget until you decide to kick it into the sun or leave it for client meetings only (I have less opinions about client meetings and owl-like devices, in that I don’t care).

If you want the least confusing and more reliable setup for hybrid meetings, you will have to pretend you are all working remotely.

A hand drawn (badly done) picture. It has 4 houses and an office building. All the homes are also offices and are noted as such.
If you manage a hybrid team, you should be switching between home and office based work periodically to test the process out.

But having everyone join with their own laptop/mic/camera seems annoying!

Yes! I know. Been there, done that. I used to run some confidential team meetings with a central microphone while having some well positioned cameras for video streams, because we wanted the privacy of being in the conference room… while it’s a workable compromise, it was still really frustrating for the remote workers on the other side.

I’ve also been on the other side of every hybrid setup I can come up with. I promise you, it’s a lot more frustrating to be the sole person working from home and having to listen to a conversation where you only catch about 50%, can’t see anyone despite them seeing each other, and have to wait for 30minutes to say a word because nobody is paying attention to you at all (if everyone in the office is sharing a microphone, the remote worker will end up forgotten).

Mute by default.

Seriously. I am guessing your team is already used to having to mute themselves, but now it’ll be more important than ever to be good at this.

Have everyone practice their meeting etiquette, and set up agreements to ensure that this doesn’t end up as a forgotten “Hybrid meetings” process that nobody actually uses. Muting by default, and only unmuting to speak, is the way you avoid your remote colleagues from having to listen to a bunch of background noise, getting confused by side conversations, and having the people in the office become even more confused by echo issues.

Avoid bad meetings by test-driving your meeting habits.

Practice. Practice the setup. Remind yourself and others about muting when not speaking. Ensure everyone knows how the meeting will be ran.

You know how remote teams often have meeting guidelines for how to raise your hand, if you should be unmuted or not, and who’s taking notes? You will have to do that for your hybrid setup, too.

Nothing can change the fact that having a distributed meeting feels awkward at first, and doubly so if half the team is next to you and the other half are in their home offices. Despite this, testing the setup makes it less likely that you will fail.

So, do a few practice rounds and adjust. It’s better to get good at hybrid meetings early on. Attempting to use your new setup for the first time when an important topic has to be discussed is a recipe for bad meetings and low morale.

Managers who work primarily from the office need to practice working from home.

If you are primarily working from the office, you will need to find a way to practice being remote, too. It’s important that you don’t just listen (but of course, please do listen) to what remote workers in your team have to say, and what it’s like for them, but that you try to experience it first hand to understand what you are missing, and what you would like to ask people about.

Imagine this scenario. You have been working from the office for a month, and you think it’s going well. Remote workers aren’t complaining too much or at all , so you are feeling confident. You decide to take a week to work from home. When you come back, you find that you missed a critical discussion your team had about the product, because they all had an adhoc, undocumented meeting about it. Now, instead of guessing, you know that the team is struggling to keep their habits, and you can try to fix it.

If you had not taken that week, maybe you would have heard about it a month later, and bad habits would continue expanding, or remote workers would feel increasingly isolated from the decision making processes. Because you did, you can test out the processes as you go.

A word of caution: if you don’t find any issues, this doesn’t mean you’re in the clear. When the manager of a team is remote, people may be adjusting to ensure they include you specifically because of the power imbalances instead of because it’s the default. Be careful of becoming overconfident, and always check with remote workers.

You are still on the hook for note taking.

If you don’t already have a note-taking habit in your team’s meetings, this is the time to get good at it. You can use a rotation to ensure nobody ends up being the unofficial note taker forever, of course. Meeting notes bring more clarity to what was discussed, enable people who were not there to catch up, and help eliminate useless meetings by making it painfully obvious when a meeting could have been a simple 10 minute conversation over Slack/whatever IM tool you use or an Email, or a comment on a ticket somewhere else. If your meeting notes are a literal status update, you will notice. If nobody can agree, the notes will make that obvious. If nobody thinks the notes matter, that may be a sign that the meeting could have been avoided.

If one of us is working from home, everyone is remote.

Get your team aligned on how things will work as you move to a hybrid setup. Don’t wait until the first sign of trouble starts to arise before you have the team about remote-hybrid setups with your team. It’s better to have set clear expectations and involve people in the process. By bringing everyone into the design of this process, you and your team will be better prepared to adjust your meeting etiquette and habits as you go.

For hybrid to work, you need to break old habits. Team wide decisions cannot be made by running into someone near the coffee machine, and decisions need to be documented so that there’s a record to refer back to. Everyone who is working from home will be unable to participate unless you explicitly call them, so keep that in mind before you call for an ad-hoc meeting with 3 out of 5 of your direct reports who just happened to be around.

Fewer meetings. More asynchronous conversations. You are all tired of meetings by now. Try more asynchronous communication as the default. Ensure you aren’t doing status update calls that make everyone feel like they are wasting their time.

If one of is us remote, everyone is remote. Remote hybrid setups will be hard to pull off. You will need to run retrospectives on the setup itself, and to keep an eye on how both remote and office folks are feeling.

You will be tempted to prioritize the people who come to your office. Please don’t. This isn’t “Remote vs people who come to the office”. This is you and your team working out the problems that come up and being open about trying new ways to make your time at work better.

Write down a plan.

It will change. That’s okay. You still need to write down your basic processes and a plan for operating in a hybrid setup. Do that right after you close this tab, if you can, and involve your team in the discussion as soon as possible so that they can help find solutions and bring up problems you didn’t think about yet.

Good luck

Hopefully, this article prevents you from running into some of the mistakes I’ve seen and made myself.

Good luck. 🙂

Categories
CTOing

Leaving a job – reflections & timelines

I gave my notice, we agreed on 3 months, and we set to work.

The first month was about setting things in motion, and creating the right environment for a transition. We made an offer to someone on the team to take over my role as CTO, answered all questions that came up, and worked together as an executive team to make sure the next CTO was confident about taking over.

The second month was about letting my team know, and working to ensure that all the basics were covered. We talked a lot about their careers and our time working together, polished brag docs, and ensured everyone had a written performance review and “next year goals” that could be consumed by the new CTO and used fairly. We also discussed how the goals they had could change as they transitioned to a new CTO, and how to keep pushing for the things they care about. I knew there were things people in my team had wanted to do that they never got a chance to really focus on, and maybe this was a new chance for them to figure it out. We also talked about management; how I go about it, the things they don’t notice, the things they do notice. I talked a fair bit about the things I wished I had done better, too.

The third month was where I started to realize the timeline we set-up for me to leave had been perfect to ensure our goal of a peaceful transition. I was hesitant at first, because I dislike long periods where people are feeling uncertain, but it turned out to be a good idea. Having a 3 month transition period enabled me to leave the organization with confidence that I had done all I could, and that the new CTO was more than ready to pick up where I left. It also gave him time to reflect on what he was going to change and how, and which areas are important to him and which aren’t. It gave them all time to prepare as a new team, let off steam, and let themselves imagine how things could be better. I knew change was coming, and I told folks to expect things to change too. Even when the changes are good, (and I believe many of the things that are likely to change fast were good), it’s important to emphasize that this is to be expected, and to give people space to find joy and pride in the changes, and to allow themselves to be part of the change.

It can be hard as a leader to let go, and I did what I could to make it safe and good to align with the new boss, QUICKLY, without guilt or fear or weirdness.

When I took on the role, I spent a lot of time thinking about the things I wanted to achieve, and understanding what the cut-off would be where I’d feel I could leave without guilt.

By the time I was leaving, I was able to tick most of the boxes, even if (of course) I didn’t achieve or did great in many areas I hoped I would.

It’s Wednesday. My last day was last Friday. It still feels weird. I woke up in panic yesterday thinking I had missed my first 1:1 of the day.

Regardless of how weird and new it is to be out of an organization I loved working for, I’m confident I made the right call, and that I did a lot of the things I had wanted to make progress on: shifting the organization’s management style somewhat, making more decisions based on direct user feedback, making support a central piece, giving people more power to enact change, and giving my team a chance to own their areas entirely.

I wanted to add a small checklist of the things I did as I prepared to leave, in case it helps others who are planning a similar transition in a small team.

Comms & finding a replacement

  • Work with your boss on an appropriate notice period: set expectations on how/why this may change. For us, the basics were that if we couldn’t hire from inside the org, our timeline would probably need to change.
  • Agree on communications: decide right away how and when you will communicate your departure to your team. This may change, but it’s good to set a plan right away. In my case I:
    • notified exec team
    • meet with exec team to decide on next steps / how we would replace me
    • asked the (potential, at that point) new CTO about taking over
    • did a context & learning session with exec team + new CTO, then 1:1s and time for him to reflect and accept/reject the offer (he accepted, thankfully)
  • Once that was done, we notified the team. I told everyone who reported directly to me in our 1:1s, and the rest of the team via DMs. This worked out well. I also offered and did some extra 1:1s with folks who didn’t report to me but had things to discuss and wanted to chat. This was good because by the time people found out it was already clear there was a transition plan in place and there was no uncertainty on who would be the next CTO.

Working with direct reports on next steps

  • Ensured everyone had their brag docs up to date
  • Worked with everyone who directly reported to me on perf reviews (it was right at formal review season so this fit the timeline, but I would have done “final” reviews regardless since it helps the new leader know where people stand, and it helps lower the anxiety of the change)
  • Ensured we reviewed all salaries (it was, after all, salary review season too) and adjusted accordingly. This was important because I didn’t want to leave before ensuring we had confirmed salary adjustments. Salary is complicated, and it takes some context to understand how to deal with this, so I didn’t want a new leader to have to do it right away.
  • Everyone had goals for 2021 and things they wished they had done more/less of, and we set those up too in the transition documentation I sent to the new CTO.
  • Encouraged folks to go straight to the new CTO and ask about plans, goals, and changes. I knew it was coming, might as well help folks be comfortable with it.
  • We had (have) an intern from Outreachy, so beyond comms, it was important to also establish ways to contact me as her internship would continue well after I left.

Working with my replacement during the transition

  • I don’t have access to my calendar from work to verify but from memory, the new CTO and I had about 16 meetings, each between 1.5hs and 3hs, during the last 7 weeks of my transition. These were working meetings. We would pick a topic, and go deep into it. Some were technical things I knew more about due to my own context. Some were management things. Others were organizational context on its own that he may not have had.
  • Hiring: we dedicated a lot of time to discuss hiring, and presented a plan to the exec team.
  • Ensured we had discussions about inclusion, diversity, sexism, racism, and how they impact people. This matter to me greatly, as I worked pretty hard to fix issues that still affected my team, and I didn’t want to risk these efforts being ignored later on.
  • Set the tone for the new role and what it entails, explain where things get messy for me, and give him time to reflect on how it would look like for him.

Wrapping projects up

  • I had two important projects to wrap up during my transition that unfortunately had gone mostly to me as the only backend engineer. I worked to ensure I finished the key components, released them, and then transitioned it. While it wasn’t as smooth as I wanted it to be, at least we felt ready for me to not be involved by the time I left.
  • Pair programming on things that were ongoing: we did some pairing on areas of the codebase that the new CTO needed to understand. This was meant for him to be able to  onboard new backend engineers later on, and take care of emergencies as needed.
  • We had a contractor working with us whose contract ended right around the time I was leaving, so I had contact details sent over in case it was necessary.
  • For most of the other projects, because they were owned entirely by people in my team, we didn’t have a lot to do. It was just a matter of ensuring there was awareness that they existed and where to go for help.

External comms

  • I wrote a blog post about my transition, and we used it to announce my departure to external partners.
  • My boss (ED) managed the comms to our board.
  • My boss managed the Twitter comms

This is the concentrated version of 3 very intense months. When my last day came around, everything was ready for me to leave, and it was just a matter of sending goodbye messages and preparing LinkedIn recommendations for everyone I had worked with there.

I’m now taking a little break to reflect and decide what’s next.

 

 

 

 

Categories
Management Short thoughts

More thoughts about management.

I wrote this as my answer to an application question for a remote company a few years back. It’s a bit outdated, but I thought I’d share it anyway.

In a broad sense, to me management is about people and the things that stop them from achieving what’s important at an individual, team and company level.

It’s about understanding and helping solve the issues stopping a team from being in their A-game, which starts with the individuals and ends with the company as a whole. If a team has issues because people are distracted thinking about how bad their CI solution is, or someone is blocked every morning because they aren’t getting the information they need from another department, it’s a manager’s job to find out and help the team come to a solution. The best solutions come from the people closest to the work, but the responsibility of finding and facilitating the resolution of those issues is on the manager; sometimes that means just supporting the team on a decision they made, and sometimes it means solving it yourself in one way or another.

I believe one of the best things you can do as a manager is becoming skilled and comfortable at delegation and facilitation, and always pushing yourself to delegate larger and more important work to the people who demonstrate they can do it. It means you are comfortable looking from outside, coaching people to excel at their assignments, and being accountable for work that you had very little to do with in the day to day.

It’s about delegating authority, rather than only tasks.

You have to be comfortable saying no often and explaining your rationale as needed, but you also have to be able to check yourself and reevaluate If someone comes to you with a concern about a decision you made.

Understanding and communicating the value of what we’re doing so that others have the context to make smart decisions is one of the most high value things you can do as a manager. People deserve to understand why their work actually matters, and they produce much better work when they do.

An effective manager should be comfortable switching between coach and the person being coached, being able to put yourself in a position to ask questions to get to the root of a problem without letting your ego get in the way.

Being a decent manager can mean being aware that you have very little control and still owning up to whatever the team is achieving or not. It’s finding the time to be connected to the work that the team is doing and being able to facilitate decisions, but not letting yourself hide from problems in the comfort of coding. It’s also remembering that your work touches real people with real lives.

Categories
Management Short thoughts

Ensuring new tech leads get a chance to succeed

When assigning technical leads, take care to put them in a situation where they will succeed easily, especially if this is their first time with a tech lead role. The tech lead role is one of the most challenging roles to go into because you live in a sort of limbo where you are still mostly doing IC work but have much more responsibility.

If it goes badly the first time, you might lose a high potential IC over a project that was doomed from the beginning. Try your best to set up all your new tech leads for success, and eventually you might just get lucky and find your replacement in one of them (you know, for when you’re hit by a bus or a bike or something).

Categories
Management Short thoughts

Engineering Management feels slow sometimes.

The rewards come slowly compared to individual contributor work, but they tend to be more interesting to me because I can see the impact of my work on people and projects in a more global way. It can be someone finally getting that promotion they have been working hard to get, features shipping with a reasonable cadence when you were struggling to get things out before, or realizing the risk you took 3 months ago by firing someone had a large positive impact on your team’s productivity and happiness.

Engineering management is extremely rewarding, and even though you don’t see things changing on the day to day as much as you do when you’re an individual contributor, you can usually look back a month and find something you influenced that impacted your team and/or your company.

Categories
Management Short thoughts

Pragmatic engineering management.

I tend to approach engineering management decisions as I do software development: small adjustments most of the time, big refactors only when the potential long term rewards are worth the risks and there’s no other viable solution.

Like in software engineering, the context in which we make decisions matters. The strategies that make sense in a small, 3 dev team don’t really scale for a larger group. The decisions we make to create an initial prototype to prove an idea are different from what we’d do for production applications, but it’s important to remember that doesn’t make them invalid, it makes them good decisions for the context in which they were made. The same goes for teams. The way you manage a 3-person team is not the same as with a 20-person team, and that’s ok.

Categories
Management Technical Debt

Technical debt – where the value hides.

[this is a short, not fully developed blog post – consider it “in development”] I’m getting into the habit of learning in the open, and I think part of letting go of the idea that I need to do everything right is allowing my incomplete ideas to be in the wild.

I think a lot about technical debt. What it means, what makes it happen, how we get rid of it. Mostly, I think a lot about the fact that no matter what you do, you always go and create it again.

Debt seems to be a poor analogy for something that occurs no matter what. It’s essentially impossible to not create technical debt, because time passes, and time itself creates it. Software becomes deprecated, packages stop being maintained, a new security patch is released, and you need to change your code.

Technical debt is a great analogy for the fact that you can incur technical debt to be able to get to market at some point. You take on some debt, you plan to repay it. It starts to generate interest. You pay a heavy amount in interest, and if you don’t, it snowballs, until it consumes all available resources. In that sense, technical debt is the perfect analogy. It’s easy enough to explain it to finance, who understand risk management and how to use debt responsibly; they know how to wield debt in ways that benefit the organization, much like engineers often use some tech debt to get ahead. It’s harder to explain to people who have never taken on debt on purpose, who don’t see it as a tool but only a burden; debt, both financial and technical, are tools to be deployed.

But isn’t debt always bad?

Not really. Some technical debt is almost inevitable. What’s not okay is to let it create a ball of debt that never gets repaid. What was a good decision yesterday can quickly become a bad one if nobody takes this resource consuming debt into consideration.

It’s a bad analogy if you think about the fact that if someone offered to take all your financial debt away, swipe it off entirely, you probably would jump at it.

If I offered a magic wand that takes your technical debt away, and you said yes, you would be throwing away a lot of money that you can never get back, rather than finding yourself with a lot more money to spend.

Your technical debt is where your product hides valuable lessons, and to take it away without rebuilding that knowledge is foolish; it’s why rewrites can be dangerous if not done with care and with a focus on enabling progress rather than eliminating all problems.

The fact that a lot of the important things in your product are hidden in layers of technical debt may be the reason that it’s hard to get rid of it; it contains important learnings, important rules of the business, things that you need to understand to be able to rebuild without that flavor of tech debt.

More than once, I’ve seen myself or others attempt to remove important business considerations when we rush to “clean things up” that don’t make sense. A gnarly bug-fix that wasn’t well documented. An edge case fix that took weeks to identify and solve at the time, with code that looks like crap but serves a percentage of your users well. As you refactor, the risk is that you may introduce different tech debt into your code. That’s not necessarily a bad thing. Some tech debt is dangerous, and some tech debt won’t be considered debt for months or years. But you know it’s going to appear. You may not see it now, or tomorrow, but 6 months from now, some new developer will surely point it out, and you’ll be dreaming to rewrite it again.

When I talk about technical debt being a feature, I know many engineers scoff at the concept. 

If only management let us do it right the first time.

I’ve seen engineers spend weeks arguing for the correct interfaces, the perfect APIs, the  amazing search system they would implement, if only they had the time. I’ve seen managers like myself give them that time. I’ve also found myself arguing fervently that baring a rewrite nothing could save us… and I’ve been wrong on both sides.

With all the time in the world you plan, you procrastinate, you argue with your peers and reach decisions that seem great, perfect even at the outset… solutions that 6, 12 months down the line are not quite good enough.

I advocate for a continuous improvement approach because it’s the only thing I’ve seen that works. Even then, I’ve never seen a team take it to the point where tech debt is swiftly addressed without guilt. I work to get my teams there.

When I think about the future of a tool, maybe 12 months from now, I think I want us to go “ah yea, this bit of tech debt is there because ….” and have a perfectly sane explanation for it. Not “we were in a rush” but “we needed to do X, this was the solution that made sense due to time constraints”. Even better, I want teams to be able to admit: “This was the best solution we could find at the time, but now we know more.”

I don’t want teams to ashamed of tech debt, I want teams owning it, being able to articulate why it exists, being able to articulate how they will address it, and solving it.

I want teams to proudly state that they refactored an old piece of code that caused trouble without the tingle of guilt that the code was there to begin with. I want product managers to ask what the impact of the debt is, and to make decisions as partners, with engineering, on how and when to address it.

I want teams to operate with safety and be rewarded for it.

Categories
Management

The fallacy of the brilliant jerk.

Early days

The signals were there from day one. One of your direct reports asked a question and Adrian answered with a mocking tone. You told yourself you’d have a chat with him after your next meeting. By the time your meeting is over, they are all cracking jokes together. You shrug it off, thinking it’s all in your head.

By the end of their first week, Adrian has built a new module that got the VPE’s attention. The VPE tells you how impressed she is with the new hire and congratulates you on your choice.

A week later, a senior engineer is looking frustrated. She’s sitting next to Adrian, and they seem to be discussing the new module your team is building. You take her aside and ask what’s going on. She explains that Adrian keeps derailing the discussion to shit on our tech stack. He starts talking about migrating the backend to a new language he started learning last month. You have a talk with him, and for the first time you see it: he thinks criticizing the languages and technologies you are using without context makes him look smart.  

Nobody in this team gets promoted above senior unless there is strong evidence that they are able to help others grow. No senior engineer hoping for a promotion suggests spending millions of dollars on a migration based on personal preferences. You make sure he understands this, too. They nod, but not even 24hs later, you get a lengthy rant about your organization’s technology stack. The word “incompetent” is in there. You can’t believe you got yourself into this mess.

More likely than not, you have a jerk somewhere in your organization.

Most of us have worked with the so-called “brilliant” jerk. This is the person who speaks the loudest and cares about one perspective only: their own.

The jerk is always looking for something to criticize. If they can’t find anything, they will derail all conversations towards the things they want to discuss, like the fact that they really hate the technology choices made by a CTO 3 years ago, or their dislike of the code review process, which they assure you they don’t need to go through because they are very talented. 

They don’t have time to help unless there’s an opportunity to bring someone down.

When a junior engineer asks a question, the rest of the team jumps at the chance to be helpful, while the jerk looks for a way to nitpick their word choices. When the junior engineer asks “How do I import a component in the React framework”, they answer “It’s not really a framework” with a snarky link, without even giving them the information they need.

We’ve all been inconsiderate at one point or another, but the jerk will find as many opportunities as possible to bring people down. Their intention is not to educate. They just want to look smart.

The complaint

It only takes 3 months for the first official complaint to reach you.

You get a DM from Felipe, one of your senior engineers. They want to have a meeting with you today. As soon as you get the message, you get a knot in your stomach. Ten minutes later, Felipe has told you that Adrian is not a good fit for the team. Apparently, Adrian told Susan that she needs to stop wearing make-up if she wants to be taken seriously as an engineer.

You ask Adrian to explain, and he says it was a joke. He goes on a rant about the good old days, which you have to assume means “2019”, because they barely have 5 years of industry experience. You shake your head and explain that’s not an appropriate joke. For starters, it wasn’t even funny. You tell him to apologize right now. He nods, and the conversation is over.

Knowing you can’t go back to your desk until you calm down, you stay in the conference room for a few minutes listening to music.  It only takes 15 minutes for Susan to knock. She tells you that Adrian refuses to apologize for his behavior. You tell her how much you value her as an employee and assure her that you’ll deal with this. When you ask Adrian, he says he apologized. It turns out that Adrian’s version of an apology is “I’m sorry you were offended”. You explain how that’s not an apology at all, and you ask him to try again.

It’s 5pm, and things seem far from resolved. You bring Adrian back for a candid conversation. If this happens again, you will escalate it to HR. You know HR won’t help you unless they see Adrian as a risk to the company, but that seems to scare them into behaving for a while.

Fear is driving you to make bad decisions.

A more experienced leader would have fired Adrian that day, but this is your first time dealing with a so-called “brilliant jerk”. You think you can solve this. You think his contributions make up for the problems he caused. Furthermore, you’re scared your boss is going to think you don’t know how to hire good people. Your brain is spinning, and you feel like a failure.

A week later, Adrian yells in a meeting because someone else broke the build. He seems to have forgotten he caused a major production incident two days ago by ignoring the team’s processes. When that incident brought a client’s site down, everyone rallied to fix it. Not a single engineer pointed out who was to blame. That’s the culture you always wanted to build.

Trust has been broken.

A while later, Susan leaves. You don’t have to ask. She’s leaving because you didn’t act.

You failed to recognize the importance of this situation, and now it’s too late.

By now, it’s been almost a year. Now the jerk is a feature of your company, someone who nobody knows what to do about, or at least they won’t tell you… because in all those days, weeks, months, your brain played a little mind trick. Once this person started acting like a jerk, you started valuing their technical contribution as if it was the most brilliant code you’d ever seen.

Your team got the message: none of you are as valuable as the jerk.

Nobody wants to work with a jerk.

When the jerk receives something broken, they broadcast it. But when they push something broken, they get direct, one-to-one feedback from the person trying to work with them. This is how they stay employed. This is how they keep a reputation for being brilliant.

You hear “not-jerk broke the build” from them all the time, but you rarely hear “jerk broke the build”.

Nobody wants to hire a jerk.

You would never hire an incompetent jerk. Every little annoyance becomes a reason to remember how many times they saved your ass in a tight deadline. In those moments, the jerk starts to become not just a jerk, but a brilliant one.

You tell yourself you’ll talk to them once that new feature is done. It can’t be that bad, right?

Is the brilliant jerk really brilliant?

I want to give you a moment to think back on your jerk. The one that’s still in your team, the one that your boss admits “is not that great with people, but he sure is smart!”. The one who works alone because their teammates gave up on pleasing them.

Think critically. Take your time. If you ignore the impact they have on your team’s morale and just focus on their technical capabilities, are they really that great? Do you need them, or are you just scared of what you need to do next?

I will make a wild bet: they probably aren’t as critical to the company as you want to believe. They seem great when they save you from a last-minute problem, sure. But did they also cause the problem? Think back. Did they really save you? I bet they caused the issues more often than not.  That release they just saved? The deadline may have been met without heroics, if your team had not been busy dealing with a jerk’s bad attitude and going back and forth on decisions all month long trying to please him. The deadline may have been reached, if you had fired the jerk when he acted that way towards Susan. Susan may still be here, and Felipe wouldn’t be looking for work as you sit down to negotiate yet another deadline.

What about the really brilliant ones?

We generally want to believe that jerks are brilliant, because hiring and keeping someone who is both an average engineer and a jerk for a long period of time would make us look even worse than we already seem to be. The thing is, it’s very rare for someone who is a giant problem for your team to be performing at senior+ levels in their work, because engineering is a collaborative activity, and the highest performers are those who push their teams further rather than make them dependent on them or bring them down.

Sure, there are some who are truly competent if they can work alone. But realistically, all jerks cannot also be amazing engineers, despite the myths that we have been fed over the years. Even if you don’t account for the damage they do to their teams, it’s just not worth it.

In the end, it doesn’t matter how smart they may be.

It’s not worth it. Stop fighting a lost battle.

Next time you excuse the jerk in your organization, ask yourself if they are a net positive. What would happen if this person gave their notice tomorrow? Would someone in your team fight to keep them? Or would they be counting the days until they are gone?

Is keeping this person in the team so important that you are willing to lose your ability to hire and retain great people? Are you willing to continue to prioritize them over their team’s mental health?

If there’s a chance that you are just making excuses for the benefit of your own ego, it’s time to have a chat with your team.

Your team will respect you more for it. Given enough time, all of us will end up hiring a jerk at some point; what we do about it matters just as much as the fact that we did it. Mitigating the damage is the next best thing if you failed to prevent it. Stop making excuses, and work to rebuild the trust that’s been broken.You will respect yourself more for this, too.

Categories
CTOing

Some newbie thoughts about Roadmaps

TLDR: from my perspective as a CTO-doing-product-manager-stuff, the key part of building a roadmap is not what the document says, but what I learn and the connections I make through building it and maintaining it. If I just throw a bunch of features in a planner with no clear alignment to the org’s goals and user needs, that’s not a roadmap, that’s a wishlist. I get confidence in our roadmap when at any given point, I can direct people to it and explain how the future we imagine links to the things in the document. From an engineering perspective, I always appreciated roadmaps when it was clear why something was in there, because it told me there was a plan and not just a bunch of unconnected things in a Trello board.

Roadmaps can be intimidating, both to read and of course to create. If they are good, they can be useful in helping stakeholders and users understand where a product is going and gaining alignment as it gets updated with collected inputs, but they often deviate not into a tool for clarity but one of pressure.

With pressure to deliver on made up deadlines come stressful release cycles, and with stressful release cycles come low quality features that get shipped just to get it done before the made up deadline.

After a while, so many things deviate slightly from the plan that nothing makes any sense. It’s no longer a matter of pushing a schedule by 3 days but one where plans for an entire quarter are delayed and inconsistent. As a team grows, this becomes an ever bigger problem; executives expect results consistent with the growth of the team, and the teams are now demanding a cleanup of all the mess they had to create to reach the deadlines that someone else imposed.

Roadmaps should be a guideline that invites conversation. I am not even sure they should exist beyond a quarter, except in very loose terms.

Roadmaps aren’t a collection of deadlines. When we place a deadline, it should matter. It should mean that is the absolute latest date in which we can deliver safely, not just that someone in the C suite will have a tantrum if it’s not done.

Roadmaps should not every detail, but should bring clarity to how things connect to each other. Details are best left to the moment when the teams will work on implementation, since that’s when you have the most information available to make those decisions. Roadmaps, I believe, should not be detailed lists of tickets that someone will code as they are.

Roadmaps should enable creativity. Teams should be given the freedom to explore solutions to a problem rather than being presented with the complete solution; it’s the people closer to the work who are often able to draw the correct implementation and cut the scope to deliver as much value as possible within a constraint.

Roadmaps should be a tool for clarity, which in turns enables autonomy and better decision making.

Reasonable roadmaps cannot be built in 30 minutes meetings in a vacuum.

Analyzing customer usage, insights, feedback. Talking with users, with support, with stakeholders. Figuring out what the space looks like outside your org. Figuring out if the current state aligns with the organization’s vision for the future. Understanding in detail the why. Comparing what would not get done if this other thing gets scheduled. Understanding the trade-offs and being able to explain them. This is hard to do if your product manager doesn’t have time to think. Give product teams space to think deeply, rather than just react.

In the end, it’s not so much the formal roadmap that matters in a very small team, but the process and learning that got it done.

Roadmaps are not just the what, but the why, when, and for whom.

Categories
Managing while Remote

Remote work is not a catch-all excuse for bad team communications.

When you have offices, a lot of your communication happens face to face, and most of those interactions aren’t documented anywhere. Jeff said “paint the walls red”, and Anna’s team did exactly that. If this happened in a hallway chat, there is no documentation of why they decided to do it, or when. If there are no meeting notes, you can’t easily go back and say “this discussion happened on April 2nd, 2018, these 3 people were involved, this is how it was decided”.

Let’s think of your remote team now, and what the process looks like for them. Even the most bare-bones setup for a remote worker involves some kind of chat system with the ability to search, e-mail, and meetings scheduled through calendar invites or by calling through your chat system. If you aren’t taking meeting notes, it won’t be an easy-to-find path, but you may still make it back to the source if all comms happened digitally. This means you have a few ways in which you decide things, how you communicate casually, and how you show what your organization values.

Before we move on, lets do an overview of some methods used in each environment.

Where meetings happen

Office-only meeting types: Hallway, Coffee breaks, Lunch, Go to someone's desk, Meeting in a room. Remote-only meeting types: none. Shared meething types for office and remote: Video calls, Chat apps.
Where do meetings happen?

Who gets invited

This one is a little trickier. Remote environments often require that you are aware of multiple time-zones, which introduces an extra layer of complexity not found in offices. While there are ways to make it work, it’s still something to take into account. In both offices and remote environments, it’s good to be mindful of the vacation calendar and working hours, in any case. People sometimes go on vacation or take long weekends, for starters, and they may need to pick up kids, care for their parents, and a million other things outside the workplace.

In both remote and office environments, the tell invited should be the ones you need for a decision or discussion.

How decisions & decision-making is documented:

Office decision making: a whiteboard? (I've seen it happen!). Shared across office and remote: Meeting notes, Chat, Decision framework documents, or nowhere

 

What happens after a decision is made

Both Remote & Offices have two options: act on a decision, or do nothing.

How people’s achievements are made visible

Remote and Offices both share similar ways to recognize someone publicly or privately: Meeting, Chat, Performance reviews, or others, like an event.

What did we learn from this comparison?

I can see you going “But this doesn’t prove anything!”. And you’d be right. It doesn’t. What it does, however, is show you that in remote companies the main communication blocker is in casual settings, not formal decision-making such as communication of goals or onboarding people into your cultural values. You no longer get to just tap Jeff in the shoulder(**) to discuss an important issue, or find them in the hallway(**) you now need to DM them or email them.  The inability to do things remote prevents you from doing? That is also culture.

In a remote company, you can’t try to hide your lack of healthy team culture and values with a ping pong table and a few after parties. You have to do the work. You should still do the work in an office, but that’s not the topic of this blog post.

Your team can gain alignment just as well, and it’s more likely that you will know at the very least who decided what, and how it was decided. In most remote environments, it’s unlikely that something happened without at least a message in your internal messaging system (ie: slack), and if you follow some good practices like note-taking, sharing back decisions, and creating agendas for your meetings, you will have a detailed log of how something came to happen, plus more opportunities for people to give their thoughts in a structured or unstructured fashion.

Culture is not ping pong tables and beer. Culture is who gets promoted, who gets a raise, who gets hired. Culture is also firing that person who is being a jerk to all your support teammates. It’s how you treat your customers, and whether people get promoted for being excellent at their jobs. Culture is the behaviors you reward and punish, and you can do those things just as well in a remote team.

I’m not saying remote work is perfect or easy (it’s not!), all I’m saying is that we’re giving remote work too much credit for its ability to create more dysfunctional teams than offices create.

We can create dysfunctional teams with unclear culture in both environments, but we have arguably more hard data about our culture when communication is optimized for asynchronous communication.

(**):  please don’t do this, even if you’re in an office. It’s an easy way to make sure decisions are made without involving everyone needed, and it distracts people.

PS: lots of people don’t do well in offices. Lots of people don’t do well remotely. For those groups, it’s obviously detrimental to do one or the other. What’s important to remember is that both groups exist and that some are in-between (need a balance, which can also be just fine).