9 quick tips for keeping development velocity high within a software development team
Tags: agile, team, productivity, management
Published: 2022-02-21 12:23:32

Throughout the 2 years and 7 months I've been a software development consultant at IT Minds, I've been at three different companies. This has provided me with insight into developing software when working in teams, and I would therefore like to share these following 9 tips for keeping development velocity high within a team.

Consider trying them out in your development team, and let us know in the comments what you think about our tips, and whether you have any tips that you would add to the list. 😊

## 1 - Refactor often to keep software quality high and technical debt low
It is unavoidable to gain technical debt as features grow and requirements change, hence dealing with technical debt before it slows you down is important. A well refactored codebase is more prepared for change and new features. Developers and project managers alike should prioritize refactoring as it keeps the software clean and prepared for change.

## 2 - Rely on external libraries
Rather than developing own libraries from scratch, and having to document and maintain these, one should rather spend a day researching whether there’s an existing external library that solves the problem at hand. Less time will be spent on maintaining the library, less time will be spent on documenting the library, and team members will have a place to read and learn about the library rather than having to ask the person who made it. There is no reason to reinvent the wheel, unless the wheel is your product.

## 3 - Have a shared Wiki for team documentation
When a new team member joins a development team, a lot of time and confusion can be saved if the new team member has access to documentation which allows them to gain knowledge on how to set up the system locally as well as on the choices that have been made thus far. Furthermore, a wiki helps knowledge sharing  within the team, making it easier for team members to help each other out.

## 4 - Plan ahead, at least one sprint in advance
Always knowing where the product is headed, keeps the motor running. Sometimes a feature is implemented faster than expected, and moving on to the next feature can be quick. Likewise, if something takes longer than expected, you can assess the priority and know which other features are postponed.

## 5 - Prioritize what’s essential, and avoid frequent scope changes
Make it clear which feature requests are need-to-have and which are nice-to-have, and always have tasks in the sprint prioritized on what is most important. Seek to break down large tasks into smaller subtasks, and try to estimate how long they’ll take. In this way, the team will know which tasks are heavy and highly prioritized and which tasks should be focused on within the sprint, while the project manager can monitor progress.

## 6 - Divide responsibilities among team members, but also allow team members to help each other across responsibilities
Letting a team member work on other team members' responsibilities speeds up development and knowledge sharing. Instead of two team members having to coordinate tightly, smaller adjustments to the backend could be carried out by a frontend developer and subsequently reviewed by backend developers as a pull request. If the implementation needs adjustment, backend developers can help out. The same goes for backend developers making small changes in the frontend. For smaller software products, it may be the case that everyone can work with everything, but for larger software products it becomes infeasible for one person to know and work on everything. For this reason, my advice is to divide responsibilities, but also to let the team members help each other out across responsibilities.

## 7 - Invest in your teammates
You may have a lot on your plate right now, but it’s never a bad idea to help out a teammate and share your knowledge of the codebase and technologies used. You may not get as much work done at first when your teammate starts, but sharing your responsibilities and knowledge will greatly improve development velocity when your teammate is up to speed, and it’ll lift some weight off your shoulders. The faster that can happen, the faster you’ll get the benefit of your teammate. Also, I’m sure your manager understands that you’re spending time onboarding and investing time in your teammate.

## 8 - Automate as much as possible
Build, Test, and Release pipelines makes sure that the software is in a consistent state and that new features can quickly be tried out by the product owner in the DEV environment. Implementing scripts to do mundane common tasks can also save a lot of time.

## 9 - Conduct Engineering meetings
I was at a company as a consultant that conducted a one-hour Engineering meeting every Friday. Developers could submit topics throughout the week to be discussed at the engineering meeting. We pointed out parts of the product that needed refactoring, discussed problems and solutions, and introduced new libraries that could help us tremendously. The meetings also helped with knowledge sharing and improved team members' joy for the project and team spirit. Also, a lot of cross-team-communication could be done efficiently within this hour. I highly recommend these meetings.

## Summary
We have explained the following 9 tips for keeping software velocity high within a team:

1. Refactor often to keep software quality high and technical debt low
2. Rely on external libraries
3. Have a shared Wiki for team documentation
4. Plan ahead, at least one sprint in advance
5. Prioritize what’s essential, and avoid frequent scope changes
6. Divide responsibilities among team members, but also allow team members to help each other across responsibilities
7. Invest in your teammates
8. Automate as much as possible
9. Conduct Engineering meetings

Let us know in the comments if you have any additional tips for keeping development velocity high within a team - or simply if you have tried out any of our tips within your team, and whether it was a success or not. 😊