My Golang Journey.
I went from having zero knowledge of Golang to becoming a Senior Golang Engineer in 2 years, although I have been writing code and building software for a lot longer than that. While it does take a lot of time to master these things, it does not imply an interminable amount of time.
I, like nearly everyone else, had no idea how to make this transition. I found Golang to be quite fascinating, but I was not sure the right approach that would provide the best and most effective learning experience for me coming from a very weakly typed (loosely typed) programming language like Javascript to a language like Golang which is very strongly typed with even more low-level primitives like pointers, concurrency, channels and goroutines.
This article is not about learning Golang or how Golang may or may not be a superior language. There are undoubtedly excellent resources available out there, but I just want to share my experience learning a new technology — Golang in this case — and the things I discovered along the way. As a programmer, I think the goal of learning multiple programming languages is to broaden your horizons and expose you to the various cultures within each language. Like regular human languages which are deeply rooted in human culture and history, programming languages are no different. They all have their own individual beautiful cultures that would blow your mind if you could just open your mind and look beyond the codes you write. They can even sometimes take you back in time to the exact train of thoughts the authors had, and even the problems they had sought out to solve with them.
Why not take advantage of the opportunities that have been provided to us programmers to become polyglots? Don’t get me wrong though! Let me quickly explain it. Do not simply set out to study every programming language there is for the sake of exploration or the belief that doing so will make you a better programmer. Like many others, when I first started my career, I believed that the more programming languages you knew, the better programmer you would be. That’s not entirely false, but it’s not entirely right either. So hold on one more second, allow me to elaborate.
We confuse programming for coding, as a great guy once said, and he is correct. Nowadays, the majority of engineers only write code rather than actually programming anything. Imagine that I have to read your code in order to understand what your proposed solution is supposed to accomplish. That’s why many of us just say “My code works but I don’t know why”. We don’t have the engineering expertise necessary to program; we simply know the language’s syntax well enough to code. Do you get my point about how we’re just coding and not programming?
Leslie Lamport asserted that you don’t need to know a programming language to be able to program, adding that “Coding is to Programming as Typing is to Writing.” Try reading that again, but this time keep an open mind.
The core understanding of what Leslie Lamport teaches is one crucial factor that, in my opinion, has aided my Golang journey. Like every other tool used to express oneself, programming languages are just a means of communication. Do not limit your knowledge of computers to the syntax of the programming language; rather, amass and communicate knowledge about computers using the programming language you write.
You can only evade the fundamentals of computing for so long, but again, it depends. Do you want to be Superman, who can support himself, or Thor, who is almost completely helpless without his hammer? I hope you understood the soft nod to lovers of Marvel and DC. I agree that each programming language has its own strategies that are unique to them. For example, Golang has Channels and Goroutines, Rust has Ownership and Borrow-checker, while Javascript has Promises. Just like in any other human language, English for example has different techniques that help the speaker or writer convey meaning in different ways. Since both human and computer languages were created by humans, the idea of language technique is therefore not new, as programming languages were built on some of the fundamentals of human languages. This is the reason why I previously discussed culture in programming languages. The majority of programming languages have communities around them, each of which has a distinctive culture and method of approaching and solving technical problems. So, if you ask me, don’t just concentrate on mastering the codes; there’s more to discover beyond them.
Yes, it takes time. I also saw videos like “Learn Golang in 15 Minutes” all over YouTube. LOL😂
The most important thing is to take your time and learn properly. I’ve begun a new journey into Rust, hoping to put everything I’ve learned into practice. I do hope to share my experience with Rust someday, in the next 2–3 years maybe. The point is to find something challenging to do and push yourself past your comfort zone; you might just surprise yourself.
If I took away your ability to write the current programming language you write, would you still be able to innovate, solve problems and create interesting solutions?
Subscribe to my newsletter
Read articles from Omo Akin directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
Omo Akin
Omo Akin
A software engineer with passion for distributed systems