DEV Community

Daniel
Daniel

Posted on • Originally published at danielbenzie.com

How to build high-performance engineering teams

When building a tech business, one of the keys to success will be a great engineering team. After all, they are responsible for making the product. Teams that ideate, collaborate and iterate create excellent products.

It is crucial to create an environment that allows these teams to thrive. Unfortunately, there is no out of the box framework that you can apply, but there are some basic principles that you can follow to help along the way.

Autonomy and Curiosity

The best engineering teams are autonomous. They should not be viewed as a resource to ‘be used’, but integrated with the business, so solutions are built together.

To achieve this, you will need curious people in your engineering team. They will have used the product and be able to pick out pain points. One of the best ways to get engineers into this way of thinking is to have time set aside during onboarding to use the product and view user feedback.

By empowering engineering teams to take ownership of the product, you get a much better ROI.

Delivering value to users

The team should focus on the value delivered to the user, not by building technology and figuring out how to apply it later. The best way to do this is to work from the user backwards. Some companies even use feature voting to let users give technical teams direct feedback.

Once the value proposition has been established focus should be on making the initial implementation as simple as possible.

Try to tie feature work to metrics by utilising SMART targets, this has additional benefits beyond the obvious

  • It will “gamify” the work
  • Engineers will be able to use the ‘measurable’ part to see their impact on the business
  • You will begin collecting useful metrics
  • You can share these metrics with other areas of the business

Developer experience

You now have a great team and a backlog full of tickets that will deliver actual value to customers, it is time to execute.

When iteratively building products, the team will be producing a lot of code in small batches. The development pipeline itself should be as efficient and automated. A great CI/CD pipeline is essential to this and will help deliver higher quality code at an increased pace.

Some other things you can look at in your teams to improve the developer experience:

  • Agree on code style guidelines (and enforce these in your CI/CD suite)
  • Project scaffolding
  • Good Documentation
  • Defined processes for pull requests/code reviews

The development team should maintain a refined backlog of stories to improve the developer experience. They will also be responsible for balancing this work alongside product delivery goals.

Finally, the team should be tracking key metrics like time to build, time to first commit and time to first release. These metrics will allow the team to measure the changes that genuinely improve the experience.

Open collaboration

A good engineering team will have a group of people that are happy giving open and honest feedback and this should happen as often as possible between all members of the team regardless of seniority.

The teams time will be spent on solving problems (or figuring out which problems to solve) so it is imperative that everybody feels comfortable making suggestions. Ideas should be defended with facts and no one should be interrupted.

Unfortunately, the team may not always reach a consensus, in this situation, it is important that the decision-maker (usually a tech lead) picks an option. The team then works towards this goal, there should be no vetoing, foot-dragging or hesitation.

Conclusion

In summary, every team is a unique blend of personalities and there is no one size fits all approach. Some of the above might work for you and some of it won’t. The important thing is to measure the impact of any changes and iterate.

Top comments (0)