Productivity: An in-depth look that every business needs

What is productivity in software development, and how can it be measured? These are some of  the most frequently asked questions by technical managers. Understanding productivity involves several key insights. For instance, our co-founder, Mashooq Badar, recently discussed the use of SPACE metrics, a new framework developed by several DORA researchers*, for understanding developer productivity. 

 

In addition, during Codurance Fireside Chat #63, Adam Tornhill, founder of CodeScene, and Sandro Mancuso, co-founder of Codurance, explored the concept of productivity, its impact on project quality, and methods for measuring it within development teams.

 

To summarise, the productivity of a development team can be defined as the ratio between the value of the software produced and the investment required to produce it. Yes, software developer productivity is measurable, but many variables need to be considered, including Developer Experience, which plays a crucial role.

 

Here, we will guide you through identifying potential productivity issues within your development teams that might be impacting your results in various ways. We will explore alternatives to change these dynamics and enhance team productivity, along with solutions from industry experts to help you achieve these goals.


 

Do I have a productivity problem?

 

As the Oxford Dictionary states, productivity is defined as: “The rate at which a worker, a company, or a country produces goods, and the quantity produced, compared to the amount of time, work, and money needed to produce them.” Identifying potential areas where your team is losing productivity is the first step towards making improvements. In the context of software development, this can manifest as coding challenges, low engagement in projects, poor workload distribution, or dysfunctional team dynamics, as outlined by Developer Experience (DevEx) principles.

 

5 signs that my team's productivity can improve

 

  • Frequent overruns on timelines and budgets: Consistently missing deadlines or exceeding budgets may indicate that your team’s productivity needs improvement. This could be due to unrealistic planning, underestimating tasks, or inefficiencies in the development process.

  • High bug rates after releases: A significant number of bugs or issues reported after a release suggests problems with the development and testing processes. This might necessitate better quality assurance practices, more comprehensive testing, or a focus on Test-Driven Development (TDD) to enhance code quality

  • Low morale and engagement: Ineffective communication can lead to misunderstandings, repetitive work, and mistakes, contributing to team demotivation and disengagement. It's essential to address the root causes, such as unclear documentation, departmental silos, or challenges related to remote working, and implement practices that facilitate better collaboration.

  • Inefficient development practices: Using outdated tools, technologies, or methodologies can significantly slow down development. If the team is not effectively using version control, lacks continuous integration/continuous deployment (CI/CD) pipelines, or is bogged down by manual processes that could be automated, these are clear areas for improvement.

  • Misalignment between the product and the development team: When development teams are unaware of the product's needs, they may produce code and features without understanding the context and requirements. This can lead to a disconnect, where the team feels their work has no impact on the final product, reducing their sense of belonging within the company.

 

What are the biggest barriers to productivity?

 

Several barriers can hinder productivity in software development teams. Addressing these barriers is crucial for enhancing efficiency, ensuring timely project delivery, and maintaining high morale among team members.

 

One of the most significant barriers is the accumulation of technical debt, which includes quick fixes, outdated code, and lack of documentation. Technical debt can severely impact productivity, as the team spends more time on maintenance rather than developing new features.

 

Another common issue is the absence of team members with the necessary skills or knowledge, which can cause bottlenecks. Addressing this might involve training existing staff or hiring new talent to fill the gaps.

 

Other major barriers include the use of outdated tools, software, or infrastructure that do not meet the project's needs, and the lack of clear objectives and priorities. These issues can lead to inefficiencies and wasted effort.

 

How can I measure my team's productivity?

 

Measuring the productivity of a software development team involves assessing various quantitative and qualitative factors to gain a comprehensive view of the team's efficiency and effectiveness. As mentioned above, experienced researchers* have developed a new framework called SPACE to measure developer productivity.

Here are some additional approaches and metrics that can help you assess productivity:


Metrics that help you measure your teams productivity


  • Velocity: Tracking velocity over time helps in understanding the team's capacity and predicting future performance. Velocity is a metric used in Agile methodologies to measure the amount of work a team completes during a sprint. It’s calculated based on the number of user stories, tasks, or points completed, examining historical data rather than focusing solely on a single sprint.

  • Lead time and cycle time: Lead time measures the period from when a new task is created until its completion, while cycle time starts when work actually begins on the task. These metrics can help identify bottlenecks in the development process and provide opportunities for streamlining workflows.

  • Bug rate: The rate at which bugs or defects are reported after a release can indicate issues with the development process, such as inadequate testing or rushed releases, which affect overall productivity. It also highlights areas where skills may need to be developed, and where techniques such as TDD (Test-Driven Development) might be beneficial.

  • Code churn: Code churn refers to the percentage of a developer's own code that has undergone recent edits. High levels of churn can indicate indecision, lack of clarity, or the need for rework, all of which can impact productivity.

  • Satisfaction surveys: Conducting regular surveys among team members and stakeholders provides insights into perceptions of the development process and highlights areas for improvement. Satisfaction levels can indirectly reflect productivity, as more engaged and satisfied teams are typically more efficient.

 

Why is my team having productivity problems?

 

If your software development team is facing productivity issues, it is likely due to a combination of factors that can vary widely depending on the team’s specific context, project, and environment. However, certain common reasons frequently emerge as contributors to productivity challenges.

 

Reasons why your team may be having productivity issues

 

 

Unclear or frequently changing requirements are one of the most significant challenges in software development. They can lead to confusion, repeated tasks, and demotivation among team members. This is closely related to inadequate communication and collaboration. When team members cannot communicate effectively, misunderstandings, missed deadlines, and errors are likely to occur.

 

Technical debt and inefficient processes are also major contributors to productivity problems. As the code base becomes more complex, it becomes increasingly difficult for developers to implement new features or maintain existing ones. Combined with inefficient processes, such as manual testing procedures, technical debt can drastically slow down a team's progress and reduce overall productivity.

 

We have created this guide to help you recognise the issues that may be affecting your development team’s productivity, understand their causes, and provide tips on how to start addressing them.

 

How can DevEx improve my productivity?

 

Improving the developer experience (DevEx) can significantly enhance the productivity of software development teams. Developer experience encompasses all aspects of a developer’s interactions with their tools, processes, and environment, aiming to make software development faster, more efficient, and more enjoyable.

 

For instance, providing developers with up-to-date tools and technologies that are well-suited to the task at hand can greatly improve their efficiency. This approach reduces time spent on mundane tasks and allows developers to focus more on creative problem-solving. Similarly, encouraging continuous learning and offering opportunities for developers to acquire new skills and knowledge can lead to more innovative solutions and productivity gains.

 

Creating a positive and supportive work environment is also crucial. Recognising achievements, providing constructive feedback, addressing burnout, and paying attention to work-life balance can not only boost productivity but also enhance job satisfaction and help retain talent. Investing in a positive DevEx is an investment in the well-being of your development team and the overall success of your software projects.


 

How to improve my team's productivity?

 

We understand that there is no magic bullet or overnight solution. However, there are numerous ways to increase the productivity of your development team, and not all of them may align with your business or goals.

 

As a technical leader implementing change, the initial phase is crucial for laying the foundation for a more productive and efficient development team.

 

Here, we explore several approaches that can help you meet your productivity needs.

 

What are the common solutions that people try?

 

Training

 

Investing in targeted training programmes for software development teams is a strategic decision aimed at enhancing skills, which ultimately improves productivity. With focused training, developers can learn best practices and more efficient ways to use tools and languages, directly contributing to higher code quality and reduced development time.

 

One challenge of training is that enhancing skills and maintaining productivity can often conflict. Improving skills usually requires a temporary reduction in output. Companies prioritising quick results may overlook this issue, potentially frustrating developers and achieving only short-term gains.

 

For organisations aiming for deep cultural change, scaling up, or embarking on software modernisation projects, specific training may not be sufficient. Such training might not address all aspects necessary for the company’s growth and can lack context, as it provides tools to solve problems but cannot cover every scenario.

 

 

Continuous Improvement Programs (CIP)

 

Codurance helps you to implement a continuous improvement program in your software team

 

In software development, Continuous Improvement Programs (CIPs) involve iterative processes aimed at enhancing efficiency, quality and performance over time. These programmes encourage regular evaluation of practices, processes, and outcomes to identify opportunities for improvement.

 

CIPs offer several substantial benefits, including:

  • Increasing Efficiency: By reducing waste and streamlining processes.
  • Improving Software Quality and Usability: Through ongoing refinement and feedback.
  • Enhancing Competitive Advantage: By fostering innovation and staying ahead of industry trends.
  • Boosting Employee Satisfaction: By providing team members with a sense of ownership and contribution to project success.

 

However, introducing continuous improvement can pose challenges. Implementing a CIP may be resource-intensive and financially demanding, particularly for small teams or projects with tight budgets. Smaller teams might benefit from streamlined training and the development of clear career paths for their members.

 

 

Centre of Excellence (CoE)

 

Codurance helps you implement a centre of excellence to improve the productivity of your development teams

 

The primary goal of a Centre of Excellence (CoE) is to improve an organisation’s performance and effectiveness. A CoE promotes collaboration and facilitates the exchange of ideas to distribute collective knowledge.

 

It aims to:

  • Enhance Team Competencies: By developing frameworks that ensure adherence to best practices.
  • Increase Quality of Deliveries: By fostering a culture of continuous learning and improvement.
  • Encourage Business Innovation: By keeping teams open to new learnings and experiences.

 

One of the main challenges in implementing a CoE is resistance to change. For a CoE to succeed, its purpose must be clear and embraced by all stakeholders. Additionally, establishing and maintaining a CoE can require significant resources, such as time, money, and skilled staff, which can be challenging without a strategic partner to guide the initiative.

 

 

Technical Coaching 

 

Codurance technical coaching initiative for your development team

 

Technical coaching focuses on empowering employees, enhancing their work methods, and improving their performance. The emphasis is on optimising processes and practices and increasing the quality of deliverables.

 

Investing in your people and fostering a learning culture makes them feel valued and more motivated. By expanding their knowledge, they produce better results and products, which in turn leads to higher employee retention.

 

One of the biggest challenges in implementing technical coaching is the misconception that it consists of isolated activities or a few training sessions, rather than representing a cultural shift. This misconception can lead to the belief that if quick results are not visible, technical coaching is ineffective. However, delivery and learning are often conflicting objectives; improving skills and competencies may initially slow down delivery, making tangible results take time.

 

In this playlist of 9 chapters, José Enrique Rodríguez Huerta, MD and Technical Coach at Codurance Spain, provides an overview of the entire Technical Coaching process: This includes concepts, methodologies, tools, and guidelines to help you increase your chances of successfully coaching a technical team.

 

In-house or outsourced?

 

When aiming to improve the productivity of a software development team, organisations often face the decision between developing in-house solutions or outsourcing. This decision should be based on a thorough analysis of the organisation’s specific needs, capabilities, and strategic goals, balancing the trade-offs between control, cost, expertise, and flexibility.

 

Depending on the complexity of the project, the in-house team may lack the necessary skills or experience, which could limit the quality of the solution or extend development times. Outsourcing, on the other hand, provides access to a broad range of talent and the latest technologies. Specialist vendors have experience with complex projects and can offer expertise that may not be available in-house.

 

Outsourcing offers flexibility and scalability, allowing organisations to adjust resources based on project requirements. It can also be cost-effective for those on a tight budget, as it eliminates the need for long-term investment in recruitment and provides necessary training for employees.

 

Can tooling help improve my team's productivity?

 

Yes, tooling can enhance the productivity of a software development team by automating routine tasks, improving collaboration, and streamlining the development process. 

 

The rise of various Artificial Intelligence (AI) tools has also positively impacted software development. While Generative AI (GenAI) is often highlighted for its assistance in code writing, bug detection, and testing, these tools can also boost team satisfaction and collaboration by streamlining workflows and increasing performance.

 

However, it is essential to acknowledge some limitations. While GenAI can improve productivity, it remains a tool and cannot replace developers. Therefore, its use should be adapted to the specific context of each project, with proper control over its application.


In our eBook on Generative Artificial Intelligence (Gen AI) in software development we explore some of today's most widely used tools, such as ChatGPT and GitHub Copilot, their pros and cons, and how to apply them effectively within your teams.

 

Here are 4 reasons why tools can enhance your team's productivity:

 

  1. Automation of Repetitive Tasks: Automation tools can significantly reduce the time required for testing and deployment, enhancing overall efficiency and allowing developers to focus on more complex and creative aspects of software development.

  2. Enhanced Collaboration and Communication: Tools such as version control systems (e.g., Git), project management platforms (e.g., Jira), and communication tools (e.g., Slack) facilitate better collaboration among team members, particularly for remote teams.

  3. Improved Code Quality and Maintenance: Tools like integrated development environments (IDEs), code review platforms, and static code analysers help enhance code quality by detecting errors, enforcing coding standards, and suggesting improvements.

  4. Continuous Integration and Continuous Delivery (CI/CD): CI/CD is more than just a process; it represents a cultural shift. A CI/CD pipeline automates the small steps needed to put new features into production, from running tests to deploying new features seamlessly using deployment strategies like canary deployment or blue-green deployment.

Incorporating the right tools into your software development process can lead to significant improvements in productivity. However, it is crucial to carefully select tools that align with your team’s needs and workflows to maximise their benefits. Additionally, providing proper training and support for these tools is essential to ensure that the team can effectively utilise them to enhance productivity.

 

What best practices can I start applying now?

 

Extreme Programming (XP) practices can influence a development team’s productivity by promoting technical excellence, improving communication, and fostering a collaborative working environment.

 

XP is based on five core values: communication, simplicity, feedback, respect, and courage. These values guide the way of working and the mindset of motivated team members who strive towards common goals.

 

Here are some key practices that can help boost the productivity of development teams:

  • Iterative Development: Short, iterative cycles allow for quick adjustments based on feedback, reducing the likelihood of prolonged work on misaligned features.

  • Test-Driven Development (TDD): Ensures reliability and reduces time spent debugging, allowing more time for feature development.

  • Pair Programming: Increases code quality and facilitates knowledge sharing, reducing long-term maintenance costs and boosting team efficiency.

  • Continuous Integration: Minimises integration issues by regularly merging code changes, ensuring a stable and reliable codebase.

  • Refactoring: Regularly improving code quality without altering functionality keeps the codebase clean and manageable, making future changes easier and faster.

  • Simple Design: Focusing on simplicity and avoiding unnecessary complexity can lead to faster development times and easier maintenance.

 

What is best for my case?

 

Choosing the right productivity solution for your software development team involves careful consideration of several key aspects to ensure that the tool or system you select effectively meets your team’s needs and enhances its operational efficiency. Here are some critical factors to consider when making your decision:

 

Elements to consider to increase the productivity of your software team

 

  1. Team size and composition: Assess whether the solution can scale according to your team’s size and if it supports the diversity of roles within your team (e.g., developers, testers, project managers).
  2. Specific needs and pain points: Identify the specific needs and challenges your team faces and determine whether the solution you choose will fully address them. Consider what the ideal outcome would look like.
  3. Integration capabilities: The solution should integrate seamlessly with your existing workflows to avoid disruption and enhance overall efficiency.
  4. Customisation and flexibility: The solution should be adaptable to fit your team’s specific project types and preferences. Flexibility to adapt and scale over time is also important.
  5. Cost-effectiveness: Evaluate the cost of the solution in relation to its features and the potential return on investment (ROI) it offers.

 

Building a case for the board

 

When preparing a business case to implement a solution that will enhance productivity, there are several aspects to consider. However, focusing on three key factors can often ensure success: understanding your audience, knowing what they need to know, and outlining the return on investment (ROI).

 

Building a compelling business case is crucial for gaining support and maintaining focus. Even if you clearly identify a problem, stakeholders affected by the project need to understand how the solution will impact them.

 

A well-crafted business case will help you engage the stakeholders you aim to influence and provide a solid foundation for the entire project.

 

Not having a business case would be like going into battle without a plan.

 

José Enrique Rodríguez Huerta

MD and Technical Coach at Codurance Spain

 

We have created a Productivity Project Presentation Slide Template to assist you in laying the groundwork for your initiative. This template focuses on the problem, the plan, and the benefits, helping you advocate for your proposal and secure stakeholder support.


 

How do we get it done?

 

At Codurance, we have over 10 years of experience helping businesses enhance their productivity to achieve their goals. In 2023, we successfully completed 96% of our projects on time and within budget. This track record has enabled our clients to scale effectively and improve their team performance. Our extensive experience has taught us how to swiftly identify areas needing productivity improvement, train teams in best practices, and establish a culture of excellence that fosters sustainable growth.

 

Condurance completes software development projects on time and on budget

 

 

What to look for in a strategic partner to increase productivity?

 

Choosing a strategic partner is a critical decision that can significantly impact your organisation’s efficiency, growth, and capacity for innovation. It requires a thorough evaluation to ensure that the partner aligns with your organisation’s goals, values, and specific needs.

 

To help you make the right choice, we have created a checklist to assess the requirements your software development partner must meet to ensure a successful collaboration:

  1. Proven track record: Look for a partner with a strong history of successfully enhancing productivity in software development teams. They should have deep knowledge of your industry, including specific challenges, regulatory considerations, and competitive dynamics. Check for case studies or references that demonstrate their ability to address challenges similar to yours.

  2. Expertise in relevant technologies and practices: Ensure the partner has expertise in the latest technologies, tools, and practices relevant to your development team, such as DevOps practices, agile methodologies, cloud computing, testing practices, extreme programming, and automation tools. Their approach to improving productivity should align with your organisation’s culture and values.

  3. Strategic vision: To achieve sustainable change, your partner must have a strategic vision that aligns solutions with your long-term business goals. Look for a partner who prioritises innovation and continuous improvement to keep your team ahead of the technology curve and competitive in the market.

  4. Focus on tangible results: It is imperative to choose a partner who is focused on delivering measurable results. They should have clear success criteria and a robust quality assurance process to ensure that any solution or strategy implemented meets the highest standards and is scalable over time.

 

How Scentmate by dsm-firmenich introduced a CoE successfully

 

Scentmate by dsm-firmenich is the first fragrance curation platform that leverages artificial intelligence to automate scent recommendations and co-creation, providing high-quality solutions to entrepreneurs and SMEs.

 

Codurance drives scalability of Scentmate software

 

The Scentmate by dsm-firmenich team partnered with Codurance to optimise their software, scale their systems, and introduce best practices based on software craftsmanship. Together, we transformed their legacy MVP into a stable platform with 99.95% system availability. We also refined the accuracy of their curation engine and automated the fragrance ordering process.

 

The result was a significant reduction in fragrance sample turnaround time from 4 weeks to 48 hours, which drove sales and enhanced customer experience. Read the full Scentmate by dsm-firmenich case study here.


 

How introducing a CIP helped eClinicalWorks scale their systems

 

EClinicalWorks (eCW) is one of the largest cloud-based health and safety software providers in the US. Their core product, the Electronic Medical Records (EMR) system, manages patients’ complete clinical documentation history and interoperates with other healthcare systems. eCW recognised the need to modernise its systems and prepare the EMR platform for the next decade of rapid growth.

 

Codurance supports the creation of a successful Continous Improvement Program

 

The Codurance team developed a strategic Continuous Improvement Program (CIP) to help eCW’s senior leadership prioritise improvement projects based on business value. The CIP was managed efficiently using agile methodologies, software craftsmanship principles, and a DevOps mindset. It facilitated knowledge transfer through tasks, enabling a learn-and-apply approach and fostering a new working culture within the organisation.

 

This initiative led to the execution of 6 strategic improvement projects in core business areas (4 led by Codurance, 2 by eCW with Codurance’s support). It also introduced improved working methods across the organisation with a clear understanding of ROI and a reduction in accumulated technical debt. Read the full eCW case study here.

 

VeryChic's software modernisation success story

 

VeryChic, part of the Accor Group, a global leader in hospitality, offers carefully curated luxury experiences in world-class hotels and VIP services. We collaborated with VeryChic throughout their modernisation and cloud migration journey to address the technical challenges hindering their ability to scale and deliver a superior user experience.


Codurance helps VeryChic modernise its software and migrate to the cloud

 

 

We trained their IT teams in development best practices, such as Test-Driven Development (TDD) and Clean Code, allowing them to focus more on innovation rather than bug fixes.

The company transitioned from a manual platform with monthly releases to a CI/CD approach with multiple daily releases. This shift was supported by their new AWS cloud infrastructure, which enabled automated management of travel catalogues and reduced update time from 1 hour to 2 minutes. Read the full VeryChic case study here.

 

Lessons learned from 10 years of helping organisations increase productivity

  1. Software craftsmanship is and will remain our core methodology: Professionalism, pragmatism, and pride. By adhering to the best practices derived from this philosophy, we deliver on time and on budget while fostering a mindset of continuous pursuit of excellence. This approach raises the professional standard of software development.

  2. A culture of continuous improvement must be at the core of any development team: To increase productivity in a sustainable and scalable manner, it is essential that a culture of continuous improvement is embedded within the team.

     

  3. Keeping up to date with industry trends is crucial: Staying informed about new practices, tools, and systems ensures that our clients’ solutions are built on the latest innovations.

     

  4. Learning is an integral part of who we are: Our curiosity drives us to constantly improve our skills through continuous learning and the collective exchange of ideas.

     

  5. Adaptability is essential: Each client has unique needs, and part of our approach is to tailor our solutions to offer the best possible outcome for each specific case.

* SPACE is a framework proposed in a paper by Nicole Forsgren at GitHub, Margaret-Anne Storey at the University of Victoria plus Chandra Maddila, Thomas Zimmermann, Brian Houck and Jenna Butler at Microsoft Research. Read the full paper here.

 

 

Increase your team's productivity

 

Get in touch and we'll help you design a plan tailored to your needs.