4.9.2 Sourcing, competence, and unsuitable, continuous processes reveals PD
Introducing sourcing: The lack of resources in Norway made it challenging to scale. Therefore, to develop new features fast enough and not lose market opportunities, Company E decided to outsource, and the company made an agreement with an offshore outsourcing company in India. The Norwegian teams used Kanban, while the Indian teams followed Scrum. The outsourcing caused several types of debts, such as competence debt, synchronization debt, and unsuitable processes. For example, because of legal requirements in the final delivery, the onshore teams were required to do code reviews on all code from the outsourcer. Since they followed different processes, it was discussed if the code review practice should be continuous or timeboxed.
Sub-optimal processes: The company decided that an optimal process would be to make the code reviews timeboxed. Reasons included being able to schedule enough time for doing Qas and reducing the number of interruptions for the Norwegian developers. This process turned out to be sub-optimal. Every second week, because of weak domain competence at the offshore team, the Norwegian developers received large pieces of code. Since the offshore team worked for 2-3 weeks before the PRs were sent, the code sent for review was large and complex. Consequently, reviewing the large PRs was time-consuming, tedious, and caused frustration.
The PRs were not only large but also of low quality. The two sites did not follow the same standards and structure of coding. Also, much code was copied from other projects or the internet, which meant there were pieces of code not being used or irrelevant to the project. Unused code was described as adding unnecessary complexity. Another problem was that the offshore developers tended to overly complicate the code of relatively easy tasks. These problems created tension between the teams.
It became evident that the quality work took a considerable amount of time from the Norwegian developers, reducing the productivity of the onsite developers so much that the total productivity became lower than before adding the extra offshore developers. A developer explained: