I’ve been a software engineer for a few years, and I keep hearing the same discussions repeated about how things should be done in a programming language.

I often see patterns borrowed from other languages, used in contexts where they don't fit — because each language is designed with different goals in mind.

I’m always asking myself what is the best way (or at least the cleanest way) to implement a specific feature or functionality in my code. I ask my colleagues, and I read blog posts to figure out what the best approach might be. I read the same patterns in all the blog posts on various platforms that barely scratch the surface and never actually have a solid use case that you see in production code. A lot of small ideas repeated over and over again.

If you’re a beginner, these resources definitely help. But once you gain some experience, it becomes harder to find solid sources to level up.

Books are better, but still not enough

So what do you do after that? You try to look for a good book. And there are some really good books out there. I’ll always value a good book over an article — it provides more context and usually explains things top-down (if it's well written).

That said, books often focus more on concepts than large, practical examples — so you don’t always get to see how things work in detail.

Software engineers are spoiled. All you need is a laptop and internet access to build so much. You have access to so many tools, frameworks, languages, information and all of that (for free, again, we have to appreciate open source more).

The downside to this is that it’s really easy to get lost in implementing a solution, without thinking about the problem first. It’s so easy to just hack away something, get an instant result and see if it works or not.

One of my professors from university had this really good piece of advice that stuck with me:

If you can’t do it without a computer, then you can’t do it with a computer either.

If you think in perspective, software is about automation. It’s hardly a domain that can stand entirely on its own, as its main focus is about solving problems.

Learn why the language exists

It’s easy to overlook common sense sometimes.

With that being said… if you think about how you can properly learn a programming language, you should first think about why it was created in the first place. What’s the problem that it solves, or it wanted to solve in the beginning? How did it evolve into doing something else? Did it properly evolve into something good?

I believe a good place to start is reading about the problem it tries to solve and its authors. What decisions they took and based on which facts they took those decisions. It may help you understand how to use the language better. In the end, who can teach you about the language more than its actual authors? Right?

Go to the source - literally

After that, you should jump into some examples of their work. Go on Github and read the standard library. Every language has a standard library, and usually it’s open source (extra points for that!). It may seem a bit scary at first, but it’s just code in the end. You should be able to understand that. You can start with stuff that you already know how to use, just check how it’s implemented. For me it’s really interesting to know how something that I use on a daily basis works.

And all of this stuff is free, but I feel like we don’t appreciate that more and we don’t exploit it enough. We jump into writing code (yeah, I know, it’s more fun to do that, I am guilty too!), but at some point we have to clean it up. Look at the proper way to do it. I know the people who wrote the language are still just people — they can make mistakes too…, but if you are not an engineer with tons of experience I believe in most cases they are the ones who are right.

So next time you're learning a new language or tackling a tough problem, take a step back. Study its origin. Read its source. Understand its philosophy. There's real power in going deeper.