Bedrock Characteristics of an Effective Tech Lead

In the Truth About Leadership, James M. Kouzes and Barry Z. Posner offer no-nonsense, trend-free guidance that may help us nail down the bedrock characteristics for an effective tech lead. Kouzes and Posner surveyed 10,000+ people worldwide to uncover the key characteristics defining a good leader, traits that often come to mind when we think about leadership —  honesty, competence, fairness, supportiveness, courage, maturity, and so on.

Surprisingly, respondents consistently selected four characteristics far more often than the others: honesty (85%), forward looking (70%), enthusiasm (69%), and competence (64%).

Interestingly, intelligence, at only 42%, didn’t make the cut. We’re in the smart business, so we often try to lead with logic and intelligence. That’s clearly a mistake (and more than this survey prove it). So let’s dive deeper into what the authors think actually matters.

Basic Credibility Tech Leadership Traits: Honesty, Enthusiasm, Competence

Three of the traits work together to make us “credible” tech leads with the people on the team: honesty, enthusiasm, and competence. To drill in a bit, honesty is what you’d expect: telling the truth, having clear standards, and integrity. Enthusiasm (the authors actually called it “inspiring”) is also what you’d expect. “Energy signals commitment,” say the authors; we don’t follow those who aren’t committed.

Competence deserves some special discussion. The authors defined competence as the ability to get results from others. That feels like circular logic to me, and besides, in a dynamic field like software engineering, where there are too many posers, you need to possess a basic level of competence before people will follow you as a tech lead.

That’s not to see you have to be the mythical 10x engineer (in fact, being 10x might work against you), but need to spend some time in the trenches, enough to know whether the task you’re asking engineers to complete is trivial or Herculean and enough personal experience to know when you’re losing their interest and excitement.

The Tech Leadership Trait: A Forward Looking Vision

The key credibility traits (honesty, enthusiasm, and competence) are what we hope every software engineer on the team possess, right? So where’s the “leadership” piece? It turns out the trait that differentiates you as a tech lead is your ability to be forward looking.

Forward looking means more than just being able to see into the next sprint or around the next technical edge case. Being forward looking means you have a clear, long-term vision of the future of the product and team. You, with clarity, can envision how your team’s product, workflow, codebase, or culture could be better not just tomorrow but in the months to come. Clarity is key because a vague wish for something like “engineers doing more TDD” or “product owners writing better stories with better acceptance criteria” isn’t clear enough for the team to truly rally around, other than to complain during lunch at Chipotle.

Additionally, true tech leaders have an ability to map their vision to their team member’s hopes, goals, skills, and immediate aspirations. It’s easy to be a whiteboard visionary; it’s a whole other level to be able to clearly connect your vision to the day to day hopes, goals, and general work patterns of your team.

A word of caution. While your forward thinking vision is the big differentiator that separates you from being a highly competent team member, you can’t lose sight of the core credibility traits. No matter how compelling your vision, nobody on your engineering team will follow you if you aren’t credible. If you focus too much on “vision” and lose your grounding in credibility, you’re going to lose a big part of what makes you effective in the first place.

Be credible first, forward thinking second.

You’re Probably Demonstrating Strong Tech Lead Traits Already

I want to propose to you that, if you’ve made it this far into this post, you’re probably already modeling some or all of the key traits we just talked about. For example, you’re probably already honest in the sense that you have high standards for performance and integrity about the quality of your code and the results you and your team are producing. Odds are that you’re competent and enthusiastic about the future for your team and what you’re doing together.

Not only are you modeling many (or all) of them now, you probably notice that the traits Kouzes and Posner identified come more naturally to you than less valuable traits requiring stronger people skills, like supportiveness (31%), caring (20%), or maturity (16%), which are skills we tend to associate with authority figures. Even some of the traits we associate with strong leaders, such as ambitious (26%), courageous (21%), and independent (6%) were near the end of the list.

So relax about the mysterious or complicated stuff you read out there about leadership. As a tech lead (or an aspiring one), you’re probably in awesome shape already — so keep on doing what works!

Monday Motivation. An Open Letter

Dear consultants and engineers,

Last week was not a good week for me. So this morning I feel like writing you an (open) letter to talk about my expectations and my aspirations for our week together.

Let us change our traditional attitude to the construction of programs. Instead of imagining that our main task is to instruct a computer what to to, let us concentrate rather on explaining to human beings what we want a computer to do. – Donald Knuth

Code is our currency. It is what we are paid to do, no matter what level you’re working on it: if you’re one of my architects, you’re thinking at high levels how big components of code work together. If you’re one of my junior consultants, you’re probably banging your head against some legacy API and worrying whether you can get your story done.

Coding is a deeply analytical activity. It requires that we sit (or stand) still for long periods of time to read, think, prototype with a REPL, wait for build servers, read stories, so on and so on. That’s what we do, and you usually do it in isolation. You’re here because you’re good at it and my expectation is that you take pride but be humble.

Now here’s my aspiration for the week (no matter what level you’re at): increase your energy level, shake off impostor syndrome, and get social about your code.

  • Ask people sitting next to you to pair up for a few minutes.
  • If someone asks you a question, sit down with them and crack open the code.
  • If you’re trying to explain status, throw some code up on the screen.
  • Call a code review for a hard problem you’re working on.
  • Show off something you’re proud of.
  • Talk through a new pattern you found in the open source world from your side project (if you have the time to have one, no problem if you don’t).
  • Can’t find a meeting room? Invite some team members to lunch. Print out the code if you have to (remember what printers are?).
  • Working remote? Get on a video call and have lunch together and screen share.

And don’t just share some gist on Slack. I know that’s more effecient, but it’s not effective and it’s not accomplishing what I want. Read on for why.

Warning: you’re probably going to have to boost your energy level to do this — I know — but it’s worth it. After writing or staring at the computer for hours, you might not feel like you’ve got the energy to get up, walk around, interrupt other people, and engage. Most of us barely have the energy to make it through the day, I know. But what’s interesting is that if you spend energy, you actually get more of it. And by investing the energy in your team or your company, they get more too. It all starts with you, and you’ll be well on your way to leadership by these small acts.

By the way, if you feel unsupported by anyone on the team or in the organization, I want to know right away.

Make it a great week folks and let me know how the social thing works out for you.