Contemporary philosophy and coding

The other week I was talking to a recently graduated, poker-playing philosophy major who is trying to learn about computers as he looks for a job. (We were introduced by a mutual acquaintance who, I gather, had a very easy time deciding the two of us would find something to talk about.) The conversation turned to the ways in which philosophy can prepare one (or not) for work with computers. He thought my remarks on the subject were more interesting than I thought they were, which prompted me to think a bit longer about it. I had surprised my interlocutor by claiming that philosophy was quite directly relevant to coding; further reflection not only reinforced that belief but revealed a further, surprising aspect of that relevance.

Though I wouldn't claim that studying philosophy helps you learn to code more than studying computer science or math does, I'm very confident that the connections are real and deep, and go beyond the basic observation that the clear thinking demanded by good philosophy pays off in any subject. Studying the mechanisms of language is now a central and unavoidable task for a student of philosophy. I've spent long hours spent thinking about sense vs. reference, the relationship between utterances and states of affairs, what makes something a complete statement, and so on. I imagine anyone who has done this will have an easy time understanding, say, the distinction between passing by value and by reference.

I first learned the lambda calculus (from this book) in a philosophy course, and that's directly applicable to coding even if you aren't doing heavy-duty functional programming. Distinguishing various functions of verbs of being prepares one to use distinct symbols to check for equality and to make things equal. Logic courses, required in many philosophy programs and encouraged in many more, are of obvious importance. And, of course, UX is largely just a subfield of applied epistemology, and various ethical subjects inform every part of a coder's work...

...But what surprised me at the end of this train of thought is that it's not just the cognitive strengths trained by philosophy or even specific healthy patterns of thought that help a coder. Even the discipline's more problematic features have helped me. If anything, contemporary philosophy is too focused on language, but that focus has been a great benefit to my career (see above). I've also long suspected that academic philosophers have started to value logical consistency too much, and that we might be better off if we asked philosophers to spend a little less time worrying about the ways their definitions interconnect and a little more time thinking about whether those definitions are worth worrying about in the first place. Again, though, this is plausibly a benefit to those of us who now spend lots of time thinking about the properties of unusual data structures. And reading technical documentation is easier when you've read lots of journal articles that are optimized, even over-optimized, for proving and communicating logical features of a theory.

Some of those remarks are quite controversial (though I'm far from alone in believing them, and would be willing to defend them at length). Notice, though, that even if I'm wrong to think that some of these are problematic features or emphases of the discipline, those features and emphases would still be useful training for coding. Of course, I do believe that philosophy is a wonderful and noble thing, that academic philosophy is in many ways flourishing and at its historical peak of quality, and that philosophy's best features help its students in many careers, including mine. But the value of philosophy to computer work seems to me slightly more independent of the quality of the state of the discipline than I would have expected.