One of the joys of teaching others Go is seeing the clever and crazy patterns people create with the language when they first learn it: functional programming, interface{} abuses, reflection madness. In this talk, we will build a case for simplicity by contrasting the kinds of code written by newbie Gophers with code written by more experienced Go programmers, using case studies from MongoDB's Go codebase and the community at large.

Learn why the most effective Go code is often the least exciting and why you should be excited about unexciting code.

In his two years at MongoDB, Kyle has worked on a recently open-sourced continuous integration system, Evergreen, and on the tools that ship with the MongoDB database. He's pushed hard to cultivate the usage of Go within the company. When he's not hacking away at distributed systems, Kyle performs at comedy shows around New York.

Good code is not the interesting or even succint.

Good code is easy to understand, easy to work with, and easy to replace.

Usually there is only one correct way to do things.

- Zhuang Zhou (Zhungzi)
- Finalizers - like destructor - dependent on Go's runtime GC implementation - Not idiomatic - Just use defer
- Unnecessary Concurrency - usually a simple for loop is enough...
- Brian Kernighan
- Reflection and interface{}
- Martini
- Negroni
- Angier