https://levelup.gitconnected.com/exploratory-programming-learn-to-code-better-by-breaking-things-7a575ffe97ab