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.

Published by

Daniel Lemire

A computer science professor at the University of Quebec (TELUQ).

12 thoughts on “Don’t study latin if you want to become a better programmer”

  1. I get your point and slightly disagree,

    Over-simplified example: coming up with the initial genetic algorithms optimisation is not about being the best Java programmer. It’s about knowing evolution theory and seeing how to apply it somewhere else.

    Diversity in knowledge is the most reliable way to shift your view and find something no one else saw.

  2. I agree with your premise but not your conclusion. Knowledge does appear only weakly transferable. I spent months reading what was essentially a neuroscience textbook. I now know a great deal about the architecture of the brain. This is very, very rarely of any use to me, at all.

    But it occasionally does provide insight. And at the end of the day transfer learning is horribly inefficient, but it and collaboration are the only two games in town for getting past what mastery in a single field allows.

    Had I spent that time studying programming, I wouldn’t be a much better programmer either. I’m already well into the diminishing returns phase of that. The hours spent learning fields that rarely provide me with insight or direct application are an expense price for occasional power isomorphisms, but they’re what allow me to make unique contributions and not fall into becoming a replaceable part.

  3. I have similar questions as an information omnivore. I usually bump up against the limit of my knowledge reading blogs- biochem and math. I find some of this stuff really interesting, but I don’t know how steep the learning curve is, nor do I know what, specifically, do I need to know in order to understand some of the stuff that shows up on the combinatorics blog(http://gilkalai.wordpress.com/) for example.

  4. You say:
    “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.”

    But how do you know that the only effect of those classes was building your confidence? How can you realistically assume that you can consciously assess the amount of transferable knowledge especially in domains that are so close to each other like math and computer science?

  5. @Sergiu

    I hardly recall anything from my undergraduate classes. Indeed, when I need to use the material, I have to look it up. And though I aced the classes, I often have to rework through it.

    Part of the problem is that I mostly chose abstract classes, staying away from utilitarian classes. My implicit belief is that I was best served by studying deep ideas rather than gaining practical skills.

    It is, of course, possible, that I acquired meta-cognitive abilities through these classes. But that’s where the research brings us back to reality.

    For a long time, people thought that learning latin, even if it was, on the face of it, useless, could make you better at learning languages in general because latin is vaguely like many other languages. This has been disproved. Yes, learning latin might help you a tiny bit when learning Spanish, but you are much better off learning French of Italian as they are closer to Spanish.

    Despite their best attempts, educators have felt to demonstrate the benefits of learning latin.

    It seems that transfer is very sensitive to distance. Two skills need to be close for transfer to be significant.

    It would be very reassuring for educators if you could “learn to learn” or “learn to solve problems”. But there is little evidence that this happens, despite extensive research. People who complete a college degrees often don’t do better on cognitive tests.

    So if you learn something that you never use, not even by analogy, then it is likely that you wasted your time and your brain cells. Unless, of course, you had fun learning it.

  6. Of course, to learn something (e.g., programming) focusing on that something is a better investment that spending time on something somewhat related (e.g., mathematics).

    On the other end there is cross-pollination between the different ideas you collect during the years. Some (just some) of them could be later inspire you while doing something else.

    So, I would say I agree. And for sure I am not happy I was forced to spend hours on Latin instead of programming. Wasted time.

    I would just add that the benefits of learning something are not always so apparent.

  7. It is obvious that time spent in a related field, like mathematics is more worthwhile in making a programmer better at programming than time spent learning about something in an unrelated field like Latin. You also need not know too much about biology to be able to develop a biotechnology based production program. I was among the pioneers of the world’s first oil palm tissue culture lab. in the early eighties. I was able to develop a working software package in a field which had no precedent. The program was used on a daily basis without any problem. I think the trick is learning from the end users how they do things manually, and then you just program the manual process. Theoretically, whatever a person can do manually can be programmed if you are proficient in a programming language, have a logical mind and are good at related fields like mathematics. Latin is not an instrument of mathematical precision to help you be a better programmer.

    If you need to write a genetics-based program, learn from the experts in that field how they do it manually, and then with that knowledge and the experts’ feedback, just develop the appropriate programs. You need not waste your time learning biology or even genetics.

    I believe in the minimalism approach with the simplest and fewest elements to create the maximum effect.

    However, a good programmer needs to be versatile, to learn up fast how people in diversely different fields do their things manually, be it in biology, engineering or the humanities in order to complete a programming project within an agreed time frame.

    How can a deep knowledge in an unrelated field like Latin help you be a better programmer? Maybe learning Latin may make you a better lawyer, but not a better programmer.

  8. I love this post. I find all of the counter-arguments amusing: “But how do you REALLY know that you did not make use of what you know?”

    Because you learned it, and then you worked! It’s a simple answer, but so many people foolishly idolize academia – many people literally idolize “experts”; it’s almost like an excuse to having to use common-sense.

    I just graduated from (a top 10 university in the US). Halfway through, I had to withdraw due to amnesia. I literally forgot every thing, except for memories based on vision. Studying after I returned to college was hell, but every day I laughed to myself about how what a waste of time and money it had been, that I could have done my entire high school and college career within about 2 years if I had been given the option. And I still don’t know how to make a damned thing! (from design to production)

    I could have easily taught myself just as much while making a small but decent wage at an actual engineering firm.

    What Laurent is implying is that if there was less formal schooling then there would be less diversification of knowledge. I disagree (although not entirely). However, I have seen school burn out students who would otherwise be pretty excited to learn.

  9. I believe in the process or learning even if you learn about a different topic. The art of self-teaching is something to keep improving especially in programming where new languages appears so fast. The process of learning something new, even latin, might help you being better at learning other new things.

    By the way, if you can learn latin and be fluent enough then you can always visit latin america.

  10. I agree with Martin on that – fresh content does seem to keep my mind sharper when I try to learn other things.

    And, looking back over my comment, I realized it might have come across as conceited. I was using my own story as an example, but my point, which I failed to arrive at, was that most people could probably do what I did, and in the process save on college expenses.

  11. Taylor quoted “I have seen school burn out students who would otherwise be pretty excited to learn.”

    It is the job of parents and teachers to give students projects within their possibilities to use their knowledge and keep the fire of their curiosity alive. As a student, I had the chance to participate in a couple of very stimulating projects. Learning pushes you to apply your knowledge and knowledge pushes you to learn.

    Try chess

Leave a Reply

Your email address will not be published.

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax

You may subscribe to this blog by email.