Traditional software-development methods can’t keep pace with rapidly changing user needs and expectations. Developers often spend months gathering user requirements, months building the software, and months deploying it. By the time they get feedback from users, the software is often badly out of date. It can’t easily be changed, so the glacial process begins all over again.
New software-development methods enable organizations to provide users with new features and functions on a daily or weekly basis, so that the software actually stays ahead of user expectations. These methods include user-centered design, agile, and DevSecOps, which focus on discovering what users really want and need, quickly incorporating their feedback, and making sure that once the software is in the hands of users, it does what it should.
Traditional software-development team culture is stovepiped and hierarchical, limiting communication and collaboration—and making it difficult to quickly deliver and update software. In addition, no one “owns” the software—if a problem arises, for example, both the development team and the operations team may say it’s not their responsibility.
Modern software-development team culture eliminates traditional hierarchies and stovepipes—autonomous teams work together collaboratively to build and deploy software. The teams are a blend of designers, developers, and engineers, so that everyone is responsible for the software’s success.
The ultimate goal of modern software development is to deliver software faster, get feedback faster, and incorporate changes faster. To do that, we have to think about technology, methods, and culture all at once. For example, the need for speed requires us to break down monolithic technologies into smaller chunks, to use the automation of DevSecOps for rapid deployment, and to collaborate and communicate.
In the commercial world, businesses that fail to bring together all three elements of modern software development cannot hope to compete. While government faces different sets of challenges, a holistic approach to software development is no less important.