Learning a new language is hard
July 15, 2020
I doubt many, if any, remember learning their first spoken language. But I bet most remember the frustration of learning a new language. You think about what you want to say, translate it word by word in your head and then say it. It’s slow and tedious. But, if the person doesn’t speak your language, you have to speak their language.
I also bet that most people remember learning their first programming language fondly. It’s a total addiction of interest and intrigue with a massive adrenaline rush when you write something and see it work! There’s something absolutely magical about giving a machine instructions and seeing it do it, whenever you want, at an insane speed you can’t even fathom.
Then you encounter a new technology, like a database, and have to learn a query language to talk to it. You may enjoy this, but it’s also not as fun as the first time. You learn it because you have to. You learn HTML, CSS, HTTP, and so on because there’s no other choice.
Then, you learn about a new programming language that serves the same purpose as the one you already know. You look at it. The syntax is unfamiliar to you and you can’t read it. You have to solve problems differently than you’ve been solving them. There are promises that it will run faster and reduce bugs and it fits the problem space you’re working in better. But…you’re already quite productive in your language.
Some adventurous souls venture out and attempt to write something in this new language. It is insanely hard. It takes hours to figure out how to just get and print the current time. You press on, 2 days later and you’re still feeling like one hand is tied behind your back. It’s a constant temptation to drop this nonsense and use what you know. After all, you could build this in 1 hour using your language.
This experience is why learning new programming languages is so hard and most people resist it. Many go the vast majority of their career using the first or second language they learn. But, we shouldn’t. The benefits of being comfortable in and deeply understanding different languages, paradigms, ecosystems and ways of solving problems can double or triple your effectiveness as a software engineer in any language.
The other reason is that when everyone on a team is a full stack engineer and willing to work in any tech, the teams is multiple times faster than otherwise. When each person can build and own an entire feature, you have a very small dependency graph (waiting only on architects and designers) and far fewer conflicts.
Keep learning new languages. It’s very painful, but only for a little while and it pays off in a lot of ways.