As I was organizing my computer files recently, I came across some notes from 2017 that reminded me of a plan I had back then. Although it may be 2020 now, I couldn’t help but revisit the past and reflect on my aspirations from three years ago.
In 2016/2017, my goal was clear: to secure a stable, well-paying job as an employee rather than continuing as a contractor with numerous side projects that never seemed to flourish into profitable ventures. Specifically, I aimed to become a Go developer, even though my expertise at the time revolved around PHP and JavaScript. I was yearning for a change and desired to delve into something new and exciting.
Looking back, this idea seems somewhat far-fetched for several reasons:
- I had never been an employee before.
- By that point, I had accumulated nearly 10 years of experience as a freelancer/contractor (which has since grown to over 13 years).
- The concept of relinquishing my own projects was difficult for me to accept.
Nevertheless, I believe it might be intriguing for you to witness my journey from having little knowledge of Go to becoming a fully employed Go developer within a few months.
To kickstart my plan, I invested in “The Go Programming Language” by Donovan and Kernighan, the definitive Go handbook. It’s worth noting that Kernighan is the same prominent figure behind the renowned “The C Programming Language” book. This resource proved to be invaluable and I highly recommend it to aspiring Go developers.
For a month, I diligently immersed myself in each chapter of the book, absorbing new insights daily. To consolidate my learnings, I decided to document my progress in the form of blog posts. Surprisingly, I ended up publishing at least one blog post every day, often more.
To further enhance my skills, I engaged in algorithmic exercises and worked on small projects through various algorithm platforms. Additionally, I initiated my own web application, an idea I still find promising. The application aimed to interact with GitHub and provide visualizations of project progression over time. Developing this application in Go proved to be an invaluable learning experience.
When you’re passionate about a project, the learning process becomes significantly easier compared to studying materials because you’re obligated to do so, such as in an academic setting.
To broaden my knowledge, I thoroughly analyzed existing Go code on GitHub. I dedicated countless hours to perusing Go forums and comprehending the discussions taking place. Additionally, I closely followed the development of popular Go projects like Docker and Kubernetes.
I made it a point to follow influential figures in the Go community and subscribed to noteworthy Go-related Twitter accounts. Furthermore, I joined as many Go mailing lists as I could find, eager to receive the latest updates and insights.
Not wanting to miss out on any valuable resources, I subscribed to Go-focused podcasts and YouTube channels, ensuring that I remained immersed in the world of Go throughout the day, from dawn until dusk.
All in all, it was an intensive plan. And to some extent, it paid off as I advanced to the later stages of several interview processes. However, I ultimately didn’t secure a position as an employee for one simple reason: deep down, I didn’t truly desire employment.
The burning desire for freedom, independence, and the pursuit of building my own business was too strong, eventually leading to the demise of my transformation from freelance/contractor to employee.
In hindsight, I’m grateful for this outcome. In all likelihood, I would have struggled to adapt to the employee lifestyle in the long run. Nonetheless, my commitment to learning Go was fruitful, as it undoubtedly made me a better developer.
Tags: Go developer, Go programming language, learning Go, software development, freelancing, contractor, personal projects, building a business