Productivity: An in-depth look that every business needs

What is productivity in software development and how to measure it are probably some of the most frequently asked questions by technical managers. There are several insights that can help you understand what productivity means. For example, recently, our co-founder Mashooq Badar talked about using SPACE metrics, a new framework created by several DORA researchers*, for understanding developer productivity. 

 

Also in Codurance Fireside Chat #63, Adam Tornhil, founder of CodeScene and Sandro Mancuso, co-founder of Codurance, delve into the concept of productivity, how it influences the quality of projects and how to calculate it in your development team. 

 

So the short answer to both questions is: the productivity of a development team can be define as the rate between the value of the software produced and the investment made to produce it. And yes, software developer productivity can be measured. Of course, there are many variables to take into account in both answers, and Developer Experience is certainly an important part.

 

Here we will take you on a journey to identify if you have a productivity problem in your development teams that may be affecting, in different ways, your results. What alternatives exist to turn the dynamics around and increase the productivity of your teams. And solutions from industry experts that can help you get there.


 

Do I have a productivity problem?

 

As the Oxford dictionary states, the meaning of productivity is: “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 is needed to produce them”. So identifying the potential areas where your team is losing productivity is the first step to making a change. And in the world of software development this can translate into coding problems, low interest in development projects, poor workload distribution or team dynamics, as defined by DevExp principles.

 

 

5 signs that my team's productivity can improve

 

  1. Frequent overruns on timelines and budgets: Consistently missing deadlines or exceeding budgets can be a sign that the team’s productivity needs improvement. This could be due to unrealistic planning, underestimation of tasks, or inefficiencies in the development process.

  2. High bug rates after releases: A high number of bugs or issues reported after a new release can indicate problems with the development and testing processes. This might suggest a need for better quality assurance practices, more comprehensive testing, or a focus on test-driven development (TDD) to enhance code quality.

  3. Low morale and engagement: Low morale and commitment: Ineffective communication can lead to misunderstandings, repetitive work and mistakes that contribute to demotivation and disengagement of the team. It is necessary to address the root of the problem, whether it is a lack of clear documentation, isolated departments or remote working challenges, and look for practices that facilitate collaboration.

  4. Inefficient development practices: Relying on outdated tools, technologies, or methodologies can slow down development significantly. If the team is not using version control effectively, 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. 

  5. Misalignment between the product and the development team: If development teams are not aware of the needs of the product, they simply produce code and features without knowing its context and needs. The result is a team that does not feel part of the company as a whole and with the feeling that their work has no impact on the final product. 

 

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 delivery of projects, 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. This is crucial for productivity, as it can slow down development because the team spends more time on maintenance and less on new features.

 

Also the absence of team members with the necessary skills or knowledge can cause bottlenecks. Training or hiring new talent may be necessary to address this obstacle.

 

Other major barriers to productivity are the use of outdated tools, software or infrastructure that do not fit the needs of the project, and the lack of clear objectives and priorities, which 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 get a comprehensive view of the team’s efficiency and effectiveness. As mentioned above, experienced researchers* have been working on a new framework called SPACE to measure developer productivity.

 

Here are some other approaches and metrics that can help you measure productivity.

 

Metrics that help you measure your teams productivity


  • Velocity: Tracking velocity over time can help you understand the team's capacity and predict 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 by checking the historical behaviour and not only focusing on one sprint. 

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

  • Bug rate: The rate at which bugs or defects are reported after a release. A higher bug rate might suggest issues with the development process, such as inadequate testing or rushed releases, affecting overall productivity. It can also be useful to detect certain weaknesses that need to be covered, in terms of upskilling and implementation of techniques such as TDD.

  • Code churn: Code churn refers to the percentage of a developer's own code representing 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 can provide insights into how the development process is perceived and areas where improvements are needed. Satisfaction levels can indirectly reflect productivity, as happier teams tend to be more engaged and efficient.

 

Why is my team having productivity problems?

 

If your software development team is facing productivity issues, it’s likely due to a combination of factors that can vary widely depending on the team’s specific context, project, and environment. However, these common reasons often 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 important challenges in software development which can lead to confusion, repetition of tasks and demotivation among team members. This is related to the second point, which is inadequate communication and collaboration. When your team members cannot communicate effectively, misunderstandings, missed deadlines and errors can occur.

 

Last but not least, your team may have productivity problems due to technical debt and inefficient processes. As the code base becomes more complex, developers find it increasingly difficult to implement new features or even maintain existing ones. Coupled with inefficient processes, such as manual testing procedures, technical debt can drastically slow down a team's progress and reduce their overall productivity.

 

 

How can DevEx improve my productivity?

 

Improving the developer experience (DX) can increase the productivity of software development teams. The developer experience encompasses all aspects of a developer’s interactions with their tools, processes and environment, with the goal of making software development faster, more efficient and more enjoyable.

 

For example, providing developers with up-to-date tools and technologies that are well suited to the task at hand can significantly improve their efficiency, reduce time spent on mundane tasks and increase focus on creative problem solving. Likewise, encouraging continuous learning and providing opportunities for developers to acquire new skills and knowledge can lead to more innovative solutions and productivity improvements.

 

By focusing on creating a positive and supportive work environment that recognises achievement, provides constructive feedback, addresses burnout and pays attention to work-life balance, organisations can not only increase productivity, but also improve job satisfaction and retain talent. Positive DX is an investment in the well-being of the development team and the overall success of software projects.


 

How to improve my team's productivity?

 

We know there is no magic bullet or overnight solution. But the truth is that there are many different ways to increase the productivity of your development team, and not all of them may fit your business or your goals. That’s why we look at several approaches that can help you meet your productivity needs.

 

 

What are the common solutions that people try?

 

Trainings

 

Investing in specific training programmes for software development teams is a strategic decision to enhance skills that ultimately help improve productivity. With targeted training, developers can learn best practices and more efficient ways to use tools and languages, which directly contributes to higher code quality and reduced development time. 

 

One of the main challenges of training is that improving skills and delivery are often conflicting goals: to improve skills you have to reduce output. Companies that focus on quick results often overlook this, which can frustrate developers and lead to short-term wins.

 

For an organisation looking for a deep cultural change, scaling up or starting a software modernisation project, specific trainings may not be the solution, as they do not cover all aspects necessary for the company’s growth. They can also lack context since they provide tools to solve problems but can’t 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 improving efficiency, quality and performance over time. These programs encourage regular evaluation of practices, processes, and outcomes to identify opportunities for improvement.

 

CIPs can offer substantial benefits, such as increasing efficiency by reducing waste, improving software quality and usability, increasing competitive advantage by fostering innovation, and overall employee satisfaction by giving employees a sense of ownership and contribution to the success of the project. 


The introduction of continuous improvement poses some challenges as well. For example, implementing a continuous improvement programme can be resource-intensive and sometimes financially demanding, which can be difficult, especially for small teams or projects with tight budgets. Smaller teams might benefit from streamlining trainings and by creating career paths for their team members.

 

 

Centre of Excellence (CoE)

 

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

 

The main goal of a Center of Excellence is to improve an organization’s performance and effectiveness. A Center of Excellence promotes collaboration and facilitates the exchange of ideas to distribute collective knowledge.

 

It also aims to enhance team competencies and increase the quality of deliveries by developing frameworks that ensure all members adhere to best practices. This way, business innovation is encouraged, and teams are urged to remain open to new learnings and experiences.

 

One of the main challenges in implementing a Centre of Excellence is resistance to change. For a CoE to be successful, the purpose of the solution must be clear and shared by all stakeholders. In addition, establishing and maintaining a CoE can require 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 typically focuses on empowering employees, enhancing their work methods, and improving their performance. Emphasis is placed on optimising processes and practices or increasing the quality of deliverables.

 

When you invest in your people and create a learning culture, they feel valued and more motivated. And by expanding their knowledge, they create better results and products. This, in turn, leads to higher employee retention.

 

One of the biggest challenges in implementing technical coaching is the misconception that it is based on an isolated activity or a few training sessions, and not as a cultural change. This creates the feeling that if there are no quick results, TC does not work. But delivery and learning are conflicting objectives; to upskill and improve competencies, delivery may slow down initially, hence achieving tangible results takes time.

 

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

 

 

In-house or outsourced?

 

When aiming to improve the productivity of a software development team, organizations often face the decision between developing in-house solutions and outsourcing. The decision should be based on a thorough analysis of the organization’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 not have all the necessary skills or experience, which may limit the quality of the solution or lengthen development times. Outsourcing, on the other hand, provides access to a wide range of talent and the latest technologies. Specialized vendors have experience in executing complex projects and can bring expertise that may not be available in-house.

Outsourcing offers great flexibility and scalability, allowing organisations to ramp up or down based on project requirements. And if you are on a tight budget, it can be cost-effective, as it eliminates the need for long-term investment in recruitment and provides the training that you require for employees.

 

 

Can tooling help improve my team's productivity?

 

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

 

Similarly, the rise of various Artificial Intelligence (AI) tools can have a positive impact on software development. While it is often highlighted how GenAI can assist with code writing, bug detection and testing, its tools can also help improve the satisfaction and collaboration of development teams, allowing them to streamline workflows and increase performance.

In addition to its advantages, it is important to point out some limitations. GenAI can help improve productivity, but it is still a tool and as such cannot replace developers. Therefore, it is important to adapt its use to the specific context of each project and to maintain proper control over its application. 

In our  eBook on Generative Artificial Intelligence (or GEN AI) in software development we address some of today's most widely used tools, such as CharGPT or GitHub Copilot, their pros and cons, and how to apply them correctly in your teams.

 

Here are 4 reasons why tools can help you improve the productivity of your teams:

 

Automation of repetitive tasks: Automation tools can significantly reduce the time required for testing and deployment, improving the overall efficiency of the development cycle and giving time to developers to focus on more complex and creative aspects of software development. 


Enhanced collaboration and communication: Collaboration tools (e.g., version control systems like Git, project management tools like Jira, and communication platforms like Slack) facilitate better collaboration among team members. This can be especially beneficial for teams working remotely.


Improved code quality and maintenance: Tools such as integrated development environments (IDEs), code review platforms, and static code analyzers help improve code quality by detecting errors, enforcing coding standards, and suggesting improvements.

 

Continuous integration and continuous delivery: CI/CD is not just a way of doing, but a cultural change. Team productivity will benefit from having a CI/CD pipeline because all the small steps to put new features into production will be automated. From automatically running tests to deploying new features seamlessly with different deployment systems such as canary deployment or blue green.


Incorporating the right tools into your software development process can lead to substantial improvements in productivity. However, it’s important to carefully select tools that align with your team’s needs and workflows to maximize their benefits. Additionally, providing proper training and support for these tools is crucial to ensure that the team can effectively utilize them to enhance their 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 5 values to guide teamwork which are communication, simplicity, feedback, respect and courage. These values guide the way of working and the mindset of motivated team players who give their best in the pursuit of common goals. 

 

Here are some key practices that 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: Minimizes 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 whether the solution you choose will fully address them. Imagine what the best outcome would be.

 

3. Integration capabilities: The ability of the solution to integrate seamlessly with your team is essential to avoid disrupting existing workflows and to enhance overall efficiency.

 

4. Customization and flexibility: The solution should be customizable 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 ROI it offers. 

 

 

Building a case for the board

 

There are many aspects to consider when preparing a business case to implement a solution that will help you improve your productivity. Still, most of the time, you can be quite safe if you focus on these three factors: the audience, what they need to know, and what they pay off is.

 

Building a business case is essential to gaining support and focus. Even if you are clear that there is a problem to solve, many of the stakeholders the project will affect need to know how the solution will impact them.

 

A good business case will enable you to engage the people you are trying to influence, as well as 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


 

How do we get it done?

 

At Codurance we have more than 10 years of experience helping businesses increase their productivity to achieve their goals. In 2023 we managed to complete 96% of our projects on time and on budget. This enabled our clients to scale and enhance the overall performance of their teams. Our years of experience have taught us how to quickly identify areas where productivity improvement is needed, train teams in best practices and lay the foundation for a culture of excellence that helps companies grow in a sustainable way. 

 

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 organization’s efficiency, growth and innovation capacity. It involves a careful evaluation to ensure they align with your organization’s goals, values, and specific needs. 

 

Look for a partner with a strong track record of successfully enhancing productivity in software development teams. They should have in-depth knowledge of your industry, including understanding of specific challenges, regulatory considerations, and competitive dynamics. This ensures they can offer tailored advice that is relevant and actionable. Look for case studies or references that demonstrate their ability to tackle challenges similar to yours. 


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. The partner’s approach to improving productivity should align with your organisation's culture and values. 

 

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

 

Last but not least, it is imperative to choose a partner focused on delivering tangible results. They must have measurable 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 uses the power of artificial intelligence to automate the process of scent recommendation and co-creation, thus offering high quality solutions to entrepreneurs and SMEs.

 

Codurance drives scalability of Scentmate software


The Scentmate by dsm-firmenich team trusted 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, refined the accuracy of their curation engine and automated the fragrance ordering process. 

 

The result was an improvement in fragrance sample turnaround time from 4 weeks to 48 hours, which helped drive sales and increase customer experience. Read Scentmate by dsm-firmenich full 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 in the US. ECW’s core product, the Electronic Medical Records (EMR) manages patients’ full 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 10 years of rapid growth.

 

Codurance supports the creation of a successful Continous Improvement Program

 

The Codurance team created a strategic continuous improvement program (CIP) that would help eCW senior leadership strategically prioritise improvement projects according to the business value. The CIP would be efficiently managed following agile methodologies, software craftsmanship principles and DevOps mindset. It would create a knowledge transfer through tasks, allowing a learn and apply approach and creating that new working culture within the organisation.

 

This led to the production of 6 strategic improvement projects in core business areas (4 led by Codurance, 2 by eCW with support from Codurance). As well as creating better ways of working being replicated across the organisation with a clear understanding of the ROI and reduction of accumulated technical debt. Read ECW’s full case study here.

 

 

VeryChic's software modernization success story

 

VeryChic, part of Accor Group, a global leader in hospitality, offers carefully selected luxury experiences in world-class hotels and VIP services. We engaged with VeryChic throughout their modernisation and cloud migration journey to overcome the technical needs that were preventing them from scaling the business and delivering a better experience to the growing number of users. 


Codurance helps VeryChic modernise its software and migrate to the cloud

 
We trained their IT teams in development best practices, such as TDD and Clean Code, and they now have more time to focus on innovation rather than fixing system bugs.

The company has moved from a manual platform with monthly releases to a CI/CD approach with multiple releases per day. This is thanks to its new AWS cloud infrastructure that enables automated management of its travel catalogues, reducing update time from 1 hour to 2 minutes. Read VeryChic full case study here.

 

 

Lessons Learned of 10 years of helping organization increase productivity

 

1. Software craftsmanship is and will remain our core methodology: Professionalism, pragmatism and pride. Thanks to the best practices derived from this philosophy, we are not only able to deliver on time and on budget, but we introduce a mindset of continuous pursuit of excellence that contributes to raising the professional standard of software development. 

2. A culture of continuous improvement must be at the core of any development team to truly increase its productivity in a sustainable and scalable way.

3. Keeping up to date with industry trends is a must. Whether it’s new practices, new tools or new systems. This is how we guarantee that our clients’ solutions are based on the latest innovations.

4. Learning is part of who we are. We are curious, and we seek ways to improve our skills through continuous learning and the collective exchange of ideas.

5. Adaptability is not questionable. Each client has different needs, and part of who we are is knowing how to offer the best of ourselves for each particular 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.