https://medium.com/@andytechdev/building-a-toolkit-of-problem-solving-techniques-for-success-b60d6f8bf48b