

Ask HN: Becoming a Better Programmer - SoftwareMaven

I feel strongly that one of the best methods to become a better programmer is to learn new programming languages (http://softwaremaven.innerbrane.com/2009/05/pearls-from-multiple-languages.html). I was reading on of EWD's letters last night and came across this:<p>"I often feel that the American programmer would profit more from learning, say, Latin than from learning yet another programming language." (PDF http://www.cs.utexas.edu/users/EWD/ewd06xx/EWD611.PDF)<p>That got me asking two questions: First, would Latin (or Japanese or Spanish...) make me a better programmer? Second, what would this community (with so many people who are better programmers than I am) think is the best way to become a better programmer?
======
bartonfink
Alan Perlis said "A language that doesn't affect the way you think about
programming, is not worth knowing." The whole point of learning a new computer
language is to change the way you structure your thoughts and to give you a
new mental vocabulary for expressing ideas. I believe a similar argument can
be made for human languages, and I think that's probably what EWD was getting
at.

I was, at one point, fluent in Latin (that is, could converse with a
knowledgeable speaker at full speed), and I believe that my knowledge of Latin
had a profound effect on the way my brain analyzes languages. I'm sure that,
if I learned Japanese or another language that is drastically different from
English, it would have a similar effect. Would it directly make me a better
programmer? Probably not. Would it make me a smarter human being? Probably so,
and in doing so, it could have an indirect effect on my programming skills.

------
stonemetal
Knowing Java and picking up C# doesn't have a major impact on your ability to
express yourself. Knowing Java and picking up Lisp stretches you further, but
you can only learn Lisp once. That is to say after you have experienced
several different programming paradigms, you get less from learning yet
another paradigm X language. Human languages have the same ability to impact
the way you think.

What do I think is the best way to become a better programmer? Well learning
new programming paradigms is good, it adds breadth to your knowledge. Building
apps in specific topics is important it adds depth to your knowledge. That is
to say a shallow but wide box is OK and a narrow but deep box is OK, but the
biggest box is both wide and deep.

