Wednesday, 15 July 2009

The Scientist-Progammer

I also co-run a blog called Programming for Scientists. A theme that's developed over the time we've been blogging there is the idea of the Scientist-Programmer.

I think a big part of the reason for the development of this theme is that I identify myself with it. I've always been a scientist first and foremost, but since starting my research career I've come to have a real love for the craft of coding and it's always been a big part of the work I've done (for reasons you can see below in "The need to get it right!"). I also think it applies to a lot of other scientists nowadays, and our numbers are growing :-)

The nature of the Scientist-Programmer
The Scientist-Programmer is a scientist first and foremost, but one who spends a lot of time coding and (crucially), takes a professional approach to the programming part of their work. Nowadays, there are areas of science that are critically dependent on software (anything to do with simulation of analysis of large data-sets, for example), so it's an aspect that scientists must take seriously and work hard at.

The programming skill-set is as important to modern science as 'wet' laboratory skills, electrical engineering (for building those big physics machines) and maybe even mathematics. Because some areas of science rely on software, it's a huge advantage to have researchers who are expert at both the science and programming, because they understand both the problem domain (i.e. the science) and also how to go about building the required software.

The need to get it right!
Here is why programming is important: computers are inevitable at some level in modern science because of the large data-sets we need to work with. Computers imply the necessity of programming. And if we're programming to do science, our science relies critically on the fact that our code works properly!

Consider the Conference Test: Imagine you're presenting your work at a major international conference. Do you really want to be stood in front of 200 eminent scientists at a conference when the world-leader in your field spots that your graph must be off by 10% because of a numerical error in your code? The way to avoid this is to take a professional approach to the software that you need to write.

Scientist-Programmer or Programmer-Scientist
Just as you can be a scientist who programs, you can also be a programmer who writes code for science. So, what's the difference? I think there's actually continuum that runs all the way from from "scientist who avoids programming" to "programmer who doesn't work in science" and that both the Scientist-Programmer and Programmer-Scientist are somewhere in the middle. It probably comes down to similar skill-sets but slightly different core interests.

In conclusion...
I've sometimes found it difficult to communicate to other scientists exactly what I am (professionally-speaking :-) ). I think the trouble is that while programming used to be another handy skill that a scientist might pick up in passing, it's grown in significance in recent years and is now much more important. The Scientist-Programmer is the result of this process, a scientist who spends a lot of their time doing science via a computer and strives to be (more or less) a professional-level programmer.

No comments:

Post a Comment