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