Monday, 18 August 2008

Welcome to Programming for Scientists!

[caption id="attachment_4" align="alignleft" width="225" caption="Photo from ButterflySha"]Welcome to Programming for Scientists![/caption]

Programming for scientists (prog4sci) is a blog for scientists and anyone else who writes software.  But it isn't "just another blog about programming".  Far from it!  This blog will be about building better (scientific) software.  We're making two important distinctions here.  The first is that developing a piece of software is about much more than just writing the code, important though that is.  The second is that for many people, scientists for example, building software is something they do in order to achieve their primary goal.  What we mean by this is that scientists' primary goal is to do great science.  But to do this, they sometimes need to write some software.  So while they need software development skills, what they really need are the ones that will allow them to do a good job as quickly as possible so they can produce more good science.  We suspect there are lots of people for whom this is true, not just scientists.  In short, this blog is aimed at anyone who needs to write software in order to get something done.

The aim of this blog is to help the reader build better software, but to do so bearing in mind that the ultimate goal is to produce as much great science as possible.  This doesn't mean coding as quickly as possible, which produces buggy, horrible software; it means drawing from the huge body of software development knowledge in order to minimise the amount of time it takes to build reliable software that can be used confidently to do science.

We won't be telling you the "best" way to do anything (there's usually more than one) and we won't be handing down stone tablets saying that you must do something without good reason.  What we will do is present a range of techniques, thoughts and considerations and try to explain why we think they're helpful.  You should use somewhere between none and all of these, depending on what you find most useful.  We're not here to tell you how you should go about developing your software, we'd just like to suggest a few things that other people, ourselves included, have found useful.

Some of these posts are going to end up as chapters in a book.  "Prog4sci" started life as a 2-hour workshop and we quickly realised that it would be fun and useful to turn it into  a book.  Part of the reason for this blog is to expose sections of the book to the constructive criticism of the population of the Web; we think this will make the book much better in ways we couldn't manage on our own.   We're looking forward to it and hope that people will find it useful!

This blog will also be a place to go beyond those book-chunks.  We're going to post about anything we think might be helpful,  expand on more specialist aspects, track down new subject areas that'll be of use and do things like review books.  We're going to try to keep this as language-agnostic as possible, both to help the maximum number of people and also because we think there are a lot of good practices that really are language-independent (commenting your code, anyone?).

Finally, who are "we"?  We are Ben and Rich.  Rich is an academic scientist who spends a lot of time creating new methods for extracting knowledge from data (and writing the corresponding code).  Ben is a professional computer games programmer who's first degree is in science.  Between us, we hope we've got useful insights from both sides of the fence.

We hope you find our musings useful and we look forward to reading your comments!

Ben + Rich

1 comment: