Where should an experienced developer start?

I am familiar with Javascript, Python, SQL, and some Java. Where should I begin learning Golang? I feel that with my background, I just need to get used to the syntax by doing projects, and I don’t really need to relearn variables and loops. Do you recommend that I do start from the very basics?

If you are able to invest in some training then this course is designed especially for the experienced person such as yourself to get up to speed with Go quickly. This is top notch training that I can personally recommend very highly:

There are also some courses on Udemy which may be of interest. Check out the Go training by Todd McLeod - they are excellent value for money. If you are quick you might still get this one for $10:
https://www.udemy.com/learn-how-to-code/learn/v4/overview

Beware though, there is some dreadful (IMHO) training on Udemy for Go too.

However, If you are disinclined to pay for training there are a wealth of free tutorials out there too. Try YouTube. This one always makes me laugh:

I can vouch for the Go Programming language book:
https://www.amazon.co.uk/Programming-Language-Addison-Wesley-Professional-Computing-ebook/dp/B0184N7WWS/ref=sr_1_1?ie=UTF8&qid=1511903240&sr=8-1&keywords=the+go+programming+language

Ultimately nothing beats just picking a project and writing some code in Go. I think you are going to love Go.

3 Likes

You could use my tutorial, Concurrency Slower?, as an exercise if you are careful to not read ahead.

It uses a simple function to work through the Go tools such as testing, benchmarking, and profiling to transform a serial implementation into a concurrent one (parallelising the function for speed improvements).

Go is more than just different syntax. Even the basic language elements (variable declarations, loops, switch, etc) differ in tiny but relevant details from other languages, and not knowing these details might come back later and haunt you. Also, static typing and pointers (which I also would consider basic language elements) may be unfamiliar to seasoned JavaScript or Python developers.

Pick a good book or course and skim over, but do not skip, the sections about the basic language elements, before turning to the advanced stuff.

3 Likes

If you just want to get syntax down and dive in quickly, I’d start w/ the Go Tour first - https://tour.golang.org/welcome/1

This is great for exp devs, not so great for newbies to programming in general.

After that it depends on what you want, but my general advice would be to spend at least 50% of your time coding things and maybe 25-50% looking at ways others have done similar things to see how you can improve your design etc. As you code you will probably have questions as well, so obv Google those questions or post here.

I recommend 25-50% w/ external resources because as many people will tell you, Go isn’t just new syntax, but there are often times where the “Go way” and the way you were used to differ. Eg in Java interfaces are very different than Go. By referencing external resources you will start to learn these things while still getting hands on experience with the other 50% of your time.

For that 25-50% where you are referencing other materials, here are some possible options:

Cheat sheets - Basically pages/repos/etc that show quick examples of how to do more common things in Go. Usually really useful for questions like, “how do I just read in this darn file?”

Videos & Exercises - If videos and exercises work well for you, here are a few free options.

Todd’s courses (linked above) are great, but honestly I don’t know that they are going to be up your alley. I generally recommend them for less experienced developers looking to get into coding with go, not experienced devs just switching over to Go. YMMV

Books - This list is limited to the two most commonly recommended books I’ve seen. There are many other great books out there, but these two are both probably what you want right now. If you want recommendations for more specific topics let me know.

Regardless of the route you take I’m sure you’ll love the language, so just pick something and run with it. Starting is much more important than picking the optimal route learning path :slight_smile:

10 Likes

Thanks everyone, this has been very helpful. I’ll start exploring!

Have fun exploring Go. By the way, I noticed that you did not mention what you want to use Go for. If you want to write Web applications, have a look at usegolang.com. There you can find a book and a course (by @joncalhoun) about that topic. Both of them walk you through building a Web application while introducing Go along the way. Maybe this is the level of learning that you are looking for.

2 Likes

Are there any courses or consolidated material on choices made for Golang design, reasonings behind such choices?
There are few blogs/articles explaining some of those decisions, for example how and why “errors are values”, reasons and learnings from previous languages and experiences.

@rohitmore: The Go FAQ is an excellent starting point, as it answers many “why?” questions on design and other aspects of Go.

2 Likes

I am just exploring at the moment. I’m not even sure if I want to learn Go, or what I would build with Go. I stumbled upon it from a youtube video. As I’m exploring the language, I’ll be looking out for Go projects to work on.

I would start with writing a few toy programs / programs for household purposes, just to get a feeling for the language.

I really like what you have done with Gophercises. I find that I learn the fastest when I teach. Are you looking for contributors for your project?

I’d like to start finding ways to get more people involved. I was thinking of using code reviews and q&a in GitHub issues as a starting point here. Thoughts?

PS - feel free to email me directly - jon@calhoun.io

If you’re looking for concise and visual tutorials check out my blog here.

Go is intentionally simple and easy to learn however there are a lot of differences from other programming languages. Especially the mindset you’ve been using the other languages, Go pressures on you to change those to code in its own style.

I’m also experienced, the course that blew my mind was Ultimate Go Programming, you can find it on Safari if you have subscription there, if not, there’s a github repo:

Hey guys so it has been a couple months of learning Go, and I really like it. I did a few weeks of the challenges at HackerRank.com, and I explored a few libraries I found on Github. I would now quantify my understanding of Go as “beginner”. I am able to use someone’s Github package, trouble shoot errors caused by a typo in their code.

I think I’m ready to start contributing, does anyone have an active project that they think a beginner would be able to contribute to? I’m open to anything at this moment, no matter how boring it might be.

This recent Reddit thread has a couple of interesting suggestions.

Or if you come across a cool Go project on GitHub, look for open issues labeled “help wanted”.

I don’t know if you are familiar with mosquitto, an open source MQTT broker. I wrote an authorization/authentication plugin for it in Go, and am actively adding new backends to check users and acls against. Check it out at: https://github.com/iegomez/mosquitto-go-auth

Not sure if it’s boring or not, at least I enjoy developing it, so if you have any interest and think of any backend that is missing and would like to implement, feel free to open an issue or directly submit a PR.

Cheers!

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.