https://medium.com/illumination/programmers-despise-abstract-problems-and-find-it-difficult-to-solve-them-a8fdaf4f7831