You're a Wizard, Harry

23 December 2020

So… What do you actually do in computer science?

I currently study undergraduate computer science at the University of Cambridge, and this is by far one of the most interesting questions I get asked on a regular basis. Most computer scientists (“compscis”) hear this question from their friends and family often, but the reactions are very mixed.

There are certainly some who find this question frustrating, and I don’t blame them. Spending your entire career on a topic and then being asked to summarise it in a punchy one-liner can be a little deflating.

There are also some who take great glee in adding to the mystique around computer science by using a revolting number of references to ‘wizardry’ and ‘magic’.

And there are some who simply have a light joke at their friend’s expense for not knowing any keyboard shortcuts, or not knowing how to log into their Wi-Fi.

I don’t find any of these options very useful though.

It is true that computer science is a quite poorly understood field. For example, what is ‘the cloud’? How does your phone store all your photos, even when it’s turned off? How does Google make money if its users don’t ever pay for anything?

Frankly, it verges on bizarre that so few people have any idea why or how the computers which run our government, communication, entertainment, hospitals, military, businesses and schools work. Every day, we place our faith in anonymous engineers to handle our finances, our private information and more without a second thought.

Of course, we place faith in things all the time. But when we drive over a bridge or get injected with a vaccine, we can reassure ourselves by imagining all the physics simulations the architects must have done, and imagining all the trials the doctors must have performed to approve the vaccine. There is no such reassurance for most people when it comes to technology, as there is no groundwork understanding of the subject to base their thinking on.

It begs the question… If no-one apart from compscis know how computers work, how can anyone apart from compscis be to blame?

If computer science is truly changing the world (and I happen to think it is), it is up to their creators to explain to the world why it is important and worthy of people’s time.

My hope for this website/blog/diary (?) is that it can add to this conversation in a small way. Hopefully, anyone who is curious about computers will be able to find something here which is interesting to them. Nothing here requires any background knowledge, and you won’t see a single line of code. My goal is that people can engage meaningfully with computer science here, and then crack on with whatever else they were doing without any fuss.

And so, coming full circle, what do I actually do in computer science? Here are a few of the explanations from my arsenal that I usually give.

The punchy (almost) one-liner

Computer scientists don’t really code that much, but they do do pretty much everything else that makes that code work - designing the programming language, designing the hardware for the code, researching new fancy things which could be coded in the future (like AI, blockchain, etc), and more. They make computers faster, more power efficient, more secure, safer, and easier to use.

A hypothetical

Imagine opening your phone, opening Facebook, then ‘liking’ a video.

Here’s my question: What is the power button doing in your phone? How does your phone know where all the apps should be on the screen? How does it know you just tapped on the Facebook app? How can your phone reach across the world to get an video, then show it to you? How does your phone even know where to go to get the video?

Computer scientists think about all of these questions. They think about how to turn a computer off and on to save energy. They think about how to store huge amounts of data in one place. They think about how to create touch-screens and other new ways to interact with the computer. They think about how to render images like app icons on a screen. They think about how to make sure devices can all use Wi-Fi simultaneously without interrupting each other. They think about how your phone knows “where” to request a page on the internet. They think about what it means to ‘log in’ and how to protect every user’s data. They think about how to design a service which billions of people all use at once. They think about how to represent a video as 1s and 0s and send them down a copper wire. They think about how to announce to the whole world when something tiny happens like ‘liking’ a video.

A quick analogy

Software engineers are a bit like doctors. They are both on the front-lines of their field. Doctors are appyling their knowledge to heal people. Software engineers are making apps and tools to help people. But behind the scenes for doctors there is a whole world of research and infrastructure. There are people making new medical discoveries in labs. There are people trying to improve the manufacturing process for drugs to make them cheaper or more effective. There are people running the logistics of hospitals to make sure there are enough doctors in every ward, and enough equipment for every patient.

Behind software engineers, there is a whole world of computer science. There are people designing new chips and other hardware that can run faster than before. There are people designing systems which let you store data in the cloud and access it anywhere around the world. There are people creating the programming languages that software engineers use to do their job and create new apps. There are people designing systems to encrypt data so that you can be sure that your data stays private.

Life as a Lab Rat

How you are being experimented on with A/B tests

Why Does JPEG Look So Weird?

And why do we hardly ever notice?