10,000 hours and the Scientist-Programmer

July 6, 2009 – 3:53 pm
Photo by ** rosa **

Photo by ** rosa **

The concept of 10,000 hours effort as a benchmark to become an expert has recently become pretty well known.  The idea is this:  experts are made and not born, and the way that they’re made is to accrue 10,000 hours of hard work at the subject in question.  This sounds to us like somewhat of a rule-of-thumb, but it’s interesting in how many areas of human endeavour it seems to crop up.  Sportsmen, musicians, certainly scientists and programmers (and Scientist-Programmers) and many others seem to require of order 10,000 hours experience to reach the top of their game.

In this article, we’re going to consider how the idea of 10,000 hours relates to you, the Scientist-Programmer.

What is an expert?
The circular definition is “someone who has at least 10,000 hours experience in a given field”.  But obviously, that’s not very helpful :-)  We suspect you can define “expert” in all sorts of different ways, but for the Scientist-Programmer it is someone who who routinely produces high quality code and does so efficiently.  We’re not aware of any studies of programming productivity in science, we suspect that expertise helps a lot and for the Scientist-Programmer, this translates directly into generating more and better science. Read the rest of this entry »

Doing it for yourself – deciding whether to use someone else’s code

June 22, 2009 – 4:05 pm
Photo by jurvetson

Photo by jurvetson

Using someone else’s code can be great.  Or it can be horrible.  If it does exactly what you need it to, doing so with no bugs and no ambiguity, then this is awesome.  If you need to make changes to buggy, uncommented code written by someone who thinks the GOTO statement “really isn’t that bad”, then we don’t envy you one bit.

So, here are some of the things you need to consider when deciding whether or not to use someone else’s code.
Read the rest of this entry »

Stay on target! Ways to help yourself work

June 10, 2009 – 8:38 pm
Clockwork egg timer.
Image via Wikipedia

In a previous post we talked about how to keep your brain in tip top condition and staying in the ‘zone’. We recommended some simple techniques like removing distracting email, IM or twitter traffic but sometimes the problem isn’t staying in the zone, it’s getting into the zone in the first place. In this post we recommend some tools and techniques to help you get going. Everybody has different techniques so we’d also like to hear from you about how you beat procrastination and get working. Read the rest of this entry »

The 4 levels of making code work

May 26, 2009 – 8:36 am
Photo by dbking

Photo by dbking

You want to make your code work.  Anything else would be dumb, right?  Right.  But as we’ve discussed before, deciding whether your code is good enough to count as “working” isn’t always straightforward.  On way of looking at this is to categorise four stages of relative completion of a software project.  Any one of these four can count as “good enough” if that’s what your project requires and in many ways they represent a sequence of levels of technological development. Read the rest of this entry »

The basics of SWIG

May 11, 2009 – 5:48 pm
Image from sketch22

Image from sketch22

Simplified Wrapper and Interface Generator, or SWIG for short, is a tool that provides a way to interface C/C++ with a variety of high level programming languages (notably Python, R but not Matlab – which has it’s own way of linking to C). It generates wrapper methods that allow the two languages to talk to each other. If you have legacy C code that you want to use in your shiny new R program or if some of your code needs to be re-written in C++ for a speed boost then SWIG can help you out.

Read the rest of this entry »