Best Practices for Industrial Programming
summary
Advice scoped to code serving mutable business requirements: prefer explicit constructor-based dependency injection, avoid package globals and func init, and wire multiple binaries under a command/ directory; use command-line flags as the primary config surface with env/config files secondary; manage goroutine lifecycles with a nursery/runner pattern (or errgroup equivalents) so every goroutine has a stop function; pick Prometheus for metrics, structured JSON logs, and Zipkin/Jaeger for tracing once the system spans several dozen microservices; make go test succeed after a fresh clone and skip heavyweight integration tests unless an env key is set.
AI-written summary · about
chapters (30)
- 0:00Introduction
- 3:07Agenda
- 4:05Project Structure
- 7:48Configuration
- 9:58Dependency Injection
- 14:37Go Routines
- 14:56The Problem with Go Routines
- 15:25Go Programming Language Book
- 16:15Packaged Run
- 17:43Nursery
- 18:24Futures
- 19:16Concurrency
- 19:58Observability
- 21:07Good observability
- 22:43Three pillars of observability
- 22:57Metrics
- 23:42Metrics Power
- 24:49Logging
- 26:18Tracing
- 27:22No Single Paradigm
- 27:34Integration Testing
- 27:47Testing
- 28:32Integration Tests
- 29:03Advanced Testing
- 30:09Mocking dependencies
- 32:31Package Context
- 33:29Context Value
- 35:11Emerging Patterns
- 35:41Go Ecosystem
- 36:12Build Empathy
related talks
17mConceptualizing Large Software Systems
28mCode Reviews in Go: Top 5 Misses
31mGo From Dev to Prod
30mUnraveling Go Anti-Patterns
31mGo tricks from the trenches
27mTinkertoys, Microservices, and Feature Management: How to Build for the Future
17mDeveloper Experience Q&A
43mScalable Best Practices for Your Development Team
