You have a team of experienced developers and some really good projects in your portfolio. You think everything is alright till the day it becomes clear that there’s another delay and yet one more time the customer is not happy with the quality of the project.
How is that possible? What has happened? You probably ask yourself and look for some ways to make the improvements.
If you are sure that your team is experienced enough and there shouldn’t be any delays we have some tips on how to improve software development velocity.
Improving the velocity would result in keeping the schedule but also in providing high-quality projects and building higher team morale.
What is velocity in software development?
Velocity is a popular term in the software industry. It is a metric from scrum and agile methodology, that tracks how much work one team is able to complete in one sprint.
Velocity is a helpful tool for capacity planning and assigning tasks in the agile team. You can measure it in different units: story points, hours or ideal days.
The main concepts helpful in understanding the velocity are:
Capacity is the time when engineering teams are available. According to our observation, a full-time employee is considered to have 7 productive hours during the day (allowing meetings, breaks, emails etc). So in a team of ten, working 5 days a week for a two-week sprint, the capacity will be 700 hours.
Story points are units showing how much effort is required to build a feature or a user story in the chosen project.
Every team can define those units separately, i.e. fixing a bug can be 1 point, improving existing technical solutions – 5, and building a new feature – 10 points.
In every sprint development team should estimate the number of points to each story and then complete a certain amount of them during the sprint.
Definition of Done (DoD)
All conditions or acceptance criteria that a project must fulfil to be considered as complete. Each team has its own DoD. A clear definition of done prevents the team from delivering low-quality or not-completed features.
A burndown chart is a graphical representation of work left to do in a sprint versus time. It shows the time remaining to complete the planned user stories for each day during the sprint. The burndown chart helps to predict the outcome of the sprint.
Why sprint velocity is important?
The team can benefit from the velocity by predicting the development speed and the number of items that can be created in one sprint. It is also helpful in sprint planning. In general, work should be planned based on the average of the last three to fours sprints.
Remember, that the team’s velocity depends on a team and nothing good can come from comparing them. Each engineering team should plan their work according to their own scopes and abilities.
Development velocity is a great tool for detecting inefficiencies. A low velocity arises a big issue with solving the problems, like technical debt or test infrastructure.
On the other hand, a high team velocity can point out the risk of over-promising and under-delivering. Maybe the team is overestimating the work involved in stories?
How to improve software development velocity?
Based on the research and over 10-years of our own experience, we’ve created some tips that will help you to increase the team’s velocity and as a result, plan the work better.
Do the sprint retrospective
A retrospective is a meeting held by a software development team at the end of the sprint or a project.
Retrospectives help teams to uncover what went well and what didn’t and make small improvements on a regular basis.
A meeting like this should be held in a safe and trustful environment, that allows all team members to express their issues effectively. During every discussion, the team should identify at least one improvement and bring it to the next sprint.
The retrospective is a tried and tested technique that brings extremely useful insights and increases the sprint velocity.
Below you can find a list of questions that can be helpful during the retrospective:
Focus on testing
Testing is an integral part of every development, but can badly influence the sprint speed. Developers spend loads of time on testing code and maintenance.
To save time and improve software development velocity you should consider eliminating unnecessary tests and automating some of them.
If you want to improve velocity, you should consider automated testing. It can prevent unwanted and unexpected costs.
That is a good practice that lets your team members concentrate on building new features instead of spending the next hours on testing code and catching bugs.
You should avoid overlapping tests unless there is any good reason to make the unit testing more than once. Some tests, like an end-to-end test, cover most of the features. If they occur, there’s no sense in self-testing all the features, as it is simply a waste of time.
Error detecting tool
To improve the team velocity even more, you can consider investing in an error detecting tool. It alerts developers immediately about the code errors and helps to reduce the cost of fixing them.
Error detecting tool provides the data about how many customers experience the issues and help developers to understand prioritize a problem.
Here are some of the most popular error detecting tools:
Do you use error detecting tools?
Set up a fast recovery system
Bugs happen, and sometimes even the best testing can’t hold it back. Quick reaction and a fast recovery system will help you prevent bigger issues, as every minute of downtime comes with the cost.
According to Global App Testing, $100,000 is the average cost of a single hour of downtime reported by an ITIC Study. What’s more, about 48% of responders think that poor performance of the app or website means that the provider didn’t care.
Most of the big companies, like Google, Amazon, Netflix or Dropbox have quick response processes in place. What’s more important, they’re all very similar. In a world where we follow automation processes, incident response processes are centred around manual operations and human intervention.
The first steps of the recovery system are focused on error recognition and mitigating the risk. Once the impact of the bugs is reduced, developers are looking at the cause of the problem and work on a solution.
Debugging can be very time- and cost-consuming, so a fast recovery system can improve software development velocity.
Create a balanced and stable team
A balanced software development teams are the key to higher velocity and high-quality projects. Once the team is balanced, both the performance and productivity can reach higher levels.
But what balanced teams mean exactly? It is an optimal team composition, so the right number of senior, junior and regular developers work together.
If there are too many senior developers within the team, the processes can be long and complex as they can make hourly debates on which approach will be best and as a result, choose too complex solutions, inadequate for the project.
On the other hand, if there are too many junior developers, team productivity will be low, because of the lack of skills.
The entire team consisting of regular developers won’t be a good idea either, as they won’t have the right tools to overcome some of the bigger challenges that require a senior.
We know that every project is different and so there are tasks at various levels of difficulty, and so the whole team should work together to get it done. A well-balanced team keeps all the members engaged and let the developers grow.
Another important characteristic of the high-productivity team is stability.
The process of employee onboarding and offboarding can be long and badly affect the velocity, as new team member needs some time to learn the processes.
Remember to listen to your employees and work on team morale. In case of the rotation, be prepared – pay attention to the documentation of the development process, record the product demos and training sessions and automate your deployment.
We can proudly say that last year the rotation in our engineering team was 0. So we can assure that it is possible to keep the developers engaged.
Effective communication is not always easy, but you should be upfront with your expectations from the beginning. The early insight helps with a better understanding of the business value.
During every project, you have to make sure that your development teams understand not only the scope and sprint backlog but also business objectives and goals. Once everyone is on the same page, they will have the right tools to resolve it.
You should also learn how to give good feedback. It won’t always be positive but should be effective. The main thing here is honesty – if you’re not happy with the final product, you have to speak about it.
Avoiding the problems can have a negative impact on the whole team. Mistakes can happen – we’re only people. But as long as you give feedback, and explain what went wrong and what can be improved, your employee can learn from it.
Effective communication will improve software development velocity – when the team understand what they are about to do, they are able to achieve the right result much faster.
Team recognition should be one of your priorities while building a strong team. Every employee is different, but with time, you would understand what motivates them – and motivated employees are key to high velocity.
Developers want to do meaningful work, and see clear results of their projects. Showing them how many users choose their product or use the feature they just deployed means a lot and boost team morale. Everyone works better once they know the employer notice and appreciate what they do.
To empower the Pagepro team even more, we’ve created Open Kudos, a Slack bot that lets the team members give Kudos points to colleagues for work done, help or simply being kind to each other. Points can then be later exchanged for prizes.
It helped us motivate the employees and had a big impact on productivity. Kudos also build a strong connection between the team members and makes saying ‘thanks’ easier and more powerful.
Team recognition is not only about complements, but also about the possibilities you give to your employees. Let your team learn something new. Developers have to improve their skills constantly – and if you want them to stay, you should let them do this.
Knowledge sharing, constant improvement, and a customer-centric philosophy are correlated with high performance.
In Pagepro, every employee can spend 4h a week improving their skills. Our developers do courses, read articles and check new technologies. We also do insight talks that allow them to share their knowledge and improve soft skills.
As you can see, increasing the velocity can be a complex process, but it’s totally worth it. A motivated, balanced team equipped with the right tools can work wonders.
Need high-productive developers?