Academics · Code

Software Carpentry

Elsewhere on my tour of the north-east, I’ve been helping out this week at the Software Carpentry boot camp at Newcastle university.

These events are aimed mostly at postgraduate research students who need to write software for research. They try to provide just enough training in real-world software development techniques to get people started with writing reliable, testable code and managing it properly.

The idea is not so much how to program, as how to program efficiently—choosing and using sensible tools, and applying coding techniques that have been shown to improve productivity. It’s absolutely not a software engineering course, but rather a course on applying a few software engineering techniques to make for better scientific work.

Although the course is only two days long, it gets through an introduction to shell scripting, version control, Python programming, test-driven development, pair programming, and databases with SQL, as well as a certain quantity of philosophical material. Everything is hands-on, with attendees “coding along” with the presenter. So it goes along at a fair pace, and although no particular experience at programming is necessary, an analytical mind and a lot of attentiveness are.

I presented the version control segment at this and the previous workshop, using Mercurial, EasyMercurial, and Bitbucket. It was a bit seat-of-the-pants the first time around, but had settled in a little the second time. Even so, it’s a very ambitious segment: we have two hours to go through a real, working editing process using the EasyMercurial user interface, Mercurial command-line, and Bitbucket web site, working with others and resolving merge conflicts, for an audience who have largely never encountered version control software before. When it works out, of course, it’s very satisfying and we had generally encouraging feedback from the attendees in Newcastle. (If you were there and have any thoughts on how to do better, please do get in touch.)

The Software Carpentry project, started by Greg Wilson around fifteen years ago, is an open source scheme that anyone can get involved with. The Newcastle workshop was the latest in a long line of presentations of Software Carpentry material around the world, but it was the first in the UK to have been given without having Greg’s experience on hand (he lives in Canada) and thus was something of a learning experience for the presenters as well as the participants.

That’s sort of the idea, though, so if you know your onions and like the idea, you might like to try helping out in a future workshop.

See the brief report from my project, or feedback from attendees.