Source: https://www.youtube.com/watch?v=UKe5sX1dZ0k
By Dave Cheney
Each Go package is a self contained unit Test observable behavior of package, not implementation
Design packages around behavior, not implementation
Do not make server/common/utils packages because that is not a behavior
Make the file in the package called server
Accept Interfaces, return structs