https://medium.com/@ByteScripter/getting-started-a-beginners-guide-to-software-development-ad26452762e1