Golang: a humble sales pitch to the holdouts
This talk is a story about choosing a language for your project, and about why you might decide to choose Go.
A secondary goal is to show lots and lots of snippets of Go code.
One problem for language choosers is the one-liner language sales pitch. If you've heard the one-liner sales pitch for Go, you have most likely heard that it is "C for the modern era," or that it is well suited to support concurrency. This is all true.
One-liner sales pitches never address the one question that I care most about:
When your project hits the 1 yr or 2 yr mark, what happens as your abstract data types in your problem domain get large, complicated, tangled, and unwieldy?
This longer-form sales pitch for Go will make the claims:
Go is opinionated** (** trigger word!) in ways that remove needless distraction.
Go is generous/progressive (opposite of opinionated?) in ways that give us lots of power to untangle spaghetti architecture.
Prize features in Go for crafting a clean application architecture:
1. Modules
2. Namespaces
3. Data-hiding (private data)
4. Interface polymorphism
5. Type safety
6. Multi-paradigm (procedure, function, object)
7. Testability
Distractions and bike-shed controversies that are eliminated in Go:
1. Abusing exception-handling for control flow
2. @VisibleForTesting, mocking, and other uncomfortable testing contortions
3. Composition versus inheritance. (Message chaining is alleviated, too)
4. Format (go fmt)
5. Private vs protected data
6. for vs while vs do-while
7. Compiler warnings (no debates about whether to require -Wall)