Building High Performance Teams

As an Engineering and Operations leader in a high-growth privately held company, it’s my responsibility to deliver the most features in the shortest amount of time with the highest quality at the lowest risk.  In my experience, this is not achieved by browbeating teams into working longer hours, or writing scads of detailed requirements, but to establish a process that is iterative and transparent, and a culture founded on collaboration and communication.

High performance teams are typically flat (not hierarchical), self-organizing, and cross-functional. Adopting the following guidelines will help you build a team that maximizes their combined strengths to outperform expectations while having a great time!

Keys to building high performance teams

Alignment of Tactical Deliverables with Strategic Objectives
It’s important that your team understands how their day-to-day contributions ‘fit’ the strategic goals of the company. This is especially true in a high-growth start-up since the team are also (typically) shareholders and have a vested interest in ensuring the work they do is positively contributing to the company’s success. Share the strategic goals and how specific features and release deliverables will help the company achieve them. Also, highlight sales and customer successes where particular features or capabilities played a key role.

Team-based Goals
Measuring the team on their collective accomplishments increases teamwork by creating a sense of joint ownership and accountability.  By focusing on team goals, rather than individual goals, team members will raise issues earlier (so as not to impede the team’s progress), and seek ways to help one another to complete tasks. Mentoring and knowledge transfer will also happen more naturally as teams seek ways to become more productive.

Adopting agile practices will help increase transparency to your team’s progress, provide earlier visibility to issues and potential delays and establish a regular time for the team to reflect on what they’ve accomplished. The best way to increase transparency is to adopt Agile software development practices. At Genius, we follow the tenets of both Scrum and Lean software development. Our daily stand-up meetings keep everyone in the team on the same page and a product backlog that is visible to the whole company ensures that there is clarity to what’s on tap for future releases.

Self-organizing Teams
While on the surface this may seem counter-intuitive to those who are more familiar with hierarchical organizations; self-organizing teams are highly effective. Providing teams with clearly understood expectations and allowing them to self-organize to meet those goals – in combination with a transparent process – results in highly motivated and effective teams. Technical teams understand how each of their skills can be best leveraged to achieve the desired result and take greater ownership in the outcome rather than simply following management direction.

Communication and Collaboration
The most effective teams communicate and collaborate regularly. Creating a culture where open communication is valued and encouraged will ensure that your teams seek clarity of understanding, raise issues or concerns openly, that they are willing to challenge the status quo and that they validate ideas before implementing them. At Genius, everyone (whether junior or senior) is capable of having the best idea in the room and is encouraged to share their thinking. This results in a better product and creates an environment where everyone on the team is contributing fully.

Communication must happen at every level – from technical discussions to updates on the business. As a leader it’s important to set the example by being a great communicator and by demonstrating that you value everyone’s contributions and that there are no negative implications to speaking up.

Establish Accountability
Establishing ownership for deliverables, in addition to setting clear goals and measuring the results, is key to improving the performance of your team. It’s best to establish a relatively short timeframe to meet a set of goals. The list of goals should be determined with the team so that they are clear on the expectations and their ability to meet them. At Genius, we have adopted 2 weeks sprints and release new features to production every 2 weeks.

While it’s desirable for the team to deliver on all their commitments, absolute perfection in estimation is impossible, It is important to be flexible to some degree – when issues that may affect the team’s ability to deliver on their commitments come up early they can be dealt with effectively. This is especially important at the outset as your team is transitioning to a results-based model. Remember, the goal is to build a framework for success so that the team will be motivated to do more.

Measure, Review and Adapt
Performance improvement can only be made if you are willing to openly discuss things that have not gone well and to identify improvements that will increase the team’s rate of success.  Examples can range from how the team is organizing itself to how well they (really) understood the requirements.  It’s also important to reflect on what went well and to discuss how the team can adopt this into their process. Keep a record of what you’ve discussed so you can periodically look back with the team and see how far you’ve come.

Prioritize Career Development
High performance teams need (and expect) to be recognized for their achievements. Not only on an ongoing basis (related to deliverables), but also in career advancement. Provide clear definitions of what’s required to achieve greater responsibility and establish a regular dialog where you articulate areas of strength and opportunities to improve. This will inspire high performers to step up to meet the next level.

Implement Source Control and Build Management
One of the keys to success in an agile environment is continuous integration (check-ins to a single codebase) and continuous builds. Having effective and automatic builds ensures that the team is alerted at the earliest time about build problems.  This is best accomplished with a Build Engineer whose responsibility it is to ensure that code is branched (and merged) appropriately, that builds are correctly executed and that problems are investigated.

Having led several Engineering and Operations teams over the past 20 years, I have seen the transformation and the results of adopting these practices multiple times. As you begin to adopt these with your team, don’t forget the most important thing of all…CELEBRATE! At Genius, we celebrate (as a company) the teams’ accomplishments every two weeks at the Sprint Review. We also celebrate our most recent release at the weekly Engineering and TechOps meeting and recognize what’s been completed daily at the stand-up meetings.

Not only does this give the team the recognition they deserve, but it also provides regular feedback for how they are doing.  At Genius, the team has had a lot to celebrate with over 70 consecutive successful sprints and 15 on-time releases since adopting agile; providing new capabilities and features that meet our customer’s ongoing business goals.

Good luck! I look forward to hearing your thoughts and experiences.

  • Digg
  • StumbleUpon
  • Facebook
  • Twitter
  • Google Bookmarks
  • DZone
  • HackerNews
  • LinkedIn
  • Reddit