Programming is a weird activity. It's simultaneously dull and exciting, repetitive and creative, equally deeply frustrating and satisfying. You can spend hours crafting Something from Nothing, or just banging your head against the wall trying to find a bug. It takes a long time and lots of practice to become familiar in one programming language, and once you've done so, you're likely to turn it into your favorite hammer. But only by understanding underlying general programming principles (not language syntax!) and applying them using different tools do you actually move beyond a certain level of expertise. (This point is well articulated in this article called "Become a Good Programmer in Six Really Hard Steps".) Some people learn a new programming language because it would be a valuable skill, allowing them to presumably demand higher salaries. Others learn a new programming language because they have to -- their job requires them to, for example in order to take over an old project. Yet other people might learn a new programming language because they have a specific problem to solve that requires a specific tool (implying sufficient self-analysis and enlightenment to have realized that that problem does not in fact look like a nail after all). Finally, some people do it for... fun. They actually enjoy learning a new way of looking at things or have an academic interest, possibly doing research in this area. For me, the main reason is probably "fun", but I don't think that has been obvious to me. In the last couple of months, I started to realize that I'm getting rusty, that my skills are in danger of becoming dull, that I might miss knowledge of one or another programming language that other people might know or that in some areas of the industry are, if not assumed or required, at least desired. More and more job postings, job applicants' resumes and industry presentations included references to programming languages that I have no knowledge of whatsoever. Now this might sound like the "for profit" argument, but I've come to realize that I don't think I care so much about having skills that are marketable, but that industry development, research, and projects have reached a critical mass making it obvious to me that I'm simply missing out on something that sounds exciting, that would help me become better at what I spend a significant amount of time on -- which isn't necessarily actually writing code, but understanding code, program structure, and software architecture.
My 4-year old daughter is trilingual (English, German, Spanish) -- she switches languages and, more interesting, language constructs without hesitation, but inevitably you notice her phrasing a sentence in one language using the rules of another. Noticing this is a delight. It gives me insights into and appreciation of how these languages (and her brain) work. The same holds for programming languages: learning another language allows you to more consciously understand (and then apply) the rules of what you've been using unconsciously for years.
So yes, I want to learn new programming languages for "fun", knowing the "profit" will (also) be in the deepened understanding of what I already (think I) know. And so the choice of what language(s) to try to pick up next is easy. :-) More on that... soon. September 25, 2011 |