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.
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.
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.
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.
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.
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.
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.
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.
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
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.
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 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.
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.
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.
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:
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.
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.
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
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.
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.
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.
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.
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.
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, 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.
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.
Get in touch and we'll help you design a plan tailored to your needs.