Hi everyone,<p>I'm a software developer with decades of experience making web apps and various side gigs (mostly Python, JS, TypeScript, Kotlin, Java).<p>I spent a whole year (from time to time) learning Rust and Tokio and finally decided that I can't find a job, because opportunities around Rust are either crypto- or hardware- related, all out of my focus.<p>How could I start as a Golang developer? I passed few tutorials and have got familiar with Golang syntax and felt in love with Goroutines. I am currently reading the Designing Data-Intensive Applications by Martin Kleppmann.<p>What is the best way to kickstart my path as Gopher?
Thank you.
Back in the day when I started coding in Go, I basically did the Go Tour on the official website, and watched some of videos.<p>I paid close attention to learning how to write idiomatic Go. I also read a bunch of code from the std lib.<p>Then after a few days I jumped right into coding. I started with a simple CLI to do some heave lifting in our Ci/CD pipelines (for work) and then I also started coding some web apps for my perdonal use.<p>After this, I started designing and building a few systems that were needed internally at my workplace and I also started training other folks in Go.<p>That was back in 2017. Today we have several big systems running in production and a strong team of engineers all working and enjoying Go :)<p>I would recommend to anyone a similar path:<p>- learn the basics<p>- build and release things<p>- teach others who may be interested<p>At that time my background was as software engineer (~17 years) mainly writing Java and some Javascript
<a href="https://gobyexample.com/" rel="nofollow">https://gobyexample.com/</a> was helpful for me to understand what is possible with Go. Visit a topic that seems interesting or completely unfamiliar and try to think of a small exercise that will allow you to practice the topic.<p>Another thing I did was implement a common tool like `ls` or `tree` or `grep` using go. This will allow you to compare the output and performance of your program against the binaries provided by the OS.<p>Lastly, there are some really cool libraries out there (see <a href="https://charm.sh/" rel="nofollow">https://charm.sh/</a>) with great communities. Try building something small and ask for feedback in the Discord channel.
Having experience in other languages it should be fairly easy to pick up. I personally bought the book Let's Go by Alex Edwards. It's a project based book where he teaches you Go by writing an API server. I found it really beneficial as I was familiar with API development but not with Go. After that I used what I learnt to create some side projects and the rest is history.<p>If you feel you're already past that point of learning then I'd just create little projects. Re-write one of your old ones in Go, and things like that.
Try learning Test driven development in conjunction with Go via “learn to with tests” [0]<p>I’ve been following along and it’s pretty powerful as you’re coming at go with a fresh programming paradigm, which helps the language features to take hold in your mind<p>[0] - <a href="https://quii.gitbook.io/learn-go-with-tests" rel="nofollow">https://quii.gitbook.io/learn-go-with-tests</a>
I was applying for a job once, picked up a ticket in their OSS backlog, and learned go by following the official tutorial and trying to solve the ticket concurrently. Worked fine. Had the gist of the whole scene in a couple of days.<p>Given your background go should be easy to pickup.