Being able to build high-performing engineering teams is a non-negotiable skill for engineering leaders. It is the difference between successful and failing technology companies.
I have been thinking about this topic for many years, studying and decoding what exceptional leaders do to create great teams. During this time, I refined a list of what I believe are 11 must-have elements. I kept it in one the many thousands of Evernote notes that organize my life, and I finally decided to share it.
First, let me give you the summary of the elements in the form of a MindMap infographic. I debated between publishing this view at the beginning and at the end of the article. I decided to go for the beginning, as I hope it will spark your curiosity for the many details that you’ll find in the rest of this post.
Click on it to expand it. Feel free to download it and share it along with a link to this article.
High-Performing Engineering Teams, MindMap Infographic
1 – Hire Well
Building a great team starts with hiring great people. You know who I am talking about. People who are way smarter than you. Professionals who can do things that you can’t do. Do not feel threatened by them; they represent your success, not your demise. As a leader, you should feel threatened only when you are unable to attract and retain them.
Hire people that are compatible with the culture of the team, but encourage diversity and openness. Compatibility doesn’t mean more of the same. It means that you want people who can make the environment better and perform well in the context of your team, improving it by raising the bar.
In small organizations, every hire has a significant impact on the company, especially culturally. Every bad hire costs an enormous amount of money, energy, and productivity. Firing people is not easy at all, so it is far better not to hire the wrong people than to fire them.
That said, if you do have poor performers, you need to fix it. There is nothing worse for a strong performer to work side to side with someone who doesn’t pull his or her weight. Weak performers drive away strong ones.
2 – Respect Your People
Now that you hired great people, respect them. Trust them to thrive and innovate. Let them do what you believe they can do. Remember how you hired them because you decided they were smarter than you? Or that they could do things that you can’t do? Let them show you how it is done. Do not quench their spirit.
Instead of telling your people what to do, ask them what you should be doing. Be there for them and support them. Trust and support is the definition of true respect.
3 – Define Reality
For people to do their best, you must define reality just enough to put them on the right path. If you do it well, the team will guide you further than you could have gone by yourself. Help the process by setting clear goals, but avoid being too prescriptive or you’ll suffocate innovation. Also, clearly define roles and responsibilities, but don’t make them so narrow to box your people.
Define the mission and the values, and keep those stable over time. Moreover, help your people understand what success looks like with a clear vision of the horizon you want to reach. Then, set clear high-level priorities in the form of goals and milestones, and get out of their way.
4 – Seed The Culture, Let It Evolve and Maintain It
Culture starts at the top and grows at the bottom. You sprinkle the seeds of culture with every word, action, and interaction. The seedlings that form as a result will take a life of their own and grow into a forest.
Culture grows and evolves no matter what you do, so it is worth putting the right seeds in the right places. Once it grows, it needs to be maintained. Prune it, trim it, take care of it every day. If you let it go wild and unchecked, it might disintegrate and become unruly. You can prevent that kind of issue by stopping any cultural cancer on its tracks. Pay attention, and do not let it grow into a monstrosity.
5 – Don’t Get In People’s Way
Since you hired smart people, people smarter than you, let them do their job. Don’t try to change them, but do not prevent them from evolving. Leverage their strengths, let them do their best and get out of their way.
Encourage people to make mistakes, once. Then, keep your eyes open to make sure they don’t repeat it. Repeated mistakes become part of the culture, and they are difficult to eradicate.
6 – Beat The Drums
High performing teams have a rhythm. When it is healthy, it sounds like a regular heartbeat of value delivered to the customer generated with an absence of toxic friction. If the team delivers value often and learns from each delivery, that heartbeat grows stronger over time.
A leader beats the drums by setting achievable expectations and creating an environment where those expectations can be met. Success should feel like a rush of energy flow through the organization, while failure should feel like a learning experience.
7 – Encourage Everyone To Be Responsible For Quality
Quality is not just QA’s responsibility. Quality is everyone’s responsibility: Developers, quality engineers, agile coaches, project managers, people managers, product owners, designers, and executives. Everyone needs to be concerned and focus on creating high-quality products.
The responsibility of QA is to catch and verify missed issues, not to enforce quality. Quality Assurance is there to help the process of creating quality results, not to block the team from shipping software.
8 – Listen To Your People
You hired smart people because you want them to bring their expertise and guidance to the team. You want them to express themselves. That is why you brought them in. You should listen very carefully to what they have to say and create an environment where they can speak freely and where everybody listens.
Listening means understanding what is being said and considering it with care. It doesn’t mean agreeing with everything. That’d be chaos.
Allow your people to thrive by letting the best ideas influence the environment, the culture, and the strategy. The best ideas should prevail, regardless of who came up with them. Allow the value of each idea to guide decisions and not the title or role of whoever had it.
9 – If Something Is Not Working, Fix It
When you build software, you look for problems, evaluate them and fix them systematically or document them with care. The same rigor should be applied to everything else that can affect a team: culture, process, strategy, work environment, interactions, etc. When you notice that something is not working, evaluate its priority and fix it.
You also need to focus; so, in practice, you can’t fix everything. If something is not a priority, document it, archive it and do not forget to come back to it.
Never let severe problems go for too long. They tend to grow like cancer and affect the culture of a team. Talk to your team and listen carefully for nascent issues. Leverage the collective wisdom to find solutions.
Focus on the most critical priorities and avoid changing too many things at once. Let the dust settle after making changes and study the new landscape to see where the situation settles.
10 – Encourage Continuous Learning
Highly performing engineering teams are always learning from experience, observation, the evolution of technologies and mistakes. Learning doesn’t come for free, but not learning is far more expensive.
Encourage your team to learn something new every day. Provide learning opportunities such as conferences, books, articles, training sessions, brown bags, etc. Give time to your team for exploration of new technologies and trends.
Highly productive engineers will not stay working for a company that doesn’t provide learning opportunities. They will leave in search for their next evolutionary step. That is how they became highly productive, and they are going to become unhappy if they feel stagnant.
Be careful not to confuse being busy with learning. A hard-working team is not necessarily learning. The difference is critical.
11 – Know Your People
Get to know your people. Understand their strengths and weaknesses. Help them move to that place where they can be their best.
Within the boundaries of their comfort zone (and yours), get to know your people personally, not just professionally. Relationships that you build at work can be lifetime partnerships and friendships. People that understand and care for each other work better together and help each other and the company succeed.
A sad word of caution
Yes, I know. In the United States is hard to know where to draw the line between “personal” and “professional.” The values, emotions, and issues surrounding anything related to race, gender, local customs, culture, sexual orientation, personality, morality, political views, and religion are profoundly different for different people. What is “being friendly” or “being funny” to you can be harassment or discrimination for others.
The gray area between professional and not professional is so broad and diverse for different people that, to play it safe, we are slowly making the work environment sterile and distant. That is unfortunate, but it is also a reality. You do not want to make people feel uncomfortable, regardless of their definition of uncomfortable. That is far worse than “sterile” and “distant.” You want to create a workplace where everyone can thrive.
This is a complex topic with many pitfalls, and I am far from being an expert. I grew up in a country where, as a man, bringing Mimosa flowers to my female co-workers on Woman’s Day was considered polite. Hugging people and kissing them on the cheeks was also part of the culture, even in the office. Nobody felt uncomfortable about that because it was normal. Well, not so much in the US. I still feel like a jerk every March 8th, showing up at work with empty hands, but I had to adapt. There are many realities, and we need to be respectful of them.
The best advice I can offer is to be mindful. Always (and obviously) follow the law and your company guidelines. Err on the side of keeping it professional.