DEV Community

Discussion on: When can you say you know a language?

jxpx777 profile image
Jamie Phelps

I think understanding the idiomatics of a language is when you can say you really know it. I could probably write a script in Python that would get past the interpreter and accomplish a task, but I know there are things that make for elegant Python that don't flow out of my fingers the way that idiomatic Ruby or Javascript does.

I recently helped a colleague improve some Ruby code. He had done a good job with identifying some pain points and making some steps toward making it better, but his code didn't read like idiomatic Ruby. I wouldn't say that he "doesn't know" Ruby necessarily, but his code lacks the clarity and concision of more elegant code. This is fine and not a denigration of this person, who is one of the smartest programmers I have ever worked with, but just to say that Ruby is not a strong language. I don't think I would be speaking out of turn to say that he probably wouldn't put extensive Ruby experience on his resume just because he knows that Ruby uses class and def keywords. If someone asked him about it or it became part of his job, he'd get up to speed quickly, but that's not his core competency right now just like my core competency right now is not Mac development like it is his. I can read code and make changes, but I have to think a lot about what I'm doing since I am so out of practice with it.

I think we should really think of programming languages like we do other forms of expression like spoken languages or musical instruments. I have been speaking Spanish since high school. I can have a functional conversation at the taqueria and get around town as a tourist, but I don't claim to be fluent. Beyond that, I can read some German and French (academic work mostly) and I know some very basic conversational phrases. I definitely would not say I know these like I know Spanish and Spanish less than English, obviously.

Likewise, I have been playing tuba since my freshman year of high school. I can play other (mostly brass) instruments, but I don't know those instruments the way that I know tuba. If someone handed me a trombone or euphonium, I'd be less comfortable but probably functional. A trumpet or French horn I can cause to make a sound but it's not pretty and will have a lot of people cringing and plugging their ears. But, I do know their transpositions and some of the common challenges associated with playing the instrument thanks to taking a brass technique and method course in college. I would say I know tuba. I would say I'm passable with trombone and euphonium and familiar with trumpet and French horn.

Whether I know a language isn't really that interesting to me and if I were looking for a job, I would hope it wouldn't be that interesting to the hiring people. What's more interesting is if I know programming and whether I could pick up how to express programming in some variety of language just like it is more important that I be able to communicate almost regardless of which language I happen to be speaking. Do I know how to convey ideas and reach people? It's more important that I understand music and how musical composition works and how an ensemble plays together than that I play a particular instrument. If you can figure out how to convey that you know programming and that the rest is just an implementation detail, the languages don't really matter that much.