https://arunangshudas.com/blog/key-considerations-for-developers-building-software/