Each package fulfils a single purposeHandle errors explicitlyReturn early rather than nesting deeplyLeave concurrency to the callerBefore you launch a goroutine, know when it will stopAvoid package level stateSimplicity mattersWrite tests to lock in the behaviour of your package’s API If you think it’s slow, first prove it with a benchmarkModeration is a virtueMaintainability counts