Software has been around a while. And each time, we are told that this is a new wave and that software is now going to make our lives easier. But with each new wave, building out software keeps getting harder and harder.
There are a ton of technologies out there – cloud, big data, mobility and a whole new wave coming – bots, hololens, machine learning, AI, IoT to name just a few. So how does one keep up with all these and build the software for the next generation.
I believe that the fundamentals of software don’t change. Irrespective of the technologies, software is just an interface that deals with a service which manages data. In the older days all the 3 parts were just an app (Office had an interface, managed a set of logic and saved the data as a document). But as the 3 layers got distributed, software development became more challenging.
Distribution brought in challenges and opportunities. Multi-tenanted systems could handle large data and support many clients. DevOps brought in frequent code deployment leading to evolving systems. New interfaces like mobiles, devices, Hololens and bot frameworks made it easier to work with data. And the cloud brought them all together and made it feasible to scale at lower costs.
But amidst all this, the principles of software development have not changed dramatically. So what are the principles of software development that transcend the different technology waves? Lets explore and find out.