DevOps Engineer
30 days ago, I decided to start learning Golang, Google’s programming language. The problem was: I was not a programmer, and the only programming experience I had was coding with Python for a couple of weeks many years ago. So, I didn’t have much programming knowledge when I decided to start learning Go.
The reason I decided to learn Golang was to fill this gap in my knowledge and take the opportunity to learn a very important programming language for the DevOps and Cloud Native ecosystem. I knew I’d have to start from scratch, since Golang is only a tool, while programming knowledge and computational thinking are the most important things to develop.
The first days of learning programming with Go were very interesting, since it is a rich language with a more verbose syntax compared to Python, for example. I started by watching some tutorials from a YouTube teacher called Net Ninja. He has a playlist with 22 videos teaching the fundamentals of Golang. I ended up watching about 11 videos from this playlist, and then I decided to escape the “tutorial hell” and start building with my own hands.
I realized that I could watch ten thousand hours of programming videos and still wouldn’t be able to solve a simple problem if I had to do it on my own. That’s when I understood how I should approach programming. Programming is a skill, and just like any other skill, the only way to improve is by practicing.
After one week, I was comfortable enough with Go syntax. I was able to write the most basic things that didn’t require too much logic, like a simple for loop, if/else statements, reading input from the user, creating an array, and so on. But I realized that my problem-solving skills were not that great. That’s when I decided to start learning through challenges on LeetCode.
LeetCode is something that a lot of people use to prepare for Big Tech interviews. Others say that LeetCode is not important and doesn’t reflect the real world, which is partially true. But the purpose of LeetCode is not only to pass interviews or to “reflect real job scenarios.” LeetCode is a very powerful resource for building your logic and challenging your brain to think more programmatically and algorithmically (while also making you feel dumb most of the time).
By the time I’m writing this, I’ve solved four Easy LeetCode exercises, and I can say that they challenged me and taught me a lot. I will probably never have to find the longest common prefix or discover whether a string is a palindrome in a real job, but that’s not the point. The point is that this kind of mental exercise gives you strong problem-solving skills and teaches you a lot about programming thinking.
Knowing how to iterate over an array, access a specific character from a string, understanding that a string is actually a slice of bytes, and knowing how to manipulate it are all important for understanding how the computer “thinks.”
In most cases, I’m not able to solve a LeetCode problem completely on my own. I often have to read someone else’s solution and try to understand it. But the more you do it, the more pattern recognition you develop in the background. I can already feel that I’m getting better at thinking whenever I face a LeetCode problem, even if the improvement is small.
Along with LeetCode problems, it’s also highly recommended to build your own projects while you’re learning programming. I started by creating a CLI to-do app. It’s a simple CRUD program that lists tasks, adds tasks, removes tasks, and updates tasks using persistent storage. When I’m building projects like this, I try to use as little AI as possible. I only use AI to give me advice about the thinking process, but I never ask for the code itself.
The idea is to build projects like this while sharpening your logic with a more “real-world” approach.
My Golang Repository on GitHub
Last but not least, learning math and understanding how computers work behind the scenes is VERY important for programmers. Actually, I don’t think anybody can truly call themselves a programmer if they don’t know at least a little math or understand how processors, memory, and binary actually work. This is the core knowledge that builds the foundation of your programming mindset.
I was never good at math. I didn’t pay much attention during high school, and nowadays I have to learn it from scratch by myself. But this is REALLY important and makes you much stronger as a programmer. Learning math teaches you a lot about computers and, more importantly, about the world we live in.
To learn how computers work under the hood, I picked up a book called “Code: The Hidden Language of Computer Hardware and Software.” It has 486 pages and builds your knowledge from the absolute basics, starting with Morse code, Braille, how a flashlight works, and then teaching physics, mathematical principles, circuits, electricity, and so on, until it eventually explains computers in depth, including processors, memory, and many other concepts. I’m currently on page 48 of this book, and it has been incredibly valuable so far.
Well, this is it! This is how the journey has been going so far. I’m building my knowledge and genuinely enjoying the process. I want to become competent and really good at programming, and this is the path I decided to follow as a self-taught developer: books, exercises, LeetCode, videos, projects, and a lot of practice.
If you made it this far and enjoyed reading about my journey, feel free to reach out so we can chat a little more about programming.
Thanks!