Daniel Lemire's blog

, 2 min read

Don´t study latin if you want to become a better programmer

I used to think that knowledge was strongly transferable. I believed that learning physics could make you a better mechanic. I believed that learning mathematics could make you a better physicist or computer scientist. After learning a lot of physics and mathematics, I realized that I still found it difficult to write good software, learn about mechanics, design circuits, or understand economics.

This has fundamentally affected my worldview. For example, I no longer take for granted that studying theory can be useful in practice. For me, this is a radical change from my twenties when I believed that computer science wasn’t worth studying since it was just “applied mathematics”.

Since I no longer believe that knowledge is strongly transferable, I have become critical of schooling in general. I used to think that you got smarter with each new college class you took. So I took a lot of them. I took about 30% more classes necessary to graduate in college. In high school, I took extra mathematics classes outside of the regular schedule (by choice, I don’t even think my parents knew). Thus I know a lot about useless topics. Some of these classes have turned out to be useful. But less because of the knowledge that they have given me, and more because they have built up my confidence. For example, all my training in abstract algebra helps me a bit when I want to study random hashing. How much did it help? Well, at some point, I realized that I needed to brush up on Galois fields. I picked up an undergraduate text, read one chapter, and I was good to go. That is, I knew that I could learn quickly about Galois fields if needed.

However, taking dozen of classes is an expensive way to build up your confidence. A better way would be for you to learn a few difficult things on your own. For example, I hardly know anything about electronics and I never took any class in it, but I know that I could become good at it because I have mastered similar skills. In any case, because I believe that knowledge is only weakly transferable, I favour learning practical skills that are immediately useful. If you want to become a great software engineer, learn to program better… don’t study latin.

Given a chance, many parents would cram their kids’ schedule with as many academic classes as possible. The hidden assumption is that kids get “smarter” as they take more classes. But this is almost surely wrong. Of course, there are clear benefits to taking swimming lessons (you learn to swim!) or karate lessons (you learn to fight!), but taking an extra mathematics class might not help as much as you think.