How Do We Make Scientific Programming Better?

Computers become everywhere in science and engineering, and sometimes the digital data themselves are the subject of work. It makes scientific software a cornerstone of modern technology. But the quality of the software is often overlooked by the researchers who use it. It has baffled me for many years. Why do we use the results when we are not sure about the robustness of their production?

Perhaps one reason is the large gap between programmers and scientists. Programmers, or software developers, know how easily mistakes (bugs!) may enter software, and invent many ways in the development process to capture them. That idea doesn’t enter scientists’ mind automatically. Scientists write code in the way they feel natural, with little attention paid to maintainability. It may take months for someone else to learn to run the code, and it’s not an efficient methodology to develop technology.

It is difficult for programmers to help the code development, on the other hand, because they will be overloaded with the amount of required knowledge. For a programmer to effectively architect and engineer software, they needs the system to be fully specified. But they cannot make it within reasonable time for a problem that took months, if not years, for a researcher to understand.

Is there really an effective and efficient way to make scientific software? Maybe or maybe not. Nevertheless, the gap won’t be easily closed. Instead of attempting novel approaches, I am thinking, how about forgetting about making a smart move, and just focusing on code? Let’s set up venues to get together people who love both programming and science. We probably will come up with some good idea. Even if we don’t, we will have fun coding, and produce some good code.

We will be holding the first sciwork conference in Hsinchu, Taiwan, on 22nd February (2020), and begin with 2 development sprints. We hope many people can join us and discuss what to do for more scientific coding. My current thought is to hold development sprints every quarter. We may also plan for other events. But it really depends on how many participants and volunteers there are.

If you are interested in the idea, please register the first event: And we’d love to hear from you @sciwork or in the telegram group. If you have a project seeking contributors, we can work with you to set up sprints. If you need introduction to some programming languages, skills, or technologies, we will help with training or workshops. If you are a programmer looking for challenging and novel projects, we will connect you to experts. Please let us know what you think or what you want.

Or, if you are just curious about what scientific software is about, please come. Curiosity is the thing that brings us together.