Tweeting about Computer Science education
I did send out a tweet today, and I realized only in retrospect that some people reacted very negatively on that. I am sorry about that, my intention was not to insult anyone, or their education.
This was the tweet, modified for formatting, the parenthesis contains a clarification that I also posted on Twitter.
Why do we educate computer scientists to get (obtain) developers?
We wouldn't educate structural engineers to get (obtain) masons…
I did not intend to insult anyone, but I can see why it did and how I did it.
It was not an attack on computer science education at all, it was merely a comment on that a lot of people seem to think that you should (and need to) study computer science to become a developer.
Dijkstra once commented,
Computer science is no more about computers than astronomy is about telescopes.
And he summarized my intention in a way that is a bit less hostile.
What I meant was that computer science does not teach you how to code, how to write documentation, how to use source control, write good issues, etc. I am not good at a lot of these things, and I doubt that if I wrote a thesis in computer science and got a degree in CS, I would magically learn these skills.
No, you need to learn that somewhere else. And no amount of datastructures or natural language processing or theory about compilers and so on will ever make you good at these skills which I consider essential before I would ever consider myself a good software developer.
I am not even sure if I am good enough to call myself a developer; I am at most a hacker. I might be naïve, but I think that if I practice, I will get better. With practice I think I can get to the level that I can call myself a software developer without feeling that I have serious holes in my skillset.
Even if I magically learned what was required for every computer science course here in Lund, I think I would still feel that I have those same holes. I would definitely be a better hacker and I would certainly be a much better computer scientist, but I still would not be able to write awesome documentation, or write eloquent code.
But computer science lecturers teach you about computer science, and computer science is not only about computers and code, as Dijkstra said.
Computer science is a wonderful branch of science that has produced an immense amount of value, and do not even consider that learning things will make you a worse developer, especially not computer science. Learning things will always make you better, especially as a software developer, and learning computer science is awesome.
But what Dijkstra said about Computer Science is not true about software development. Software development is about computers and people.
For me, a software developer is someone that produces tools that turn people into better people, more productive people, happy people; they turn theory into actual working programs, they are people who generate value. And only to some extent is it through writing code, some developers design the structure, some write documentation, some test applications, and so on.
To some extent is it through writing code, some developers design the structure, some write documentation, some test applications, etc. And in a lot of these situations, a computer science educations can be really helpful.
A small part of those skills are picked up at university studying computer science (or anything else) and if I could pick up the rest while studying, I would really love to, but I do not think that the current system of education is good at teaching all of these skills that are necessary for being a good software developer.
I am sorry if I offended anyone, if you think I am wrong, please leave a comment.
- Computer Science is a horrible name, in Swedish we sometimes call it 'Datalogi' which is a less horrible name.