Developer Velocity (DV) is a broad term that describes how we can increase efficiency for developers building software solutions. It involves using the right tools to write software, implementing automated processes for continuous integration and deployment, properly monitoring our software, providing feedback loops, and any method or tool that removes friction for the development team.
Increasing Developer Velocity means reducing the time to write, debug, test, deploy, and update software. Developer Velocity tends to increase as developers become more agile and innovative.
The term is a bit misleading, as "Developer Velocity" success depends on many people in the organization besides developers. Everyone in the development process can contribute to Developer Velocity.
Many factors go into increasing DV. Hiring and retaining high-quality people, using the right tools, and fostering the right team culture are just a few factors. When we consider each of these, we need to focus on removing barriers, allowing the team to focus on moving forward without getting bogged down by needless friction.
McKinsey describes an "Inner Loop" (activities that directly build and test software) and an "Outer Loop" (supporting activities and non-functional requirements, such as security, deployments, and integrating with other systems). We should seek to automate as much of the outer loop as possible and focus our time and mental activities on the inner loop. The human brain works best on inner loop tasks, but we can use tooling to assist us with this process.
Using Generative AI tools can significantly increase velocity. A study by McKinsey revealed a velocity increase of up to 45%, depending on the complexity of the code involved. GitHub Copilot, GitHub Copilot Chat (currently in preview), and ChatGPT can generate code from human language descriptions. That code is not always perfect, but it is a starting point.
Other AI tools, such as Cognitive Services and OpenAI may allow your applications to take advantage of Artificial Intelligence without the time and effort required to build your own models.
Deploying to a public cloud platform eliminates the need to purchase and maintain an internal data center.
Low-Code/No-Code tools such as Microsoft Power Platform can reduce the time it takes to develop forms, workflows, and other software services and applications.
Azure DevOps, GitHub, and other Application Lifecycle Management (ALM) tools allow you to automate running tests, integrate updates into the existing software system, and deploy code. Automation makes these tasks more repeatable and requires less manual intervention, which tends to reduce errors. An automated Continuous Integration / Continuous Deployment (CI/CD) system is invaluable in maintaining velocity.
Implementing feature flags can save customization time because it allows users and administrators to turn features on and off through configuration without writing custom code.
Consider incorporating Open Source Software (OSS) into your applications rather than writing your own components. Many OSS projects exist that may exactly meet your needs and can save you the time of developing them yourself. Many users have already tested popular OSS projects. These projects have the added advantage that contributors add new features and bug fixes, of which you can take advantage.
Automated testing can catch many problems earlier in a product's development lifecycle. The Shift-left approach states that issues are less expensive to resolve the sooner they are discovered. Important types of testing are:
- Unit testing
- Integration Testing
- Acceptance Testing
- Performance Testing
- Chaos Testing
Building security into every step of your development process saves time in the long run. Adding security at the end without planning can be expensive, time-consuming, and ineffective. Static Application Security Tests (SAST) involves reviewing the source code for security vulnerabilities. Dynamic Application Security Tests (DAST) involves testing the application externally for security flaws. Automated scanning of source control repositories can detect secrets, such as passwords or connection strings erroneously checked into the repository.
Feedback and Monitoring
A fundamental premise of many agile methodologies is fast feedback. Reducing the time to receive feedback from users and acting on that feedback also increases Developer Velocity.
Feedback can come from users, or you can acquire it via application monitoring and alerting. A comprehensive monitoring strategy will let you know when errors occur or when problems are imminent. Using Azure Monitor and Application Insights, you can configure alerts that notify you when a system's behavior or performance falls outside an acceptable range.
People and Culture
Team culture can have a significant impact on velocity.
In their article Developer Velocity: How Software Excellence Fuels Business Performance, McKinsey reports "Organizations that enable software teams to experiment, fail, and learn in a safe environment see consistently better results."
Creating a culture like this encourages innovation and helps to retain top workers. Your chances of improving velocity increase with better people.
Using modern tools, as described above, also helps your organization retain talent, as most talented developers would rather spend their time building functional software than maintaining system "plumbing." Providing developers with the right tools not only increases their productivity but can also increase their job satisfaction, leading to longer retention.
McKinsey created the Developer Velocity Index to measure this velocity at the system, team, and individual levels. DORA Metrics, created by the Google Cloud's DevOps Research and Assessment team, can also manage the efficiencies of the software creation process. These metrics can help you understand your goals and where to improve. Regardless of how you approach or measure your velocity, it is crucial to identify the bottlenecks in your development process and seek ways to improve them.
When getting started, Microsoft provides a DV Assessment, which takes about 20 minutes to complete and asks about your organization's architecture, engineering practices, and tooling. Based on your responses, this tool returns a set of scores by category and a set of recommendations.
Developer Velocity is all about rolling out high-quality features and fixes to your users as quickly as possible. Achieving this goal takes a combination of people, tools, and processes; but it leads to higher business performance.
Here are some useful tools from Microsoft:
- Azure DevOps
- Visual Studio and Visual Studio Code
- Visual Studio Codespaces
- Power Apps
- GitHub Copilot
- GitHub Copilot Chat
- Microsoft Dev Box
- Microsoft Azure Developer Velocity home page
- The Importance of Developer Velocity (Hitachi Solutions)
- Video: What is Developer Velocity?
- Yes, you can measure software developer productivity (McKinsey & Company)
- Developer Velocity: Key lessons from digital leaders on software excellence for 2021 and beyond
- Developer Velocity: Empowering developers to fuel business performance
- Developer Velocity: How software excellence fuels business performance (McKinsey & Company)
- Unleashing developer productivity with generative AI
- DevOps Research and Assessment (dora.dev)
- Measuring Software Development Efficiency: A Study of DORA Metrics
- Azure Monitor articles
- Azure Monitor videos