De-Risking Government Technology: Federal Agency Field Guide
Total Page:16
File Type:pdf, Size:1020Kb
De-risking Government Technology Federal Agency Field Guide September 2020 2 DE-RISKING GOVERNMENT TECHNOLOGY Acknowledgements Numerous contributors across GSA made this work possible. We’d like to thank: Project Team Mark Hopson Randy Hart Waldo Jaquith Igor Korenfeld Vicki McFadden Rebecca Refoy Alicia Rouault With Support From Christine Bath, 18F Design Heather Battaglia, 18F Engineering Kristina Britt, TTS outreach Ron Bronson, 18F Design Will Cahoe, 10x Ryan Johnson, 18F Design Nico Papafil, 10x Steven Reilly, 18F Engineering Dahianna Salazar Foreman, TTS outreach 18F Writing Lab Office of Strategic Communications Office of General Counsel TTS Front Office TTS Communications 4 DE-RISKING GOVERNMENT TECHNOLOGY 5 TABLE OF CONTENTS 01 Introduction 6 03 Deciding what to buy 60 About the editors 7 Conduct Modern Market Research 61 Structure of this handbook 8 Use the Agile contract format to procure Agile software 75 development services Basic principles of modern software design 9 Use time and material contract types for custom Agile software 83 development services 02 Planning 20 Evaluate contractor proposals based on industry best practices 89 Assign dedicated and empowered product owners to lead 21 development efforts 04 Doing the work 102 Involve end users early and often in software development efforts 24 Host an effective post-award kick-off meeting to energize 103 Consider tradeoffs in build-or-buy decisions, taking all factors 26 folks for the work to come into consideration Oversee Agile projects by measuring end user outcomes 106 Default to open 30 Post-award contract administration looks different in Agile 114 Require infrastructure-as-code, single-command deployment, 33 and per-sprint government verification of functionality Monitor conformance with the QASP at the end of every sprint 118 Leadership should set direction and empower teams 36 Software development efforts shouldbe tightly scoped to reduce 38 05 Appendix 122 risk and avoid overspending Verbal Interview Question Bank 123 Clear ‘path to production’ before awarding a contact 46 Give teams access to the remote collaboration tools that 49 they need to be successful Invest in technology incrementally and budget for risk 51 mitigation prototyping INTRODUCTION 7 Only 13% of large government software projects are successful.1 01 Introduction Modern software development practices reduce that risk by delivering working code every few weeks and getting feedback from end users to ensure that the product meets their needs. Federal agencies are recognizing that their legacy development practices are risky and are shifting to this agile software development model. However, the ecosystems in place at agencies — budgeting, procurement, and oversight structures — do not support agile development practices, so our success rate remains low. In the federal government, technology isn’t the challenge — outdated practices are. This guide provides instructions to federal agencies in how to budget for, procure, and oversee software development projects, to reduce risk and wasteful spending, support teams effectively, and improve outcomes for end users. About the editors We work for 18F, part of the Technology Transformation Services team at the General Services Administration (GSA). We’re grateful to GSA’s 10x for sponsoring this work, and to the many people who contributed their time and knowledge. If you’re interested in working with 18F, contact us at [email protected]. 1 Projects valued at $6M or greater, in Europe and the United States, that were completed satisfactorily, on time, and within budget. From The Standish Group’s “Haze,” based on their CHAOS database. 8 DE-RISKING GOVERNMENT TECHNOLOGY INTRODUCTION 9 Structure of this handbook Basic principles of modern software design This handbook provides straightforward recommendations for federal agency staff to address common pitfalls in implementing modern A technology project’s odds of success improve when the “non- software development practices. It is designed for anyone involved technical” government leaders who fund and oversee it understand in the budgeting, contracting, or execution of an agency mission six basics concepts of modern software development: user-centered through any government program, whether it resides in a department, design, agile software development, product ownership, DevOps, agency, or bureau. It assumes that taxpayer funds will need to be building with loosely coupled parts, and modular contracting. You spent externally in some way in order to successfully accomplish don’t have to be a technologist to understand these general concepts. whatever that mission may be. Once you grasp them, it’ll feel like you’ve gained a new super power, allowing you to cut through the jargon and technical detail, and stay This handbook is primarily focused on, and would benefit, any focused on the basics of successfully guiding any software project. mission that requires software, although some of the material recommendations and explanations are relevant in other areas of government information technology spending, such as hardware and USER-CENTERED DESIGN emerging technologies. It is divided into the three major stages for any appropriated funds spent by a government agency to further its All software development should be centered on the needs of the mission. software’s actual end users, the specific people who are expected to use it. These “end users” may be applicants for benefits, call center Some portions of this handbook were written specifically as part workers, case workers, other state employees or any of innumerable of this broader compendium, but the vast majority of it is collected other groups. writings, produced during years of research and practice, tested by experience from dozens of people and authors. It has been compiled Designing with and for users reduces project risks by ensuring the and edited to be practical and immediately usable by anyone software is solving actual problems (as opposed to what a few who has questions on these topics, providing sufficient detail to stakeholders think the problems actually are). These problems are successfully execute the principles, methods, and lessons learned identified via a variety of research tactics, including interviews and from people with direct, immediate experience with them. It will be testing for usability. updated continuously as we advance our knowledge of budgeting to procure modern, digital services for public good. In user-centered design, all work is in the service of those end users’ needs. That work is identified and prioritized in close and regular collaboration with end users, and is informed by, but not subservient to, any technical constraints. (That is, the goal of the work is to deliver value to users, which involves dealing with the realities of approved programming languages or server software, but work should never be 10 DE-RISKING GOVERNMENT TECHNOLOGY INTRODUCTION 11 omitted because of the perception that technical constraints would of relying on years of costly planning and “requirements gathering” make it impossible.) The technical team and end users regularly before beginning to write actual software, agile development projects review the work, as it is being performed, and the development are planned only in broad strokes, with a well defined description work on the new software is not considered finished until those end of the overall project goal and a strong preference for just getting users agree that their needs have been met. Designing with and started. A small, empowered, self-motivated team (usually 5-9 people, for users reduces project risks by ensuring the software is solving including developers, product managers, user researchers, writers, users’ problems. and/or security experts) is dedicated to accomplishing that goal, using user-centered design, working in two-week cycles to deliver some actual working software. AGILE SOFTWARE DEVELOPMENT On day one, the team plans only what they’ll do for the next two Detailed, long-term plans for major, custom software projects have weeks. (The length of a project’s cycles can be as brief as one week long been the norm in government. But, as software engineers and or as long as four weeks — two weeks is the most common.) Each policy makers have learned over the years, those plans are never task they’ll work on is in the form of a “user story” — a specific user correct. They need a lot of costly modifications, leading to requests need revealed by user research.2 The entire collection of user stories for more money to pay for “change orders”. It’s time for government to be worked on is called the “backlog.” executives and budget officials to stop asking for detailed long-term plans, and instead to budget for software projects in a new way. The team works on a selected group of user stories for two weeks and, at the end, the team reviews the work that they did, tests it with Planning an entire project upfront is known as “waterfall” end users, and then plans the next two weeks by pulling more user development. Imagine planning a month-long family vacation of stories from the backlog. Repeat. Each of these two-week cycles is driving around the United States. Under waterfall, this would entail referred to as a “sprint.” planning up front each day’s agenda, including the route driven, booking every hotel room, pre-paying for every meal, pre-buying In the beginning, the software they produce may not seem like tickets for admission to attractions, etc. This would never work much (and may even be replaced by something else later), but it will because things change, unexpected options come up, and no rational gradually and systematically inform the project’s technical approach person would want to lock in every decision at the start of the journey and help the team sensibly integrate the project into an agency’s when they don’t know what the journey holds. Instead, most people existing legacy system. would map out the general route to be taken and plan a few major stops — the specifics would be sorted out as they progressed along the way.