A bit on human language
How similar is learning and using human language vs programming language? A lot.
Not a news anymore, but still something to boast about - last June I’ve got my first language certification. And it was not English or French, which I’m using to certain extent for over 30 years, and not Russian, which is my mother tongue, but Czech. And not a beginner’s level, but C1 - kind of top for non-native speaker.
The reason for going for it was quite earthly - I needed a language certification to apply for a permanent residentship in Czech Republic, formal requirement being A2 though. But my approach is - don’t settle for a level below your abilities, always try to target a little bit above.
So first reason of obtaining any certification is to learn. I finally went through a Czech textbook and found a lot on the Czech grammar 🙂 . Second one is to raise self-assurance - if you fail at the exam, still you would find that your limits have moved and you’re able to do things you never thought you’re capable of. E.g., at that exam I wrote my first, and to the moment last, full-fledged essay in Czech. The other side is, though, having obtained the certification I became afraid of not matching the level if i make errors in speech or in writing.
Recommended by LinkedIn
I’m always learning in this or that way some foreign language - there are some 10 or more which I touched - and I see a lot of similarities between learning and using human languages and learning and using technologies.
If one knows, for example, a single language (if it’s not English) or a single technology, they won’t be rated high by HRs. So Maxim Gorky or Linus Torvalds won’t succeed if they applied to a position of hotel receptionist or middle developer, respectively. But they don’t need to. On the other hand, chasing many goals - that is, learning several languages or technologies - basically, helps to get better grasp of each of them by comparing words and patterns, finding similarities and differences - but in the middle-term it produces quite a mess. For me, foreign language #1 was always English, and foreign language #2 was French, with some real basics of some other languages at the outskirts. So, when Czech popped in, trying to speak Czech resulted in a mix of Russian, Czech and French, or trying to construct some Italian sentence I was always pushing out Czech words that tried to squeeze in. The same i feel when switching from PHP to JS code, given React and Node are not the same, i always need some time to tune myself and recall all the specifics of the language and framework I’m using at the moment. And speaking Czech in Prague and French in Paris is much easier than jumping between English and Czech in Moscow. The same switching languages and tools within a day is another level of challenge compared to doing one month work with PHP, another month with Node, eg.
One more observation is that learning language - the same as learning technology - is possible only by immersion. Learning rules may serve as a little help when one is in process of imbibing the language’s body, but knowing grammar itself is more of a hurdle. Even if you know the rules, you are very likely to make a mistake applying them. Language rules follow the evolution of language and do not define it. The same, design patterns, SOLID principles and the like are just following the established best practices of development and evolve as development evolve. They can help someone who has a lot of engineering experience and can intuitively see what is good and what is bad and which approaches are appropriate in given conditions, to categorize their knowledge and serve as an auxiliary tool. But as the ability to repeat learnt by heart grammar rules has nothing to do with the ability to express the thoughts clearly and correctly, the ability to name 20 design patterns has no relation to the ability to write beautiful code and design beautiful solutions.
I can go on comparing dialects and spoken language vs standards of written language with what you see in programming textbooks vs what you see on a real project, or to speculate how much grammar in human language corresponds to coding style, but this time I won’t. Just let’s talk human languages, that’s fun!
Вадик крутой, поздравляю!
Congratulations! Поздравляю! Félicitations!
dobra prace, kamo! :D