https://medium.com/@araujogabe1/introducing-15-must-know-programming-concepts-for-new-python-developers-ca243964fe9e