6-week course · Starts May 5

Idiomatic Testing in Go

Stop fighting your tests.

A live, weekly course · Mondays at 1 PM US Eastern / 17:00 UTC

$480 From $360

Save $120 through April 28

“I'm not a fan of workshops, but Jonathan's didn't feel like one. He started with entertaining examples that got me listening and before I knew it I was learning the basics of something I had never considered learning about. I'm grateful for people like Jonathan who can lower the barrier to learning something.”

Mitchell
Senior Node.js Developer, RIJX.com

Does writing tests feel like a slog?

  • Do all your tests pass while bugs still ship?
  • Are you tired of slow and flaky tests?
  • Does it take longer to write tests than to write the code they test?
  • Do your tests tend to break every time you make a change?
  • Does making your code testable seem to make it worse, not better?

Imagine finding joy in writing tests

  • What if a green test suite actually meant working software?
  • What if the suite ran fast and never flaked?
  • What if tests saved you more time than they cost?
  • What if your tests stayed green when you refactor?
  • What if testability made your code better, not worse?

AI is not a miracle cure

Coding agents amplify whatever you bring, good or bad. You want to be multiplying good tests, not compounding bad ones, and it takes judgment to tell the difference. Testing skill matters more in the age of AI, not less. This course builds it.

What you'll learn

You'll learn how the Go community actually tests, why its idioms produce clearer, faster, less fragile tests than the patterns most of us bring from other languages, and when breaking those idioms is the right call. By week six, you'll know how to apply all of it to your own codebase.

Week 1

Philosophy and Motivation

  • Why we test (and what most people miss)
  • What makes a test good
  • F.I.R.S.T. in practice
  • Why the test pyramid is wrong

Week 2

Writing Idiomatic Tests

  • Why the Go community avoids assertion libraries
  • Comparing structures with cmp.Diff
  • The "got before want" convention
  • Table-driven tests done properly

Week 3

Tools and Techniques

  • The testing package in depth
  • Subtests, helpers, and t.Cleanup
  • Running tests in parallel
  • go test flags that catch bugs you don't know you have

Week 4

Isolation Strategies, Part 1

  • Why "mocks" are usually the wrong answer
  • Using the real thing whenever possible
  • When fakes beat mocks
  • An alternative to every mocking framework you've used

Week 5

Isolation Strategies, Part 2

  • Testcontainers: slow-but-real beats fast-but-fake
  • Hand-rolled stubs (no code generation needed)
  • Layering strategies for a typical web app
  • When to reach for a mocking library anyway

Week 6

The Real World

  • Rolling this out in your existing codebase
  • When not to be idiomatic
  • Live code review of student submissions
  • Q&A and where to go next

Ready to stop fighting your tests? Reserve your seat — early bird discount ends April 28.

“The unexpected outcome was the mentorship you provided to engineers who were newer to Go, helping them understand the what and why of various approaches.”

Dan Pupius
fCTO, Float Health

Is this course for you?

You already write Go at work. You’ve written tests. You have a nagging feeling your tests could be better (smaller, faster, clearer, less fragile) but you’re not sure how to get there.

Maybe you came to Go from Java, C#, or Python, and brought testing habits that don’t fit the language. Maybe you’re a team lead who wants to establish a testing style your team can actually maintain. Maybe you’re adopting TDD and want to start with good habits instead of bad ones.

If any of that sounds like you, this course is for you.

When it’s not for you

If you’re brand new to Go, start with my daily newsletter or the Go Tour first. This course assumes you can already read and write Go code.

If you’re deeply committed to testify and aren’t interested in questioning that, this course will frustrate you. The whole point is to show you the Go community’s alternative, and why it tends to produce better tests.

Who are you, anyway?

Hi! I’m Jonathan Hall. I've been programming most of my life, and I've been programming in Go for more than a decade.

In that time, I've written Go for many well-known companies and contributed to many open-source projects, including several you almost certainly use already. I'm the author and maintainer of a popular open-source library written in Go, Kivik, and co-maintainer of GopherJS, the Go-to-JavaScript transpiler. I am also an active contributor on StackOverflow.

I have directly taught and coached dozens of Go developers, and teach thousands through my daily emails and YouTube channel.

“Jonathan is a very experienced engineer and knows a ton about Go. I personally have become better at Go through working with him.”

Mike Mellenthin
Team Lead, Float Health

How it works

Six live sessions, Mondays at 1:00 PM US Eastern / 17:00 UTC, starting May 5 and running through June 16 (skipping the week of May 25 for Memorial Day). Each session is 90 minutes: presentation, break, then review and Q&A.

Small cohort. Capped at 15 students so every week has room for real discussion and feedback on your code.

Watch replays anytime. Every session is recorded and shared with enrolled students immediately after. Can’t attend live? Catch up whenever you have time. The course is designed to work around your schedule.

24/7 Slack access. Ask questions, share code, and get feedback between sessions, from any timezone and any time of day. I drop in regularly, and fellow students help each other.

Optional homework. Small exercises each week to practice what we covered. No grades, no pressure. Just a nudge to actually do the thing.

“Jonathan kept the discussion in the workshop open and productive at the same time, and his technical expertise is excellent.”

Alexander Kaiser
Principal Architect, Textkernel

Pricing

Save $120 on either tier through April 28.

Standard

The full course, with live sessions and ongoing access to the group.

$480 $360

Save $120 through April 28

Reserve your seat
  • Six live 90-minute sessions
  • Recordings you can watch anytime
  • 24/7 Slack access with me and fellow students
  • Code review during sessions
  • Optional weekly homework exercises
Best value

VIP

Everything in Standard, plus private mentoring after the course.

$800 $680

Save $120 through April 28

Reserve VIP
  • Everything in Standard, plus:
  • Two 60-minute 1:1 calls with me in the month after the course
  • Apply what you learned to your real codebase, one-on-one
  • Private chat access during the follow-up month
  • Bundle saves $230 vs. buying the course + Pro mentoring separately

Looking to train a whole team? I also run private cohorts for companies.

Frequently Asked Questions

Ready to stop fighting your tests?

Next cohort starts Monday, May 5. Seats are limited to 15. Early bird discount ends April 28.