What’s the key to successful software development and operations in the federal government? Is it advanced technology, like cloud, microservices, and containers? Or does the key lie in modern methods, such as agile, DevSecOps, and user-centered design? How important is organizational and team culture, and how people collaborate?
Actually, none of those is the key to success. Or rather, they all are—when brought together as a cohesive package. Government organizations today tend to focus on just one or two elements when developing software—usually methods and technology, rather than culture. But experience across government has shown that all three elements must be present, or the project will likely fail to deliver on mission needs.
Here’s why each element is so critical:
Traditional technologies are cumbersome, and can’t adapt fast enough to changing user needs and security threats. When a change is made to one area of technology, it can have a disruptive effect on the entire system, and fixes are both difficult and expensive. Cybersecurity is usually an afterthought, and features are often outdated by the time the software gets into users’ hands.
New technologies such as microservices, containers, and serverless computing make it possible to break up the system into smaller, interoperable pieces—essentially, a modular approach. These individual pieces can be quickly updated without disrupting the larger system, making it easier to add new features and security measures. In addition, by leveraging the power of the cloud, the system has higher availability—there’s less downtime for users—and different parts of the system can be smoothly scaled up or down.
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.
Learn about Booz Allen’s Digital Solutions capability and job opportunities.