Quite an interesting post and metaphor. I'm sure that someone is going to complain and say you've got it all wrong, but I think you've found a useful way of thinking about programming at the macro level. I started programming as a "chemist" and have more recently moved over to programming as a "biologist". I wonder what "sociologist" programmers will (or do) develop with?