https://medium.com/@closedheartsradio/10-essential-programming-concepts-every-developer-should-know-e8118650818e