Writing Useful Performance Reviews: Evaluating the data and writing the review

This article is the second in a four-part series on writing performance reviews. In the previous article, I wrote about preparing data for the assessment. In this article, I talk about filling out the review form. The next article discusses making salary recommendations. The final post covers delivering the review.

Have everything ready before you begin writing.

Before you begin to write your review, make sure you have the role and level definition for the person’s current role and level. You should also have the description for the job at the next level. If you followed my suggestions in the previous post, you have the folder with earlier reviews, notes from 1:1s and project meetings, the peer feedback, the person’s self-evaluation, and your notes on the work output. Your company’s performance review form and supporting process documentation are necessary as well.

Review your documentation.

If you followed my advice from the last part, you have assembled a large amount of data. You will now go through it all to evaluate the person’s performance relative to the standard. You may find it beneficial to highlight essential information in the documents as you review them or copy/paste them into a new file for easy reference.

If you can, do your review in one sitting. This process helps you build an understanding of the person’s performance. You are creating a context with as much data as possible, so keeping it in your near-term memory is beneficial. If you don’t have enough time to do this in one sitting or think you may be interrupted, take good notes that you can review after a break.

As you read over the data, you should be consciously building a narrative of the review period. Each person will have some highs and lows, but patterns of performance should emerge. After reviewing the data, you should have one or two specific messages to convey to the person about their performance. That is the goal of data accumulation and evaluation.

Start with the review form.

First, read through the review form, making sure you understand the expectation for each question. Then, if you are in doubt, use the company documentation on the process. Get clarifications from your HR partner if necessary.

Understand the role/level definitions.

Make sure you understand the person’s role expectations at the current level and the next level. The current level documentation covers the performance expectations the person should meet now. The next-level documentation is helpful for you to recognize performance beyond expectations.

Go over any previous reviews.

Read all the previous reviews the person has received at the company in chronological order. This review will help you see patterns and trends, and goals met and missed. The essential evaluations are the most recent, especially any from the last couple of years. Take extra care reading these to remind yourself of prior performance discussions (if you wrote them) and understand the current development areas.

What if you disagree with the assessments in reviews written by their previous manager?

Suppose the person is new to your team, or you are a new lead for an existing group. In that case, occasionally, you will read prior reviews and realize that the previous manager used a very different approach to performance than your own. Ideally, everyone is evaluating against the company’s career pathing rubric, but sometimes it is applied differently. In this case, you may need to prepare for some challenging conversations.

You might choose to treat this review cycle as a transitional one, giving people time to adjust to your management style. If you do that, make sure they understand how future reviews will work differently.

Read through your notes from your review of e-mail or messaging exchanges.

Scanning through your messages from the review period will help remind you of any events, successes, or challenges that you may have forgotten about during the review period.

Study the work output to understand the person’s contributions to their projects.

A reminder from the previous article: a person’s code contributions do not reflect the sum of their contributions. Senior developers may contribute less code because they are more efficient or spend time helping other people. Look at code reviews, bug notes, documentation, Architectural Decision Records, or anything else that will demonstrate contributions to the team’s projects.

You’re probably arriving at some opinions at this point.

By this point, you will have started to build the narrative, identified some possible key discussion topics, and formed opinions on the person’s performance. You likely started the process with ideas already, based on your interactions with the person over the review period. The views you bring at the start of the process aren’t necessarily incorrect. Still, they may be untrustworthy because of recency bias, affinity bias, or the person being very good at promoting their accomplishments (or taking credit for others’ work).

Now you will start to review the more subjective data. Does what you find conflict with or reinforce your existing viewpoint?

Review the peer evaluations.

Peer evaluations can be problematic. First, people can be tempted to cheat, colluding with their peers. Second, many people don’t want to criticize their co-workers. Third, they may worry about how their comments reflect on themselves. For these reasons, you will want to read between the lines when reading peer evaluations.

As you read through the peer comments, look for examples that support or challenge the narrative you have been building. If you find many things that challenge your message, you may reevaluate your opinions.

Read the self-evaluation last.

When people are evaluated based on something they produce, they naturally tend to create a narrative that accentuates their positive contributions and minimizes their negative ones. It isn’t necessarily deceptive; it is human nature. Therefore, I always read the self-evaluation last. I don’t want it to influence how I evaluate all the other data. However, the self-evaluation is still relevant because it is the person’s view of how things have gone—their side of the story.

There are a few things I always look for when reading this document: Are there good explanations for some challenges they had during the review period? How aware are they of their challenges and strengths? Are there any comments that might be relevant for the reviews of others on the team? Where are they interested in growing? Finally, is there anything that you can do to support them better in the following review period?

Now, write the review!

Having reviewed all the data, you are now ready to write the review. You have one or two messages for your narrative as well as the data to support it.

Be clear.

One of the biggest mistakes people make when writing a review is trying not to be too negative or too positive. Particularly problematic is using the “compliment sandwich” or vague language to avoid a challenging conversation when delivering the evaluation. Another mistake is creating a “balanced” review by overemphasizing small challenges or successes to offset a too positive or negative narrative.

When someone reads your review, they want to know if they are doing well or not doing well. If the person doesn’t know after reading the evaluation, it is not helpful to them. In addition, they should have a clear connection between their review and their salary adjustment.

They can’t all be extraordinary.

Often, I see inexperienced or poorly trained managers produce reviews for their teams that are uniformly good. “Everyone on the team is doing great!” they say. However, even on the highest performing teams, some members will contribute more than others during a review period.

Universally positive reviews are a signal that a manager is either not promoting team members (so they are all overperforming relative to their level), not paying attention (they are missing things), not challenging the individuals on the team, or setting their expectations too low. Exclusively positive reviews are a signal about the quality of the manager more than the quality of the team.

Yes, you can have a great team where everyone is contributing well. However, each person still has strengths and weaknesses compared to the role/level rubric. You need to understand that you aren’t doing your duty to your team or the company if you don’t evaluate people objectively.

Suppose you want to emphasize that the individuals on your team are outperforming individuals on other teams (often crucial if your organization “stack ranks”). Make that point in the accomplishments noted from each team member. Rating your team universally high just looks like you are trying to game the system.

They don’t all suck.

Something I see less often is a manager rating their team uniformly poorly, usually when a new manager joins an existing group. When I see this, I wonder if the manager is trying to make a statement about the team they inherited, if they are setting the initial base level low so they can show improvement, or if they are setting their bar way too high. As with overly positive reviews, this behavior is often more indicative of issues with the manager than the team.

If you find yourself compelled to give poor ratings to the entire team, challenge yourself to defend your ratings by comparing each person’s accomplishments against the rubric. Are you being too harsh in your judgment or can you justify each of the ratings? Use a “five whys” exercise for each person’s rating. Do find unique causes for each person’s poor performance, or does it all come back to you?

Use the data you collected and analyzed in your review.

As you fill out the form, answer each question to support your message for the recipient. Answer each question with a statement, then provide data that supports your answer.

Avoid phrases that ascribe intent to the person’s actions. Instead, speak to what they did and the measurable effect it had. Do not use expressions like “I think” or “it seems.” These phrases show a subjective interpretation. You want to ground your assessment in facts. Being fact-based avoids any disputes about the review if the person does not like the result.

Provide a plan to help underperformers.

Identifying areas of growth for someone is helpful for them. However, if you are being straightforward, a review for someone underperforming can be demotivating. Rather than finding positive things to balance the assessment at the risk of making it less forthright, you should focus on how you will help the person address their performance issues. If the performance is so poor that the person will put on a performance improvement plan, be specific on what they need to change to move off of the PIP.

Provide next steps for growth for the people performing well.

What are the next steps for those on your team who are overperforming against their role/level? What opportunities can you identify for them? What new responsibilities? Are they on a path for promotion? Where should they focus on continuing their growth?

People who are doing well aren’t usually satisfied with being recognized for their work (although it is imperative to acknowledge their work). They want to know what is next for them. They want more responsibility, more challenge. They want to expand their skills. How will you help them do that in the next review period? They will want to know.

There is nothing wrong with just doing the job.

Most of your team will not be underperforming or overperforming. They will be doing their jobs well. The work that these folks do is essential. They are how the team’s work gets done. Recognize their strengths and weaknesses and tell them how you will support both.

Some are happy to continue to deliver solid performance, and unless your company has an up-or-out culture, this is fine. People will have natural ebbs and flows in their careers.

If the person is ambitious, focus on opportunities for their growth and be clear on what overperforming requires. The company’s career pathing rubric is a reference to show them what is needed.

When you have written all the performance reviews, reread them.

Once you have completed all the performance appraisals, go back and review them. Look for patterns in your assessments. Look for potential unconscious bias. Try to read them as your manager or some future manager of the person would. Are you providing enough information to justify your statements? As this process can take a long time, does it seem that you put less effort into later reviews when you got tired?

Before submitting them to your review system, make sure that you are happy with them individually and as a group. If you have time, you may want to wait a few days after writing the last review before you reread them to give yourself some space.

If your review process includes a grade, ranking, or nine-box classification, ensure that your performance reviews support where you put each person. Also, look to see what the distribution of rankings or grades makes sense. For example, are your recommendations so clustered that it doesn’t seem that you are using good judgment? Does your review justify your choices?

Now that you have written your reviews, be ready with your raise recommendations.

In some companies, salary change recommendations are part of the performance review writing process. It runs as a separate process in other companies (usually near the performance review process on the calendar). Line managers do not have direct input into compensation changes at some companies.

However compensation changes work in your company, it is good to understand how to make compensation decisions/recommendations for your team. That is the subject of the next article in the series.

The four parts of this series are:

  1. Assembling the data
  2. Evaluating the data and writing the review (this article)
  3. Making salary recommendations
  4. Delivering the review

Thanks to Laura Blackwell for editing assistance

Writing Useful Performance Reviews: Assembling the data

It’s December, and that can mean only one thing. For many of us, it is now—or soon will be—time to write performance reviews for our team. Writing reviews can be daunting for many, especially those with large groups or little experience. There are some things you can do that will make the process less onerous, no matter what format or schedule your company has.

It’s December, and that can mean only one thing. For many of us, it is now—or soon will be—time to write performance reviews for our team. Writing reviews can be daunting for many, especially those with large groups or little experience. I often hear managers (even senior leaders) bemoaning the effort it takes to write the reviews for their group members. However, there are some things you can do that will make the process less onerous, no matter what format or schedule your company has.

I’m going to break this subject into four parts:

  1. Assembling the data (this article)
  2. Evaluating the data and writing the review
  3. Making salary recommendations
  4. Delivering the review

Why do we do performance reviews?

The rationale we used to hear for performance reviews is that they are for the employee to know how they are doing, to give them helpful feedback on what they are doing well and where they need to improve. Today we try to provide this feedback often, throughout the year. I often tell the managers on my teams that there shouldn’t be any surprises in the performance review. It should instead be a summing up of the feedback that the person has been receiving all along.

If we give feedback throughout the review period, why do we need to do the performance review? It is for the company and us almost as much as it is for the person receiving it. Ideally, we maintain a narrative across the year with our feedback, reviewing months of our notes and prior communication before each one-on-one. All too often, the larger arc gets lost in the whirlwind of work. The feedback we give is usually very transactional about what has just occurred. If there are significant overarching discussions, we may be able to tie the feedback to that, but often the narrative gets lost.

The review is a chance to look across all that has transpired over a much lengthier period than the time between one-on-ones. It is a chance for us to take stock and find new patterns or trends that we may have missed. To look at the bigger picture and then build a shared understanding of that picture with the team member.

The review is also for the company because the company keeps a record of employee performance to justify bonuses, promotions, salary increases, and stock offerings. It is also vital to have a history of performance for a new manager if you move on from your role. Sometimes you will move to a new job, or the employee will move to a new team. When that happens, all the shared understanding you have built up is lost unless it’s written down. An employee who has been working years towards a new role may be set back significantly if their new manager doesn’t understand the efforts they have made over time and is looking only at what they see in the present moment.

A well-written review is a valuable document for the person receiving it. First, it is a checkpoint for them to refer to as they work towards their career goals. Second, it is a useful document for you to help them on their career path. Third, it is a favor to their future managers at your company. Finally, it is a critical document for the company and your manager to understand how to manage compensation for the person.

Preparing for the performance review. Start early!

Often writing reviews seems like a great deal of work because we wait until our company’s official “kick-off” of the review period. The people/HR team lets all the managers know the schedule, does a few meetings to discuss/update the process, and opens the forms for managers to enter data. If you wait for that moment to begin preparing your reviews, you may find yourself spending a lot of nights and weekends trying to get your evaluations prepared, since your regular work continues during this time. In the past, I’ve spent more than a few sad weekend days sitting in a ski lodge huddled over my laptop, writing reviews while my family was out on the slopes having fun.

Reviews happen at the same time every year.

Your company may adjust the dates slightly, but you can be confident that reviews will happen around the same time each year. When the dates are announced, you should be prepared. If you are incredibly diligent, you may be collecting and organizing data for your reviews year-round. If you haven’t done that, you can start reviewing, amassing, and organizing supporting data as review time approaches so that you don’t have to struggle and potentially miss things. While the format of the reviews in your company may change periodically, the general things that are measured likely won’t.

There are many sources of data you can assemble for the review.

As I start my preparation, I create a folder on my computer for the review period and a subfolder for each person. In each folder, I assemble all the documents and data for the performance assessment. I prefer to keep local copies because it is less likely that I will accidentally share the folder or file. To focus, I often go offsite to work on reviews, and sometimes these places have sketchy connectivity. Having the documents stored on my computer has functioned well for my process.

My primary data always comes from the notes I take during my one-on-ones and in meetings.

I used to store all my notes in Evernote organized by meeting (for recurring meetings) and tagged with the people in the discussion. This storage approach made it easy to find all my notes for each person to track what we spoke about across the review period. However, during the pandemic, I switched to paper notebooks. Now I keep an index of which pages people appear on. This index makes it easy to find all my notes referencing someone.

As I review my meeting notes, I assemble meaningful comments or things I notice into a new document in the person’s folder to organize my data for the review. I include where I got it from for each item in case I need to go back to the source.

The person’s prior reviews are essential.

I always download copies of any previous reviews for the person in the system and put them in the folder. It is vital to remember our prior review conversations and see any reviews before they reported to me. Reading previous reviews helps me understand the different challenges and strengths they have had and understand their career story at the company so far.

E-mail and slack exchanges may remind you of other events from the year.

Occasionally, things come up and are resolved between one-on-ones or meetings, so they don’t appear in your notes. I scan over the e-mail and Slack exchanges I have had with the person during the review period to see if I missed an event in reviewing my meeting notes.

I copy/paste these exchanges into the notes document in the person’s review folder, or summarize them there.

Make a list of peers of the person from whom you want to request feedback.

Your company may include a formal peer-review element in your performance reviews process. However, if it isn’t part of the company process, you will still find it valuable to ask for peer review feedback. The first step is to list the people you would like to ask for feedback, so you are ready. You may also write the template for the peer feedback request to prepare you to send them out.

I’ve noticed that in companies with a formal peer feedback process as part of their reviews, people quickly become inundated with feedback requests. Your chance of getting valuable (or any) feedback is greatly improved if you send the request early, before people have feedback fatigue.

If you know that peer feedback will not be part of your company’s process, you may still want to send out the feedback requests early to get the responses with enough time to follow up if there are questions. However, make sure that you specify a date by which you would like the feedback returned, and don’t make that date too far in the future, or people will put the request aside and forget about it.

The message template goes into the top-level performance reviews folder, and the list goes into the person’s folder. If you want to be tricky, you can put the list in a CSV file to make it easier for a mail merge. You may generate a lot of e-mail performance feedback requests as part of this process. I’ve automated this over the years.

When you receive the feedback, save a copy of it to the folder.

You may need to ask for a self-evaluation.

If your company does not include self-evaluation as part of the review process, you may ask the people you review to do that for you. If you are unsure what to ask, use your company’s career pathing rubric for their job/level. Ask them to compare themselves to the rubric and give examples of how they have met, exceeded, or missed the expectations. If you use individual goals or OKRs, they should talk about how they achieved or missed them. They should also talk about the areas they want to improve on for the coming review period.

You want them to complete their self-review early enough that you have time to follow up with them or others on anything that comes up in that document. Your company will set the dates for you if it includes self-review as part of the review process.

Save the self-evaluation to the person’s folder.

Review the work output.

A critical part of the performance review is reviewing the actual value the person created for the customers and company. A portion of your performance review as a lead or manager covers what your team achieved. Think through your teams’ accomplishments and think about how this person contributed to or detracted from those projects. Add concrete examples to the notes document.

Look over the person’s commits to the code of the project. Did they review others’ code? Did they contribute helpful comments? Did their code require many fixes? Did they contribute to the project documentation? Look over their comments in your project and bug tracking systems. Did they contribute helpful information? Did they help others?

It can be very tempting to try to be “objective” when looking at work output. Counting lines of code produced, number of commits, number of issues filed or closed, or story points completed might seem like unbiased data. Avoid this temptation at all costs. People have different approaches to knowledge work. Even if your team has strong guidelines on how work should be done, people will always have methods that your seemingly objective process might miss. Instead, focus on the value they contribute to the team and watch in the peer feedback for what they contribute that won’t show up in the source management or issue tracking systems.

Save your observations on their work output in your notes document.

What if the person didn’t report to me for the entire review period?

If the person is a new hire and is still eligible for a performance review, you will use this process, but just for their time in the company. You will have to make allowances for their onboarding and focus more on how they learn to contribute than on their actual contributions.

If you are a new manager to an existing team, spend as much time as you can with the prior manager to understand how they have approached each person’s development. Read the reviews for each person before talking to the manager. If the manager has left the company, you can still reach out to them. Hopefully, they will still want the best for their old team. Depending on how long you were in the team during the review period, you may need to emphasize the peer review component more than you would have otherwise. Be aware that changing a team’s manager is very disruptive to the team. You will only have seen the results of that disruption and how the team now works.

If the person joined the team from a different group in the company, consider doing a joint review with their prior manager to cover their work before joining your team. If that doesn’t seem necessary, you should still have an extended conversation with their former manager after going over the person’s previous reviews.

This process seems like a lot of work!

It is! It should be. It is important stuff. Think about the best reviews you have received from your current or former managers. Not just the performance reviews that were the most positive, but the ones that made you feel like your manager cared about your development. A good review inspires you with the knowledge that your manager and the company recognize the worthy work you’ve done. You know that your areas of improvement have been considered and are essential for your career development.

A good review requires good data. Therefore, it is incumbent on you to make sure you are going over as much as you can, not just what you can remember at the end of the review period (also known as recency bias).

The first time you go through this process, it will take a great deal of effort, but the payoff will be worth it. For the next period, you will learn to collect and organize this data as you go. If you assemble and categorize data all the time, it will be helpful in your one-to-ones as well and not just at performance review time.

Now you have the data. What next?

Now that you have assembled your data, you can evaluate the data against the expectations of the role and level. I will discuss that in the next part of this four-part series.


Thanks to Laura Blackwell for editing assistance

Becoming a CTO

A former co-worker reached out to me recently. They are a director of engineering at a midsize startup and just got their first headhunter inquiry for a CTO role. Having never been in the role before, they wanted to know what the position was like and how to prepare for the interviews.

I realized that while there are some books on technology leadership careers, there aren’t many resources explaining the most senior levels. My goal is to provide some insight and advice for those interested in someday becoming a CTO.

I’ve been a CTO for five and a half years

I’ve worked at a hundred-thousand-person company, seed-stage startups, and many of the variants in-between. I started as a developer and followed a traditional path of moving up to more senior levels on the development track and then moving to lead, engineering manager, director, VP, and now chief technology officer. I’ve been the CTO at three different companies in two countries and three parts of the technology industry. I’m part of a few networks where I meet and talk with CTOs of all sizes and stages of companies.

I’ve learned that one reason there isn’t a good reference for the role of the CTO is that the size of the company and the expectations of the CEO define the job. Some of my role expectations and responsibilities are like those of many of my peers at similar-size companies. However, there are also significant differences in our expectations from our executive peers and boards.

Because of the variability of the role, I will broadly share my direct experiences, joined with an understanding of the expectations of other CTOs that I know.

The early-stage company CTO is often the developer-in-chief

At earlier stage companies, the CTO is often the technical co-founder. They are likely the developer who built many of the earlier versions of the software and helped hire the original development team. Their responsibilities are primarily technical: driving architecture, doing advanced development tasks, and creating technical vision.

Frequently, the first CTO of the company is hired for their ability to code and not their ability to grow or manage a team. Depending on the person, they may also lead the development team. Still, often the team’s management will eventually move to another person, an experienced manager, who may report to the CTO or be a peer to them.

The early-stage CTO is the leading technical voice for the company externally, especially if they are a co-founder. They talk to investors and potential partners and meet with potential vendors. If they also manage the development team, they will solely represent engineering in the senior leadership team. As a result, they will have responsibility for the decisions made by the engineering team. Nevertheless, if they do not manage the team directly, they might not be involved in the decisions around the day-to-day operations.

A mistake that inexperienced founding CTOs often make is that they don’t understand their role beyond coder-in-chief. They focus solely on the technology and are not active participants in the company’s leadership. As a result, they do not work cross-functionally. CTOs fixated on the how without the why or what will not be in the role very long once the company grows.

If they have no experience leading an engineering team or organization, the early-stage CTO will be challenged to grow with the company. If they cannot scale, eventually they will end up in a subordinate role reporting to a more experienced CTO hired to replace them.

The midsize company CTO is responsible for leading the organization, corporate strategy, and making technical decisions

Once a company reaches a size at which it needs new processes and structures, the scrappy leaders who helped get the company off the ground are often replaced with more experienced leaders knowledgeable in taking companies through the next growth stage. If the CTO hasn’t grown into the larger role, they will be part of that replaced group.

The midsize company CTO is a full-fledged executive team member working cross-functionally and meeting with partners, investors, and customers. Frequently, the midsize company CTO will also manage the engineering organization. The CTO is responsible for setting technical direction, making sure good architectural decisions are being made, and establishing best practices and working methods. They are still expected to have good technical depth, but don’t often actively contribute to shipping code. A red flag for me personally is seeing a CTO role description where the expectation is to lead a 50-plus-person organization while also actively coding on the product. It means the executive team does not have appropriate expectations for the role.

A midsize company CTO spends significant time establishing culture and practices for the teams they are responsible for; they are also very directly accountable for the organization’s decisions and its track record of delivery. The CTO meets internally with members of the other functions, such as sales, marketing, HR, and finance, to share direction for the organization and get feedback. The CTO is responsible for the administration of the teams, including the budget.

The CTO is also responsible for hiring, performance management, and team structure and may be very active in their teams’ recruitment and interview processes, especially in a scale-up type of company.

A CTO leading a more extensive development organization must be a generalist, understanding different roles and responsibilities. Their remit may include Corporate IT and Technical Support. In some companies, they may also manage the business analytics, security, product, and UX teams. A CTO who is too focused on the areas closest to their background or does not respect non-coding functions will not succeed.

As a midsize company CTO, you will often spend as much time with your peers and their teams as you spend with your own. As a result, you will need to learn about their functions and how your teams can work together. CTOs who “stay in their lane” will not be seen as an equal member of the senior leadership team and may lose their say in decisions that affect the organization.

It is very unusual for someone to move into a midsize company CTO role without having some experience leading a multilevel-development organization and working with other business functions.

Growing (or moving) into the CTO role

If you are a manager or a manager of managers with the goal of being a CTO, there are a few things you can start to focus on that will help you on your path.

Learn about the business your company is in

Offer to sit in on sales calls, on user research interviews. Try to understand the company’s financials when the CFO presents them. If you can’t, make a friend in the finance team and ask them to explain them to you. Understand the KPIs not only for your team, but also for the teams around you.

Learn about the other functions

Get recommendations of reading or conference talks from your peers in the product, UX, and marketing teams. Think about how their work influences yours, and yours influences theirs.

Respect and learn other technology areas aside from your own

If you lead an area you don’t have personal experience in, approach the people in that function with respect and a genuine desire to understand their work. They want to help you know what they do and how they do it.

Hone your craft

Hopefully, you are already working on deepening your skill as an engineering manager or director, but are you trying to understand the bigger picture? Read other companies’ (public) handbooks, engineering blog posts, and conference presentations about their ways of working. What practices are interesting? Which can you try in your team? How do you think they will scale, or what issues do you think they may have?

Ask your CTO if there are tasks they can delegate to you

The best way to learn the job is to do the job. Even better is having someone who is already doing the job explain to you how they perform it so you can help them.

Start thinking in terms of strategy

The main difference between the expectations of line managers and senior managers is the emphasis on strategic thinking. Executives contribute to the company’s strategic planning and use their understanding of the company’s goals and the current situation to make sure that their teams are setting up the conditions for the company’s success. Strategic thinking is a learnable skill, but it takes practice.

The rewards of being a CTO

Being a CTO was not what I imagined it to be when I first decided it was my career goal. It is a lot of work, carries much stress, has fewer perks than you might think, and can be somewhat lonely. However, it is also the most personally rewarding job I have ever had. With the challenges, there is also incredible responsibility, tons to learn, the ability to influence the company’s direction, and the chance to affect the lives of dozens or hundreds of people on your team. I have yet to regret my choice to pursue this role.


Thanks to Laura Blackwell for editing assistance

The p-word

I have never heard the word “politics” used in a positive light when describing a work situation. On the contrary, the words “corporate politics” evoke memories of cynical executives in ’90s movies quoting The Art of War to their reports while figuring out how to undermine their peers. One of the Merriam-Webster dictionary’s definitions of the word is “political activities characterized by artful and often dishonest practices.”

I propose that we reconsider the word “politics,” especially when used in a work context. The word, and the techniques ascribed to it, are inherently neither good nor bad. You can use politics for ill intent or good. Good intention aims for a win-win solution, whereas bad intent aims for a win-lose solution. Instead, let’s use this Merriam-Webster definition for the word “politics”: “the total complex of relations between people living in society.” For our purposes, let’s call the company we work in our society. A company is a society in that it can have a panoply of personal relationships, group dynamics, shared goals, and systems of governance.

If we can get over our initial reaction to being political, how can we use some of these techniques for win-win solutions to problems?

Thinking politically means thinking ahead (being strategic), understanding the motivations of the people you need to convince (having empathy), and understanding the interactions of the systems you are trying to influence (systems thinking). You are working to make something happen-something you cannot do on your own. You may be working to overcome resistance to a new idea in a conservative institution. You could be trying to persuade another group to help your team with a project that will be good for the company but might make that group miss their quarterly goals.

Thinking politically will help you gain support for your ideas, soften resistance to change, and focus people on the bigger picture. If you improve everyone’s situation, your peers will appreciate you, and you will find the way forward easier in the future. Conversely, done poorly, where you or your team move ahead at the expense of others, you will find it increasingly hard to gather support in the future.

Playing politics so everybody wins: A personal example

In the early days of the public cloud, I worked in a company that already had established data centers worldwide. Getting a new server racked meant requisitioning a server from the central IT organization, following all their guidelines around the machine’s configuration and which technologies could be used on it, and giving them access to maintain and manage it. The process to get a single server going with a public-facing interface could take months.

I was leading a new team trying to incubate a new product. We had adopted a Lean Startup approach, moving to get to market in under six months. As this was a brand-new area for the company, we couldn’t be sure how quickly the public would adopt the product, and we wanted the ability to add capacity quickly if needed or shut the project down if it wasn’t getting traction. The company’s lead time for servers was not going to work for us. So, we decided to leverage Amazon’s young AWS offering. I knew that this would be a controversial decision and might incur opposition from other teams, especially IT. I could have chosen to “ask forgiveness, not permission” and hope that my small team could fly under the radar long enough to launch, but that was very risky. Our actions could be interpreted as a deliberate avoidance of company security and budget policies, which could prevent us from launching if we were found out.

I spoke to my peers in other teams to understand their prior experience working with the centralized IT team. I learned that if I approached the IT team directly for permission to use the public cloud, I would get an immediate “no.” That would put me in a position of having to get their decision overruled, which would take a lot of time and energy. I decided to go a different route.

I put together a presentation on our plan for our product. I included our quick path to market to mitigate risk for the company, our plan to leverage the public cloud (to scale quickly and manage cost-effectively), and how we would address any corporate security concerns. The goal of the presentation was to build trust that my team was thinking about the business and not just playing with new technology, and to show that we had answers to the issues I expected other groups to raise. I portrayed our product plan as an innovative experiment in new product development; a low-risk approach to moving faster as a company. I wanted to get some protection for my team at a level that would short-circuit other teams worried about this new way of doing things.

After working with my boss to ensure I had their unequivocal support, we got time on my SVP’s calendar to discuss the plan. I prepared for any argument against the plan, but I also left room for input from the SVP to help them feel invested so they would help protect the project. We left the meeting with approval for our approach and moved forward quickly enough to launch the product within our six-month window.

The product was more successful and grew more quickly than we had planned. Our public cloud adoption made it far easier for us to scale as the number of our customers did. Our success also increased our visibility within the company, however. The teams invested in managing and growing our worldwide data center infrastructure now started to see us as a threat. I began to have many increasingly tense meetings with them to discuss moving into the corporate infrastructure. I could have used my product’s success to force the other team to back off, but that would have created even more enmity, setting up our teams for friction forever.

Instead of using my team’s success as a wedge to ignore the IT team’s demands, I worked with them to understand why we had to make the decision we had. I also identified what they could do to make switching to the internal infrastructure an easy decision for us and for other teams

considering following in our footsteps. I committed my team to switching to the company’s infrastructure as soon as it could support us.

Reading through that experience, you can see several political maneuvers I used to get my team the space we needed to ship our product.

  • Talking to my peers to understand what their experiences and anticipate challenges. Consulting my peers on the problem got them enlisted as allies. If I were successful, they would have a better chance of success themselves in the future. (systems thinking/having empathy)
  • Building a strategy to prevent the central IT organization from stopping my team’s plan. (being strategic)
  • Enlisting my manager meant I had an ally in my effort to convince other senior managers, someone who understood the SVP’s motivations and concerns. (having empathy)
  • Preparing my argument to the SVP not just to convince but also to engage. Making the executive not just an approver of the plan but a participant with a stake in its success. (being strategic/systems thinking/having empathy)

If I had stopped at this point or pressed my new advantage over the IT team, that would have been the type of corporate politics that people despise. I would have created a win-lose situation (and some very angry co-workers who would have justifiably felt I’d wronged them).

Instead, I took the following steps to help the group I felt I had to work around and improve the situation for everyone at the company:

  • I used the lessons we learned from AWS to help the centralized IT team understand groups like ours with less predictable or forecastable needs. (having empathy/systems thinking)
  • I committed to them that if they could support our needs (with our help), we would switch to the “official” infrastructure. (having empathy/being strategic)

Making sure we helped the IT team was more work for my team, but it was better for them and the company at large. It made the solution a win-win.

An outside observer, especially a jaded one, could look at each of my actions in a very different light. That observer would say that I schemed to isolate the IT team, skirted appropriate behavior, and cheated by going over their heads. If I hadn’t then gone back to help lift the IT team, I might agree.

One might say that the best thing to do would have been to work with the centralized IT team to convince them that they should allow and support my plan. I would agree with that sentiment if it were possible to gain the IT team’s support and ship my product on schedule. However, the experience of my peers told me otherwise. Those who have worked at large corporations with siloed functions working against different goals understand how intractable those other groups can be.

Don’t be a player of the p-word

When faced with a challenge at work, try to understand the motivations of the people you work with and the systems they operate within. From there, build a strategy to achieve your goal. If you can achieve your goal while helping others move towards theirs in the long term, you will be an innovator and a team player within the society that is your company. On the other hand, if you achieve your goal at the expense of others, you will be nothing more than a player of the unspeakable p-word.


Thanks to Laura Blackwell, Hannah Davis, and Mandy Mowers for editing help.

Addressing the challenges of partially distributed engineering teams

As companies begin planning their approach to post-pandemic life, patterns are starting to emerge.

Some companies are planning to return to their offices and carry on as they did before. Others are adopting a partially distributed structure, reopening some of their offices but not assigning desks or requiring employees to work there. Some companies have even switched to being fully distributed.

In a fully co-located team, every member is in the same office near each other, nearly every day. A fully distributed team has every member in a different physical location almost every day. Everything else is partially co-located/partially distributed. Even if you all work in the same physical office, if people are there on different days, you are only partially co-located.

The tech industry has consistently demonstrated creativity and innovation in how work is structured. Companies like Automattic, GitLab, and others have long shared lessons on how fully distributed teams can be effective; decades of business books have addressed the challenges of leadership in co-located teams, but there isn’t as much published wisdom on leading partially distributed teams beyond the suggestion of treating them as fully distributed.

I have led fully co-located teams, fully distributed teams, and partially distributed teams. I have always said that the latter is the hardest to do well.

The problems with being partially distributed

Inconsistent communication speeds

The most significant problem with being partially co-located is that you quickly fall into asymmetric communication patterns. Folks in the same physical locations have very high bandwidth conversations, but everyone else communicates at a fraction of the efficiency.

The bandwidth issue extends beyond group meetings where some are in a conference room and others are on video, and permeates spontaneous meetings, too: people talking at the coffee machine, at lunch, or bumping into each other in the hall. People are more inclined to call out to a colleague they can physically see rather than trying to reach one over chat or video.

These spontaneous conversations might inspire solutions to team challenges that don’t involve the larger group, creating friction. The team can splinter as the people who follow similar schedules end up working together more frequently. Distrust builds within the team, especially if some are in other cities or have other commitments preventing them from being present when their peers are. Parts of the group may feel isolated or left out of the decision-making process.

This inconsistent communication bandwidth can significantly impact the design of the team’s deliverables due to the effects of Conway’s Law: “Any organization that designs a system (defined broadly) will produce a design whose structure is a copy of the organization’s communication structure.”

Unequal visibility of work

People naturally have a recency bias, tending to prefer recent events over historical ones. They also have more of a personal connection with those they interact with in person over those on a video call (a familiarity bias). Both biases work against those who are physically present less often. The lack of direct visibility of you or your team relative to other groups can be a significant disadvantage for you, the team, or individuals when it is time for performance reviews or recognition. Even if the team members have worked hard to achieve a goal, if they were not literally visible and other individuals were, you will have to overcome those biases to justify raises or promotions.

Inconsistent working hours

If your team is spread over many time zones, you get the classic problem of people having to wait on others when they need assistance, clarification, or to hand-off work. This problem can also happen with teams in near time zones if part of the team works from home to better incorporate their outside-of-work responsibilities or have a more flexible schedule. Unless addressed through restructuring the way work flows or introducing other constraints, work stalls in the team and people get frustrated.

Addressing the challenges

Create consistent expectations of availability

If most of the team plans to work two or three days in the office each week, have the team agree on which days that will be. So that when the group is in the office, most of the people are there.

If people need to accommodate their time zone or outside-of-work commitments, mutually agree on shared working hours. During those times, people are expected to be online and available for discussions or questions. Those hours do not need to be contiguous!

Ensure that people on the team are proactively communicating their availability so that others know when they can reach out or expect faster responses. It may be helpful to have a shared team calendar where every member puts their expected working hours for the week and adjusts that calendar if something comes up.

If possible, avoid being partially distributed

If nearly everyone on your team plans to return to the office, it might make sense for the people who plan to work off-site to switch to a mainly distributed team and vice-versa. It may seem extreme to suggest that people switch to another group, but it will make things easier for them and for their teams to be fully distributed or fully co-located.

Make sure that your team is visible

The adage, “out of sight, out of mind” speaks to a truth about human nature. Suppose your organization’s leadership is working from the office, and you or members of your team are primarily working from other locations. In that case, it is vital to make sure that the individuals’ and teams’ work is visible.

Invite your manager to your virtual team demos or ask them to stop by your team meeting or standup. Proactively tell your boss when individuals exceed your expectations. Invite your manager to set up occasional skip-level meetings with the distributed people in the group. If your boss has office hours, encourage members of your team to attend from time to time. These strategies to increase visibility are helpful even for entirely co-located organizations, but they are crucial for partially distributed teams.

Take opportunities to build empathy

Video meetings can become very transactional, especially when it seems like the workday is full of them. Without the spontaneous conversations and connections that arise from chance meetings in an office, you can start to forget that the people on your team are actual humans and not just pixels on a screen. Take time in your meetings for small talk, and don’t feel like you have to force people immediately back to the agenda if the team digresses into talking about their favorite TV shows or places they want to visit. These human details remind everyone that their co-workers are people with lives and motivations. It encourages empathy.

When the whole team can travel safely and without concern, bring them together on a regular cadence (the frequency determined by the travel budget and people’s freedom to travel). Spending time with each other will encourage much more profound empathy between the people on the team.

Move communication offline as much as possible

Co-located teams avoid many meetings by stopping by each other’s desks for a five-minute chat. When you can’t see the person, a very natural thing to do is to book a 30-minute meeting for that conversation instead and invite several others who might have input while you are at it, thus guaranteeing that it will use all 30 minutes (and may run over).

Fully distributed teams have long favored written communication as the primary tool to document decision-making and be more inclusive of colleagues spread across time zones. This model was also pioneered and perfected by large open source projects where wide geographic distribution is the norm.

Enforcing an offline-first communication and decision-making process within your team helps ameliorate the challenges of non-overlapping work schedules and brings increased symmetry to communication speeds.

Take a remote-first approach to team meetings

As I mentioned above, a common suggestion for partially co-located teams is to have everyone dial into group meetings even if they are sitting near each other; treating all as if they are distributed helps put everyone on an equal footing in the discussion. Still, it is not always possible if there are no adequate facilities in the office to support that. Alternatives would be to have whoever leads the meeting always dial in from another location or have the bulk of team meetings on days the group has decided to work from home.

We’re not done changing; this is an opportunity!

Just over a year ago, most companies were comfortable with their ways of working or were evolving them slowly; but the pandemic forced all companies to adjust to new ways of operating immediately. Finding a “new normal” will be a much more gradual process, with much uncertainty.

As an engineering leader, there is a massive opportunity to find new ways for your team to be effective in this new world of work. You and the group should approach the challenge with flexibility and a willingness to experiment.

Share the ideas you learn with your peers and the larger organization. If companies struggle to make this new flexibility in work successful, they will quickly move back to their old ways of doing things.

You can help your company be a leader in providing flexibility and freedom to its employees while also being effective at delivering value to your customers. When you figure things out, please share them with the rest of us; we’re on this “new normal” journey together.

[Originally posted at https://leaddev.com/managing-distributed-teams/addressing-challenges-partially-distributed-engineering-teams]

Own your calendar

Every six months, I take a day to review and reflect on how things have been going and the changes that I want to make moving forward. This day is my personal strategy offsite.

As part of the process, I think about the things I want to do more of and the things I want to do less of, and how much time I should allocate each week towards my professional goals. I then create a sample of what a perfect day would look like and a mockup of what an ideal week would look like apportioning my time in alignment with my goals.

With my review and planning done, I go to my work calendar and clean it up to make it look like my ideal week. I delete or stop attending meetings that are not useful. I block out time for focused work on my goals. Then, to give some flexibility for the things that arise, I make sure that I leave some gaps or mark some of my project-work time as “free,” allowing others to schedule it if needed.

Each week has unique challenges: unforeseen work appears, a critical customer meeting dominates, or a work emergency takes over my calendar.

At the end of the week, I look back at the calendar and figure out how much of my time spent maps to my planned time allocation.

Often, I find that new things are creeping in if I am not attentive. As my time starts to diverge from my ideal allocation, I must decide if I change my plan based on my new reality (and possibly adjust my goals) or if I re-assert my plan and delegate or drop the new constraints on my time.

I track each week’s time allocations in a spreadsheet. It helps me understand where I am spending my time over the year. In addition, it makes it very clear if I am spending too much time on low-value work. The spreadsheet also shows if I am unrealistic about how I allocate my time in a week which is helpful for when the next six-month planning comes.

This process may seem very rigid, and in many ways, it is. However, I’ve come to it over the years through iteration after finding myself feeling very busy but not making meaningful progress towards my personal or professional goals.

As we grow in our roles, new opportunities and responsibilities appear. Our peers, team, and others want our input and time. This activity gives us the impression that we are doing necessary, valuable work. At the end of the week, though, we may look at our full calendars and wonder what we accomplished. If this situation feels familiar to you, it may be worth adding some rigor to understand how you want to spend your time and how you actually spend your time.

When, why, and how to stop coding as your day job

By letting go of writing code, you open yourself up to excelling as a manager.

I am a computer programmer.

I was one of those people who started coding at a young age – in my case, on a TRS-80 Model 1 in my school’s library. I loved the feeling of teaching the computer to do something and then getting to enjoy the results of interacting with what I built. Since I didn’t own a computer, I would fill spiral-bound notebooks with programs that I would write at home. As soon as I could get time on the computer, I would type it in line-by-line. When I learned that I could write software as a job, I couldn’t imagine anything else that I would want to do.

After university, I got my dream job writing 3D graphics code. I was a software engineer! I defined a successful day by the amount of code I wrote, the compiler issues I resolved, and the bugs I closed. There were obvious, objective metrics that I could use to measure my work. Those metrics and my job defined me.

Today, I am a Chief Technology Officer, leading software development organizations. If I am writing code on the product, it is probably a bad thing. I now have to define my success by much fuzzier metrics: building good teams, hiring and training good people, setting multi-year technical strategy and vision for the company, collaborating with other departments, and setting and managing a budget. I may have a good day or a bad day, but I have to measure my success based on quarters or years.

My achievements are now always tied to the successes of others. Getting to this point wasn’t easy, but I wouldn’t have it any other way. It was a journey that took years, and the first challenge was understanding that coding was no longer my job.

Why is it hard to stop coding as our day-to-day work?

When I speak to engineering leads or managers working to grow into more senior engineering leadership levels, the question of ‘How much do you code?’ is very often raised. We usually have a hard time imagining that we can still be useful if we don’t code for a significant part of our time. Why is that?

We’ve been traditionally bad at hiring managers in the software engineering industry

Usually, companies choose development leads because they are the best, technically, on the team. I would guess that the reasoning behind this is that it’s assumed that the best developers are the right people to supervise their peers. This practice creates the impression that managing others is a promotion for a skilled developer when, in actuality, it is a career change away from what made them successful in the first place.

The worst managers I’ve had were very talented developers who hated having to spend time doing the boring stuff that wasn’t coding. They resented the time spent away from the keyboard and weren’t always good at hiding that fact.

Many companies now feature dual career tracks for technologists, giving them a choice to advance as an individual contributor or move into management. This choice of career is an excellent thing. It means that if you want to spend your days coding, you can do that without sacrificing your career. It also means that if you desire to find joy in leading teams and growing others’ development and skills, you can do that.

We fear becoming ‘non-technical’

We joined the technology industry to be close to technology. We fear that by moving away from coding, we will morph into the classic ‘pointy-haired boss’ – ridiculed by the people on our team and unable to understand what the developers are discussing. I won’t say this can’t happen, but it won’t happen on its own. It will only happen if you choose to avoid technology once you move into the management role.

As you take on broader leadership responsibilities, you will need to learn and understand new technologies. Moving beyond the specifics of your expertise is necessary for you to move up in management. I have managed developers coding in at least a dozen languages on the backend, frontend, mobile, operating systems, and native applications. I have also managed testers, data scientists, data engineers, DevOps, Security, designers, data analysts, program managers, product managers, corporate IT teams, and some other roles I don’t even remember anymore. It isn’t possible to be an expert in all those fields. I need to take the lessons from my time as a developer and use them to inform my understanding, help me learn new areas, and give me empathy for the people who work for me.

It isn’t that you will become non-technical. It is that you will become less narrowly technical.

As a new manager, we are often expected to continue coding

It is common to move from being a developer on a team to managing that team. As the new manager, this means you are still responsible for part of the codebase. Unless you immediately start leading a large group, your new role still requires that you spend a significant portion of your time coding. This expectation makes the transition to the new role more comfortable – but it can also be an anchor that holds you back from embracing your new role as your management responsibilities grow.

We still see ourselves as a resource that can ‘save’ a deliverable

As a manager, you are accountable for the results of your team. If the group is struggling to make a deadline, it might be tempting to jump into the weeds to try and help the team finish the project on time. While this is sometimes the right decision, it can also make the problems worse because the team loses the person who looks at the more significant issues and coordinates with other teams to get more help or prepare them for the delay.

Why do we need to stop coding eventually?

We don’t need to stop coding, ever. However, once you move into engineering leadership, it will need to become a smaller and smaller part of your job if you are working to lead larger teams or broaden your responsibilities scope.

I had led teams before I was a manager at Adobe, and I had always spent a significant part of my work week contributing code as part of the groups I was in. At Adobe, though, my team had grown to be fourteen people, with another four dotted-lined to me.

I had been the primary developer for a part of the project, and I took pride that I was still contributing important features to every release. However, my management responsibilities were starting to fill my work weeks. Between 1:1s, sync meetings with other teams, and other manager work, my feature development time was increasingly moving into my evenings and weekends. My features were often the last to be merged and usually late.

The company had two mandatory shut-down weeks. To work during this time, you needed the prior approval of a Vice President. The team was preparing for a release, and my features were still in the to-do column; I met with my VP to get his permission to work over the shut-down week. He asked me, “Who is the worst developer on your team?” I hemmed and hawed – I didn’t want to call out anyone on my team, and I hadn’t even really considered the question. Seeing my uncertainty, he answered for me. “You are! You’re always late with your features. The rest of the team is always waiting on you. If you were a developer instead of the manager, you would be on a performance improvement plan.” He was right. My insistence on coding was hurting the team, not helping it.

Taking on the lead role doesn’t mean you should stop coding immediately, but it does mean that your coding responsibilities should now be secondary to your leadership ones. There are other developers on your team, but there aren’t other leads. If you aren’t doing your lead job, no one else will. Similarly, your professional development’s primary focus should now be on your leadership skills, not your coding skills. You are moving into a new career, and if you don’t work to get better at it, you will find yourself stuck.

As your leadership responsibilities increase, you should transition your development responsibilities to other people on the team. This transition is good practice because delegation is an essential part of leadership.

How do you stay ‘technical’ when coding isn’t your job anymore?

As I said earlier, staying technical is a choice that you need to make. Hopefully, one of the primary reasons you chose to make a career in the technology industry was that you were interested in it, so this shouldn’t be a problem.

As I also said earlier, as you develop as a technology leader, your focus broadens as your scope widens. 

The best way that I have found to remain a credible technologist for my teams is to be interested in them and their work. To do this, talk to the people on your team and take a genuine interest in the things they are working on. If a technology comes up in a meeting or 1:1 that you don’t know, add it to a list of things to research later. Then, dedicate time in your week to go through that list and learn about the technologies well enough to have your own opinions about them. This practice allows you to have further discussions with whoever mentioned the technology to you.

If you get interested in what you learn about the new technology, you may want to keep trying to understand it better; you may read more or embark on a personal project using it to gain more practical knowledge. As I said, it isn’t that you have to stop coding, it is that, eventually, it shouldn’t be your day job anymore.

By taking an interest in the technologies your team uses in their work, you deepen your empathy for them and expand your own knowledge. You’ll be able to discuss the work, ask reasonable questions, and make connections to other things happening in the organization and your own experience. This way, the people on your team know that while you may not be able to step in for them, you understand their work and care about it.

Success is defined differently when you lead people

The feeling of accomplishment that comes from completing a cool user story, deploying a new service, or fixing a difficult bug is significant. It is a dopamine hit, and just like other dopamine-inducing behaviors, it can be hard to stop.

Having a great 1:1 or leading a productive team meeting can also feel good but in a more esoteric way. As a team leader, you need to learn to perceive the success of making others successful. Success takes longer, but the feeling is more profound and more rewarding.

Having a release resonate with your customers, being able to easily justify the promotion of a developer that you have mentored, and having someone accept a job offer for your team, are all fantastic feelings. In the day-to-day, watching stories get completed, helping resolve the issues when they aren’t, and seeing people get excited about the direction you’re setting for the team can leave you feeling satisfied at the end of the day.

Being a technical leader doesn’t mean writing code every day

As you grow in your new leadership career, you will need to devote your time to mentoring, developing, and leading your team. As you spend less time in your code editor, you will find new challenges in strategy, clearing roadblocks, fixing broken processes, and new tools like HR information systems, slides, and spreadsheets (it isn’t as bad as it sounds). You will spend less time learning all the intricacies of a specific language or toolchain and instead learn about how systems interact, understand when to build vs. buy, and learn about entirely new areas of technology. And you can still code, but make sure that you aren’t the developer holding your team back.

[This was originally posted at https://leaddev.com/skills-new-managers/when-why-and-how-stop-coding-your-day-job]

Twenty Questions for your 1:1s

You sit down for a chat with someone on your team. You get through the pleasantries, the small-talk, the status, and you run out of things to say. It happens to even the most curious and high-EQ people. It happens to me, and I have probably had 10,000 one-on-one meetings in my career.

When you hit that moment where neither of you has anything to say, it is very tempting to just say, “Ok then! Let’s talk next week.” giving you both time back into your day. If this happens occasionally, it is not a severe problem. However, if you find it happening more often than you would like, it is good to keep some prompts handy to move into deeper topics that might prompt a valuable conversation.

Here are twenty questions that you might find helpful if you get stuck at the surface level or run out of things to discuss in your one-on-ones:

  1. What is more challenging in your day-to-day work than it should be?
  2. What is the most fulfilling thing that has happened this week?
  3. Who on the team has been really impressing you lately?
  4. What are you looking forward to in the next six months? Why?
  5. What haven’t you told me that I probably should know?
  6. What is one thing that you miss from your last job/team?
  7. Who on the team are you most worried about?
  8. If there is one thing I could change about your role today, what would it be?
  9. Who on another team do you most enjoy working with?
  10. What do you wonder about?
  11. How would you change the company’s strategy?
  12. What is the product or feature that we should build next?
  13. When do you feel the most satisfied at work?
  14. What is your least favorite part of your job?
  15. What percentage of your work time do you think you are in a flow state?
  16. What is the one meeting that you would add to your calendar?
  17. What is the one meeting that you would remove from your calendar?
  18. What do you wish that I did differently?
  19. What should I keep doing?
  20. When am I the most helpful?

If you don’t like any of these questions, you can create your own list in a few minutes. You are looking for a question that gets the other person to think a bit, share a bit more with you, and hopefully give you an avenue for deeper discussion.

Have other questions that you like to use? Please add them in the comments!

Building a vernacular with your engineering team

Teams consist of people. People communicate via a common language. The base unit of most languages is words.

The impact of language

Whether written or spoken, words are essential – both the general terms we use and those specific to our work.

The terms and phrases that are specific to our jobs or our companies create a vernacular. The definition of vernacular is ‘the mode of expression of a group or class.’ Our vernacular separates software developers from lawyers, Amazon employees from Microsoft employees, and your team from the other teams in your company.

The words and phrases that we use in team discussions give us a shorthand. They save time. Instead of saying, ‘Ok, deploy this to production, let the support team know that it is going live and then let marketing know once it has gone to 50% of active users.’ Your team may just say, ‘let’s deploy-ify it.’ The larger context is defined and understood in the vernacular of your team.

One of the challenges of joining a new company or a new team is learning the vernacular. One of the significant struggles of team forming or cross-team communication is different definitions for the same words.

Consider the word ‘Agile’. To you, it may mean ‘Scrum’ because your only experience working in Agile teams was working with the Scrum framework. For me, it may mean Kanban or a set of principles not tied to any specific framework. If we are on the same team and I say that I think we should work in an Agile way, we could have very different interpretations of what that means, which may inadvertently create tension in the team.

‘Done’ is another word that often leads to problems – both for a development lead and between teams. A developer on your team says that their feature is ‘done’. Do they mean that they finished the code? That they tested the code? That they deployed it to the staging environment? That the code is running in production? That the A/B tests for the code have completed?

Having clarity on the meaning of words is critical. Companies will often create glossaries of the terms and phrases in everyday use to help onboard new employees. You should do the same for your team for the words and phrases your team uses day-to-day. As a leader, you should also deliberately cultivate your team vernacular.

Creating a team vernacular

Creating a team vernacular is a simple way to drive team unity, identity, and alignment around best practices.

A simple way to start building a team vernacular is to use a group meeting to identify and define the words and phrases used in the team. You can get the discussion started by spending a few weeks taking note of words or phrases that come up often in team discussions. Terms such as done, tested, shipped, agile, stuck, autonomy, microservice, or waiting, may have different definitions from different people on a team.

Ask the team what they think each of these words means. If there is a general agreement, add it to your team glossary. Don’t stress over creating a perfect definition for each word. You can reference a dictionary definition or definitive blog post if you want, but your goal is team consensus around the meaning, nothing more.

Once the team establishes the primary vernacular, update it as necessary. Clarify the definitions of the new terms introduced. If someone uses a word in a new way, ask, ‘What does that word mean to you?’ If you don’t recognize a term that others are using, ask the team for the definition. Add these new words and phrases to your glossary. Over time, the meanings of words will change as they understand new subtleties or gain new skills. When this happens, append or replace the existing definitions.

Using your vernacular to train the team

Creating consistency in the words you use, or introducing new words, is also a valuable way to train your team or introduce new concepts.

You may find that there is debate within the team about the constraints for a system to be called a ‘microservice’. This debate is an opportunity to find blog posts or a book for the team to read together and discuss to create the definition for the team glossary.

If you want to understand secure coding practices better, you could watch a conference talk as a team and then discuss what words and techniques you could introduce into your vernacular.

As you build your glossary, include the phrase and what it means to your team and the references your team used to arrive at that meaning. Your dictionary can then become an onboarding tool, a training tool, and a reference to share with other groups.

Vernaculars happen

Groups of friends, co-workers, teams, and families all create unique vernaculars over time. The in-jokes you have with friends, the shorthand you have with your partner, the CEO’s catchphrase. Be aware of this, be deliberate about it within your team, and use this naturally occurring phenomenon to your advantage!

[posted originally at https://leaddev.com/communication-relationships/building-vernacular-your-engineering-team]

Fail Safe, Fail Smart, Succeed! Part Five: Putting it into Practice

Fail Safe, Fail Smart, Succeed!

Putting this into practice at Avvo

If you think you would like to use these ideas at your company, but you are unsure where to start, I can describe what we did at Avvo. I joined when the company was already nine years old. It had a mostly monolithic architecture running in a single data center with minimal redundancy.

There were some things that we did quickly to move to a more fail-safe world.

Moving from planning around objectives to planning around priorities

First, we worked to build a supportive culture that could handle the inevitable failures better. We moved from planning around specific deliverable commitments to organizing our work around priorities.

Suppose specific achievements, my output, measure my performance. This way of measuring performance often creates problems.

Suppose I need to coordinate with another person, and their commitments do not align to mine. That situation will create tension. If the company’s needs change, but my obligations do not, there is little incentive to reorient my work. To achieve my commitments, I can be thwarted by dependencies or hamper the priorities of the company.

People in leadership like quarterly goals or Managing By Objectives because they create strict accountability. If I commit to doing something and it is not complete when I say it will be, I have failed.

Suppose you think instead about aligning around priorities. In that case, those priorities may change from time to time. Still, if everyone is working against the same set of priorities, you can be sure that they are broadly doing the right things for the company. Aligning to priorities sets an expectation of outcome, not output.

Talk about failure with an eye to future improvement instead of blame

The senior leadership team must be aligned with these approaches. The rest of the organization may not be initially. When leaders talk about failure, they must do it with a learning message rather than blame or punishment. People should know that the expectation is that they may fail. If they are avoiding failure, then they probably aren’t thinking big enough. It is a message that “we want to see you fail, small, and we want to make sure we learn from that failure.”

I created our slack channel to share the lessons from our failures. I sent a message to my organization, making it clear that I don’t expect perfection. I shared my vision that we become a learning organization in town halls and one-on-ones.

Fail-safe architecture

Monoliths are natural when building a new company or when you have a small team. Monoliths are simple to make and more straightforward to deploy when you don’t have multiple teams building together. As the codebase and organization grow, microservices become a better model.

It is critical to recognize the point where a monolith is becoming a challenge instead of an enabler. Microservices require a lot more infrastructure to support them. The effort to transition from one architecture to another is significant, so it is best to prepare before the need becomes urgent.

Avvo had already started moving to a microservices architecture, but lack of investment stalled the transition. I increased investment in the infrastructure team. The team built tools that simplified the effort of creating, testing, monitoring, and deploying services. We then made rapid progress.

We also redesigned our organization to leverage the reverse Conway Maneuver, further accelerating the new architecture.

You can build a fail-safe / fail-smart team

In every company, I use the lessons that I have shared in this article to build a culture where teams can innovate and learn from their users. It manifests differently with each group, but every team that has adopted these ideas has improved both business outcomes and employee satisfaction. Work with your peers to adopt some of these ideas. Start small and grow. The process of adopting these concepts mirrors the product development process you are working to build.

If you decide that it isn’t a good fit for your company, you will have failed smart by failing small.

I will leave you with a final thought from Henry Ford.

Fail Safe, Fail Smart, Succeed!