The term "software factories" conjures up images of pristinely clean technology assembly lines with super-efficient singularly focused line workers. In reality, a software factory is not a place, but rather a process for improving the speed of software development and release. A software factory provides a repeatable, well-defined path to create and update software. As the name implies, a software factory applies manufacturing techniques and principles to software development. This means software factories provide templates, playbooks, and reusable code that people across the organization can use to quickly create new applications.
With DevOps and agile software development methods as a basis, a software factory combines tools, teams, and practices to standardize and reuse code, building upon accumulated knowledge. Organizations using software factories not only speed up software delivery but find that software is of higher quality being built on proven code.
Enabling the Citizen Developer
"Citizen Developer" has become a key phrase in the IT strategy of many agencies. The term refers to giving people within the organization (and closer to the work the apps are designed for) the ability to create needed digital applications without having to rely solely on IT experts. This is made possible through low code solutions that give non-technical developers a template of an application that they can then customize by clicking and dragging elements, rather than writing code.
With a focus on proven, repeatable processes it would seem there is no room for disruption in a software factory, but chaos is becoming a critical piece of the process. Chaos engineering is working to prove or test assumptions and develop a process to address the worst case scenario. Kessel Run, a model for software factories government-wide, has been implementing chaos engineering and recently used it to help GSA determine how Cloud.gov would handle a surge in users.
Expanding Factory Use
The use of software factories requires a number of shifts in traditional ways of thinking and working in government. First, it brings software development in-house rather than relying on outside vendors to provide COTS products or create applications. The fast development cycles and acceptance of failure runs counter to the risk averse nature of government programs and their management. However, the best practice approach of software factories may in fact reduce risk (as well as cost). The DoD is working to create new pathways for agencies to acquire software via their factories so that this new development can be procured within existing acquisition structures.
- Imagine Nation ELC 2022 (October 23-25, 2022; Hershey, PA) - The government technology community comes together to discuss the issues facing government and to work together to develop practical solutions and innovative strategies.
- ITMod Talks (November 8, 2022; Arlington, VA) - Top decision-makers from government and tech discuss ongoing efforts in federal IT modernization, the continued move to modern, cloud-based systems, and what is in store with emerging technologies like artificial intelligence.
- Operationalizing Artificial Intelligence (November 29, 2022; Springfield, VA) - The tech world has been abuzz for several years about the promise of artificial intelligence--and the GEOINT community has not been immune to the excitement. This event takes a critical look at what is required to implement GEOINT artificial intelligence capabilities for widespread use.
- ATARC Federal DevOps Breakfast Summit (November 30, 2022; Washington, DC) - This panel will focus on roadblocks towards DevOps adoption and address how to overcome them. What are the challenges to DevOps adoption? What are steps that help make DevOps a reality?
- DevOps Metrics-Performance Playbook (white paper) - This is a guide for organizations and agencies seeking to make data driven decisions, drive desired performance outcomes, and transform organizational culture to advance along their respective DevOps journeys toward enterprise-wide adoption.
- Department of Defense Software Modernization Strategy (white paper) - This strategy sets a path for technology and process transformation that will enable the delivery of resilient software capability at the speed of relevance. It is one in a set of sub-strategies of the DoD Digital Modernization Strategy.