The first thing you need to do to start improving your team’s velocity is to forget about it. More often than not, when managers or executives need to increase the development speed, they tend to analyze the speed of every single contributor.
Even teams with incredibly talented individuals, often fail because projects are poorly managed. Instead of looking for developers speed, try to work with them and pull together. If you focus on helping them to be successful and make that your main priority, odds will be in your favor.
As a software boutique firm, one of our main objectives is to enhance team productivity. So we focus on making sure our teams always have what they need to perform at their peak.
Here are some key ideas we’ve gathered through all these years working with teams. They keep showing their results regardless of team configurations, locations, sizes and industries:
1- Clear business objectives
In some projects, we’ve seen several team members working really hard without any particular goal. We asked the engineering team (developers, designers, QA, etc) what the project and the business were about and they could barely explain it. This situation can be caused by several factors: poor management, not experienced team members, single-player contributors, etc. Beyond the original cause, the whole team should push forward to understand the objectives of the project.
Every team member should be able to answer these questions:
- Why are we doing this?
- Where are we going?
- When do we need to finish this task / iteration?
This simple tip is incredibly powerful. The team morale and motivation increases. Each individual is empowered and now has the rational to make her own decisions while developing. Which often turns out to be faster and require less re-work.
In the software industry, people usually say they work with Agile or Lean methodologies. But that’s not always the case. Some organizations work more with a waterfall approach, even if they don’t like to admit it.
Projects need organization. If you have big goals, you need to plan how you will achieve them. If you use a methodology and stick to it during the project execution, you’ll increase your chances to meet your goals. Look at these best practices for enterprise software development.
If you use Agile, you should always remember and revisit the agile principles. Scrum is an example of a good Agile process. If you have decided to use Scrum, respect all the ceremonies. Even if you don’t have the time. Each ceremony has its own objectives. If you don’t see the value in one of the meetings, ask your team. It may be necessary for them. This will keep your team healthy and guarantee a development constant pace.
3- Look ahead
One of the biggest waste of time in software development is when a developer has finished its work and is ready to take on something else but does not know what she should start with. When the team and work are not well organized they need to:
- Ask the leader or manager what they should work on next. But sometimes:
- Leaders are not working or available to talk
- Leaders don’t have the answers and need to reach to someone else to clarify things
- Ask for clarification because tasks are not well defined. Or because the developer doesn’t understand the business use case.
- Ask the designer about the User Interface designs and interactions.
- Same availability issues as with Leaders
- The designer didn’t have a certain flow in mind, and the developer needs another design iteration before starting to work
This is one of the main waste of time causes in software development. All the above could have been avoided.
Single contributors should have everything they need to finish one task and start with another one right away. There are gonna be some interactions with the rest of the team, but that shouldn’t be a blocker, waste of time or rework.
Spend some time every day to look at your project board and make sure your team will have everything they need. Develop the habit within your team so everyone is taking care of this. Teams need a free track so they can take off at a good speed.
4- Talk to your team
All members of your team have their own personalities, feelings and personal contexts. If you talk to them often, you can understand several things.
It’s good that you’re aware if your team members are going through difficult times. You don’t need to be friends or know all the details of their personal lives, but at least to be aware of the situation. This will help you to balance your attitude towards them.
More often than not, they know better what the team needs to work better. Let them propose and make their own decisions. “The best architectures, requirements, and designs emerge from self-organizing teams.” You intervene only if you see something going off the rails.
How to do it?
- One on one meetings: 30′ talks between 2 or 4 weeks.
- Retrospective meetings: You should only facilitate this meeting, let them speak their mind.
- Informal or casual conversations
5- Motivate your team
Holding conversations with your team members allows you to understand what motivates them. This will give you insights on what to do to make them feel part of the team.
Apart from particular things, there are some general practices that can also help:
- Let your team demo their work. They have done the work, let them feel proud of it. If they screw, they will have more reasons to do it better next time.
- Celebrate your victories. Every time you reach a milestone, finish a project or receive good news, celebrate it all together.
- Motivate your team to perfect their craft. Develop a growth mindset inside your team. There are always things to learn and get better at.
Another agile principle to remind us the importance of motivation: “Build projects around motivated individuals.”
These are just some of the lessons we learned along the way. As anything, changes need time to unfold. So one of the things you need to develop to succeed is to be patient and consistent.
If you’re coherent on a daily basis and work deliberately to make your team work well, you’ll see results progressively.