This is an account of my roadmap and my mode of working/sadhana for achieving Golang hyperobject-unification.
Threads
I have three threads that I’m working in parallel: learning from what I broadly consider ’learning resources’ (at the moment: boot.dev, Go books and websites, and the standard and other libraries and tools), SRifying the material from those books/whatever that I would like to retain, and lots and lots and lots of programming volume from a variety of sources (whose anticipated culmination is in the building of a small project for myself and some friends).
The ‘Roadmap’ is nought but a list of sources for each of these threads, these threads that are of my study the voracious heads, to consume. I list potential such below. I may or may not update this list as I go.
Roadmap
Programming Volume/Learning by doing
That something is included here means it’s a potential thing I may work through, not a sign that I have committed to doing anything in particular with it.
-
The introductory boot.dev course introducing the language -
Exercism Go track https://github.com/aneesh-mulye/go-exercism
Unlocking and completing each concept- All easy exercises [←currently here]
- All medium exercises
- All hard exercises
-
A Tour of Go
-
Go By Example https://gobyexample.com/
-
Learn Go With Tests https://quii.gitbook.io/learn-go-with-tests
-
Go in Practice https://www.manning.com/books/go-in-practice-second-edition
-
Advent of Code 2016 https://github.com/aneesh-mulye/goadvent-2016
-
Gophercises
-
Learn Go With Pocket-Sized Projects https://www.manning.com/books/learn-go-with-pocket-sized-projects
Specifically for backend development:
- boot.dev:
HTTP Clients in GoHTTP Clients project: PokedexHTTP Clients project: Blog Aggregator in Go- HTTP Servers in Go [← currently here]
- File Servers and CDNs
- Go Web Examples https://gowebexamples.com/
- Full Go Backend dev course by the Gophercises guy
Readings
- Learning Go [← currently reading, also currently SRifying (at a different point)]
- Effective Go
- Go In Action https://www.manning.com/books/go-in-action-second-edition
- Go by Example (book) https://www.manning.com/books/go-by-example
- 100 Go Mistakes
- Concurrency books (this is more for concurrency than Go, TBH)
- Concurrency in Go, Cox [← currently reading]
- Learn Concurrent Programming with Go, Cutajar
- Effective Concurrency in Go, Serdar
- John Arundel’s books (Bitfield Consulting)
- The language spec
Library modules, libraries, and tools
In addition to the material, I’ve also identified library modules and tools to learn and internalise.
Relevant ChatGPT conversation: https://chatgpt.com/share/682ce0cf-4bfc-8002-b5b9-1e3b0559aee1
Standard library
- bufio
- builtin
- cmp
- context
- embed
- encoding
- binary
- csv
- errors
- flag
- fmt
- io
- fs
- iter
- log
- slog
- maps
- math
- net
- os
- exec
- user
- path (full)
- regexp
- slices
- sort
- strconv
- strings
- sync
- testing (w/o quick)
- text
- scanner
- template
- time
- unicode
- utf8
- unique
In tools: the core Golang toolchain.
Additional general-purpose libraries
- stretchr/testify — better testing, assertions, etc
- flyingmutant/rapid — proper property testing
- samber/lo — for FP/programming using functional data transforms directly, in the style I like, if/when I want to
Specifically for backend
- encoding/json
- html
- net
- http
- url
- google/uuid
Additionally, the tools:
- goose — migrations
- sqlc — for database interfacing