Hacker News new | past | comments | ask | show | jobs | submit login
I completed Ultimate Go, took good notes and commented directly on source code (github.com/hoanhan101)
450 points by hoanhan101 on Aug 15, 2019 | hide | past | favorite | 52 comments

Learn Go with Tests is the best programming language course I've ever gone through.


That's all. Just sharing that the methodology worked so well. I felt like I could legitimately jump right into a Go developer team.

I can't upvote this enough.

I am going through this course- and it is fabulous. Covers tests, and even though the topic names might seem easy or trivial(I mean there is only so many ways you can write loops or define arrays), they include a lot of "extras" that make it fun- for example one of the topics might include details about how to write doctests and docs, another one might introduce table driven tests and provide advice on when to use them. Overall it is great.

I'd be very interested in seeing this approach applied to other language courses.

The Rust Programming Language book includes tests and how to break down code into packages and other good habits: https://doc.rust-lang.org/book/

Coming from a background in scripting languages, Rust is still a lot more difficult to learn than Go, but I found that book very helpful.

If you like TDD, checkout rustlings https://github.com/rust-lang/rustlings/. I'd recommend https://exercism.io/, but there's such a shortage of mentors for the Rust track that you can get blocked very easily waiting for feedback. One of my solutions went un-mentored for over a month - and it was only after I asked someone directly to mentor my solution that it passed. If that weren't a problem, I would highly recommend exercism.io

Unfortunately, the code examples in the Rust book still feels like toy projects / toy code.

What I like about the Go book is that it feels production-ready, even though it is simple. This is because it is following industry best practices. There's no "code in isolation", if that makes sense.

I feel like tests have always been the best way for me to understand what's actually going on in the code. Seems like a great way to learn!

learn go with tests is great. I still refer to it occasionally even though I finished it a long time ago

Is there something similar too this for Python or Django?

Probably Test-Driven Development with Python.


Not Bill, but I work for Ardan. I’m happy you enjoyed the class! Bill works tirelessly on this stuff and I’m sure he’ll be happy to see you got something out of it.

As an aside, there’s nothing like attending a training in person and I highly recommend it. NOT because I work for Ardan, but because the quality is top notch. And Bill is really entertaining to watch teach X-D

I've had the pleasure of meeting Bill in person when we where speaking at the same conference a while back.

I can really vouch for Bill, he is one of the best teachers out there!

Another vouch for Bill here. He's also a great speaker at conferences!

There's a list of his publicly-available talks on the Ardan Labs training repo:


Absolutely! I will definitely attend the training in person when I have the chance.

Where are you located? We’re doing a 3 day in Miami next month.

I'm in Albany New York. Not sure if I can go the one next month.

Bill will actually be in Albany next month too - https://sites.google.com/view/devfest-gdg-capitalregion

Thanks for sharing!

One of my team members in Miami is new to Go and might benefit from the training. I couldn't find any info online though.

I saw bill shared this link on his twitter - https://www.eventbrite.com/e/3-day-advanced-ultimate-go-trai...

Thank you!

Bill needs to stop drinking so much coffee. The guy is waving his arms around like a maniac.

Do you also facilitate trainings in Europe? (Amsterdam, The Netherlands)

These guys teach all over the world. We just hosted a course in the states.

Their schedule is public and shows them on most continents: https://github.com/ardanlabs/gotraining#current-schedule

If Ardan does not have something available, please reach out to me. We might have time available to accomodate in NL (not trying to steal stuff grom Ardan here, love what they do and offer!)

For anyone confused about what Ultimate Go is (I was, I first thought it was a book that taught you Go the game, then after reading some comments thought it was a book that taught Go the Language, with exercises) it is a (paid) video course that teaches you golang, available from OReilly.

It's also available as an in-person workshop [1], and I believe corporate trainings are a significant part of the Ardan Labs business model. They also do shorter versions of their workshops at Go conferences.

They're huge contributors to the Go community via their conference workshops, and I can't thank them enough for the knowledge that they've gathered, refined, and shared all these years. (I help organise GopherCon Singapore.)

[1] https://github.com/ardanlabs/gotraining

That's cool! Already thinking how to combine it with my Roadmap https://github.com/dzyanis/roadmap

This is the first time I've been introduced the concept of a Developer Roadmap, and I love it! Thank you so much for sharing and linking your sources as well! I am definitely going to do this.

You are welcome! Unfortunately, right now it's just in pre-alpha but I will try to finish asap

Great intro into how to write nice Go code! One comment regarding interface pollution: While I agree that in many cases it's not needed to introduce an interface, sometimes interfaces help you hide the implementor type: I've now already had it multiple times that I switched from a 'struct implementor' to a 'func type implementor' without breaking compatabilities. Also, by exposing a struct, you also immediately expose that you can create a zero value of that type, which doesn't happen for an interface.

Thanks for the suggestion. Feel free to open a PR if you like!

I just reviewed some of your notes in comments, especially the CPU ones in the array source. I think they'd be a great introduction on general computer science to someone who may not have done much beyond ultra high level languages (JavaScript, python, Ruby, etc). Good work!

Thanks for taking your time to review it.

We learn by coding

That's why I wrote a book which teaches Go web dev example


Nice book, I forked it a while back to make PRs on formatting and typos. I prefer these type of books, I wish more writes did this before publishing so it can be polished by the community before it hits the printers.

It isn't about printing. It is about the approach.

Books for newbies are written by those with 15 30 yr experience. They write using their advanced understanding which is very difficult for newcomers to understand

I watched Ultimate Go on Safari Books a while ago and recently got back to it to revise my knowledge.

It will fill all the gaps and answer all the questions one can have, especially after the Tour of Go or reading a book which only scratches the surface.

I can't express enough how amazing that course and how useful what Hoanh did.

Once you finish, I'd also suggest to take a look to the Ardan Lab's github account since there are tons of material for Go.

Bill's presentation also made me giggle a lot -which is a rare thing for tutorials- since he says things like

  If I see an interface and it doesn't smell right, 
  and I'll be asking the developer, why are you 
  using an interface here? Now if the developer 
  gives me any one of these two answers, we're 
  gonna go take a walk.
as if this is a movie and he's going to take the developer to the woods to execute because the developer done wrong Bill :)

Thanks for making this public! The notes are well written and easy enough to follow. Cheers!

The design guidelines (https://github.com/ardanlabs/gotraining/blob/master/topics/g...) are especially good. And it's not go-specific, it can be applied to any software crafting tool.

Agree! I also included that in my note.


I read that differently in light of the section heading "These Days Are Gone".

No this is not a section heading. This is a statement referring to what's before it.

We cannot "throw more developpers at the problem".

First because they are expensive. But also because that makes management exponentially expensive while necessarily helping with delivery (lump of work fallacy).

Or you are correct and this is appallingly bad drafting and formatting.

I attended the ultimate go course last year. I loved the in-depth nature of the curriculum... oh and yes, Bill is simply the best :)

If you're looking for more study guides like this, subscribe to my newsletter here → https://www.getrevue.co/profile/hoanhan101

Nicely packaged notes, i will clone this to my archive, thanks for sharing ;-)

Thank you! such great effort

Very well put-together, this is certainly an excellent learning experience.

Thanks for posting. Really helpful for those of us who are just getting started with Golang

Looks good. I will read it and report back

Thanks so much for putting this together!

Great work. I will start adding stories to this repo using https://storytime.dev

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact