https://javascript.plainenglish.io/what-is-the-difference-in-thinking-model-between-programmers-and-normal-persons-8ff8e2e9e94b