There are many different things that could slow down your team and eventually lead to missed deadlines and expectations.
It happens quite often.
But this shouldn't happen.
In this post, we will uncover the main things that can slow down your team and provide some hands-on tips to address these issues.
Our intention is to help you structure the problem and uncover different internal and external factors that could impact your team’s productivity.
What are the main things that decrease developer team performance?
Gitprime did a small survey, asking professional programmers and managers about the main factors that slow down their team.
Even though the sample size was small (50), it still sheds light on the perceived elements that slow down a dev team.
In their survey, they identified 4 main categories that affect team performance.
- Technical debt or underestimated challenges
- Product requirements change while work is in progress
- Business direction changes while work is in progress
- Developers are interrupted or deprived of focus
According to managers, apart from changing requirements, failure to communicate, constant meetings, and helping others were the biggest restraints to their progress.
While developers find tech challenges and interruptions the main reasons of why their team slows down, there are further things they mentioned: slow automated processes, context switching (lack of focus), changing priorities, too many meetings, high-tech debt, overloaded sprints, and adding new requirements to existing sprints.
Interestingly, developer managers’ perceptions are mixed, since they are the managers of the team while also taking part in the coding. They said that bad developer culture, fighting fires, and helping others were their largest restraints.
Obviously, these groups attribute the problem to the things they are most exposed to.
These are general factors that programming professionals think slow them down. Since every team is different, you need to examine the real situation in your team.
And for that, you need data.
0. Where is the bucket leaking? Start with data
You need data to figure out where your team spends most of its time and what are the factors that slow down development. Without data, finding issues with the highest impact is difficult.
It’s like playing golf in the dark and hoping to score. You might get lucky, but what you need here is a systematic approach and good lighting.
Data will shed some light on the problematic fields.
There are two things you can do.
Ask your team members to track how they spend their time for a few weeks. Probably this is the hardest part since your developers won’t be that happy to do this extra boring administrative task.
Probably, the easiest solution is to create an Excel sheet on Google Drive. Define the main tasks with your team. This way, it will be much easier to extract valuable info from the Excel sheet since you don’t have to clean the data.
Not only the tasks need to be tracked but also waiting times (waiting for someone to finish a task, waiting for approval).
The downside is that the data won’t be 100% accurate.
But it will be enough to give you a better understanding of where your team members spend (or waste) most of their times. Even if statistical significance isn’t reached, you can still better guess the most burning issues in your team.
Apart from tracking what they’re doing, you can also run your own survey or have 1-on-1s with your developers to see what the main factors are that slow down their work. Surveys require a larger team size to at least see some patterns. The best alternative is having 1-on-1s and to dig deeper in the problems.
1. Work method audit: Is your team doing what it is supposed to do?
Agile development is not a silver bullet to solve your team’s productivity problem, but it provides good guidance. I’m quite sure that your team already applies some kind of agile methodology.
87.3% of tech companies use agile methods according to the State of Software Development report.
The question is whether your team is actually sticking to the method’s framework and following the best practices.
Once in a while, it’s worth doing a method audit, checking how the team actually applies these methods and making necessary adjustments if necessary.
Agile methodologies are great to set up a system in which your team works and sets goals, but quantifying its impact can be tricky.
All in all, you need a system in which your team can work productively.
2. Project goals need to be defined
It’s sounds like a no-brainer to define your project’s goal.
Apart from this, you need to clarify what technologies you’re planning to use to achieve them.
There are tricky situations where it’s not clear what technology to choose.
Creating a spike solution can be a great idea to test things out and see if it actually works. A spike solution is a sort of prototype that allows you to test your assumptions regarding new technologies.
We have a project checklist that covers the most important technological aspects that need to be considered before any project is started. It makes project estimation much easier.
When setting up goals and estimating your project, it’s highly recommended to involve your developers in the process.
This way, developers won’t feel that this was pushed down their throat but since they were involved, they will be more engaged while working on the project.
Defining goals is one thing.
It’s pretty easy to get distracted during the project; there are always new things coming up that could distract your team from focusing on the main goal.
It’s so tempting to add just one more feature to the project/sprint, but no matter how small these extra things are, they’re decreasing you team’s focus.
In his book called One Thing, Gary Keller inspires readers to think big but to focus on one specific thing at a time.
“Focus is a matter of deciding what things you’re NOT going to do.”
Here are some techniques you can apply to reshape your team’s focus:
- The Focusing Question: “What’s the ONE thing you can do such that by doing it everything else will be easier or unnecessary?”
- Use the 80/20 Principle: Instead of having a to-do list for your team, we need a success list with the highest leverage activities. A way to find your highest leverage activities is by using the 80/20 principle.
The team has a well-defined set of goals and agreed-upon methods for achieving them, and it has a focus audit process that helps keep the project on the right track.
The secret to maximizing your team’s performance is to limit the number of things they are working on at any given time:
- Decide what the limit is.
- Put a gate at the beginning of the pipeline and check the finished tasks at the end.
- Only let a new one into the pipeline when an old one goes out.
3. Communicate how you’re progressing towards your goals
Besides having informal discussions in your team, it’s also necessary to have scheduled time slots for discussing project-related issues.
Daily meetings: These are daily stand-up meetings (no longer than 10 minutes) when every team member working on the project answers the following questions:
- What did you do yesterday?
- What are you doing today?
- Are there any obstacles that prevent you from achieving your daily goal?
These daily meetings keep the project super-focused and allow team members to give early feedback on the progress and the quality of the work.
These ensure there is no misdelivery; every stakeholder is on the same side.
Retrospective meetings: In this case, we take a bird’s eye view on the project. Seeing the bigger picture gives a better understanding of what happened during the last phase.
While it’s recommended to decrease the number of meetings but you still have to make sure that information flows seamlessly within your team.
There needs to be a common communication platform available for every team member. This ensures that communication takes place in one channel and is not fragmented into other ones.
Do not choose email as your central communication channel.
Just imagine a long email thread where it is difficult to get any information effectively. You literally need to launch an expedition to find the information you need.
We love using Slack, but you can use Hipchat or Rocket chat as well. The idea here is to have a central platform for your team's communication that allows you to categorise conversations into different channels.
4. Frequent feedback loops/performance reviews
Team leaders have to give frequent feedback to team members; this helps them to further improve and keep working productively towards a common goal.
It is necessary to have scheduled 1-on-1s with every team members. This is a great way to have a focused discussion with every developer about their professional challenges and performance issues and to give them guidance on how to improve.
5. Decrease the number of unnecessary meetings
The word “meeting” could be a synonym for “wasting time.” It’s not surprising since meetings are among the top time wasters.
You can’t really avoid having meetings, but there are a few things you can do:
- Reduce the number of meetings
- Set a time limit
- Make sure to have an agenda
- Close every meeting with an action plan (assigned to team members)
The Golden Rule of meetings, says Cohen, is to “make sure you have a clearly defined purpose for each one.”
6. Update tech stack
The efficiency of the organization is also affected by the use of outdated technologies and programming languages. Often, this can lead to a programmer flusting and a decrease in his performance.
New tools and libraries are published every day.
- What are the current technologies you’re using and can they be replaced with new ones?
- Can part of the development process be automated?
- Are the processes overcomplicated? Is there any way they can be simplified?
Some websites are worth following for the latest tools and tech stuff. There are community sites like Reddit that helps you track the latest tools and libraries for your current and new tech stack.
Among many community sites, here is a cool aggregator that collects meetup and conference recordings.
Figuring out what slows your team down is a pretty damn hard thing to do. As a team leader, you spend most of your time talking with people and sharing information. Use these meetings for figuring out where your team wastes/spends most of its time, and involve your team members in figuring out a solution to address these issues.
This post is here to help you structure the problem and also to provide some examples with potential solutions. Get the data, brainstorm on solutions and experiment.