Practices for programming in a scientific environment? [closed]

What languages/environments have you used for developing scientific software, esp. data analysis? What libraries? (E.g., what do you use for plotting?)

I used to work for Enthought, the primary corporate sponsor of SciPy. We collaborated with scientists from the companies that contracted Enthought for custom software development. Python/SciPy seemed to be a comfortable environment for scientists. It’s much less intimidating to get started with than say C++ or Java if you’re a scientist without a software background.

The Enthought Python Distribution comes with all the scientific computing libraries including analysis, plotting, 3D visualation, etc.

Was there any training for people without any significant background in programming?

Enthought does offer SciPy training and the SciPy community is pretty good about answering questions on the mailing lists.

Did you have anything like version control, bug tracking?

Yes, and yes (Subversion and Trac). Since we were working collaboratively with the scientists (and typically remotely from them), version control and bug tracking were essential. It took some coaching to get some scientists to internalize the benefits of version control.

How would you go about trying to create a decent environment for programming, without getting too much in the way of the individual scientists (esp. physicists are stubborn people!)

Make sure they are familiarized with the tool chain. It takes an investment up front, but it will make them feel less inclined to reject it in favor of something more familiar (Excel). When the tools fail them (and they will), make sure they have a place to go for help — mailing lists, user groups, other scientists and software developers in the organization. The more help there is to get them back to doing physics the better.

Leave a Comment