I went to a very interesting seminar sponsored by the Centre for Scientific Computing.
One issue as someone who has moved from writing software to someone who has to beg/coerce others to write it, is that quite often it is impossible to maintain it after the student/postgrad/postdoc has moved on. Even more frustrating is doing research (ie a web search) for relevant related work and finding papers that describe great packages only to try to download it and run it and failing miserably, due to poor engineering and dependency on obsolete packages or even actual buggy code which never worked properly.
Christopher Wood, who gave the seminar, made some very good points about what a developer needs to think about, mainly when moving from having as the user base only the developer themselves, to groups, to collaborators, to the world at large. Which means that slowly more features need to be added: documentation, version controlling, unit and regression testing, and finally a governance structure leading to future planning.
The question is how to plan for this from the start, when a student is just writing (and only has time to write) a quick and dirty prototype, which will provide enough data for them to write their dissertation or project report, and move on. I suppose it is the role of the supervisor (people like me) to take the preliminary software and at least keep track of it at all times, and ask at least for clear documentation. But this is easier said than done, within the busy schedule of an academic. There is also the issue that many academics don’t keep on top of many programming languages and APIs, and can’t really keep track of all the software being developed by their 10 or so supervisees.
Maybe I should follow up on the RSE literature and websites, and see what solutions are proposed… The website is http://www.rse.ac.uk/