https://medium.com/art-of-data-engineering/understanding-programming-paradigms-in-data-engineering-a-concise-guide-2c96460537e4