The Story Behind “100 Go Mistakes and How to Avoid Them”
Overall Reception and Usefulness
- Many commenters praise the book as “real-world,” practical, and easy to dip into for specific issues.
- Several recommend it strongly, comparing its role in Go to “Effective Java” for Java.
- People highlight that its “mistake”-based format works well for book clubs and mixed-experience groups, sparking discussions and experience-sharing.
Author Experience vs. Expertise
- One thread notes the author initially hadn’t written huge amounts of Go, yet still produced a strong, accurate book.
- Others counter that many programming books by low-experience authors show their weaknesses; this one is seen as an exception.
Technical Gotchas Discussed
- The showcased mistake about goroutines and loop variables (mistake #63) triggers a detailed discussion:
- Clarification that the core issue is loop variable capture in closures, not goroutines per se.
- Explanation that Go 1.22 changed loop-variable semantics, making this specific bug largely obsolete, though it used to be a common source of missed/duplicated values.
- Another thread calls out
sync.Poolwith non-fixed-size objects as a serious, under-documented pitfall and suggests it belongs in any “mistakes” list. - Some discuss arenas and GC behavior, noting Go’s experimental arenas were tried and then dropped.
Maintaining and Updating Content
- Commenters are impressed that the author tracks which “mistakes” are now outdated and documents this on the companion site, reinforcing a sense of craftsmanship and care.
Publishing, Tooling, and Copyediting
- Multiple anecdotes criticize Manning’s editorial processes: awkward tooling (editing AsciiDoc/DocBook in ways that destroy formatting), odd copyeditor choices, and confusing or perfunctory proposal handling.
- In contrast, O’Reilly’s tooling and Git-based workflows are praised as simple and powerful.
- Some argue that comments directly in source (with version control) are preferable to PDF/Word workflows; others find editing raw markup “archaic.”
Writing Style, Length, and “Padding”
- One reader objects to what feels like padding: taking a short explanation and expanding it heavily with setup and commentary.
- The author responds that:
- Emphasizing how common a mistake is helps orient readers.
- Even simple snippets benefit from explicit statements of intent.
- Marginal explanations don’t increase page count and focus reader attention.
- There’s general agreement that “book padding” exists in the industry, but not all publishers push for it; some editors favor cutting “just-in-case” material.
Language Design and “Room for Mistakes”
- A philosophical side-thread debates whether “a good language should leave no room for mistakes.”
- Replies argue that:
- Any practical language has pitfalls; the goal is to reduce, not eliminate, them.
- Go has fewer hazards than C/C++ but still many tradeoffs.
- Feature gaps (historical lack of generics, no exceptions, no default/named args) are cited as “mistakes” that some avoid by not using Go.