Home » Blog, Featured

Everything I know about software design I learned from Greg Wilson – and so should your students

27 January 2010 2 Comments
Visualization of the "history tree" ...
Image via Wikipedia

Which is not to say that I am any good at software engineering, good practice, or writing decent code. And you shouldn’t take Greg to task for some of the dodgy demos I’ve done over the past few months either. What he does need to take the credit for is enabling me to go from someone who knew nothing at all about software design, the management of software development or testing to being able to talk about these things, ask some of the right questions, and even begin to make some of my own judgements about code quality in an amazingly short period of time. From someone who didn’t know how to execute a python script to someone who feels uncomfortable working with services where I can’t use a testing framework before deploying software.

This was possible through the online component of the training programme, called Software Carpentry, that Greg has been building, delivering and developing over the past decade. This isn’t a course in software engineering and it isn’t built for computer science undergraduates. It is a course focussed on taking scientists who have done a little bit of tinkering or scripting and giving them the tools, the literacy, and the knowledge to apply the best of knowledge base of software engineering to building useful high quality code that solves their problems.

Code and computational quality has never been a priority in science and there is a strong argument that we are currently paying, and will continue to pay a heavy price for that unless we sort out the fundamentals of computational literacy and practices as these tools become ubiquitous across the whole spread of scientific disciplines. We teach people how to write up an experiment; but we don’t teach them how to document code. We teach people the importance of significant figures but many computational scientists have never even heard of version control. And we teach the importance of proper experimental controls but never provide the basic training in testing and validating software.

Greg is seeking support to enable him to update Software Carpentry to provide an online resource for the effective training of scientists in basic computational literacy. It won’t cost very much money; we’re talking a few hundred thousand dollars here. And the impact is potentially both important and large. If you care about the training of computational scientists; not computer scientists, but the people who need, or could benefit from, some coding, data managements, or processing in their day to day scientific work, and you have money then I encourage you to contribute. If you know people or organizations with money please encourage them to contribute. Like everything important, especially anything to do with education and preparing for the future, these things are tough to fund.

You can find Greg at his blog: http://pyre.third-bit.com

His description of what wants to do and what he needs to do it is at: http://pyre.third-bit.com/blog/archives/3400.html

Reblog this post [with Zemanta]

  • bill_roberts

    I strongly agree with this and I hope Greg gets his funding. He also put me on the right direction in software engineering back in around 1988 when I was an undergrad at Edinburgh Uni and Greg was studying for a PhD and dispensing his wisdom to the group of us hacking away on various parallel computing kit.

    Though I'm ashamed to say that, typical of most computational scientists, for the next ten years or so I mostly shambled along as a skilled amateur in the world of programming. It was only when I took a job at a 'real' software company 10 years ago that I learned about how software engineering ought to be done. There is a false assumption amongst many numerate scientists (and I was one of them) that being able to write a program that (mostly) works is sufficient!

    Apart from the rather important question of quality, a little investment in learning about testing, version control etc would save a lot of time in the long run.

  • Pingback: The Third Bit » Blog Archive » Cameron Neylon Says Nice Things()