There’s the term Computer Science, which puzzles me – is this field a science? Before I go on at probably great length, I feel it’s important to say a few things to set the context. The most important one to me is: it doesn’t matter. You can be good or bad at it whatever you call it; you can use it to make the world a better or worse place regardless of whether it’s a science or not. Also, my Dad did a Physics degree, so I think this has made me a bit snobby about the term science, as something like Physics is my benchmark.
For me, the key thing that makes something a science is the scientific method:
- Observe the world;
- Make a mental model that explains the observation;
- Use the mental model to make a prediction about something you haven’t observed yet;
- Do an experiment to test your hypothesis;
- Treat the results of the experiment as a fresh observation, and repeat from the top.
There are many things that are important, interesting, useful etc. but not a science. Maths, music and love are three that spring to mind immediately.
There are bits of many other fields that overlap with computing. The ones I can think of are:
- Maths – things like logic, lambda calculus, formal methods, complexity theory, finite state machines and the foundations of databases, plus more obvious things like numerical methods;
- Linguistics – regular expressions and compilers, plus speech and natural language processing;
- Psychology – anything involving interactions with people, like user interfaces but also how to structure and manage projects (where the people in question are the programmers);
- Philosophy – ethics and artificial intelligence;
- Engineering – solving for many constraints at once, efficiency, scalability, robustness, etc.
If you took away everything from that list, I’m not sure how much you would have left as a distinct discipline, let alone getting to worry if you call it a science! This is one of the things that appeals to me about the field – it branches out into so many different areas of thought and life. You could be a games developer worrying about the physics of smoke particles, or someone working on control software for a medical implant worrying about reliability, security and scarce resources, or doing something else entirely.
The thing that made me pause in my Computer Science != Science tracks is lean methods. One of the main things with lean development is to create and test hypotheses, which seems to tick the boxes of the scientific method. I think that this is great, but I don’t think it’s quite the same as science, because of the nature of what knowledge you uncover.
In something like Physics, Newton’s theories about gravity and motion applied anywhere in the universe – they pulled the apple from its tree, they kept the Moon around the Earth and the Earth around the Sun. They were only supplanted when Einstein came along with relativity, but I would argue that relativity didn’t invalidate Newtonian stuff; rather Einstein showed how Newtonian stuff applied only in the special case of our day-to-day existence and was actually relativity with all the parameters that govern weirdness dialled all the way down to normal. (No time dilation or length contraction at day-to-day speeds.)
I don’t think the same is true with computers. The bank mainframes running 30 year old COBOL programmes aren’t what you would produce today – you would come up with a different hypothesis. I know that some of the fundamentals would be the same, but so much would be different that I think it’s actually a different thing. Similarly, the search engine hypothesis you come up with could be Google, DuckDuckGo or Baidu (all at the same time). I don’t think that any one of these supplants the others – they seem to be equally valid hypotheses.
Like I said at the beginning, I don’t think that this actually matters! Computing can’t really complain about not having the status of being a science when it has basically taken over much of the world (for good or ill). Neither how good you are at your profession, nor what difference you make to the world, depend on what you call it.