In development projects, knowledge is always unevenly distributed within the team. Unawareness of this leads to particular risks in the project and endangers the development targets.
Our DETANGLE® analysis of software history makes the structure and distribution of knowledge and effort in the project team transparent. Active knowledge management in R&D projects leads to more efficient onboarding and offboarding, better software quality and more robust processes in software engineering.
- The quality of the software improves
- The development process becomes more robust and sustainable
- Optimizing knowledge distribution is a leadership task
- Sharing knowledge becomes part of the development culture
- Dependence on individual developers is reduced
- New team members become productive faster
- Fluctuation among developers is reduced
Loss of knowledge is expensive but also preventable
Successful software is technologically and functionally developed over many years. For R&D management this is a critical challenge, because many of the developers who worked on it are no longer with the company. Knowing what the developer intended at the time he wrote his lines of code is crucial to ensure that the code does deteriorate to a spaghetti code, full workarounds leading to increasing technical debt.
A good knowledge distribution in the project team is the basis that subsequent generations of developers can further develop the software efficiently as also the intent of the code lines is shared and well documented within the product R&D team.
If R&D management is not able to quickly answer the following questions, there could be a need for action in the area of knowledge distribution, transfer and documentation:
- What part of the code comes from developers who are no longer available?
- Where are the areas of code with poor documentation?
- Which key developers are coaching and delegating too little?
- Which areas with increasing error rates could have as route cause too many developers assigned to the task?
- What knowledge needs to be rebuilt when a developer quits?
These questions all have the robustness of the software development process in mind. "What if" scenarios help to recognize dependencies on individual persons and to identify code areas which are not easy to understand without knowing the intent. Regular analysis of the code with a focus on knowledge distribution reduces the risks that could arise in the code and knowledge loss due to employee turnover.
As software developers, we at Cape of Good Code know this problem all too well. When we designed the DETANGLE Analysis Suite, we intended from the beginning to answer such questions with a basic DETANGLE Code Scan. With this input, that is obtained directly from the history of the code, the right organizational or technological countermeasures can be timely implemented.
Would you like to learn more about knowledge distribution in your company?
We would be happy to support you in making the distribution of knowledge transparent. Please contact me!
Good knowledge sharing makes R&D teams more robust
Agile software development is teamwork and teamwork relies on coordination, communication and sharing of knowledge. Not all members in the project team have the same level of experience and knowledge. If team leadership (and/or HR) does not balance these knowledge asymmetries, it will impact the work results that then will rarely meet expectations. Could this have been avoided? Yes!
With the DETANGLE Analysis Suite, the essential questions about knowledge distribution and knowledge transfer can be derived and answered directly from the code. In doing so, you will get to know
- whether new employees are effectively trained and integrated by their colleagues
- whether experienced developers pass on their knowledge and delegate parts of their work
- whether important code areas are worked on by individual developers alone
- whether the work distribution favors burn-out or bore-out challenges
Relying on individual top developers might be efficient in the short term, but it has a high risk if they need a longer absence or quit. Another impact against the robustness of the development process is when talented developers leave the company because they have not been sufficiently trained and integrated. That is an expensive misinvestment and could have been avoided. A good distribution of knowledge to more than just a few team members at a time, and the transfer of knowledge even beyond this circle, provides peace of mind, efficiency and security for project and R&D management. It also ensures more self-confidence and satisfaction for the younger developers, who may feel lost at the beginning and bored later on.
From our projects we know that the performance of software engineering becomes more "robust" and reliable in the long term through a meaningful knowledge distribution between all team members.
Can a better distribution of knowledge reduce development costs?
"There is no free lunch". Improving knowledge distribution in project teams requires a certain degree of redundancy in the staffing of development tasks. At first glance, this causes additional expenses. In our experience, these expenses are far outweighed by less rework, lower quality costs and more potential for commercial success.
An analysis of the software with DETANGLE provides R&D management with the necessary facts to concentrate the optimization of knowledge distribution on the problem hotspots in the team and in the software. Without these detailed analysis results, the attempt to improve knowledge distribution would be a blind flight that would either be without impact for development efficiency, or more likely even negative.
Especially in fast-growing software companies, paying attention to knowledge distribution can significantly improve the work efficiency of the many new hires. Their rapid familiarization and integration in the teams and the tasks is essential to have them actively and competently contribute to value creation in the projects. Regular analysis of the knowledge distribution in your project teams can make a significant contribution to the efficiency, employee retention and it creates an overall better development culture.
Contact us. The effort is manageable and the results are available in just a few days.
Why are gaps in documentation counted as technical debt?
A lack of documentation of system-relevant code areas basically leads to reduced efficiency in code development, because it takes more time to understand the code. It can become dramatic in case of illness or termination of the responsible developer. This sustained loss of knowledge further amplifies the quality risks and inefficiencies in code maintenance and innovation. Documentation gaps and insufficient quality of it are therefore counted as technical debt.
Lack of documentation leads to errors and additional maintenance efforts especially in the following constellations:
- Inherently complex code areas
- code areas that are difficult to understand due to unstructured programming
- coupled code areas due to lack of modularization
- code areas that were edited by many developers
Why does code traceability lead to better software quality?
Every change in the code should be for a reason, and this reason should be known and documented. For each new software version, all features and bug fixes must not only be known, they must also be verifiably found in the code and be understandable. With methodical best practices and appropriate tools, this is part of the important version management. Version management in turn creates the relevant project knowledge that helps to predetermine the quality of future software versions.
The DETANGLE Analysis Suite pulls analysis data from these tools (e.g. code repositories, issue trackers, DevOps platforms) and checks for unique traceability in the code to features and bug fixes. Even features that are "lost" in the code can be identified. This significantly increases the traceability of the code and avoids unintended problems due to side effects from maintenance measures and the addition of new features.
Which counter measures have proven successful?
The following examples of measures can be derived from the detailed analysis of knowledge distribution. In addition to the data and information from DETANGLE, interviews by our experienced consultants also provide complementary information about the influential development- and corporate culture. The common understanding should be that employee satisfaction and motivation is crucial for high quality development results.
To achieve a well-connected and collaborative project team, some recommendations are listed below. From the perspective of knowledge distribution and knowledge transfer, the onboarding of new employees is very important for their future success. Keep in mind that a structured off-boarding process for leaving employees is as well important for the knowledge distribution and success of the remaining team. Our consultants can suggest proven procedures that leaving employees do not put projects at risk
- For high potential developers, the application of state-of-the art methods is an important factor to select an employer. This is another reason why the software engineering processes must be frequently reviewed and further developed.
- The onboarding of new employees must follow a structured plan.
- Experienced developers should act as coaches for new or less experienced colleagues.
- With DETANGLE, we identify who contributes what to the code and differentiate between soloists, supporting roles or structured and unstructured teams. Soloists need to coach and delegate more. Supporters often have much more potential than they can show and should be given more challenging tasks. Unstructured teams are very problematic and need to check whether tasks can be clearly assigned to someone.
- By monitoring burn-out or bore-out indicators, sick leave and turnover can be positively influenced.
- A replacement should be identified or developed for each project-critical staff member so that no problematic knowledge gap occurs caused by their offboarding.
- The offboarding process should identify what knowledge (see also 4) needs to be replaced in the event of an employee's absence and what potential risks might first arise in their field of work.