Where to Get Them and What to Do about Them
Software development is more than just writing code. The way a development project is managed matters quite a bit. The tools used by developers as well as project managers and engineering team leads, and the organization itself affects much more than just productivity.
Requirements gathering, prototype design, project management, writing the actual code, testing, in-team collaboration, integration and deployment – all are affected if teams and organizations do not focus on process management and improvement. It can also affect the long-term viability of the development efforts.
This focus on the process, team and individual productivity helps not only on the programmers’ productivity or efficiency but also on the coordination level between the various teams working together.
Software productivity is a ratio between the actual functional values of the targets delivered to the estimated resources requirement.
Many organizations have always focused on gathering data and analyzing them over a period not only as a research exercise but also to improve processes, ensure the productivity and satisfaction of individual developers, improve team collaboration and much more.
Focusing on collecting this data, compiling and studying it and testing hypothesis’ leads to faster release cycles, faster time to the market, higher quality code, satisfied customers and clients, and more importantly better reaction to market changes, the recent pandemic being a good example.
A few common reasons which affect software development productivity are:
At the Individual Level
- Organization-specific Process Training
The amount of training an organization provides a new developer on the framework and best practices
- Coding Effectiveness
The number of PRs/tasks solved or written code for without the need to change it after testing or code review
- Coding Efficiency
The time it takes for a developer to think about the feature or problem statement and write effective code
- Tool and Environment Training
The time spent by teams and organizations on tool training (say Ansible for e.g.) and environment training (the MEAN stack for e.g.). The quality of the training is also important.
- Focus Developer Time
The amount of time a developer gets towards actual focused work, as opposed to meetings and other time spent not directly on problem solving. This is not to say that some meetings are not important. In many areas, meetings, such as the daily scrum, can help bring efficiency in solving many challenges.
- Peer Support
Another important area which affects the individual developer is the amount of time spent by peers in supporting an individual’s work. In-team support, leadership support and team cohesiveness matter quite a bit.
At the Team Level
- Task/Story Definitions (Work Breakdown)
This refers to how well are problem statements defined when a team starts a project has a higher affect on software development productivity than most other factors. While an obvious need, the importance of how much a team is aligned to common definitions, the common need for accuracy and the removal of the need to have multiple meeting to define a feature request for example are essential to reducing the need to rework and get it right the first time.
- Process Efficiency and Adherence
Is there a significant need to reiterate processes and the adherence to agreed upon standards within a team? If so, you have not got it right the first time. The efficiency and accuracy with which processes are defined plays a significant role in productivity. The adherence to it matters even more.
- Team Process and Ongoing Training
Engineering team leaders should be able to identify processes which hinder the effectiveness of the team as a whole instead of just the individual developer.
- Team Planning Efficiency and Forecast Accuracy
The engineering lead or the project manager managing the team of individual software developers needs to be effective in planning the rhythm of the development process. This requires the PM to be able to manage the tasks at hand and the team’s ability to follow guidelines and best practices, and have good software delivery forecast accuracy.
- Team Support and Cohesiveness
Good teams have the ability to analyze what is required of them, plan for it and help each other deliver on the team’s promises. The number of times they interact with each other, the quality of each interaction, and the ability to help each other affect productivity in many ways.
At the Organization Level
- Management Effectiveness and Decision-making
Organizational management is instrumental in determining how effective the software development teams are within their organization. Policies at the organizational level, the tool choices engineering directors make and many other decisions disproportionately affect the quality, productiveness and efficiency of software development efforts. The effectiveness of not just the CTO but the CEO in prioritizing projects and programs affects productivity.
- Org Planning Efficiency and Forecast Accuracy
How management chooses to implement one feature request over the other, the ability to forecast the result of prioritizing one feature over the other and feedback mechanisms provided to software developers affect organization’s productivity, even software development as a department.
- Org’s Market Responsiveness and Long-term Planning Effectiveness
The long-term response to changing market needs, the choices software development leaders make, in choosing a code repository tool over another, for example, affect productivity in more ways than one. Choosing a wrong CI/CD tool enterprise-wide can result in setbacks lasting more than a few years in a large organization
- IT Infrastructure
The choices made in implementing a certain IT infrastructure can change the way businesses operate. These choices also affect developers in how efficient they can be especially to other organizations in a similar industry. Developers in cloud-native organizations, for the most part, are far more efficient and effective in writing code than say those organizations which have chosen to build an older style of application – say, a mainframe application.
Software Metrics: What Are They and How to Identify the Right Metric to Be Tracked?
A software development productivity metric is data obtained from the development cycle, either from single or multiple sources, which help in identifying measures to improve the efficiency and effectiveness of software development processes. These metrics, when used either individually or collectively, help measure software productivity.
The key point in identifying the right metrics to be tracked depends on whether the particular data/metric is:
- Consistently obtained from the project lifecycle.
- Auditable by an external source,
- Benchmarkable for future references,
- Possible to be recreated, if necessary.
Measurable Software Metrics
Software development productivity metrics can either indicate the quality of the process of software development lifecycle or product quality post-deployment.
Some of the elements indicating software productivity are:
- Pull Request Throughput: A developer raises a PR when he has completed coding a feature. After review, it is merged with the main source file. To avoid a project bottleneck, the ration of PRs opened to PRs merged should ideally be between 90-95%
- Stuck Pull Requests: A PR that has a long wait time before it is picked or takes a long time to review with countless back and forth interactions is an area of concern that requires attention.
- PRs without Review Aid: PRs merged without review aid in identifying loopholes internally before it reaches the project stakeholders.
- Bug Rates: The management identifies branches with high bug rates and subjects them to an additional review.
- Days Remaining to Work Pending Ratio: The ratio between the pending target and the project deadline can help estimate the ongoing tasks’ achievability.
- WIP (Work in Progress) Load: It is an indication of the load handled by a programmer that helps take steps to balance out the stress across the team, thus avoiding employee burnout.
- Active Days: If an employee has more active days working every weekend, then the chance of burnout increases even if the WIP is not a matter of concern.
- Bug WIP Load: The monotony of working as a bug fixer drone affects the enthusiasm level of a programmer who can start feeling isolated from the team. Monitoring the bug board to keep a check on the bug WIP load is recommended.
- Focus Factor: Context switching associated with the rapidly shifting instructions in a two-week sprint when a developer works in several different types of stories can affect the focus, shifting it away from meeting client requirements and providing the ideal UX.
- Activity Stream Lag: When there is a lag in progress for a specific activity, it can be a sign of a problem due to a programmer’s personal life/ health condition. Lack of training or support required to tackle the marketplace changes like a tool update can also result in activity lag.
- Review of Responsiveness: A drop in the PR pick-up time and review depth due to remote working scenarios or holiday time can affect the project progress level on the whole.
- Sprint Burndown: In a two-week sprint/iteration, an early finish or delay can indicate improper resource allotment or an execution hurdle, respectively. When that happens, it affects the team’s collective goal of consistently meeting the deadlines with quality delivery.
- Mean Time Between Failures (MTBF) and Mean Time to Recover (MTTR): In software post-deployment maintenance, the average time between two successive failures and the time taken to run a repair after a failure are operational metrics that indicate software productivity.
- Code Coverage Automation: The percentage of code coverage by automated tests and defects in production are a few metrics that indicate the testing phase’s efficiency.
Performance Management Using Software Metrics
A clearly defined software development lifecycle with a structured scope for the development team, clear-cut definition of deadlines, and budget constraints avoids conflicting project requirements and predicts the occurrence of bottlenecks.
A few data-driven decisions that can improve software productivity are:
- Identifying and integrating the right metrics that are an indicator of the desired outcome is of utmost importance.
- Setting shorter measurement periods for each sprint to identify the cycles that need more training or automation.
- Prioritizing team statistics over individual performance, tracking data trends over raw numbers to get practical insights.
- Implementing automation tools to accelerate and streamline the testing cycle based on the relevant metrics.
- For success in the long run, eliminate the need for redundant metrics that do not achieve tangible results.
A healthy software productivity approach driven by the right kind of metrics will have a high deployment frequency, deliver good ROI, reduce overshooting of budgets and deadlines, and manage workload efficiently by continually identifying development areas. When continuously integrated with the day-to-day routine of a team, data-driven decisions will help build a good work culture with increased predictability and quality delivery of targets.
About The Lucid Platform
Syren’s Lucid Platform helps software development teams through detailed dashboards, metrics and KPI’s which help improve software release cycles, reduce time to market, and improve development processes.
Contact us today to see if you qualify for the Innovator Package which provides a free implementation and 6 months of service free for your organization.