This rubric will be a fanciful place for sharing really excellent content. This content is a list of high quality resources that have stood tall. However, it is not meant to be exhaustive. There is much to learn beyond here! Let's dig in.
LEGEND:
- π₯ - video
- πΎ - source code
- π - book
- π - blog
Testing is ever so important. I can't stress this enough, think beyond your mocks. Think about the anatomy of your tests. Think about the lifecycle of your test code. Think about how tests become documentation. Here's some testing gems:
- TDD, Where Did it All Go Wrong - Ian Cooper π₯
- Absolute Unit (test) - Dave Cheney π₯
- Advance Testing with Go - Mitchell Hashimoto π₯
- Go Testing by Example - Russ Cox π₯
- Vice test suite - Mat Ryer πΎ
- How to Inherit a Mess Workshop - Johnny Steenbergen (me) πΎ
- Idiomatic Go Tells a Story π₯
- Preemptive Interface Anti-Pattern in Go - Jack Lindawood π
Go's concurrency is amazing to work with. Quite the paradigm shift from the way other most other languages.
- Concurrency in Go - Katherine Cox-Buday π
- Concurrency is not Parellelism - Rob Pike π₯
- Lexical Scanning in Go - Rob Pike π₯
- Rethinking Classical Concurrency Patterns - Bryan C. Mills π₯
- Go Concurrency Design Patterns - Rob Pike π₯
- github.com/jsteenb2/errors πΎ
- Go Lift - John Cinnamond (strucuting code to maximize dev ex and encapsulate correctness) π₯
- Error Handling in Upspin - Rob Pike (amazing look at modeling errors in a real program) π
Generics are newish, and provide a ton of utility in Go. They are somewhat limited compared to some other languages, but in my experience, those same limitations stop folks from off the deep end :-).
- Generics Unconstrained - Roger Peppe π₯
- Constraining Go
type
Parameter Pointers - Axel Wagner π - Closures are the Generics of Go - Jon Bodner π₯
- Gophercon 2018 Performance Tuning Workshop - Dave Cheney πΎ
- Profiling Go - Russ Cox π
- An Introduction to go tool trace - Rhys Hiltner π
- GopherCon 2021: Go Profiling and Observability from Scratch - Felix GeisendΓΆrfer π₯
- GopherCon 2017: An Introduction to
go tool trace
- Rhys Hiltner π₯ - More Powerful Go Execution Traces - Michael Knyszek π
Systems thinking teaches how to understand the importance of the relationship of components within a system. The easiest way I can think of to go from 0 -> Hero Engineer!
At the end of the day, we work as engineers or programmers. Probably best that we understand how to function in a professional environment :-D.