https://medium.com/@next_shore/basic-programming-principles-every-programmer-should-know-86a48551979e