So far, we have mostly been concerned with how to write software that solves physics problems. In this chapter, though, we will discuss how writing software that runs reliably—especially at scale—can prove almost as challenging.
Most software developers want users for their code. For scientific programs this is doubly true, since science runs on a reputation system. Without users, code can hardly be called reproducible. However, even in the event that you do not wish for users, users are still extraordinarily helpful. A new user is a fresh set of eyes that can point out the blind spots of a program better than anyone else. What is broken a new user will break. What is unintuitive a new user will not understand. This process starts at installation.
New users should realize that if they do not understand something about a project after reading the documentation, then the moral failing lies with the developers and not with themselves. Good users in this situation will then kindly report their struggles back to the developers.
That said, you are your first user. Writing code is a distinctly different process from running the code. Even with tools to mitigate this distinction, such as testing, the difference is never completely gone. Deploying code that you wrote for the first time is an exciting experience. It probably will not work on the first try. As a developer, it is easy to address the feedback that you yourself have as a user. You can iterate ...