• Tuf Gavaz

How to build great software development teams



All software development teams exist to deliver value... but some are better at it than others!

So how do software development teams become great? How do they deliver value more quickly and effectively than mediocre teams? Let's take a look at the essential ingredients.


Agile

Agile is a working methodology that helps software development teams deliver value more quickly than its predecessors (e.g. waterfall). It has become widely adopted across the industry and it's the first thing a software development team should consider on the road to greatness. The Agile Manifesto has four guiding principles:

  1. Individuals and interactions over processes and tools

  2. Working software over comprehensive documentation

  3. Customer collaboration over contract negotiation

  4. Responding to change over following a plan

These are great principals, and following them will lead to open, collaborative, reactive teams, focused on delivering value. But most teams often need a little more guidance on how to implement them. That is where Agile methodologies such as XP, Scrum, Kanban, or Lean come in (more here).


Engineering Best Practices

But Agile isn't enough. Great teams also need to define and adhere to great engineering practices. XP makes a start at describing these practices, but there are others that should be considered. Here are some suggestions:

  • Pair programming/code reviews

  • Test-driven development

  • Regularly addressing technical debt

  • Continuous integration

  • Task branching

  • Automated testing

  • Comprehensive test coverage

  • Coding standards and architectural governance

  • Continuous deployment

  • A definition of done

  • Alerting and monitoring

  • Data-driven decision making

Combining Agile Methodologies with great engineering practices will get teams a reasonable proportion of the way there, but there's still one bit missing.


Engineering Culture

The final area to consider in building great software development teams is Engineering Culture. Culture is invisible and hard to measure, but ask any software development team what their team's culture is like, and you're bound to get an interesting answer!


Here are some cultural practices which should be baked into excellent development teams:

  • Provide individuals with autonomy, mastery, and purpose

  • Be part of a team but also part of a larger community. Knowledge comes from inside and out

  • Live and breathe the mantra of Continuous Improvement

  • Trust your team members to do the right thing and help them to achieve this

  • Coach individuals and share knowledge, removing single points of expertise

  • Give teams time to innovate and ensure there is a clear path to production for ideas that provide value

  • Encourage teams to measure their own effectiveness with regular health checks and retrospectives

  • Ensure there is reward and recognition from both inside and outside the team

  • Make sure work is fun!

Summary

Greats software development teams are Agile. They regularly deliver value in a sustainable fashion, continuously optimizing their processes and tools to increase productivity. They adhere to Engineering Best Practices to ensure they're building software in the right way. They also focus on Engineering Culture to make sure they're working collaboratively and having fun!