Continuous improvement is widely recognized as an important aspect of modern Agile software development but it is also similar to exercise. How so? In the fact that despite all the literature and data proving it is beneficial, it requires a lot of discipline to put into constant practice.
While there are many examples of how outsourcing provides strategic benefits (cost, access to talent, ability to quickly scale and flex resources without lengthy hiring processes), here are four concrete examples of how it can lead to improvements in the way an organization develops software:
1. The Value of Sharing Documentation
There are many common problems that occur naturally as teams create products. Individuals become domain experts, but can also become silos of information. Documentation is scarce or inexistent. Problems are solved in creative ways, but this can also lead to improvisation. All of this can happen while creating excellent products. But it can also contribute to technical debt and, ultimately, higher risks, as individuals become single points of failure.
Our standard approach to engaging customers includes a detailed review of the technology and tools in place, how engineers interact with the project (each step, from accessing a repository to how code gets deployed in production), and product features/functionality. All of it has the primary goal of documenting this information to find opportunities for later improvement.
Architecture and tools are often discussed and agreed upon as standards, and tasks may be re-distributed to avoid domain knowledge in silos. Socializing this information via documentation in a form (documents, web pages, whiteboards, even Slack channels) is a natural output of this process.
Doing this adds value across the entire technology organization and makes it easier to ramp up any contributor, either outsourced collaborators or internal team members. These benefits represent pure added value as a result of choosing to outsource.
2. Next-Level Performance and Key Performance Indicators (KPIs)
One of the first things we want to understand when we begin working with a new team is how success is tracked and measured. While we have our own set of KPIs that we like to use, every project and every organization has its own particular objectives that reflect the problems being solved as well as the overall culture.
However, asking the question can reveal different answers, which leads to a healthy review of KPIs, or even the creation of new ones. Outsourcing ultimately means giving up a little control, and this often causes more pressure to demonstrate we are meeting and exceeding expectations in a shorter timeframe or with a higher standard than internal teams.
The benefit of having this conversation is that it often results in creating a higher standard even for internal teams, or new KPIs that better align to the current project, product or organizational priorities and strategy. Even if KPIs remain the same and are applied to outsourced teams, sharing them with a third party may lead to improving existing visualization of data via dashboards or other tools.
3. Flagging Cyber Security Threats
While the common belief may be that outsourcing can create added exposure and security risk, that isn’t the case in practice. We find that it can actually lead to a healthy review of current practices that reveals opportunities to introduce new controls and standards that ultimately hardens an organization against external threats.
For example, when working in highly regulated environments, access to Personally Identifiable Information (PII) is usually limited to the smallest number of people. A team may be using production data for testing software, which means extending teams through outsourcing may increase exposure and impact compliance.
A better practice may be creating better test data with obfuscation, or a review of testing, in general, may reveal a lack of code coverage, automation or separation of concerns that has led a team to this practice in the first place. In this case, outsourcing creates the necessary synergy for improvement that also reduces technical debt.
Outsourcing requires remote access to resources, and this provides the perfect opportunity to review all of the organization’s endpoints to make sure the right security controls, practices, and patterns are in use. Least privilege and zero-trust are becoming the standard even with internal platforms, and outsourcing can provide a push to apply this across the enterprise.
Finally, having the right controls in place to allow any distributed team (third party or internal) safe access to resources should be a high priority for any organization. Outsourcing can only help move an organization towards this goal.
4. Groomed and Organized Backlogs
Now is the time of year when the annual goals and objectives are finalized and projects are launched. But when the product roadmap exceeds actual capacity, there is a rush to fill that gap. If the backlog has not been properly groomed, your excellent onboarding process achieved via (1) above will result in a lot of hurry up and wait. While business leaders may have a clear vision of strategic product goals, breaking this down into actionable tasks is the hard stuff that takes time, intense focus and discipline.
For many of our customers, developing software enables their core business, but is not necessarily their core competency. Thus, business owners may become saddled with this responsibility without adequate training or even experience in the context of Agile software development. This creates a bottleneck that becomes more critical and visible when scaling up engineering efforts by outsourcing.
To ensure that the backlog is ready, we often provide not only engineers but also Agile product owners who know precisely how to interpret business problems and end-user value propositions and create epics and user stories that our engineers can easily break down into tasks and, ultimately, working software.
Outsourcing software development is not just about tactical capacity but also leveraging know-how and improving processes across the enterprise by benefitting from a partner whose core competency is software delivery.