
I completed Ultimate Go, took good notes and commented directly on source code - hoanhan101
https://github.com/hoanhan101/ultimate-go
======
olah_1
Learn Go with Tests is the best programming language course I've ever gone
through.

[https://github.com/quii/learn-go-with-tests](https://github.com/quii/learn-
go-with-tests)

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

~~~
dhuramas
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.

~~~
loudmax
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/](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.

~~~
faitswulff
If you like TDD, checkout rustlings [https://github.com/rust-
lang/rustlings/](https://github.com/rust-lang/rustlings/). I'd recommend
[https://exercism.io/](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

------
navd
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

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

~~~
jungturk
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](https://github.com/ardanlabs/gotraining#current-schedule)

------
plinkplonk
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.

~~~
ValentineC
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](https://github.com/ardanlabs/gotraining)

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

~~~
bradhoffman
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.

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

------
Adracus
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.

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

------
deaddodo
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!

~~~
hoanhan101
Thanks for taking your time to review it.

------
thewhitetulip
We learn by coding

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

[https://github.com/thewhitetulip/web-dev-golang-anti-
textboo...](https://github.com/thewhitetulip/web-dev-golang-anti-textbook)

~~~
giancarlostoro
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.

~~~
thewhitetulip
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

------
Timucin
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 :)

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

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

~~~
mytailorisrich
[deleted]

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

~~~
mytailorisrich
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.

------
peteridah
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 :)

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

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

------
aredirect
Thank you! such great effort

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

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

------
KuhlMensch
Looks good. I will read it and report back

------
sonfat505
Thanks so much for putting this together!

------
vidoss
Great work. I will start adding stories to this repo using
[https://storytime.dev](https://storytime.dev)

