Blog · Blog · 14 December 2024 · 2 min read

The story of how software is created in a lab

Article created following my presentation to the Research Software Engineer day in Belgium.

When I was invited to speak at Belgium RSE 2024, I had a theory in mind that I wanted to share and explore with others. This theory revolves around how software is created in academic labs.

Over the last five years, I’ve had the opportunity to work with several labs and engage in discussions with many more. A recurring pattern began to emerge—a familiar story of how software originates in these environments. Often, the process starts as a side project undertaken by PhD students, postdocs, or occasionally even principal investigators.

Comic panel. A researcher, Anna, works at her computer while colleagues point at her screen and a light bulb glows above them. Captions: “Anna enjoys programming and automates tasks to save time, improve efficiency, and ensure precision.” then “Her teammates find it useful and ask to use it, so Anna shares the software.”
The story of Anna, part 1: a handy tool gets shared with the lab.

It typically begins with someone passionate about programming who sees an opportunity to streamline or enhance their own work. Once the tool proves useful, it doesn’t take long for it to spread within the lab, with others adopting it for their projects.

At first, everyone is happy. The tool works well, and people in the lab benefit from its efficiency. But very quickly, the burden of responsibility falls entirely on the original programmer. They are expected to handle everything—maintaining the software, developing new features, fixing bugs, troubleshooting, and even assisting with installations on other machines.

Comic panel. Anna sits at her desk, overwhelmed, in the middle of a whirlwind of requests. Captions: “Georges needs a small modification.”, “James needs a small modification.”, “Lucas needs a small modification. Anna makes a quick update.”
Part 2: every “small modification” lands on Anna.

What began as a side project suddenly grows into a full-time commitment, but without the necessary time or funding to support it. In an attempt to meet the increasing demands, the developer often resorts to quick fixes, sacrificing best practices and long-term maintainability.

At this point, we can say that a software project is truly born. Two scenarios typically follow:

In the first, a dedicated team is formed to work full-time on the project. This is often the case for successful initiatives with significant backing, such as DeepLabCut, SpikeInterface, or Open-Ephys. These projects benefit from having resources, structure, and long-term sustainability.

In the second scenario, however, the responsibility remains with a single maintainer. This often leads to challenges: the software may fragment into multiple divergent versions, each tailored to specific users but difficult to reconcile. Users might wish they could combine these versions into a cohesive tool, but the effort is often too great. Alternatively, the sole maintainer may leave, and with them, the knowledge of how to manage or evolve the software—leaving the project abandoned and unusable.

Comic panel with a diagram. From “A software is born”, two paths: “A team is formed to manage and share it, using their own time and resources.” or “Anna remains the sole maintainer in her free time.”, which leads to “The software multiplies into ten different versions.” and “Anna leaves for another job. Nobody knows how to continue her work.” Two puzzled researchers stare at a screen.
Part 3: either a team takes over, or the software splinters and is abandoned.

Lately, I’ve found myself stepping into projects as a freelance developer at this exact stage—when the software has splintered into irreconcilable versions, and no one is quite sure how to move forward. It’s a challenge I enjoy, and I’ve become quite effective at rapidly diagnosing and fixing these issues.

If this story resonates with you, and you’re facing a similar situation, don’t hesitate to reach out. I can help bring your software back to a point where it works seamlessly, bringing back the simplicity and efficiency that once made everyone happy—and allowing your team to focus on advancing their research.

← All articles

Does this sound like your lab?

Tell me about your code and what's getting in the way. The first look is free.

Email me