3. Getting it done

Programming is not an end in itself. We resort to programming to get things done we wouldn’t accomplish otherwise. While it depends strongly on your local context what you want to get done developing software, we focus here on the central aspects of scientific software development and writing code for scientific data processing and analysis.

Goal

Introduction of the central aspects of scientific data processing and analysis: reproducibility, traceability, testability, reliable code. Additionally, the Python scientific software stack – NumPy, SciPy, Matplotlib – gets introduced.

The first four chapters focus on more general aspects, only the last chapter gives an overview of the most important scientific software libraries available for Python. Why all this more general remarks in the part entitled “Getting it done”? Shouldn’t we focus on writing code, rather than spending time discussing how to write code? Frankly speaking, the biggest problem with scientific software is that most people spend much more time writing software than thinking about how and what to write.

Just to make this point once: You only learn how to write scientific software of decent quality by writing scientific software. It is always a bit of “learning by doing”. But as with all complex endeavours, a bit of planning ahead and realising at least to some extend how complex the things really are we are going to do helps with not being utterly surprised afterwards.