https://javascript.plainenglish.io/the-good-and-bad-things-ive-been-thinking-about-as-a-new-programmer-e5f28c55ad57