We are now entering a new age where our success will drive us to ingest the last vestiges of "traditional" software development, and in the process make applications truly indispensable to business success. We are entering the era of disposable software.
The days of building applications are over; we're done, or we'd better be very soon. Business executives have lost their appetite for large software projects spanning multiple time zones with timelines measured in months and budgets measured in millions of dollars. Emboldened by the stories of success, business software has advanced from a nice to have to a core requirement, from a solution you go somewhere to use to a solution you use wherever you are. Software is now expected to work when needed, where needed, and be no more difficult or expensive to implement than the often repeated story of Flappy Birds.
If you're not among those on the inside of this transformation, look to the mobile app world for inspiration. Apps are built by leveraging pre-engineered services and frameworks. Agile is the approach because it accommodates imperfect requirements and short windows of opportunity. The leaders in this space have made software so invaluable it's become disposable. First, enabled by cloud SaaS services, open source, and the ability to rapidly develop new solutions; business users can no longer be held captive by their software solution. The pace of business and rate of change require solution owners to seek solutions which maximize agility, efficiency and elasticity. Any software unable to meet these requirements will increasingly be disposed of, not updated. Second, the line separating the apps we use in our personal lives and those at work is blurring rapidly. Just as the public is always on the lookout for newer, better, more innovative apps; so are business users.
The reality of disposable software requires us to look differently at how we manage our development teams and budgets. We need the back-end services plus several supporting services to be in place and accessible across a distributed infrastructure. We need frameworks which minimize the time spent in foundation work so our end customer can see the majority of the value of their spend. Finally, we need to rethink how we hire, train and incent our developers so they are focused on collaboration, communication and reuse rather than viewing software as their magnum opus. Of course wrapping all of this together highlights the importance of DevOps; the glue which makes this approach work.
I know many experts bristle at my advice. They liken modern software development to "hacking", and defend it as nothing more than shoddy software engineering. These are the very people who will be waving from the side of the track as this train roars through their careers.