Earlier this year, and in anticipation of a tighter economy over the months and years ahead, my colleague Mike Dixon wrote about how important it is for technology leaders to keep moving forwards – no matter how challenging the situation. Indecision can quickly turn into inactivity, after all, and those organisations that begin to stagnate can quickly find themselves out-manoeuvred by faster-moving and more agile competition.
Just how do you keep pushing ahead, though? As I mentioned in my own post looking at some of the challenges that lie ahead, a good number of CTOs will find themselves facing up to that perplexing, paradoxical ask of “doing more with less” over the next few years. They’ll be expected to help the business innovate, while at the same time freezing (or even cutting) costs.
Offshore or in-house for innovation?
For many, responding to that challenge will mean turning to outside help. More specifically, as their budget begins to constrict, they’ll look for support from overseas. Offshored software development has long been seen as a way to reduce the cost of a project, with the economic disparity between various nations allowing organisations to bring more capacity to bear for the same – if not less – money.
The other option, of course, is to leave innovation and problem solving in the hands of your in-house developers. When finances are tight, relying on existing teams can look very appealing indeed, even when it comes to the biggest and most complex challenges. Why invest in external people when you already have a pool of talented developers internally, after all?
The answer to that question – and one that’s equally relevant to the issue of offshoring – is that most companies don’t actually get the outcomes they want by following these paths. And that, primarily, is due to issues of size and experience.
How scale can fail
Let’s illustrate the point with a quick example.
A fictional retailer follows the industry-wide trend of offshoring and moves a significant amount of its engineering work overseas. Most notably front-end architecture and development of a new web stack.
In principle, this new 100-plus-strong team of offshored engineers won’t just deliver a quick result, it will free up in-house developers to focus on other activities. In practice, that’s not always the case.
The first issue was scale. The team was too big so the development process became complex and messy. Too many cooks did indeed spoil the broth.
Second, the team lacked the practical experience of dealing with the retailer’s specific challenges. While the engineers were competent enough with certain aspects of front-end development, they lacked the experience of the in-house team and the expertise needed in key areas. That meant they were learning on the job, repeating common mistakes and (back to the size issue) not everyone was always on the same page or pushing in same direction.
And because the in-house team had been fenced off from the entire development process, the codebase was indecipherable when it was handed back.
As a result, our fictional project was delivered late, was way over budget and almost impossible to support and evolve.
Had the retailer started smaller (perhaps with a 12-strong team of experienced hands) and involved in-house people from the start, the outcome would have been very different because:
- More heads doesn’t necessarily mean better when it comes to software development.
- Prior experience is critical when it comes to tackling specific problems.
- It’s important to be conscious of the “live” nature of product development, and the need for it to continue to be usable (and supportable) after the team steps away.
Let’s look at each of those factors in turn.
More doesn’t mean better
Historically, engineering has been based on the principle that bigger problems require more resource. Software development is different; it doesn’t scale in the same way, and you can really only have so many people working on a problem before you end up with issues around communication and collaboration. Rather than delivering efficiency, more heads typically just result in a breakdown in communication, over complicated branching/merging strategies and teams waiting on dependencies.
Prior experience is critical
In our experience, it’s rare for large offshore teams to have the specialist skills needed to tackle the complex challenges associated with true innovation. As a result, while an organisation might not have the capabilities they need internally, trying to “fix” that problem by throwing resource at it really just passes it further down the line. One person with prior experience of solving a challenge is more valuable than 10 without it.
Long term thinking matters
If the eventual intention behind the creation of a new product is to hand it over to an internal team to run, that team also needs to understand how said product functions. What’s more, they need to be able to support and adapt it as the needs of the organisation change. That’s why having a small group of experts who can upskill an inhouse team can be vital to ensuring long term success.
Ultimately, it’s my belief that for organisations to truly get the most out of external support, they must overcome the “myth of more”. In software development, false economies are all too real; tempting though it may be to believe that bigger is better when it comes to problem solving, the reality is that a smaller number of experienced and well-structured individuals will deliver far greater value than a team of hundreds ever could.
If you’d like to chat further about anything covered in this blog, please give us a shout.