Computer Science · Programming

How do you think programming and philosophy relate to each other?

Bogdan Mirkac Electronic engineer / business development manager

October 10th, 2016

This question might sound silly to some of you but I have few friends whose major was philosophy and they turned out to be very successful programmers. Also, there is a subject at the Oxford University called “Computer science and philosophy”. How do you think programming and philosophy relate to each other?

Tim Boudreau Consulting Product Manager / Software Engineer at Oracle Labs

October 10th, 2016

Training in philosophy is, or at least can be, good training in
  • Critical thinking
  • Recognizing when a specific problem is a case of a more general problem
  • Identifying and rigorously defining what the problem actually is that you're trying to solve
  • Understanding systems of categorization and at what point they stop working
  • Detecting logical fallacy

All of these are very useful skills for a programmer.

Take, for example, a problem I've seen in consulting customers' systems: A person signs up with an email address. That goes into a database, and things related to that person get related via that address - it gets used as a primary key in the database. It seems logical and simple. And it's going to lead to all sorts of trouble.

What's happened is someone has just made a philosophical decision which, if they had the background, they would realize is wrong - they decided that a person is an email address.

Then one of their customers changes their email address. Or they have more than one address. Or new forms of ID like mobile phone numbers need to be used, and the system can't accommodate those.

A saner approach would be that a person is a person, and they have addresses of various types, and there are rules for different types of addresses. But you'd be surprised how many systems are out there that took the naive approach and had to be very expensively reworked to accommodate what would have been obvious ... to a philosophy major.

Google even had this problem - for a number of years, Google apps - using GMail for your company's email - was very painful if you already had a personal GMail account, involving lots of logging out and back in, because they'd built their infrastructure on the (now false) assumption that a person had exactly one identity in their system, and now a person could have more than one. I don't know how much it cost them to fix that, but I'd be willing to bet you could fund a few startups for a few years for that price.

So that sort of thing is why philosophy is a useful background for programmers - there are fundamental problems to solve at the design level that no amount of CS training is likely to address - you can be highly skilled at writing the wrong thing very well, but you also need people with the skill set to know when it's the wrong thing and articulate why.

Herbert Daly at University of Bedfordshire

October 10th, 2016

Short answer from Fred Brooks' Mythical Man Month:

Finally, there is the delight of working in such a tractable medium. The programmer, like the poet, works only slightly removed from pure thought-stuff. He builds his castles in the air, from air, creating by exertion of the imagination. Few media of creation are so flexible, so easy to polish and rework, so readily capable of realizing grand conceptual structures. (...)

Scott McGregor Advisor, co-founder, consultant and part time executive to Tech Start-ups. Based in Silicon Valley.

October 12th, 2016

My undergraduate degree is in Philosophy.  My specific area of concentration was Logic and Linguistic philosophy.  

The early 1970s was a time when "computer science"  was new, people of about the same age as I am include Steve Wozniak, Steve Jobs, Bill Gates, Paul Allen, Bill Atkinson, others who helped birth the PC. Between 1969-1975 were all nerdy high schoolers, who taught ourselves programming, and tinkered on time sharing machines when ever we could get access.

Understanding Linguistic philosophy proved as useful to me as studying pure logic,  as it made me intensely aware of how the epistimology and ontologies we used to describe the world determine what is sayable and what is not sayable, or what is just so difficult to say precisely that it isn't worth it.   When you can look at problems from this level of abstraction it is much easier to see how thoughtless reliance on the precision of computers leads to bad results, because all the assumptions of the programmers determine what results are possible.

The boundaries between knowledge specific to individual disciplines are eroding and multidisciplinary thinking is more common now than it was then.   At the same time, the pursuit of rigor and needs of academic institutions has often caused the academic boundaries to become more clearly defined - at least on an institution by institutions basis.