Use SLAs to Enforce Clean Code Structures when Outsourcing Software Development

Use SLAs to Enforce Clean Code Structures when Outsourcing Software Development

Organizations large and small have increasingly come to rely on third-party firms to help them develop, modify, and maintain the software required to run their businesses. The reasons for this are many and obvious:

1.) Scale

Outside firms often possess the capacity that enables them to scale up and scale down the number of developers allocated to a project very quickly. This means they can be more responsive to the demands of their customers. Scaling internal teams up is exceedingly difficult and time consuming, especially in today’s challenging hiring environment. Scaling them down is obviously something most companies would prefer to avoid, but this often results in trepidation about scaling up in the first place.

A recent Forbes Business Council review of pitfalls facing organizations that outsource software development activity to third parties cited lack of control over code quality as one of the more significant.

2.) Expertise

Especially for larger outsourcing firms, the level of expertise that can be brought to bear in areas such as microservices, database migration, security, and cloud-native development practices typically exceeds what can be assembled internally, especially for smaller companies.

3.) Cost Effectiveness

Generally, outsource software development firms enjoy greater economies of scale that can be translated into lower overall development costs for their clients.

The Challenges With Outsourcing: Code Quality

The challenge for organizations that either already outsource some or all of their software development, or are contemplating doing so, is ensuring that the software developed by these firms meets not only their own quality standards but industry benchmarks as well. Most organizations use service level agreements (SLAs) to enforce performance levels that they require from their suppliers. Where the outsourcing of software development is concerned, SLAs typically cover aspects such as system availability (especially where the outsource provider is also operating the software environment), support, responsiveness to new requests, and other related KPIs.

“The CodeLogic Code Impact Score (CIS) is a continuous, real-time, and easy-to-consume measure of software quality.”

However, every organization should structure its third-party relationships in such a way that they can easily bring the work in-house or shift it to another provider. In order for this objective to be accomplished, the quality of the code developed by the outsource firm is of paramount importance. Poor code quality, and the resulting tech debt, will make insourcing or re-outsourcing an expensive undertaking.  Unfortunately, code quality  is something that traditional SLAs have difficulty enforcing.

Software developers have long been familiar with the concept of “code smell.” This is a characteristic of software code that could indicate, where the code smell is “strong,” that there are underlying design or architectural issues. This might mean that while the software technically works, updating, extending, modifying, and maintaining the code will be difficult, expensive, and time-consuming. It is also typically an indicator of growing technical debt. The problem, of course, is that code smell can often be a subjective measure. How can organizations write SLAs to control for this aspect of code quality?

Code Impact Score: an SLA for Clean Code

Ideally, organizations that outsource software development would have a quantitative mechanism the “measures” code quality. The CodeLogic Code Impact Score provides exactly that.

As a central element of the CodeLogic Continuous Software Intelligence (CSI) platform, the Code Impact Score (CIS) quantifies the complexity of an organization’s code base and provides the results in an easy to consume manner.

The CodeLogic CIS is a proprietary formula that uses item attributes to identify complex and highly coupled code. The score is calculated using applications, classes, and methods and is displayed on the CodeLogic Dashboard, Item Details modal, and other reports to enable users to quickly identify possible problem areas in their code. The CIS is a relative measure of code complexity normalized on a 0-100 scale, with a score of 100 being the most complex.

Using CIS in Code Outsourcing SLAs

The CodeLogic CIS can be added to outsourcing agreements and help ensure code quality in the following ways.

Establishing a baseline for existing code bases

In many cases, the outsource firm is taking over an existing code base with the objective of expanding, modernizing, enhancing, and maintaining the code base going forward. In this case, the CIS can establish a baseline quality level for the code base at the exact point in time it was taken over by the outsource firm. The company contracting with the outsource firm can then mandate, through SLAs with potential monetary implications, that on an annual basis the code quality level must improve by, say, 10 percent. For example, if the CIS was 72 when taken over by the outsource firm, it must hit 65, 59, 54, 49, and 45 at the end of years one through five. Failure to hit those levels may entail financial penalties; beating them could result in financial bonuses.

Clean-sheet-of-paper projects

The outsourcer could establish CIS ceilings that the third-party developer must maintain. As with the previous example, financial penalties and rewards can add teeth to the outsource agreement.

Conclusion: Ensure you stay in control

There are clearly myriad reasons for firms to outsource software development projects. This is undoubtedly why over 60% of all businesses outsource some or all of their software development work, according to a study by Computer Economics. But staying in control of code quality is essential in order to minimize tech debt and ensure flexibility in future sourcing decisions. The CodeLogic Code Impact Score is a continuous, real-time, and easy-to-consume measure of software quality.

cartoon of two software engineers