Home » Blog, Featured

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

27 January 2010 396 views 8 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]

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...

  • http://friendfeed.com/cboettig Carl Boettiger

    It’s really fantastic to see this. I first encountered concepts like version management, literate programming, and style checkers talking to individuals in high-performance computing in physical sciences, and have since been amazed both at how helpful the concepts and tools have been for me and how absent they seem to be from both the education and practice of scientists in biological fields. I’ve been trying to get a short tutorial on these things started at my institution, beginning with my lab group. Any suggestions?

    This comment was originally posted on FriendFeed

  • http://friendfeed.com/cavlec D0r0th34

    This comment was originally posted on FriendFeed

  • http://friendfeed.com/cameronneylon Cameron Neylon

    Definitely feel free to pass on as appropriate. Carl – I’d be inclined to talk directly to Greg about this kind of thing. If you’re institution was interested in supporting the running of the course there may be ways of making that happen. And he can certainly point you in the direction of the best advice and people on the subject in general.

    This comment was originally posted on FriendFeed

  • 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