Can learning non-programming languages make you a better programmer?

That’s what I wondered about when I got an email containing this bit:

I took four years of german in university and I think the knowledge has always made me a better programmer.

So, among my reply, I asked the guy to explain that, and later for permission to reproduce his reply here:

I spent twelve years off and on living in Germany as a child in Mainz, as a high school student in Wiesbaden, and in college at the Goethe Institute in Schwabsiche Halle. I eventually got a degree in german and econ from George Washington University in DC.

I didn’t start programming until graduate school at the University of Southern California and I am currently finishing a phd at Virginia Tech.

By profession I have been a Marine Pilot(CH53), management consultant(KPMG),CEO(Datacyr and Topik Solutions), and since 9/11 working exclusively with the US government developing semantic search engines (sesame, lucene, rdf, and sparql). I also spent many years in the data warehouse field building in-memory ETL engines.

Languages come in all shapes and sizes, as you know.

The human species and those members who appear to survive and evolve fitness adaptations better than others, do so through language. The primary goal of any language is to improve search skills(Google) and the tools to control resources(The Third Reich). The structure of both german and c require a very ordered syntax when arranging symbols(info), motion(services), and objects(things) in the mind’s mental model of the world. Unlike english, which allows for some flexibility in ordering the mental model of the world, german enforces a structured approach to control and memory management not found in english. It is no accident that SAP has been so successful as a technology and a company.

I have had to program in a dozen languages and across as many operating systems. Since my work is all about data manipulation, design, and models, I always come back to c when I have to achieve ultimate control (memory) and performance(pointers). Without an early education in german, I don’t believe I would have ever achieved what I have been able to accomplish in the technology field.

My phd develops the theory of semantic intelligence. The theory is based on the concept that human cognition is a type of computational model that can be implemented in software.

Thus my admiration for the elegance of jQuery and your validation plugin as a structure for optimizing search and control in human computer interfaces.

With german as my native language and english as a key requirement for learning to program, I can’t really reflect this well with my own experiences. The four years I learnt a bit o french at school certainly didn’t make a difference. I’d like to hear from others if they had similar experiences when learning other languages.

-Jörn

No more comments.
  1. 22. July 2010 |19:50

    I’ve recently become curious at how so many of the people who create programming languages are Dutch.

  2. 22. July 2010 |20:03

    Well, I believe and truly agree with Peter Norvig idea in the text “Teach Yourself Programming in Ten Years”. Each language can teach a bit for you. But say that is a “mental model” I don’t know… I hope read the study of your friend. Please post news about it in your blog.

    About French, do you know WinDev? It’s made by French company, the “wl” (windev language), probably, if is true the idea of mental models, this language have various French languages structures in their way to write a code.

    Bis bald.

  3. Alistair
    22. July 2010 |22:20

    I can speak Japanese fluently after living there for a couple of years and lots of study.

    I wouldn’t say that made me a better programmer per se, as I think the most important thing about good programmers is attitude and motivation. Being a massive geek helps too.

    I would say though that it made me smarter. When you only know your native language and you start to learn a new one, to get good you need to teach your brain that your native language is merely one of many abstractions for real things. Going through this phase and learning to express yourself in 2 languages expressing basically 2 different personalities is quite mind bending and results in increased mental ability.

    It’s weird, because you can’t simply take your personality as is from your native culture. You need to develop a new personality based on who you are, but one that fits in with the new culture. You even need to learn to think naturally in the new language.

    It’s just one of many thing though that is related to intelligence/coding. Playing games is another.

    I don’t think that people should go out and learn a language to get better at coding. If they are the kind of people that would consider that, they are most likely diligent enough with their own learning that they rock already.

  4. 23. July 2010 |16:57

    I think, trying to draw a comparism between languages and programming languages is a tedious und probably pointless effort. It’s about the same as if you try comparing the brain with computers, it just doesn’t work. Computers are lousy communicational partners and they just understand what comes out after a process of interpretation of a most logical structure – the code.

    Whilst the terminology in spoken language is quite similar the process is very different: Here, you have a two-way communication, with a syntax but also a semantic message. If you tell your computer that $milk = sweet, he’ll “know” that a certain variable $milk contains the string “sweet”. Yet, he doesn’t know that milk is a blurry white drink made from cows and that sweetness comes from the lactose in it.

    Still, I do think that learning a language helps you with learning programming languages. But that works for everything. From what I know of neurology (well, that means: almost nothing), learning languages and especially talking in foreign languages, helps developing the brain and supposedly makes you more clever. And a trained brain can do a lot of learning.

  5. Aharon H.
    2. August 2010 |03:01

    It is not clear from the letter of your friend if he had studied any other foreign language other than German language.

    Probably learning any foreign language, significantly different than your mother tough would be helpful in programming as it will provide capability to better abstract language as a phenomenon.

    Just as we are creating software realities using language, God has created the world using (Hebrew) language “and God *said* let there be light, …”

    It also ain’t clear why your friend sees in “The Third Reich” an ultimate example of tools to controling the resources. Germany resources were largly destroyed by The Third Reich, especially the Jewish, Gypsies, Slav human resources and even German nation itself by large had shrunk. Not to mention the destruction of cities, and natural resources. MS IE probably better manages resources than The Third Reich had ;)

    I guess it’s by far healthier for spirit to pair music with programming than marine piloting ;)

  6. Marcin
    8. August 2010 |22:33

    I like the point about benefits of learning a significantly different language. I see very little difference between English and German for example so that’s hardly an inspiration. Nordic languages however handle articles differently so learning those is a kind of departure from your usual line of thought. I only noticed a real departure while learning Irish (which I eventually failed miserably). Not sure if breaking routine makes you a better programmer. IMO it makes you more creative. If we can agree that more creative programmers are better programmers then perhaps your friend is right.

  7. Shoggie
    1. September 2010 |21:26

    Hi all,

    In my daily routine at work as Admin/developer, I also apply spiritual concepts. Can’t really explain that in a few sentences, but we as human have divine skills: art of creation. In earthly-terms: programming.

    Introducing real- concepts and spiritual-concepts into programming “just” opens up different points of view.

    For me, View is what it’s all about, the mind is (also) made to “see”.
    When you remember something, you don’t remember in terms of a ordered ArrayList() ;) You remember in pictures.

    Logic is or can also be based on cultural differences, which ever it may be, it’s about a different point of view; which closes doors on one side, but opens others on the other side.

    For me, programming is a passion, the art of creating.

    from Amsterdam.

  8. Brennan Young
    7. October 2010 |21:33

    Learning more about the possible relationships between things will certainly help in the processes of abstraction which are so important for programmers, but you can learn these things in a number of different fields, including human languages.

    For example, I have had the pleasure of teaching programming to textiles students and they ‘get it’ almost immediately. Textiles are an interactive medium, where pattern, order and repetition are central abstractions which translate very well into algorithmic thinking.

    I would mention that I am a native English speaker. When I learned Danish, I discovered that there are two words for ‘more’, one discrete and the other continuous. (“Flere” and “Mere” respectively) Interestingly, English makes this distinction in the opposite direction (“fewer” and “less”).

    This kind of insight can help understanding (for example) the difference between integers and floats. I am quite sure that many human languages can provide such insights.

    I would also recommend a study of buddhism, sufism, gnosticism or epistemology as a way of understanding object oriented programming, and debugging generally.