Rebuild or Extend? Replacing a Charity's Platform After Years

When a charity platform has grown into a website, a blog, accounts and a separate competition app, when is a rebuild right? What I weighed, kept and cut.

For years I was the main developer on the platform behind a UK charity's free computing courses for schools. This year I led the build of its replacement. Rebuilding a working system is usually the wrong call, so it is worth being specific about why this one was right, and what we did to keep the risk down.

The case study describes the new platform. This post is about the decision.

What the old platform had become

The old platform was a Rails application that had grown over several years. It carried the charity's public website and blog, pulled from a headless CMS, together with the accounts teachers and volunteers used, course selections, volunteer help requests, events and sessions. The yearly national competition, where industry volunteers judge students' apps, ran in a separate Elixir app of its own.

Each part worked. The problem was the combination. A change to how teachers ran courses had to be made in an app that was also the charity's marketing site. The competition data lived in a different system with a different stack. And the courses themselves were changing, with new ones on the way, in a codebase shaped around the old ones.

The questions that decided it

Extending is the default, and it should be. We rebuilt because the answers to four questions pointed the same way.

Is the product changing, or only the code? Here, the product was changing. The charity wanted teaching, volunteering and the competition in one focused product, and its public website could live separately.

Does the old structure fight the new one? Course delivery was a feature bolted onto a content site. The new courses needed lessons broken into steps, teacher guidance on each step, modules that open in order and quizzes that mark themselves. Adding that to the old model would have meant reshaping most of it anyway.

Can the old system keep running while the new one is built? Yes. That removed the pressure to cut over early, and meant the old platform could carry the programme until the new one was ready.

Is there someone who knows the old system well? I did, having worked on it for years. That matters more than any technical argument. A rebuild led by people who do not know why the old system is the way it is tends to repeat its mistakes and drop its quiet features.

What we kept

Rebuilding is not the same as starting from nothing. We kept what the old platform had proved: the way teachers, volunteers and administrators each see different parts of the programme; volunteers matched to classes on their expertise; the competition judged on the idea, the product and the teamwork, with one score per judge per entry.

We also kept Rails. The team knew it, the charity's existing systems used it, and the product is a server-rendered web app used in school networks, which is exactly where Rails is strong.

What we cut

The public website and blog stayed out of the new platform. So did anything the charity's team could not name a current use for. The new platform does teaching, volunteering, the competition and the reporting that ties them together, and nothing else.

Cutting scope is the most effective risk control in a rebuild. Every feature carried over is one more thing to rebuild, test and explain.

How we kept the risk down

The charity's education and programme team defined what the platform had to do and signed off each decision. I worked with a designer on the product and wrote the code.

We also built the parts most likely to change as configuration, not code. Check-ins, student feedback and quizzes run on a questionnaire engine we built in-house, so the education team can change questions without a release.

When I would not rebuild

If the product is not changing, extend it. If nobody who knows the old system is involved, extend it until someone is. If the old system cannot run alongside the new one, the rebuild becomes a cutover under pressure, and that needs a much stronger reason than a tired codebase.

The new platform is live with schools. If you are weighing a rebuild of a charity or education platform, I am happy to go through the same questions with you.

Related writing