ghost edit: I could change my original response because employers often find my HN posts because of my login, but honestly, I'd rather just be honest
ghost edit: I could change my original response because employers often find my HN posts because of my login, but honestly, I'd rather just be honest
It starts tomorrow, I believe (also previous years are available). A new puzzle is released each day (until Christmas I think). You can use any programming language you like to solve them. The puzzles start pretty simple but get very good as it goes along.
You can race other people but when you're doing it for the purpose of learning a language, I'd take time to explore the language.
Personally, I'd complete each puzzle without looking at anyone else's solution, and then compare to solutions from others, hopefully you can find solutions from some experienced Go programmers. Since you'll understand the problem really well, you'll be able to focus on the different language decisions they made. Well, you do need to be a little careful, because people will use shortcuts that are fine for this but would be horrible in code you don't throw away.
(You might be able to tell: I'm intending to do this myself, with rust.)
1) The OO model (composition-over-inheritance, and the syntax may be a little unfamiliar)
2) Slices
3) Goroutines/concurrency
4) I guess multi-return and idiomatic error handling deserve a mention, though they're so minor and super easy to understand that they're not really like the other entries on this list.
... but if you can devote 2-3 hours to reading the official manual for each of those topics and working through an exercise or two for each, congrats, you're ready to work productively in Go. Maybe 20 hours total, at the outside, to get comfortable enough to use it productively. Possibly closer to 10. Assuming some prior familiarity with other similar-family languages, that is, which most developers have.
You can start learning today. I picked up Go by porting my backend web projects written in different languages over, but my next task is to convert all my custom shell scripts into CLI tools using Go.