Is philosophy relevant for programmers?

24 Jul 2012

Many programmers and engineers I’ve met say when asked about philosophy:

Could it be that it’s the engineering point of view? The view that some scientist (tool maker) cooks up the tools that the engineers use? Thus: truth and reality is simply handed down from a more trustworthy source.

Science picks up the tab

Science ( trademark of modern civilization ) has thus replaced philosophy ( funny thoughts by bearded old men ). However, the philosophy taught in schools is mostly focused on aggregating history into manageable chunks. It’s simplified history about thoughts spanning circa 2500 years.

I like the below explanation of philosophy:

Anthony Quinton, in T. Honderich (ed.), The Oxford Companion to Philosophy (Oxford University Press, 1995), p. 666: “Philosophy is rationally critical thinking, of a more or less systematic kind about the general nature of the world (metaphysics or theory of existence), the justification of belief (epistemology or theory of knowledge), and the conduct of life (ethics or theory of value). Each of the three elements in this list has a non-philosophical counterpart, from which it is distinguished by its explicitly rational and critical way of proceeding and by its systematic nature. Everyone has some general conception of the nature of the world in which they live and of their place in it. Metaphysics replaces the underlying assumptions embodied in such a conception with a rational and organized body of beliefs about the world as a whole. Everyone has occasion to doubt and question beliefs, their own or those of others, with more or less success and without any theory of what they are doing. Epistemology seeks by argument to make explicit the rules of correct belief formation. Everyone governs their conduct by directing it to desired or valued ends. Ethics, or moral philosophy, in its most inclusive sense, seeks to articulate, in rationally systematic form, the rules or principles involved.”

From the wikipedia article about philosophy

Do you really need it?

Thing is, you still need to think on your own. You still need to determine what you want to do with your life. What reality or world view you want to have. As programmers we use language and abstractions as tools. In order to use these in a “constructive way” (not jiggle things randomly until they work), you need to think and learn.

Evaluating software

In many cases you need to evaluate things on your own. You will encounter different entities that try to get you to use different tools and different libraries. Or will you blindly let companies shove their solutions down your throat?

What kind of shift of reality do you experience when you change environment? For instance change:

When shifting between these environments, it’s also a shift in how you solve problems. Different programmers value different writing experiences. Compare the static typing of java to write client applications in Google Web Toolkit to scripting using JavaScript. It’s a reflection of how you think about programming.

How do you evaluate a library? If it’s commercial, you try to guess how long it will be maintained by the company making it. If it’s open source, you try to ascertain how well maintained it is. If it is currently maintained et.c.. You try to guess the quality of the library. Also there is such aspects as cost and license. Can you afford to use the library? Does the library have a licence so that you can use it together with your proprietary code base?

You are not a simple consumer of tools

As a programmer, you should be willing to write your own library if that’s what you need. You should be able to evaluate what tools to use when doing your work. Programming is the act of creating text that can be used as tools. You are a toolmaker and a tool consumer. Builder and toolmaker. You are an author and a reader. It helps to think.



Do you want to send a comment or give me a hint about any issues with a blog post: Open up an issue on GitHub.

Do you want to fix an error or add a comment published on the blog? You can do a fork of this post and do a pull request on github.