Skip to main content
Back to News
Lessons learned: Delivering software programs (part 4)

Lessons learned: Delivering software programs (part 4)

13 September 2024
  • Software Engineering

By Stephen McCarron, Head of Forecasting Engineering

This is the fourth blog in a five-part series from our Head of Forecasting Engineering on the complexities of software program delivery – and the practices that more often predict a program’s likelihood of success.

Compartmentalisation

One of the most common slowdowns in delivery of software is handovers between different teams. When one team relies on another this causes delays  as they wait for feedback from the other, especially where they lack the full context of the outcome being addressed.

Thus, when looking at how to break a large program into sub outcomes and work units, the aim should be to enable those teams to fully control their own delivery.

They should have autonomy to action all the work required. This doesn’t mean they need to build or write everything required, rather that any dependencies they need can be self-serviced. For example, they can spin up their own resources such as databases and storage to avoid the need to put tickets into another team for bespoke work.

This could go as far as moving people into the delivery team from other specialised areas of the business.

Taking databases again as an example, if there’s a requirement to perform lots of fine tuning and the team doesn’t have the experience to do this, bring someone in, even if only temporarily throughout the main part of that effort. This will likely impact the overall capacity of the resource provisioning team but if this project is the priority then that tradeoff is necessary.

Even with this, however, it is often the case that some dependencies remain for various reasons. Where these do linger, regular and effective communication between the teams involved is essential. One  strategy that I have found effective here is to have someone(s) in the “service” team  join the team’s communications channels and standups, acting as a bridge with the ability to contextualise what is happening in both spaces.

Breaking the program into sub-units

To set up the required streams of work in a large program you need to decide what the brief and outcome for each stream should be. But how do you break a large program into smaller, more achievable units?.

  1. Be agnostic to existing team boundaries.

They can limit your thinking, producing a bias to retrofit the program of work to the existing org.

  1. Be amenable to creating virtual teams, or even changing the org

Remember the goal is to effectively deliver the outcomes the business has set and the org structure was likely set up to deliver older and different outcomes.

This is not to say you should be zealously chopping and changing structure as the impact of doing so is not insignificant, but you need to be willing to do so if the overall benefit is clear.

  1. Focus on clear, contained outcomes

When looking at the outcomes, pull out any obvious parts that are well contained and clear. These sub-outcomes should be achievable with a team size that isn’t too large; if you find the number of people required on a project is stretching into double digits you should consider sub-dividing further.

  1. Aim for parallelisable pieces of work

Each sub-outcome should be able to be achieved without dependencies on other streams of work in the program. This is rarely fully possible, so where work must be done serially, it is usually preferrable to lead with the riskier, more uncertain pieces of work first. This is because as these are resolved, they are more likely to change the nature of the required work in the latter stages.

Note that where outcomes are interdependent, or even just loosely connected, or where team sizes are large, there will be a coherence penalty to be paid – it will be increasingly likely that those working on the different outcomes will not be up to date with context changes happening around them. With smaller teams everyone talks regularly and naturally shares context. As teams and communication lines increase this will happen less.

  1. Have as many sub outcomes as you need

There may be more than can be started at once, in which case it’s about prioritising; have a preference to the critical outcomes that have more uncertainty. It is likely that as the program progresses, you will want to change the way the program and outcomes are divided.

Be flexible to adjusting to optimise the delivery as you learn more.

Lessons learned: Delivering software programs (part 1)

“Achieving alignment and clarity on the goal of a project allows everyone to make better decisions, decisions that align best with the outcome.”

Catch up on part one

Catch up on the rest of the series!

1. Alignment on outcomes

Ensuring everyone is shooting for the same thing

Read part one
2. Addressing uncertainty

Removing complexities early

Read part two
3. Constant adaptation

Adjusting quickly when the state changes

Read part three
4. Compartmentalising

Breaking down problems into smaller, independent units

5. Communicating

Ensuring everyone is up to date with the ever-changing state

Read part five

Latest News

G-Research March 2025 Grant Winners
  • 22 Apr 2025

Each month, we provide up to £2,000 in grant money to early career researchers in quantitative disciplines. Hear from our March grant winners.

Read article
Invisible Work of OpenStack: Eventlet Migration
  • 25 Mar 2025

Hear from Jay, an Open Source Software Engineer, on tackling technical debt in OpenStack. As technology evolves, outdated code becomes inefficient and harder to maintain. Jay highlights the importance of refactoring legacy systems to keep open-source projects sustainable and future-proof.

Read article
SXSW 2025: Key takeaways from our Engineers
  • 24 Mar 2025

At G-Research we stay at the cutting edge by prioritising learning and development. That’s why we encourage our people to attend events like SXSW, where they can engage with industry experts and explore new ideas. Hear from two Dallas-based Engineers, as they share their key takeaways from SXSW 2025.

Read article

Latest Events

  • Quantitative Engineering
  • Quantitative Research

SIAM Conference on Financial Mathematics and Engineering

15 Jul 2025 - 18 Jul 2025 Hyatt Regency Miami, 400 SE 2nd St, Miami, FL 33131, United States
  • Quantitative Engineering
  • Quantitative Research

MPP/MPQ Career Day

30 Apr 2025 Max Planck Institute for Physics, Boltzmannstraße 8, 85748 Garching bei München, Germany
  • Quantitative Engineering
  • Quantitative Research

Imperial PhD Careers Fair

10 Jun 2025 Queen's Tower Rooms, Sherfield Building, South Kensington Campus, Imperial College London, London, SW7 2AZ

Stay up to date with
G-Research