Years ago, before JavaScript made its way to the server side (yes, that’s an important digression, believe it or not), One of my colleagues once shared an intriguing observation with me: backend programmers, whether they come from a C# or Java background, often resemble drivers switching to bicycles when they start programming in JavaScript. It’s as if they forget all the rules.

And here’s the thing: I think this observation holds true. Back then, JavaScript wasn’t respected. It was dismissed as a “dumb language.” A toy for web designers to sprinkle some interactivity onto their pages. Fast forward 15 years, and while JavaScript has become a powerhouse, I still see controversial code written by experienced programmers from so-called “real” languages. It’s the kind of code that makes you wonder if they left their instincts and good practices behind when they crossed over.

But, and this is important, the opposite also happens. Some developers are so attached to the rules and paradigms of their “native” language that they insist on applying them everywhere, even where they don’t fit. I’ve seen Ruby written in a C#/Java style, complete with attempts to implement interfaces in a language that doesn’t even have interfaces. It’s like trying to ride a bicycle with a steering wheel instead of handlebars. Sure, you might move forward, but it’s not going to be pretty.

And this isn’t just a JavaScript or Ruby problem. I see the same thing happening now with Go, a language that approaches interfaces in a completely different way. People who come from interface-heavy languages sometimes struggle to adapt, trying to impose patterns and conventions that Go simply doesn’t need.

What’s fascinating is how these tendencies reveal so much about the way we think as programmers. We bring our habits, our biases, and our muscle memory with us when we move between languages. Sometimes, that’s a good thing (experience can provide a solid foundation). But other times, it’s a hindrance, a pair of blinders that keeps us from embracing a language’s unique strengths.

Maybe the real lesson here is this: learning a new programming language isn’t just about syntax or features. It’s about learning a new way of thinking, and that, I think, is one of the most rewarding parts of being a developer.

It’s not just about what the language can do. It’s about what the language wants you to do. Respect the bike for being a bike. You’ll enjoy the ride a lot more.

Happy hacking! 🚀