A good team isn’t something that happens on its own. But why do we need one at all? Don’t good professionals form a good team by default? The thing is, it’s not enough to lock them in a room and give them a deadline. An efficient team isn’t just about professionalism; it’s also about how the team members interact. Only a truly efficient team can deal with the workload faster and be more productive. And generally, it’s always nice to work with a team that, well, doesn’t mess up.
Statistics show that, in fact, the main reason why projects fail is a lack of confidence in the project’s success: “75% of respondents admit that their projects are either always or usually “doomed right from the start.” But why do you think it happens, and how can you change it? In order to function properly, the team needs to know all the aspects of the process, their duties and responsibilities, and believe in what they do – and you’re the one to convince them. Here’s how to put together a team you can rely on, an effective team you’re confident about, one that you can look at and say, “We’re going to change the world!”
Like any other big task that carries a lot of responsibility, building a successful software development team may seem daunting at first. Where do you start? How do you know who you need and where to look for them? First things first: write down what business task the team supposed to solve. Front-end or back-end development? What is the team’s role? As soon as you have that clear, start shaping the team.
Just so you have an idea of how this process unfolds, here are a couple of examples from our own experience.
If our task is to finish or fix a project started by someone else, first we need to examine the existing code and understand the complexity of any potential changes. For cases like these, all we need at the start is to involve a back-end developer and a front-end developer.
If you need to make test cases, then you’ll have to call for a QA to backup the project. Meanwhile, if you’re working with a project from scratch, usually two back-end and one front-end developer, one QA, and one project manager should be enough.
Done putting together the team? The next step is to define the team’s objectives and/or results, as the goals and tasks should be transparent and clear to everyone. You can do it based on business goals, and adapt all the processes within the team.
Before we go any further, let’s do a quick turn to what makes up a really effective team. Consider these five steps if you want to create a truly successful development team that will help you achieve your goal.
Step 1. Appreciate the power of teamwork. Be smart about identifying your employee’s skills and assigning tasks that match their abilities. But also make sure the team members appreciate each other’s functions in the team and are aware of how their personalities complement each other. The group’s cohesion will lend them the true power to focus on the common goal and reach it.
Step 2. Find the right people. Choose candidates who bring varied experience and perspective to your project. The more sides you cover, the better your product will be at launch and the less you will have to change or improve later on.
Step 3. Learn to delegate. Your job is basically to make sure that your team can do theirs. Once you’ve set goals and guidelines, let the team members do their thing. Delegate authority and provide access to tools to your development team.
Step 4. Track progress. The thing is, when people like what they do, they tend to get carried away. Your task is to monitor progress and make sure the project stays on track. Provide a means to share concerns, and discuss the project’s status regularly. This way, you’ll see if the team is working well or if you have to re-assign roles. However, let the team overcome some of the obstacles on their own – under your guidance. Dealing with troubles in a group brings any team closer together and build confidence among team members.
Step 5. Celebrate little victories. When your team reaches a goal – or better yet, exceeds it – don’t forget to give props to the team members. This will encourage the team to work better and improve team spirit. If you’re not really a celebratory type, at least schedule one final meeting to thank the people who worked on your project and helped it come true.
Creating a highly effective team, however, is just the tip of the iceberg. Let’s go into more detail on how to maintain effectiveness on a certain level. To do this, project managers should pay extra attention to how they structure workflow and arrange and delegate tasks. We recommend getting acquainted with the Develop Team process.
Develop Team is a process that improves team member interaction and interpersonal skills. As a result, you get enhanced performance, a better team environment and highly motivated employees. The process is carried out throughout the whole project. It requires certain inputs (a project management plan, project documents, etc.), tools & techniques (colocation, interpersonal and team skills, rewards, assessment, etc.), and outputs (plan and document updates, change requests, etc.).
Develop Team is a process that has a data flow as well. It’s based on the project management plan, project documents and takes into account enterprise environmental factors and/or organizational process assets. All of this information is used to manage the team and the project, control changes, update project documents and enterprise environmental factors and/or organizational process assets.
To conclude this part, let me remind you that it’s project managers who inspire teams to achieve goals, always do their best and meet the project’s objectives. They should be able to identify, build and lead teams. Their primary responsibility is to assemble effective project teams, like putting together a complicated jigsaw puzzle where every piece eventually falls into place. They should be able to create a perfect environment that is unique to every project and facilitates teamwork. At the same time, they should provide feedback, reward, set challenges and provide opportunities that help the team grow, improve, and learn.
Good project managers always have a set of skills they can use to maintain team spirit and effectiveness:
- Open and effective communication
- Enhancing trust between team members
- Team-building opportunities
- Constructive conflict management
- Collaborative decision making and problem solving
So, what’s the plan? What specialist do you need? In what quantities? As for us, we mostly work with Python, and we’ve been around the block building a development team for that a couple of times. Which is exactly what we’ll talk about below.
To organize work processes and assign project roles, we usually use the Scrum methodology. Fun fact: contrary to popular belief, it’s not an acronym. The name Scrum was borrowed from rugby to stress the importance of teamwork. The Scrum Guide describes three important roles:
- Product Owner – usually, a project’s key stakeholder;
- Scrum Master – a facilitator, a process owner who coordinates the team’s work;
- Development Team – group of developers that work on the project together.
According to Scrum Guide, the Product Owner and Scrum Master are parts of the Scrum Team, too. But who makes up the rest of the team? Here’s the bare-minimum people required for a team working on a Python project:
- Team Lead with relevant experience.
- Back-end – Team Lead
- Back-end – Middle
- Front-end – Middle
- Quality Assurance
- Project Manager/Scrum Master
- Designer (depending on the project’s tasks)
Other important rules to remember:
- No two leaders;
- No people without experience in the domain;
- Involve architects or leaders who analyze project at the initial stage.
While the first two pieces of advice are pretty simple, involving architects right away is important so they pave a path for the project to follow starting on day zero. If the architect shows up at some point in the middle, the team may have to re-do some parts of the software.
Now let’s talk about how to choose a good Team Lead and a Project Manager (or, if you use Scrum, a Scrum Master).
So, what do you do? First of all, choose candidates with a vast experience and the right work ethic. Take a closer look at people who have worked for at least 5 years in the domain in question, those who have been employed by large- or medium-sized companies who value a good workplace culture.
What exactly is this culture? It’s one where every single person understands that under no circumstances is it okay to bodge. Where everyone is cooperative, and the company and all of its employees are open to modern approaches to organizing work processes, and so on. So, basically the honorary role of those large and medium IT-companies is to provide you with developers. Every more or less large company has good developers that either got stuck on their career ladder, or financially. These are exactly the people you need for your team.
And when you make the right choices in picking your team members, you’ll be rewarded immensely – you’ll get a team that knows what to do, is fully involved in the process, transparent in terms of doing business, and has one single goal in mind: to create a great product.
The ‘dont’s’ are pretty easy to understand by now. Most importantly, don’t assign the PM duty to people without any experience, or people coming from in-house development at rather small companies (unless they’ve previously had experience like what we’ve described above).
People that are used to small projects or in-house development, no matter how good they are, don’t have the experience or outlook that will allow them to make correct big decisions (for instance, when it comes to forecasting data volumes, data load, organization of modularity, and separation of concerns). Or they will lack knowledge of the working culture of an effective team, which involves things like taking on big responsibility, planning, working Agile, reviewing design and code, testing, writing tests, etc.
On top of it, an inexperienced developer will basically learn at your expense and generate little to no value. At the same time, they will take the place of a person who could have moved your project forward in leaps and bounds.
What does a Project Manager (PM) generally do? A PM is the one who sets tasks for the team, assigns them to team members, and supervises them as they fulfill their assignments.
Scrum, however, shifts the roles. A Scrum Master is more like a guide, a nominal head of the team who looks after how the methodology is being applied. Scrum is all about independent teams. This way, a PM carries more management tasks and responsibilities than a SM. But the upside to a team led by an SM is that the team members feel a greater responsibility to their work. When people feel that their project belongs to them and them alone, instead of someone higher – like a PM – they work better, and they’re more productive.
Some people mistakenly think that being a SM means abandoning the team altogether. This would inevitably lead to bad consequences, as the team isn’t used to setting its own goals and finding ways to achieve them. In such cases, a Scrum Master should leave it to the team to figure out their next steps, their mistakes, but provide just enough help to enable them to get work done.
To put it shortly, in Scrum, a PM is less of a nanny, but more of a mentor for the software development team. Companies using Scrum should re-define the project manager’s role in advance and be absolutely clear that the manager isn’t responsible for the team completing their commitment in the Sprint.
Now you know what to look for in a Team Lead or a Project Manager, but what about the rest of the team? We can’t stress enough how important it is not just to find fitting skill sets with different people, but also to match mindsets and psychological quirks. The team needs to sync on every level.
Here’s our advice on how to pick team members for IT-projects at any stage with just one priority – to improve product quality:
- Look at a how the candidates’ interpersonal skills go together. It’s as important as their expertise, skills, achievements and experience.
- As a team leader, take into account the possibility of making additions to the team based not just on skills, but also on roles, personality types and career ambitions while maintaining the team’s general direction.
- To evaluate team member compatibility, find a way to measure team relations every other month.
- Show the results of your measurements and team relations research to the team and discuss them together. This way, you’ll be able to find an effective way to change the relations, if necessary.
Don’t forget that all of the team members are just humans. This means, apart from professional skills, you should take into account psychological factors. Based on individual psychological characteristics, a developer team is effective when:
1.The size is minimal (3 to 10 people) while including a full skill set for a particular project time frame;
- The team core is very cohesive, but lack of communication with certain team members is possible (outsourcing of minor tasks);
- The leader is highly accepted (by at least half of the team), while the member with the highest acceptance is the one with the highest level of intelligence that allows him or her to make the biggest contribution;
- The leaders’ team is aimed at itself, the team members are aimed at the goal, the number of members aimed at communication is minimal;
- The team leader aims to serve, while the leaders’ team’s aim is mastery;
- The team has a full set of roles: idea generator, analyst, and critic. Acting roles preside over mental roles, while mental roles preside over social ones. The number of idea generators and analysts isn’t large compared to other roles;
- The intellectual capital of the team should have different levels: a combination of one intellectual leader with several social leaders with lower intellectual capital is preferable.
At this point, you’ve learned how to build a development team. Let’s say your team is working, and now it’s time to see how good, how effective it actually is. Any and all evaluation of team performance should focus on two things: team results and team process.
Team results are defined by the team’s main objectives. It may be anything – from better product quality, to faster delivery time, to less resources used. Team process, on the other hand, is the way the team goes about achieving results – how well team members resolve conflicts, share information, manage budgets, schedules, and interpersonal relations.
If you see how well your team works, an evaluation will allow you to set markers for future reference. But if a team faces internal obstacles, a detailed evaluation of all the team processes becomes even more critical. There are numerous methods you can use to evaluate your team’s processes, but the most simple and effective include benchmarking, ongoing team discussions, and project debriefings.
As you see, building a software development team is a bit like putting together a baseball team. Everyone has and knows their role, their position on the field, and the goal everyone’s longing for. It’s not enough just to pick out good professionals; they have to match each other like puzzle pieces. And it’s your job to really get to know each candidate to see how they work together. Learn how to appreciate teamwork, how to celebrate small achievements on your way to reaching the big goal. Create a dedicated development team that’s going to be successful in this particular constellation. Better yet, build a team that will want to work together even after your project is done – this will be a true sign that you created not just a good development team, but a great one.