With the recent holidays, along with a hint of flu season, things have slowed down a bit, and I’ve finally had some free time to go back and watch a few of the talks I missed at RubyConf this year (recordings are available here). Notably, I also took the opportunity to re-watch Jonathan Dahl’s talk on Aristotle and the Art of Software Development. For anyone who missed it, I highly recommend you check it out. It was, in my opinion, one of the best talks of the conference.
You may be wondering what philosophy has to do with writing software. Watch the video. Listen to what Jonathan has to say. I believe fairly strongly that questions of how we think, how we communicate, how we interact with one another, etc. will become increasingly, and overshadowingly, important as the software industry continues to grope its way toward some sense of what it is we’re all doing, and what it means to do it well.
“While I’m sympathetic to XP, the fact is that you can follow all these principles and you can still write bad code, and you can still have a project fail”
Good point, but it’s more interesting (disturbing?) to me that people feel they need to make it, and that others watching (presumably) take this as noteworthy.
I wonder whether the “good” that we have from Agile could have been sold in a more realistic way: look, do these things and you might raise your project success batting average by 10%. Or: you’re good. Do these things and you might be even more effective.
But maybe plodding skepticism and make-it-just-a-little-better doesn’t sell an idea. People want identifiable heroes, single-cause explanations, and revolutions.
=======
re: utilitarianism, these are all solid points, but it’s also true that something like utilitarianism is deeply ingrained in how we think and reason (not sure if this is cultural or biological or both). So you can talk all day about its problems, but at some level we just can’t get away from it. And the truth is it’s a great tool to have in the toolbox.
The arguments against utilitarianism in code kind of don’t wash: being content with local maxima/lack of ambition != utilitarianism. The architects of the Final Solution – if we’re to agree that this is a manifestation of utilitarianism – weren’t content with local maxima.
=======
But I couldn’t agree more with his conclusions – what’s involved in good programming is best compared to Aristoltean virtues.
For anyone interested in digging a little deeper here, check out “The Elements of Moral Philosophy”, well-written and easily consumable on a long-ish plane flight:
http://www.amazon.com/Elements-Moral-Philosophy-James-Rachels/dp/0073125474/ref=pd_bbs_1?ie=UTF8&s=books&qid=1231033690&sr=8-1
January 4, 2009 at 1:54 am
I can’t remember where I read this (probably Pinker) but it’s been pointed out that Aristotle’s physics – that objects are pushed through the air when thrown, for instance – was similarly the prevailing wisdom for something like 1000 years. People laugh now, but what he put forward is pretty close to how people think of physics intuitively.
I wonder whether 100 years from now, after we’ve mapped the brain from top to bottom and understand the material basis for things like emotions and consciousness and reason, whether what we call code virtues today will have some obvious analogue (or root) in how the brain “thinks”. DRY – you can be taught DRY, but I think we call this a virtue because it’s visceral (not intellectual – not in any important sense) (e.g. DRY code makes me feel better). And if it’s visceral, it’s at least decent conjecture to say it might have some evolved root in the brain.
For a totally mind-blowing example of what I’m getting at, but in language, check out Pinker’s discussion of what researchers have found about mentalese at the beginning of [The Stuff of Thought](http://www.amazon.com/Stuff-Thought-Language-Window-Nature/dp/0143114247/ref=pd_bbs_sr_1?ie=UTF8&s=books&qid=1231123077&sr=8-1): consistent grammar rules that are built into the brain but can’t be explained by a generative grammar, expose themselves in everyday speech, across languages, and point to how the brain innately considers physics and objects and the social world.
January 5, 2009 at 2:40 am
Adam: thanks for the post. I enjoyed talking at RubyConf and look forward to another good conversation. (Actually, I’ll be in the Bay Area in April, so maybe we can get together then.)
Steve: what you’re describing (cognitive philosophy? evolutionary psychology?) is a really interesting field, and I wish I knew more about it. But from a philosophical perspective, I think it’s helpful to take a page out of Kant’s book and realize that however much we study the act of human thinking, we’re always using the brain to look at the brain. So there is a level of understanding that we can’t really cross, because we can never look at the mind from outside of the mind.
Not to say this study isn’t profitable – it is, and there is a lot that we can learn about ourselves.
January 7, 2009 at 4:05 am
“however much we study the act of human thinking, we’re always using the brain to look at the brain. So there is a level of understanding that we can’t really cross, because we can never look at the mind from outside of the mind.”
If you accept those terms, then you’re right, but I don’t.
Dennett would vehemently disagree ;-) I put myself in the materialist camp too, but only because it feels the most right, not because I really know any better.
We understand what were formerly grand mysteries, what’s so special about this one? All sorts of formerly magical stuff turns out not to be magic. Why should the mind be different? It’s language and intuition that are limiting here: the contrast of “mind” vs “brain”.
Wright and Dennett debated this to some extent, advance to 29:45:
http://video.google.com/videoplay?docid=-3133438412578691486
January 7, 2009 at 6:54 am