I've been working as a software developer for about 7 years already.
When I learned how to code, my main thought was, "What should I study?".
Maybe this is common thinking in every's beginner mind, and it's a totally valid concern; after all, the more I study and work in this area, the more I see how depth every domain could be.
Back then, I decided to focus on the JavaScript ecosystem because I had really liked web development since I first tried it.
Even after all those years of studying and working with it, I still don't feel comfortable saying: I 100% mastered this language because, again, there's a lot to learn, but so far, I can say I have a deep understanding of the language and feel really comfortable to write any program in any framework JS-based.
That said, I think it's time to dive deep into another language and see how to solve problems using different tools and make my brain think differently.
The language
There are tons of programming languages, and choosing which one isn't the most straightforward task.
I was looking for something flexible that allows me to build binaries, create APIs, have excellent performance, and maybe even try out a web server.
Then I remember there are two languages that people in the JS ecosystem are using to build performant JS tooling: Rust and Go (Golang).
Here are some of them:
- Rome Tools (Rust) - Compiler, Linter, Testing, etc.;
- Parcel CSS (Rust) - CSS Compiler;
- SWC Compiler (Rust) - JavaScript/Typescript compiler;
- Turbo Repo (Golang) - Monorepo for JS/TS projects;
- ESBuild (Golang) - JavaScript/Typescript compiler
I tried Rust already, and I actually like it. However, I must confess: it's a thought language to learn.
Everyone in my bubble seems to be very excited about it and wants to learn somewhen, but I think maybe it's too soon for what I'm looking for.
I'm problem wrong on this, but I'm not sure if a company I'll be working for will say: "you know what? let's try Rust for this problem" somewhere in this or next year.
Companies tend to use the knowledge they already have in the house, standard technologies that everyone (or almost) might be able to pick the project up to add new features and/or fix bugs.
Feel free to disagree, but it's based on what I've been watching in each company I work for.
So I've decided to keep one eye on Rust and pick up Go.
About this series
I don't want to make promises on how often I'm gonna publish my studies, but my strategy will be:
I watch a class video about something;
I'll write what I learn in code snippets, diagrams, and comparisons with JavaScript;
I'll publish a post
In this process, probably I'll be wrong in some stuff, so be aware if you're reading this as a definitive guide. I do believe there are more reliable resources about Golang out there.
The intention is to go from the very basics of the language until I can build something reliable.
I'm not sure where I'll end up with it, but I at least expect to have a bunch of public notes so I and whoever is interested in learning Golang from scratch can consult.
Resources
I'm using a Brazilian platform that helped me learn most of my basics/intermediate JS knowledge: Alura.
https://www.alura.com.br/formacao-go
Unfortunately, their content is only in pt-BR.
The good thing about them is they have "learning paths" that go from zero to at least intermediate in various languages and IT professions, so I at least have curated content.
A website I found which has been very useful is this one: https://golangdocs.com/
It seems they have a tutorial about everything in Go.
Conclusion
Despite being interested in learning something, I'm using this series to be back on track with writing.
I really like to do something, and I often get positive feedback on that.
But let's see. If it goes good, I'll probably do the same with everything I have the chance to study, including advanced JS content.
Also, it's part of the "Learn in Public" initiative from swyx.