Beamlines Are Software Incubators
Beamlines are not run like software companies, but they are perfect incubators for big ideas. They face a constant stream of challenging tasks, with outcomes expected quickly. They take inputs, execute pipelines, handle failure, and return outputs. Analysis is on demand, frequently written up, with copious notes shared freely on GitHub and in published papers.
Samples go in, data comes out, and the whole system is stitched together by code, often written in isolation without test-driven development, a CLI, a product manager, or explicit customer demands. Frequently, the coder is also the end user. I know because I’ve done it myself. Is it ideal? Probably not. But the delta between feature or bug and patch is small. The code grows organically around the problem, solving it and protecting the user from the ugliness beneath. More often than not, it is not well written, badly optimized and works perfectly well.
We still talk about “experiments” as if they are one-off events, but most beamlines run similar workflows tens or hundreds of times a day. That is not science in the old sense. Decisions are increasingly made inside the system itself. For synchrotron experiments the beam is just one part, but if you are running your experiment correctly, it should be the rate-limiting step. You want to be using all your X-rays and asking for more synchrotron.
The facilities that move fastest will treat experiments like a stack, beamlines as modules. And align the goals of the beamlines with the goals of the science questions.
I am as guilty as anyone of running an experiment just because it is fun. And like successful software companies, you need to give people space to flex imagination and discover skills you did not know you needed.
Let them cook … or incubate.