What is good research software engineering?

Is writing good software simply about being a good programmer?

To draw a comparison, is building a bridge simply about being a good carpenter?

Image of a simple wooden bridge

No, a constructing a good bridge requires good engineering.

Image of a well-engineered bridge

Engineering a good bridge encompasses skills such as design, planning, documentation and testing. Construction itself then involves manufacturing using modular components built by many (possibly geographically distributed) teams. Importantly, plans for maintenance and upkeep of the bridge are part of its engineering, with the bridge sustained and tested throughout its planned lifetime.

Engineering good research software requires good Research Software Engineers

Similarly, engineering good research software requires good research software engineers. Research software engineers, in addition to being programmers, also understand;

Good software engineers understand the importance of unit testing, version control, documentation and modular design and development.

What is good research software?

Good research software has to satisfy the three requirements of being:

 Where to learn more?

You can learn more about how to engineer good research software by following these resources:

If you have any other resources that you think should be listed here, then please .