https://blog.stackademic.com/what-crucial-thing-i-have-learned-by-failing-first-in-programming-7080035526bc