As startups evolve, their product changes frequently. Instead of focusing on the best possible product though, they should focus on awesome teams. A truly agile, passionate and intelligent IT team can quickly adapt to changed objectives and create different products over time. Through this lens, the software that is created can be considered as a mere byproduct of a well-functioning team. A team that has fun working and builds high-quality software on the side. Here’s how.
Building awesome teams
In my experience, the key factors in enabling such teams are
- Clarity about company goals (see Asana’s pyramid of clarity). This both motivates the team and ensures that the product is in line with the company goals. It also allows team members to pick their tasks themselves, leading to higher involvement.
- Adaptive processes and tools. Tools and processes should be easy to exchange and to adapt to team size, company size, tech stack. For instance you can start out with something simple (Trello or physical post-its) and upgrade to a complicated ticketing system later. Some hardcore agile evangelists will tell you that you have to work in a certain way to ensure success, however processes and rules that were created by the team itself lead to a much higher employee involvement and a better functioning team.
- Non-negotiable quality standards. This ensures high velocity, increases value and motivates the team.
- Room for professional growth. Offer training budgets (that aren’t mere tokens but actually match the prices of the IT conferences & workshops out there), growth paths, regular one-on-ones.
- Room for innovation. Introduce a „mandatory fun day“ once a week were team members don’t work on anything from the usual backlog. They might invent an alternative to one of the tools that are used daily. They might learn something about a new programming language. Or they might contribute to an upstream project. Often there won’t be any directly visible business value, but the occasional genius ideas that are produced in such an environment will by far outweigh the cost. Additionally it will bring the team closer together, maybe fostering new collaborations between colleagues who usually don’t work on the same systems.
- Hiring the right people. This is – by far – the most important factor as each team is only as strong as its weakest link
Other important company-wide factors such as company culture, company reputation matter greatly as well but are often not directly controllable by IT managers.
Hiring for awesome teams
I’m not a HR person, so my perspective is entirely from the “inside”, so take this with a grain of salt. Here are my thoughts on how you should hire IT professionals:
- Diversity is extremely important, especially regarding innovation, but also in the attention to detail required for building non-exclusionary products.
- Instead of a long interview, let the candidate spend some time with the team, working on a real task. If this takes more time than the usual interview, pay the candidate for it. This way is superior to the usual coding or whiteboard challenges, as it uses “real world” parameters
- Lose the “Senior” and “Junior” from your job postings. Due to the Dunning-Kruger-Effect a lot of junior developers overestimate their skills while senior developers underestimate them. Also you will have a much larger candidate pool.
- Hire candidates with „PACE“ (a mnemonic I invented), look out for someone who excels in at least three out of these four:
Passion. This means: „You love something about your work“. It does not matter what. Honestly. It could be coding itself or being passionate about your tools or the product you are building or the company values. The specifics don’t matter, the personality trait does. A passionate team member will be more efficient than one with a fancy degree and years of experience.
Analytical Thinking. This means: “You can find the cause of any production bug”. Or breaking down a huge problem into individual parts. Get smart team members that can also “think outside the box”. Again, this is not related to knowledge but to intellect.
Communication Skills. This means: “You can explain any complicated topic to an outsider”. Teamwork is constant communication via stand-ups, retrospectives, ticket descriptions, pull requests, commit messages. Good communication skills will also improve team happiness, as it can be frustrating not to understand each other well.
Everything else. This means: “You have any past IT experience”. Any.
Ignore the tech stack
„Hard“ tech skills are over-represented in job postings, sometimes taking up half of the space. However this initial entry barrier is often totally irrelevant. Of course someone may be working with Kafka day to day. But is that important enough to prevent an otherwise perfectly fitting candidate to join the team?
As mentioned before, I’d hire someone who excels in at least three of the four “PACE”-areas. If that’s a candidate who has extensive experience in the tech stack currently used, great! If it isn’t, also great.
What do you think of my ideas for building and hiring awesome teams? Tell me in the comments!