Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I don't know if it would be all that useful to say what languages I know. C, C++, Java, various LISPs, Python, Haskell, Agda, Rust, and a couple different scripting languages. Mostly mainstream stuff with well-developed tools and theory.

The differences between languages in the same category are subtle, and I wouldn't call myself in expert in any language in which I didn't know what the subtle differences were and why they matter.

I would characterize learning new languages like learning to play a new musical instrument. Yes, if you know one instrument, you probably know how to read music, keep a beat, develop good practice habits, etc., and those things will transfer just fine to the new instrument. But those skills do not actually make you good at the new instrument -- they are just necessary to use it.

For instance, I know how to play a trumpet. Trumpet skills are useless on a piano. You don't need any ambidexterity. Your rhythm and pitch are controlled with your breathing. Maybe you'll want to sing instead? Well, breath control is great for singing, but being a good trumpet player doesn't make you a good singer. Controlling your pitch is much more difficult when singing than on a trumpet, to say nothing about how easy it is on a piano. But it only works on a piano if it is in tune. Piano tuning is not a skill a trumpet player or a singer needs to learn. But what about a guitar player?

Almost all of the hard work of mastering an instrument lies in the details that are exclusive to that instrument. The fundamentals are necessary, but they don't seem to represent mastery. Someone who's memorized a music theory book is not a good musician, even if they might be advantaged in the act of learning to be one. They might actually be a terrible musician because they never learned how to practice.

Not to mention the whole issue of trying to say what competence, mastery, proficiency, et al actually mean.



Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: