May 5, 2015 // By Mark Smith
When hiring an outside firm to develop your custom software when do you look for the knowledge transfer? A common mistake is to expect that knowledge transfer will happen towards the end of the project. Knowledge transfer should start before coding on a project begins. A knowledge transfer plan with supporting processes that is developed prior to the start of a project can improve the long term supportability of the software by reducing maintenance and support costs over the life of the software while enhancing the value of the software to the business.
A first step in knowledge transfer is well developed software requirements defined through the user stories that explain the expected results of the code. These user stories provide a roadmap to the application and serve as a valuable resource to understanding the code, assisting in the supporting and maintenance of the software. During sprint planning developers will ask for clarity on user stories. These clarifying points should be added to the user stories to memorialize the thought process that went into the code development. These user stories and the clarifying points are a critical step in knowledge transfer.
The next step in the knowledge transfer process is to ensure that the developed code is understandable. Before the first line of code is written developers should understand the expectations of the code they develop. Are there coding standards that the company uses? Do the developers understand the standards? The developers should also use best practices such as variable names that have some meaning, comments in the code explaining what the code does and adherence to other standard practices that will make the code more readable and in turn supportable. Code reviews during each sprint should be done to ensure that best practices are followed and that the code being produced is of consistent high quality. Looking at code years later to decipher what the developer was thinking is difficult enough with good code, and nearly impossible with poor code. Setting a high standard for the code early on will help not only in the long term support but will also help during the course of the project as new requirements are uncovered that result in existing code being modified. While these code reviews may add some time and cost to each sprint, they will pay off in the long term by helping to create a software solution that can be supported and that will provide longer term value to the company.
Quality testing of the code and the development of test cases that tie back to a user story closes the loop in the development process. By tying test cases back to a user story, the flow of the development from user story to development to testing can be followed. These test cases will allow the maintenance team to more easily retest the software as they add features and enhancements in the future.
The development manager plays a part in the knowledge transfer as well. By ensuring that the team is following best practices in their user stories, coding and testing the development manager provides oversight to help ensure that at the end of the project an audit trail that tells the story of how the application was developed. Weekly status reports that highlight accomplishments and identify risks with the project provide additional information to the support team that can help them pinpoint where problems occurred during the project and what actions were taken to reduce the risks.
Having a technical resource from the support and maintenance team embedded in the development project develops a subject matter expert on the software for the support team. The resource does not need to be developing code, but through participation in the daily scrums and scrum planning can hear the discussions and help ensure that the end product provides the maximum value to the company.
Knowledge transfer is too often an afterthought in custom applications development. By putting the right processes in place at the start of a project and monitoring them throughout the project the result is a high quality application that is supportable and provides a higher lifetime ROI.