Computer Programming as Liberal Arts

A certain minority needs to learn to write, but it is silly to think that this will be of interest to the majority of the population. Do you expect them to write for a living? How many writers can society employ? What would their job prospects be? And, in any case, it is far from proven that the illiterate classes even want to learn to write. The current teach everyone to write movement is a fad.

I am pretty sure I could find some 19th century conservative writing something like the above.

Consider this version:

A certain minority needs to learn to write code, but it is silly to think that this will be of interest to the majority of the population. Do you expect them to write software for a living? How many coders can society employ? What would their job prospects be? And, in any case, it is far from proven that the illiterate classes even want to learn to write. The current teach everyone to code  movement is a fad.

§

We do not teach people to read & write so they can be writers!

We should not teach people to read & write code so they can be coders!

§

Imagine living in the modern world without being able to read. Sure, you could get by (people do, even in the richest countries), but you would never really understand what’s going on. You are a foreigner.

§

Computer code is all around us, computer networks envelop us.

If you live your life without knowing how computers work, you are missing out, you are excluded from the conversation, you deal with a world in which you are a foreigner.

§

Learning how to code is not vocational, it’s liberal arts: part of the general education which is necessary to deal with the world

Advertisements

Why I develop open-source scientific software?

In my previous post about scientific software, I argued that it is not in your own personal interest to release scientific code. I argued that it is in society’s interest, but selfishly, you should not do it.

Now, you could accuse me of being a hypocrite (This would be a very modern form of hypocrisy, whereby we behave altruistically while professing to be selfish.) But I don’t think I’m a complete hypocrite.

I started writing open-source code well before I started doing science (when I was in high school) and I initially saw research, to some extent, as a continuation of the same ethos: you do a mix of what is helpful to others and what is interesting to you personally, you share, and you discuss it in frank and open ways (the open source world can be pretty harsh, but it is about the issues).

I once tweeted that the

I believe that the single biggest reason why scientists do not make their code generally available is that they are ashamed of it.

— Luis Pedro Coelho (@luispedrocoelho) August 23, 2012

This was a tweet and it was written in a way targetted to that medium and my twitter persona is often ha ha, only serious.

This led to some more discussion, which @iddux (Iddo Friedberg) captured for posterity on his blog (see also his follow up).

What I did not make clear at the time was that I was also talking about myself.

Releasing code publicly is a commitment mechanism to make myself write better code.

Look at my public code: it is well testedwell documentedrevieweddiscussed.

I wish my private code was always like that, but it is not; it is of lower quality. This is why I try to make as much of my research code public as possible.

  1. When I release new release of the code and in less than 24 hours I get a bug report on something silly, it is more than slightly embarrassing.
  2. The fear of embarrassment is a great motivator.
  3. By releasing code, I write better code.
  4. Therefore, I release code.