How Computer Scientists Harm the Tech Industry

How Computer Scientists Harm the Tech Industry

There’s a toxic behavior in the tech industry where it’s assumed that anyone who wants to do any programming must first go through rigorous computer science education or else any code that this person writes should be given the same attention a vegan person gives to meat products.

Here’s why this is hurting our industry and what to do about it.

It makes sense because computer scientists invented computers, so anyone who wants to program one needs to have the same knowledge. Right?

I mean, look at software you’re using right now. Mac OS was invented by a computer scientist named Steve Wozniak, Windows by one called Bill Gates, and GNU/Linux by Richard Stallman and Linus Torvalds respectively.

As a Python programmer, I’m aware that Guido is a computer scientist who invented the language and I’m glad that he was able to come up with such a language thanks to his computer science education.

Computers as we know them today would not exist without CS education but should everyone who wants to tinker with computers be forced to go through it?

The true purpose of Computer Science

Do you notice anything particular about the software products above?

If you don’t, then let me tell you.

Building an operating system requires vast knowledge. You need to understand computer organization, data structures, algorithms, probably some electronics, assembly language, and I don’t know what else because I don’t know how to build an OS.

A programming language like Python requires knowledge about compilers, language design, parsing, finite state automata, and I don’t know what else because I can’t build a language myself.

So, am I a dumb person pretending to be a programmer because I can’t code my own OS or design my own language?

Maybe, but check this out. Why did these people create OSes and languages anyway? Why did Guido decide to create Python in C instead of allowing us to write code in C itself?

The goal of computer science is to teach someone how to build stuff so that other people don’t have to.

Forcing Computer Science onto people

Let’s take Calendly for example. It’s a web app that allows people to schedule appointments easily. How much computer science is needed to build such an app?

You might argue that Calendly uses arrays and hash tables behind the scenes, so, obviously any programmer who works on the backend must have gone through 4 years to get his CS degree or his code would be considered heresy.

But did the programmer create their own arrays and hash tables from scratch or did they use what the language designer provided?

Take a look at Python for example. To use an array, I do this:

my_stuff = ['something', 'another thing']

To use a hash table:

appointments = {
  "2022-09-02": ["meet bob", "install openbsd"],
  "2022-10-12": ["meet alice", "install systemd/linux"]

Maybe I want a simple queue that users can easily pop appointments from:

from collections import deque

next_appointments = deque()

How much computer science is needed to use these data structures?

Do you really think that the Python language designers would go through the trouble of implementing efficient data structures if in practice everyone would be required to implement their own?

Why is it then that anyone who wants to get into programming is forced into computer science?

Personally, I love programming but I don’t care about computer organization, electronics, language design, or any of the other low level stuff. Some people love them and I respect that.

But why should I be forced to like the same things that computer scientists like? Linus Torvalds for example, doesn’t know how to install Debian or how to code a website but he believes that anyone who codes in anything other than assembly or C is a brainlet who shouldn’t be called a programmer.

Why can’t we all get along? The majority of Linux users use it to host web servers. Meaning that Linux would never have gotten this popular if web developers didn’t exist. And yet, a web developer is considered inferior to a kernel developer for some reason.

If I have a brain tumor, I won’t know about it unless a general practitioner is able to detect it. After that, he will refer me to a specialist who know how to perform brain surgery. At this point, I doubt that the brain surgeon would tell me that the general practitioner is a dumbass who shouldn’t call himself a doctor. This kind of behavior is only acceptable in the tech industry.

I suspect that if programmers had to use C or assembly to build web apps then tools like Calendly would never exist and computers would never have improved to the extent they have so far.

There’s a reason why Rasmus Lerdof used C to create PHP. The goal was to write C so that other people don’t have to.

Great software written by non computer scientists

It’s a given that CS is needed to write a compiler or other tools that allow people to code at higher levels of abstraction.

But what about software that don’t operate at such a low level?

Pretty much any web app you see doesn’t require any CS. The exception is when the app starts receiving 1 billion requests per second, in which case a computer scientist needs to step in to design a language optimized for this type of workload. Much like how Go was written to solve scaling problems at Google.

Does this mean that non-computer scientists can only build trivial software that shouldn’t be take seriously?

Look at the figures. Web apps make many more millions in revenue than kernels and programming languages. It’s clear that such software should be taken very seriously.

Now let’s look at two pieces of software that could be considered complex enough:

  1. Django. Written by a musician and a student.
  2. Ruby on Rails. Written by a freelancer with no CS education.

I consider both of them to be of top quality on par with many other complicated projects like the Linux Kernel because they’re both used to solve problems worth millions of dollars. Shopify for example, would most likely not exist without RoR.

The creators of Django lacked so much CS knowledge that they were unable to write an optimized parser for the Django Template Language. However, that didn’t stop thousands of companies from adopting the framework because the rendering is fast enough for the majority of workloads.

Stop the elitism

Programming is easy, especially web development. It’s so easy that people (I suspect computer scientists) try hard to make it look hard. For example, instead of adding text in the <title> tag of an HTML document, in some setups, you first have to install a package called react-helmet that will allow you to edit the <head> part of your javascript rendered HTML document using some kind of Domain Specific Language.

That’s why there’s nothing to be elitist about. If any community should be elitist it should be the brain surgery community but judging by the content on online forums, they seem to not be.

Most computer scientists sit on their asses doing code review instead of coding and yet they act like gods.

We need to understand that different programmers are good at different things and show respect to everyone. If someone doesn’t want to learn how to build a compiler and has no interest in learning such stuff, then there’s no need to berate that person.

Leave the computer science to people who need the knowledge in their day-to-day work. There’s nothing worse than having to study CS and then get a job writing HTML, CSS, and Javascript to build web forms that steal people’s information.