Background
Last year, I did an internship in a physics research group at a university. In this group, we mostly used LabVIEW to write programs for controlling our setups, doing data acquisition and analyzing our data. For the first two purposes, that works quite OK, but for data analysis, it's a real pain. On top of that, everyone was mostly self-taught, so code that was written was generally quite a mess (no wonder that every PhD quickly decided to rewrite everything from scratch). Version control was unknown, and impossible to set up because of strict software and network regulations from the IT department.
Now, things actually worked out surprisingly OK, but how do people in the natural sciences do their software development?
Questions
Some concrete questions:
- What languages/environments have you used for developing scientific software, especially data analysis? What libraries? (for example, what do you use for plotting?)
- Was there any training for people without any significant background in programming?
- Did you have anything like version control, and bug tracking?
- How would you go about trying to create a decent environment for programming, without getting too much in the way of the individual scientists (especially physicists are stubborn people!)
Summary of answers thus far
The answers (or my interpretation of them) thus far: (2008-10-11)
- Languages/packages that seem to be the most widely used:
- Version control is used by nearly all respondents; bug tracking and other processes are much less common.
- The Software Carpentry course is a good way to teach programming and development techniques to scientists.
- How to improve things?
- Don't force people to follow strict protocols.
- Set up an environment yourself, and show the benefits to others. Help them to start working with version control, bug tracking, etc. themselves.
- Reviewing other people's code can help, but be aware that not everyone may appreciate that.