Photo by RKTKN on Unsplash

Cultivating a high performance engineering team

Stephen Kiers
The Startup
8 min readFeb 17, 2020

--

A high performance team is the goal, or rather dream, of every software company. The higher the performance of the team, the more quickly and successfully the company can reach it’s goals, and the higher the chances the project will be a success.

However, even though most teams start off performing well, there are many different ways that performance can be hampered over time. As the team grows and time passes the performance per team member usually decreases.

Based on my experiences in software development, here are eight goals a company should aspire towards to unbridle their engineering team.

Clear communication

Poor communication is single greatest rot that can infect a team. Poor communication from the company to the team, within the team itself, or having no way for the team to communicate properly back up the chain to management is a death knell to any successful team.

Clear communication can be official, scheduled team meeting, chatting at the water cooler, using group chat (like slack), or telecommunication (like zoom).

As a semi-remote worker I have found that most conversations can be asynchronous via slack (tip: use threads to decrease the signal/noise); most questions do not require an immediate attention or answer. When an answer is needed more immediately, we will often start up a zoom meeting. Often the communication is contextual, so it is added to a Pull Request or as a comment in the code.

However, the underlying goal of clear communication is not the medium through which it is conveyed, it is having a culture that encourages communication that keeps the team on the same wavelength.

The more your team communicates with each other, the more in sync they will become with every point below. The more in sync they are, the more efficient (and performant) they will become.

Anyone who says that they’re great at communicating but ‘people are bad at listening’ is confused about how communication works. — https://www.xkcd.com/1028/

Counter-point

A meeting does not have to be called every time anyone wants to discuss something to have clear communication. Over communication can be just as bad as under-communication. This point is about clear (easy to perceive, understand, or interpret; remove an obstruction or unwanted item or items from) communication.

There is such a thing as over communicating. Clear communication is not communicating every little thing, it is being purposeful in your communication and encouraging others to be purposeful in their communication.

Personally, I have been a part of teams where the business team communicated so much about what was happening, good, bad and non-consequential, out to the company in official meetings that our team found it hard to focus on what we were doing, or understand what was important. Finding that balance is an art, and it is an art that can be developed through practice.

Clear vision and mission statement

Another way to un-hinder your team to increase performance is to communicate a clear vision and mission for your company, product, and teams. These should not be vague marketese, but rather a clear, easy to understand destination for the team to aim towards.

A clear vision allows your team to be empowered to move forward towards your goals. Many decisions are easier to make when your team has a common vision. A mission statement is a compass for your team to continually reorient against; a framework to evaluate current activities with.

A metaphor I heard when I was in college was that when a plane takes off from New York to Los Angeles it never flies in a straight line. The plane is constantly making minor readjustments towards its destination. If a plane never readjusted after taking off, every single degree you fly off course, you will miss your target landing spot by 92 feet for every mile you fly; a one-degree difference in that trip would put you 40 miles into the Pacific Ocean.

The longer you travel off course, the further you will be away from the intended target.

As a contrived example, Tesla’s mission statement is “To accelerate the world’s transition to sustainable energy”. That statement can be used to make big decisions, like what fuel to use in their vehicles. However, it can also can play into every other decision everyone in the company ever makes, like what source to get their coffee from in their showrooms.

In a software setting, knowing your companies vision and goals can help a developer team keep focus on what is important and not get distracted by their own interests.

If the team, and individual developers, are constantly asking if what they are doing is furthering the company’s visions and goals, they will be more efficient to the company.

I believe that a clear vision and mission statement, clearly communicated to the teams helps guide and empower your team to move quickly without overbearing bureaucracy.

Counter-point

Unrealistic goals or lofty, flowery language can make your vision and mission statements practically useless.

However, even if you have the perfect mission statement, there will be times when you have to balance different values. A mission statement should be a compass but, to take the analogy further, if you come to a cliff you may want to change routes for a short time.

Working together

A high performance team works together and is consistent in their design patterns, code styles, and quality of work.

This is not saying everyone has to do everything the same, but rather the goal is that the project is separate than any one individual and that the team works together to make sure the project comes first.

I believe that if you can read code in a project and pinpoint who wrote it because it is so drastically different, that team is not as efficient as they could be. As a developer it is very jarring when you open a file to do some new work and do not recognize what is happening in the code at all.

This also means that the team should find a balance between having engineers work as silos with each member having their own area of expertise, and having each team member being full-stack and able to do every task required.

Clear communication between the team will help this balance, and ideal, to be reached.

Counter-point

Every member of your team has strength and weaknesses. Like every point on this list, there should be balance and concessions given when appropriate.

There’s no “I” in “VOWELS”. — https://xkcd.com/1562/

Also, your team needs to be willing to change. Just because the team decided a year ago to do sass stylesheets doesn’t mean you can’t re-evaluate the pros of switching to styled-components now.

Definition of Performance

In order to know if your team is high performance, you must define what that means. Establishing metrics and routinely measuring how the team is doing is a great way to proactively ensure your team’s performance is at it’s peak. It also communicates to your team what data points are important to the company, and creates a framework to evaluate how well your team is doing well individually and as a team.

Setting goals, measuring velocity, and regular communications around performance are a great way to fix minor issues before they become major.

Counter-point

To much focus on performance can actually hinder your team. As Microsoft and Yahoo taught us, a focus on the numbers can lead to demoralizing the team and declining performance.

Automate what you can

Working towards automating away as much time wasting tasks as possible is a great goal. Continuous integration, scripts, outsourcing tasks are all great ways to make your team more performant over time.

At one of my old jobs we would work out {how much time something takes to do}, multiply it by {how often it is done a day/week/year} and {how long a solution would take to implement}.

const workingDaysPerYear = 250;
const timeWasted = howMuchTimeSomethingTakesToDo * howOftenItIsDoneADay * workingDaysPerYear;
const buffer = 1.25;
if (timeWasted > howLongASolutionWouldTakeToImplement * buffer) {
automateIt();
}

Increasing the number of tasks an engineer can do per day is an easy way to increase team performance.

Counter-point

Engineers are notorious for underestimating project timelines and scope creep in their own projects. Clear communication and time-boxing projects is a good way to overcome this.

‘Automating’ comes from the roots ‘auto-’ meaning ‘self-’, and ‘mating’, meaning ‘screwing’. — https://xkcd.com/1319/

Recognition for work done

Positive reenforcement has been proven to be the most successful way to change human’s habits and motivations. This includes financial and non-financial recognition.

Simple things like clapping for demos, off-hand positive comments to employees, and official recognition during meetings all contribute to increasing employee moral and entrenching your company into your team members.

Counter-point

Making everything about rewards and compensation alone does not make a healthy team. Ideally your team should be propelled by their excitement and passion for your company’s mission.

Continuous learning

This is intuitive, yet often overlooked. Encourage and support your team to continually be learning. Send them to conferences, back to school, or to meetups; encourage them to contribute to open source, to write articles on what they learn, or to speak at events themselves.

You will get a better team the more you invest into their brains, and the more passionate they are about learning.

Counter-point

I don’t have any… I guess you should draw the line at employees becoming full time students on your dime. However, if they come back and serve the company afterward, that could actually be great too. 🤷🏻‍♂️

Ability to break the rules

As I have indicated with my counter-points; all of these rules are simply ideas and opinions to be taken with proper balance. Any of these points can, and have been, taken to extremes.

“Lesson is not just karate only. Lesson for life. Whole life have balance. Everything be better” — Mr Miyagi, The Karate Kid

Your team and culture should be framed in a way that employees understand what is expected, but still feel empowered to make decisions to break rules if they feel that is the best decision.

And, if your organization practices clear communication, it shouldn’t come as a surprise to you.

Disagree with anything I have said? Any other comments? Please feel free to throw them down below. As a believer in clear communication, I am open to any feedback.

--

--

Stephen Kiers
The Startup

Frontend developer at Zept.co, Founder of WedImage.com, father to Luke, and hubby to Jenelle