January 28, 2021
Building and Managing High-Performance Teams
A high-performing team is a group of people aligned around a unified vision and a shared set of goals. They hold each other accountable, learn from one another, and push each other to achieve outstanding results. In software development, building high performing teams is a crucial step toward consistently delivering high-quality outcomes.
In this article, you’ll hear from 3Pillar experts who share tips for developing and sustaining high-performance work teams that draw from lessons learned on the job. We’ll also discuss some best practices for building and managing high-performance teams to ensure that they deliver the best possible end-product.
Choose Your “Skills Stack” Wisely
There’s no universal silver bullet for building high performing teams as it really depends on the type of project and what you’re trying to achieve.
That said, you’ll generally want to focus on building a diverse team that includes: Developers, Quality Assurance (QA), Scrum Master, Product Owners, Architects, DSD. Additionally, there should be at least one experienced, fully-qualified Senior Engineer available to provide guidance to the rest of the group. Ideally, you’ll also want to select a mix of senior and junior developers, as well as talent from different backgrounds, education paths, and work histories.
A level of diversity brings multiple perspectives to the development process and gives team members the opportunity to learn from each other as they collaborate on solutions. The benefit here is that teams may be more likely to deliver innovative solutions by playing off each others’ strengths and unique ideas. This combination is essential for delivering the kinds of experiences that differentiate your brand from your competitors.
3Pillar Software Engineer Alejandro Rivera offered a colorful analogy that sums it up well, “Imagine a product being as a boss in a video game. You’ll want to select your team based on the type of boss you’re dealing with, as each boss can be defeated in different ways using different strategies.”
It’s important to analyze “the big boss” or project by looking closely at the requirements and matching them to developers with the best skills for taking down the boss and delivering big wins.
On the management side, it’s your job to hire the smartest people you can get, but also make sure that they have the tools, information, and the space to do their best work.
- Create an environment where objectives can be met. Make sure your team has the tools they need to get the job done. It includes giving them access to communication/collaboration tools, the right work set-up, and the information that helps them understand project requirements in context.
- Leverage existing strengths and develop ways to improve your team’s skills. Examples include career development tracks, training, education stipends, and mentorship programs, as well as peer learning opportunities that enable team members to learn from their colleagues on the job.
- Decide how to organize a software development team based on project goals. Consider whether you’ll need specialists vs. generalists, how many people should be involved, and focus on selecting members with complementary skill sets. If you’re working on a large-scale project, it might make more sense to split the team into smaller groups, allowing them to work faster.
- Make room for autonomy. Building a high-performing team also means giving your people the space to think and solve problems on their own. On an individual level, the freedom to explore solutions on their own creates a sense of ownership, while the team/organization benefit from innovative, out-of-the-box solutions they can apply in future projects.
We talk about culture a lot.
While it’s critical for all teams, it’s a major success factor for software development teams.
Here, culture is about more than staving off loneliness and isolation and establishing a shared commitment to the same mission and values. Culture is about creating an environment that facilitates open communication, collaboration, and effectiveness.
Teams need to have good chemistry—a process that happens over time as team members get to know each other as people—both in a work capacity and on a more personal level.
Why it matters:
- It builds trust
- Enables knowledge sharing
- Encourages individual members to take a proactive role in driving improvements
- Creates a safe space where workers aren’t afraid to ask for help or discuss progress toward a goal and respect the team’s schedules and processes
Admittedly, it’s hard to guarantee trust, closeness, and mutual respect when you’re building teams from groups of strangers that bring different personalities and experiences to the table.
While you can’t ensure everyone will immediately become best friends, you can create a culture where healthy team dynamics are modeled from the top down. Think trust, support, respect.
Additionally, you’ll want to do a significant amount of vetting before committing to new hires so that you’re selecting people with the same core values.
Compatibility doesn’t mean hiring more of a certain “type of person,” rather it means looking for people who stand to make the team better in terms of performance and productivity.
Build a Culture Around Learning & Improvement
Experience and skills are essential, to be sure, but you’ll also want to look for people who take learning into their own hands.
Look for developers who are inclined to pick up a book and learn something new, enroll in an online course in their free time, take classes at the local university, or contribute to open source communities.
This proves that this person is willing to invest in continuously improving their own skills, and they’re also willing to invest some personal time into becoming more prepared to tackle new challenges. As a result, they can offer more value to the team and, by extension, the end-consumers.
Also, if the possibility exists, you might assign tasks on a rotating basis, allowing less experienced team members to learn more advanced skills from senior team members on the job.
Create an Environment Where Honesty & Openness Can Thrive
Additionally, foster a culture that allows team members to learn from one another without egos getting in the way.
Software Engineer Lead, Jorge Millán: “Everyone enjoys learning new things. Even when everyone is an expert in their own area, learning from others is the key to success.”
He adds that developers shouldn’t take criticism as “a personal offense. In order to learn, sometimes one must tear apart some deep-seated beliefs. When someone points out opportunities to improve, it’s easy to create a conflict. This can be avoided by not taking things personally and assuming the other person is doing so to support the best interests of the team.”
Still, creating the kind of space where workers are comfortable giving and receiving honest feedback is easier said than done.
Ensure that your team feels confident enough to question how things are in order to improve them, is ready to accept a challenge without focusing on the potential for failure, and that they challenge their peers to do the same.
- Develop a collaborative approach to resolving team conflicts. Whether your team has amazing chemistry or not, working in a collaborative environment means that you’re bound to run into the occasional conflict. To maintain a healthy workspace and high performance standards, managers must address issues and help team members resolve conflict through respectful discussions and mutual agreements.
- Encourage open communication. Make sure that everyone understands that it’s completely acceptable—even encouraged—to ask for help when facing down a challenge. Often, this is an opportunity for peer learning that can help the entire team improve skills without waiting until it’s too late or hurting the project.
- Avoid pointing fingers at individuals. One of the most elements in building a high-performing team is that you need to address all members as a collective unit to create a sense of shared responsibility. Calling out individuals for poor performance can lead to low morale and job dissatisfaction. It’s important to save the individualized feedback for regular 1:1s and address any performance issues privately.
- Lead by example. Teach the team how to give and respond to feedback. In turn, model this behavior by taking everyone’s feedback seriously and using that feedback to implement change (note: that doesn’t necessarily mean you’re required to use every idea, but that you listen to what everyone has to say).
Additionally, you’ll want to be open about your own mistakes and what you’ve learned from them, admit when you’ve gotten something wrong, and be willing to ask for help.
High-performing team members embrace team goals and needs as their own. They work from the same set of priorities, share leadership responsibilities, have clearly-defined roles and workflows, and hold each other accountable for achieving outstanding results.
Management should encourage alignment by:
- Clarifying and communicating the values, vision, objectives. This means making sure that the team maintains a tight focus on the desired outcome, the client, and the end-user. Here, leaders should focus on keeping the team on track and moving in the right direction, gently course-correcting when members get distracted or start heading down the wrong path.
- Defining roles and expectations. In a team setting, everyone brings a specific skill set and experience that contributes to a project’s overall success. To ensure that everyone is on the right track, team leaders need to clearly define each member’s role and responsibilities based on their expertise.
- Setting goals and milestones. Team members must understand and agree to the same set of goals in order to ensure that collaboration is successful. The more clarity you can establish around goals, deadlines, and tasks (and the steps toward hitting key milestones), the easier it will be for team members to meet the project requirements.
Team management in software development is a balancing act between providing the guidance and clarity required to execute on the client’s vision and giving the team enough breathing room to create innovative solutions and improve on existing processes.