https://medium.com/@lokeshmallisetty96/mastering-the-art-of-software-development-a-step-by-step-guide-for-beginners-ca36be43f7d9