Sunday, February 1, 2015

Three kinds of programmers...

Three kinds of programmers...  I've never seen the three categories called out so specifically, but this article does a nice job of defining them:
  • Computer scientist
  • Computational scientist
  • Software developer
I am most definitely in the latter category, though just for fun I've done a teensy little bit of actual computer science, and even a little bit of computational science (bond valuations) professionally.  But the vast majority of the programming I've done both professionally and privately is software development – the program I wrote was itself the objective.

One of the challenges I had when poking into the ClimateGate software dump was that those programs were written by computational scientists (the climatologists developing climate models).  That was a challenge because the programs were not written to be maintainable or even understandable by anyone other than the author.  They were also teeming with horrifying bugs, especially a tendency to fail utterly with the tiniest little issue in the inputs.  That sort of program rarely emerges from a software development shop, even as a prototype.  On the whole, I think the computational scientists could learn a great deal from both the other kinds of programmers.

Computer scientists, for me, are mostly a source of knowledge. Folks like Donald Knuth and James Gosling have, through their work, gave me the intellectual tools to be a better software developer.  I've mooched a great deal from that group.  Only rarely have I made any contribution at all to that body of knowledge – just a couple of email exchanges with real computer scientists where maybe I gave them an idea or helped them clarify a finding.  One thing I know for sure: the best computer scientists are also great software developers, and have done a good deal of it...

No comments:

Post a Comment