├── .bundler-version ├── .ruby-version ├── .gitignore ├── assets ├── img │ ├── agile-ucd.png │ └── favicon │ │ ├── favicon.ico │ │ ├── favicon-16x16.png │ │ ├── favicon-32x32.png │ │ ├── favicon-57x57.png │ │ ├── favicon-72x72.png │ │ ├── favicon-180x180.png │ │ ├── favicon-192x192.png │ │ └── favicon-512x512.png ├── css │ └── styles.scss └── js │ └── respond.min.js ├── .github └── dependabot.yml ├── pages ├── agile-is-something-you-are-not-something-you-do.md ├── modern-software-product-development.md ├── agile-is-a-thing-already.md ├── agile-fundamentals.md ├── 18f-agile-based-project-approach.md └── agile-lexicon.md ├── .about.yml ├── _data ├── favicons.yml ├── header.yml ├── navigation.yml ├── usa_identifier.yml ├── footer.yml └── theme.yml ├── _config.yml ├── Gemfile ├── CONTRIBUTING.md ├── images ├── 18f-logo-black.svg ├── 18f-logo-blue.svg └── gsa-logo-blue.svg ├── README.md ├── index.md ├── TERMS.md ├── Gemfile.lock ├── guild └── README.md ├── _includes └── footer.html └── COPYING.txt /.bundler-version: -------------------------------------------------------------------------------- 1 | 2.1.4 -------------------------------------------------------------------------------- /.ruby-version: -------------------------------------------------------------------------------- 1 | 2.7.2 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | _site 2 | .jekyll* 3 | .sass-cache 4 | -------------------------------------------------------------------------------- /assets/img/agile-ucd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/18F/agile/18f-pages/assets/img/agile-ucd.png -------------------------------------------------------------------------------- /assets/img/favicon/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/18F/agile/18f-pages/assets/img/favicon/favicon.ico -------------------------------------------------------------------------------- /assets/img/favicon/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/18F/agile/18f-pages/assets/img/favicon/favicon-16x16.png -------------------------------------------------------------------------------- /assets/img/favicon/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/18F/agile/18f-pages/assets/img/favicon/favicon-32x32.png -------------------------------------------------------------------------------- /assets/img/favicon/favicon-57x57.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/18F/agile/18f-pages/assets/img/favicon/favicon-57x57.png -------------------------------------------------------------------------------- /assets/img/favicon/favicon-72x72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/18F/agile/18f-pages/assets/img/favicon/favicon-72x72.png -------------------------------------------------------------------------------- /assets/img/favicon/favicon-180x180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/18F/agile/18f-pages/assets/img/favicon/favicon-180x180.png -------------------------------------------------------------------------------- /assets/img/favicon/favicon-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/18F/agile/18f-pages/assets/img/favicon/favicon-192x192.png -------------------------------------------------------------------------------- /assets/img/favicon/favicon-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/18F/agile/18f-pages/assets/img/favicon/favicon-512x512.png -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: bundler 4 | directory: "/" 5 | schedule: 6 | interval: daily 7 | time: "09:00" 8 | open-pull-requests-limit: 10 9 | -------------------------------------------------------------------------------- /pages/agile-is-something-you-are-not-something-you-do.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Agile is something you are, not something you do 3 | permalink: /agile-is-something-you-are/ 4 | layout: page 5 | sidenav: sidenav 6 | --- 7 | If you take nothing else from all these words, take this. Agile is not a checklist, or a methodology, or a series of rituals. Agile is a way of thinking and a way of attacking problems. Embrace mistakes, learn, and keep trying. Mess up and learn again and again and again. Cut your losses. Fail forward fast. It’s okay. You won’t get fired. You’re learning. 8 | 9 | _That_ is Agile. 10 | -------------------------------------------------------------------------------- /.about.yml: -------------------------------------------------------------------------------- 1 | --- 2 | name: Agile 3 | full_name: Agile Guild 4 | mission: To improve the quality and speed of service delivery through process 5 | improvement by encouraging the use of iterative methods in the research, 6 | planning, design and development of solutions we implement. 7 | status: active 8 | private: 9 | slack: g-agile 10 | drive: https://drive.google.com/drive/folders/0B_n2YScccqDXfjRNN0JXdFNYYzhqLWJJN0JCRW12SGQ3emkzc1BqMmZYRi1ZTjdRY2xwclU 11 | charter: https://docs.google.com/document/d/1NJYy34sOc1NdcQ9f1NZJZg-RGgu5ey0UQ1SugwE9Vlo/edit 12 | leads: 13 | - sarah 14 | members: 15 | - sarah 16 | - bret 17 | - jessie 18 | - david 19 | owner_type: guild 20 | -------------------------------------------------------------------------------- /_data/favicons.yml: -------------------------------------------------------------------------------- 1 | # This is the configuration for the site favicons. 2 | 3 | - rel: shortcut icon 4 | type: image/ico 5 | href: /assets/img/favicon/favicon.ico 6 | - rel: icon 7 | type: image/png 8 | href: /assets/img/favicon/favicon-180x180.png 9 | - rel: icon 10 | type: image/png 11 | sizes: 192x192 12 | href: /assets/img/favicon/favicon-192x192.png 13 | - rel: apple-touch-icon-precomposed 14 | href: /assets/img/favicon/favicon-57x57.png 15 | - rel: apple-touch-icon-precomposed 16 | sizes: 72x72 17 | href: /assets/img/favicon/favicon-72x72.png 18 | - rel: apple-touch-icon-precomposed 19 | sizes: 180x180 20 | href: /assets/img/favicon/favicon-180x180.png 21 | -------------------------------------------------------------------------------- /_data/header.yml: -------------------------------------------------------------------------------- 1 | # This is the configuration for the site header. 2 | 3 | # Set header title differently from the site's title (as defined in _config.yml). 4 | # Uncomment the following line to use the header title. 5 | # title: Header title 6 | 7 | # Show or hide the official USA banner at the top of the site. 8 | # Comment out to the following line to hide. 9 | usa_banner: true 10 | 11 | # This setting changes the TLD used as an argument for trust in banner.html. 12 | # If options besides .mil and .gov are added, it may be worth adding a JS 13 | # determiner or other automated feature. If undefined, the default is .gov 14 | # government_tld: .mil 15 | 16 | # Defines the type of header. 17 | # Header types can be 'basic', 'basic-mega', 'extended' or 'extended-mega'. 18 | # https://designsystem.digital.gov/components/headers/ 19 | type: extended 20 | 21 | title: Agile Principles 22 | logo: 23 | src: /images/18f-logo-black.svg 24 | alt: 18f 25 | 26 | # this is a key into _data/navigation.yml 27 | primary: 28 | links: primary 29 | 30 | # this is a key into _data/navigation.yml 31 | secondary: 32 | links: secondary 33 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | title: Agile Principles and 18F Practices 2 | description: >- 3 | This is the 18F Agile Principles Guide. 4 | url: "https://agile.18f.gov" 5 | 6 | # Base configuration 7 | exclude: 8 | - .rvmrc 9 | - .rbenv-version 10 | - README.md 11 | - Rakefile 12 | - changelog.md 13 | - guild 14 | - CONTRIBUTING.md 15 | 16 | # build settings 17 | theme: uswds-jekyll 18 | markdown: kramdown 19 | highlighter: rouge 20 | plugins: 21 | - jekyll-sitemap 22 | - jekyll-feed 23 | 24 | 25 | # Author/Organization info to be displayed in the templates 26 | author: 27 | name: 18F 28 | url: https://18f.gsa.gov 29 | 30 | github: 31 | organization: 18F 32 | repository: agile 33 | default_branch: 18f-pages 34 | 35 | # Repo list 36 | # List repos that you would like to appear on the homepage here 37 | repos: 38 | - name: agile 39 | description: Main repository 40 | url: https://github.com/18F/agile 41 | 42 | # DAP and google analytics data 43 | dap_agency: GSA 44 | dap_subagency: TTS 45 | google_analytics_ua: UA-48605964-19 46 | 47 | # Add search site handle to enable search 48 | search_site_handle: agile.18f.gov 49 | 50 | scripts: 51 | - assets/uswds/js/uswds.min.js 52 | -------------------------------------------------------------------------------- /_data/navigation.yml: -------------------------------------------------------------------------------- 1 | # This is the configuration for the site navigation. 2 | 3 | # This file defines the structure of various named navigational 4 | # listings, any of which can be used (with some caveats) as the 5 | # links in your header, footer, and per-page side navigation. 6 | # 7 | # For instance, if you have a "primary" navigation list here, you 8 | # can use that as your header's primary navigation by setting 9 | # `primary.links` to "primary": 10 | # 11 | # primary: 12 | # links: primary 13 | # _data/navigation.yml 14 | primary: 15 | - text: Home 16 | href: / 17 | - text: More 18F guides 18 | href: https://18f.gsa.gov/guides/ 19 | external: true 20 | 21 | # 22 | sidenav: 23 | - text: Introduction 24 | href: / 25 | - text: Modern software product development 26 | href: /modern-software-product-development/ 27 | - text: Agile is a thing already 28 | href: /agile-is-a-thing-already/ 29 | - text: Agile is something you are, not something you do 30 | href: /agile-is-something-you-are/ 31 | - text: 18f Agile based project approach 32 | href: /18f-agile-approach/ 33 | - text: Agile fundamentals 34 | href: /agile-fundamentals/ 35 | - text: Agile lexicon 36 | href: /agile-lexicon/ 37 | -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | source "https://rubygems.org" 2 | 3 | # Hello! This is where you manage which Jekyll version is used to run. 4 | # When you want to use a different version, change it below, save the 5 | # file and run `bundle install`. Run Jekyll with `bundle exec`, like so: 6 | # 7 | # bundle exec jekyll serve 8 | # 9 | # This will help ensure the proper Jekyll version is running. 10 | # Happy Jekylling! 11 | gem 'jekyll', '>= 4.2.0' 12 | gem 'jekyll-sitemap', '>= 1.4.0' 13 | 14 | # This is the default theme for new Jekyll sites. You may change this to anything you like. 15 | gem 'uswds-jekyll', '~> 5.3', '>= 5.3.0' 16 | 17 | # If you want to use GitHub Pages, remove the "gem "jekyll"" above and 18 | # uncomment the line below. To upgrade, run `bundle update github-pages`. 19 | # gem "github-pages", group: :jekyll_plugins 20 | 21 | # If you have any plugins, put them here! 22 | group :jekyll_plugins do 23 | gem "jekyll-feed", "~> 0.16" 24 | end 25 | 26 | # Windows does not include zoneinfo files, so bundle the tzinfo-data gem 27 | gem "tzinfo-data", platforms: [:mingw, :mswin, :x64_mingw, :jruby] 28 | 29 | # Performance-booster for watching directories on Windows 30 | gem "wdm", "~> 0.1.0" if Gem.win_platform? 31 | 32 | 33 | gem "webrick", "~> 1.7" 34 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Running the agile guide locally: 2 | Be sure to have Jekyll and Kramdown installed. 3 | 4 | ``` 5 | gem install jekyll 6 | gem install kramdown 7 | ``` 8 | 9 | Fork and clone the repo: 10 | 11 | ``` 12 | git clone git@github.com:18F/agile.git 13 | cd agile 14 | ``` 15 | Run Jekyll: 16 | 17 | ``` 18 | jekyll serve --baseurl '' 19 | ``` 20 | 21 | # Contributing 22 | 23 | If you'd like to contribute to this project, please use the fork-and-pull 24 | model: 25 | 26 | 1. Fork this repository to your personal account. 27 | 2. Create a branch and make your changes. 28 | 3. Test the changes locally/in your personal fork. 29 | 4. Submit a pull request to open a discussion about your proposed changes. 30 | 5. We'll talk about it and decide to merge or request additional changes. 31 | 32 | --- 33 | 34 | The project is in the public domain within the United States, and 35 | copyright and related rights in the work worldwide are waived through 36 | the [CC0 1.0 Universal public domain dedication][CC0]. 37 | 38 | All contributions to this project will be released under the CC0 39 | dedication. By submitting a pull request, you are agreeing to comply 40 | with this waiver of copyright interest. 41 | 42 | [CC0]: http://creativecommons.org/publicdomain/zero/1.0/ -------------------------------------------------------------------------------- /images/18f-logo-black.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 8 | 10 | 15 | 16 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | **⚠️ This guide has moved to the [consolidated 18F guides repository](https://github.com/18F/guides).** 2 | 3 | # TTS Agile Guild 4 | 5 | The Technology Transformation Service (TTS) Agile Guild is a community that fosters agile methodologies within government. For more on the guild, please see our [documentation](https://github.com/18F/agile/blob/18f-pages/guild/). 6 | 7 | The guild meets every other Fridays from 2:00-2:30 ET. For a link to the meeting, please consult the [TTS Guilds Meetings and Office Hours calendar](https://calendar.google.com/calendar/embed?src=gsa.gov_o1aqcv28k1f0nmca5bkch8los4%40group.calendar.google.com&ctz=America%2FChicago) 8 | 9 | # Agile guide 10 | 11 | The guild publishes an [agile guide](https://agile.18f.gov) that is based on experience on 18F project teams and invdividuals inside and outside of government with experience in agile disciplines. 12 | 13 | This should be considered a work in progress. We welcome pull requests and discussion via [GitHub issues](https://github.com/18F/agile/issues). Please refer to our [documentation and contribution guidelines](https://github.com/18F/agile/blob/18f-pages/CONTRIBUTING.md). 14 | 15 | ## License 16 | 17 | The project is in the public domain, and all contributions to it will be released as such. For more details see [TERMS](TERMS.md) 18 | 19 | If you contribute the open source work of others, please mark it clearly in your pull request. 20 | 21 | ## cloud.gov Pages 22 | 23 | This site is now on cloud.gov Pages. See settings > Webhooks for details. 24 | -------------------------------------------------------------------------------- /assets/css/styles.scss: -------------------------------------------------------------------------------- 1 | --- 2 | --- 3 | 4 | 5 | h1 { font-size: 2em } 6 | 7 | .categoryDiscover header h2 { border: 2px solid #4980BE } 8 | .categoryDecide header h2 { border: 2px solid #51AC4F } 9 | .categoryMake header h2 { border: 2px solid #EDA734 } 10 | .categoryValidate header h2 { border: 2px solid #CE5D30 } 11 | .categoryFundamentals header h2 { border: 2px solid #123B5B } 12 | 13 | .parentDiscover header h1 { border: 3px solid #4980BE } 14 | .parentDecide header h1 { border: 3px solid #51AC4F } 15 | .parentMake header h1 { border: 3px solid #EDA734 } 16 | .parentValidate header h1 { border: 3px solid #CE5D30 } 17 | .parentFundamentals header h1 { border: 3px solid #123B5B } 18 | 19 | .method header { 20 | padding-bottom: 0; 21 | } 22 | 23 | .method header h1 { 24 | margin: 0; 25 | float: left; 26 | } 27 | .method header h2 { 28 | /* position: absolute;*/ 29 | /* right: 1em;*/ 30 | margin: 0; 31 | margin-left: 1em; 32 | float:right; 33 | font-weight: normal; 34 | font-size: 1em; 35 | padding: 0.5em 1.5em; 36 | text-align: center; 37 | } 38 | .method header a { 39 | border-bottom: none; 40 | color: #000; 41 | } 42 | .method header a:hover { 43 | color: #0072ce; 44 | } 45 | 46 | @media screen and (max-width: 40.5em) { 47 | .method header h2 { 48 | clear: both; 49 | float:left; 50 | margin-left: 0; 51 | padding: 0.3em 1.5em; 52 | margin-top: 0.5em; 53 | } 54 | } 55 | .parent header h1 { 56 | padding-bottom: 0.45em; 57 | margin-bottom: 0.9em; 58 | float: none; 59 | border-top: none; 60 | border-left: none; 61 | border-right: none; 62 | } 63 | 64 | header { 65 | border: none; 66 | } 67 | 68 | .container > header { 69 | border-bottom: 4px solid {{ site.brand_color }}; 70 | } 71 | 72 | .img__full img { 73 | max-width:800px; 74 | width: 100%; 75 | } 76 | -------------------------------------------------------------------------------- /_data/usa_identifier.yml: -------------------------------------------------------------------------------- 1 | # Identifier data 2 | 3 | identifier_data: 4 | - site_name: 18F Agile Principles 5 | site_email: 18F@gsa.gov 6 | site_url: https://agile.18f.gov 7 | site_about: https://agile.18f.gov 8 | agency: U.S. General Services Administration 9 | agency_acronym: GSA 10 | agency_logo: gsa-logo-blue.svg 11 | agency_url: https://www.gsa.gov 12 | agency_about_url: https://www.gsa.gov/about 13 | org_primary: Technology Transformation Services 14 | org_primary_acronym: TTS 15 | org_primary_url: https://www.gsa.gov/tts/ 16 | org_primary_email: tts-info@gsa.gov 17 | org_primary_about: https://www.gsa.gov/tts/ 18 | org_primary_bio: "As part of GSA’s Technology Transformation Services (TTS), we apply modern methodologies and technologies to improve the public’s experience with government. We help agencies make their services more accessible, efficient, and effective with modern applications, platforms, processes, personnel, and software solutions." 19 | org_secondary: 18F 20 | org_secondary_acronym: 18F 21 | org_secondary_logo: 18f-logo-blue.svg 22 | org_secondary_url: https://18f.gsa.gov 23 | org_secondary_email: 18F@gsa.gov 24 | org_secondary_about: https://18f.gsa.gov/about/ 25 | org_secondary_bio: "TTS Solutions is a portfolio of products and services that help agencies improve delivery of information and services to the public." 26 | foia_request_url: "https://www.gsa.gov/reference/freedom-of-information-act-foia" 27 | fraud_waste_abuse_url: "https://www.gsaig.gov/" 28 | no_fear_act_url: "https://www.gsa.gov/about-us/organization/office-of-civil-rights/notification-and-federal-employee-antidiscrimination-and-retaliation-act-of-2002" 29 | budget_performance_url: "https://www.gsa.gov/reference/reports/budget-performance" 30 | accessibility_url: "https://www.gsa.gov/website-information/accessibility-aids" 31 | usagov_contact_url: "https://www.usa.gov/contact" 32 | privacy_policy_url: "https://www.gsa.gov/website-information/website-policies" -------------------------------------------------------------------------------- /_data/footer.yml: -------------------------------------------------------------------------------- 1 | # This is the configuration for the site footer. 2 | 3 | # Configuration for type of footer. 4 | # Footer types can be only be medium at the moment 5 | type: medium 6 | 7 | # Configuration for "Return to top" link. 8 | # Customize with 'text' and 'href' properties. 9 | # Comment out to the following section to hide. 10 | top: 11 | text: Return to top 12 | href: '#' 13 | 14 | # Configuration for "Edit this page" link in the footer. 15 | # Customize with 'text' property. 16 | # Uncomment the following line to show. 17 | edit_page: 18 | text: Edit this page 19 | 20 | # Configuration for "Last updated" date and time. 21 | # Uncomment the following line to show. 22 | # last_updated: true 23 | 24 | # Configuration for which links show at the top of the footer. 25 | # this is a key into _data/navigation.yml 26 | # links: footer 27 | 28 | # Configuration for footer heading. (optional) 29 | # heading: Name of agency 30 | 31 | # Configuration for agency logo(s) (shown side by side). 32 | # If the logo is external add external: true 33 | logos: 34 | - src: https://18f.gsa.gov/assets/img/logos/18f-logo.svg 35 | alt: 18F 36 | external: true 37 | 38 | # Configuration for footer contact links 39 | contact: 40 | # Configuration for social media links 41 | # Comment out links you don't want to use (RSS is an example) 42 | # social_links: 43 | # - text: Facebook 44 | # href: https://facebook.com 45 | # external: true 46 | # type: facebook 47 | # - text: Twitter 48 | # href: https://twitter.com 49 | # external: true 50 | # type: twitter 51 | # - text: YouTube 52 | # href: https://youtube.com 53 | # external: true 54 | # type: youtube 55 | # - text: RSS Feed 56 | # href: https://usa.gov/ 57 | # external: true 58 | # type: rss 59 | heading: Agile Principles and 18F Practices 60 | # Configuration for contact links for email, phone, etc... 61 | # contact_links: 62 | # - text: (800) CALL-GOVT 63 | # href: tel:1-800-555-5555 64 | # - text: info@agency.gov 65 | # href: mailto:info@agency.gov 66 | -------------------------------------------------------------------------------- /pages/modern-software-product-development.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Modern Software Product Development" 3 | permalink: /modern-software-product-development/ 4 | layout: page 5 | sidenav: sidenav 6 | --- 7 | 8 | There are three basic approaches to software development: Waterfall, Agile, and Chaos. 9 | 10 | Chaos is when you don’t really have a plan, and you don’t really learn anything, but everybody’s super busy all the time. Chaos is often characterized (or justified, if you want to be more critical) as “firefighting”, and it is suggested that there is no time to plan or learn because there is just so much to do. 11 | 12 | Waterfall is when you lay out The Plan in full before you start: every detail, every feature, every meeting, every benchmark, and then you’re wrong on most of them but forge ahead anyway, secure in the knowledge that following The Plan gives air cover in the likely event that the thing you’re building doesn’t work the way you expected it to when you made The Plan. 13 | 14 | Agile is different. Agile has an end result in mind, and maybe a timeframe, but it only gets into the details as needed, which allows for change in response to new information. 15 | 16 | Think of the three as a road trip from Washington DC to San Francisco: 17 | 18 | With Chaos, you just start moving, and hope you wind up in San Francisco eventually. Maybe you go west, maybe not, maybe on foot, maybe by train, whatever, just keep moving! 19 | 20 | Waterfall would have you carefully and exactingly mapping out your trip before you leave. Gas stops, meals, sleep, mileage targets, route. This would be fine if there were never traffic delays, weather issues, car problems, or interesting detours and stops along the way. You can change nothing, and if something goes wrong, the whole trip fails. 21 | 22 | With Agile, you decide you want to drive from DC to San Francisco and you want it to take five days, and you get in the car and go. You can flex around construction, bypass snow, and even choose to end up in San Diego instead because you heard San Francisco was cold and expensive. 23 | 24 | (Some folks say there is a fourth option, “Agilefall”, but that’s really just Waterfall with new names.) 25 | -------------------------------------------------------------------------------- /images/18f-logo-blue.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 18F-Logo-2016-Blue 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 3 | permalink: / 4 | layout: page 5 | sidenav: sidenav 6 | --- 7 | 8 | _By definition, this agile guide is a work in progress. We welcome community participation._ 9 | 10 | Prior to 2001, a majority of software development products failed to actually be useful to real people or were built over budget with missed deadlines. Early-stage technology coupled with an intuitive but ineffective development approach combined to make the actual delivery of successful, working software extremely difficult. During the 1980s in particular, the growing demands and expectations of the marketplace swamped the ability of the software development industry to build software as it was needed. 11 | 12 | In addition, the widely-held belief that development teams could predict customer needs far in advance--sometimes many years in advance--turned out to be incorrect. So even when working software was delivered, it often did not meet the expectations of customers. 13 | 14 | Analysis and experimentation conducted during the 1990’s suggested that the so-called waterfall development process was largely responsible for this climate of failure. After ten years of work, the Agile Manifesto was published in 2001. The Manifesto ushered in the age of Agile software development by outlining a framework for a different approach to the problem. The (then) new Agile approach featured outreach to potential users of software, decomposition of large software projects into much smaller projects that were much less difficult and risky, and empowerment of development teams to respond to evolving requirements. 15 | 16 | ## Open Source and Contributing 17 | 18 | This project is [open source](https://github.com/18F/agile), and we welcome contributions from the public. 19 | 20 | ### License 21 | 22 | This project is in the public domain within the United States, and copyright 23 | and related rights in the work worldwide are waived through CC0 1.0 Universal 24 | public domain dedication. 25 | 26 | All contributions to any repositories of this project will be released under 27 | the CC0 dedication. By submitting a pull request, you are agreeing to comply 28 | with this waiver of copyright interest. 29 | -------------------------------------------------------------------------------- /pages/agile-is-a-thing-already.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Agile is a thing already 3 | permalink: /agile-is-a-thing-already/ 4 | layout: page 5 | sidenav: sidenav 6 | --- 7 | Agile, as we know it, means any development framework or methodology that adheres to all or most of the values and principles listed in the Agile Manifesto, which was published in 2001. The Manifesto is the end result of several streams of exploration and experimentation that continued throughout the 90s (1990s, not 1890s). These streams resulted in the invention of eXtreme Programming, Scrum, Feature Driven Development, Crystal Clear, and other development paradigms. The genius of the Manifesto is that it captured in a very high level way the common philosophical foundations of these new approaches and dubbed those values and principles Agile. 8 | 9 | In the 16 years since publication of the Manifesto, Scrum has become the Agile framework of choice around the world, and also the software development framework of choice around the world. The engineering practices associated with successful, high performance Agile software development have coalesced into the Devops movement, and in the modern world it seems incomplete to implement Agile without DevOps, and vice versa. Additionally, user-centered design approaches have learned to take advantage of the feedback cycles built in to Scrum. Dozens of books and hundreds or thousands of blogs, articles, papers, and videos have been created on the subject of Agile, Scrum, DevOps and associated topics. 10 | 11 | The plethora of material available on the subject of Agile software development leads one to wonder why so many organizations feel the need to re-invent Agile by creating their own homegrown dogma. They choose various subsets of Agile to preach, and sometimes to follow. We will default to using the discoveries and methods and knowledge of Agile in the existing worldwide community, only inventing our own when necessary. 12 | 13 | Having said that, it’s important to note that it is assumed that basic Agile dogma such as the Scrum Process Framework requires supporting process and culture that arise from the local environment in order to work well. You could say that Agile is necessary but not sufficient in terms of creating the best product development approach for you. 14 | -------------------------------------------------------------------------------- /TERMS.md: -------------------------------------------------------------------------------- 1 | As a work of the United States Government, this package is in the 2 | public domain within the United States. Additionally, we waive 3 | copyright and related rights in the work worldwide through the [CC0 1.0 4 | Universal public domain dedication](https://creativecommons.org/publicdomain/zero/1.0/). 5 | 6 | This work includes [DOCter from CFPB](https://github.com/cfpb/DOCter). 7 | The following notice is amended to include 18F collaboration: 8 | Software source code previously released under an open source license and then 9 | modified by CFPB and 18F staff is considered a "joint work" (see 17 USC § 101); it is 10 | partially copyrighted, partially public domain, and as a whole is protected by 11 | the copyrights of the non-government authors and must be released according to 12 | the terms of the original open-source license. 13 | For further details, please see the CFPB [Source Code Policy][policy]. 14 | 15 | 16 | ## CC0 1.0 Universal Summary 17 | 18 | This is a human-readable summary of the [Legal Code (read the full text)][CC0]. 19 | 20 | ### No Copyright 21 | 22 | The person who associated a work with this deed has dedicated the work to 23 | the public domain by waiving all of his or her rights to the work worldwide 24 | under copyright law, including all related and neighboring rights, to the 25 | extent allowed by law. 26 | 27 | You can copy, modify, distribute and perform the work, even for commercial 28 | purposes, all without asking permission. See Other Information below. 29 | 30 | ### Other Information 31 | 32 | In no way are the patent or trademark rights of any person affected by CC0, 33 | nor are the rights that other persons may have in the work or in how the 34 | work is used, such as publicity or privacy rights. 35 | 36 | Unless expressly stated otherwise, the person who associated a work with 37 | this deed makes no warranties about the work, and disclaims liability for 38 | all uses of the work, to the fullest extent permitted by applicable law. 39 | When using or citing the work, you should not imply endorsement by the 40 | author or the affirmer. 41 | 42 | [policy]: https://github.com/18F/open-source-policy 43 | [CC0]: http://creativecommons.org/publicdomain/zero/1.0/legalcode 44 | 45 | ## This project makes use of: 46 | 47 | * [DOCter from CFPB](https://github.com/cfpb/DOCter) 48 | * [Respond.js](https://github.com/scottjehl/Respond) by Scott Jehl, licensed under the MIT license. 49 | * [The HTML5 Shiv](https://github.com/aFarkas/html5shiv), dual licensed under the MIT or GPL Version 2 licenses. 50 | * 51 | -------------------------------------------------------------------------------- /images/gsa-logo-blue.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | gsa-logo-blue 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /_data/theme.yml: -------------------------------------------------------------------------------- 1 | ## Color configurations 2 | ## 'primary' - Defines content link color, primary button bg color, return to top link color 3 | ## 'primary darker' - Defines content link hover color, primary button hover bg color, return to top link hover color 4 | ## 'base' - Defines header site title, active top nav link color, left nav link color, link color in primary and main footer and text in usa-banner 5 | ## 'visited' - Defines visited link color 6 | # 7 | # colors: 8 | # primary: 'DodgerBlue' 9 | # primary-darker: 'pink' 10 | # base: 'orange' 11 | # visited: 'red' 12 | # 13 | # # USA banner colors 14 | # usa-banner: 15 | # usa-banner-bg: 'LightBlue' 16 | # usa-banner-text: 'Black' 17 | # usa-banner-link: 'Gray' 18 | # usa-banner-link-hover: 'Gray' 19 | # 20 | # # Header colors 21 | # header: 22 | # header-bg: '#e6e3d0' 23 | # header-title: 'Black' 24 | # header-link: 'DarkSlateGray' 25 | # header-link-hover: 'Indigo' 26 | # 27 | # # Alt section colors 28 | # alt-section: 29 | # bg-color: '#e6e3d0' 30 | # header-color: 'DarkSlateGray' 31 | # text-color: 'Black' 32 | # link-color: 'red' 33 | # link-hover-color: 'orange' 34 | # 35 | # # Hero colors 36 | # hero: 37 | # hero-bg: 'white' 38 | # hero-header: 'DarkSlateGray' 39 | # hero-header-alt: 'DarkSlateGray' 40 | # hero-text: 'Gray' 41 | # hero-link: 'DodgerBlue' 42 | # hero-button-bg: 'DodgerBlue' 43 | # hero-button-text: 'white' 44 | # 45 | # # Top navigation colors 46 | # top-navigation: 47 | # top-nav-bg: 'DarkSlateGray' 48 | # top-nav-link: 'white' 49 | # top-nav-link-hover: 'black' 50 | # top-nav-link-hover-bg: '#6eb7b7' 51 | # top-nav-link-current: 'black' 52 | # top-nav-dropdown-bg: '#6eb7b7' 53 | # top-nav-dropdown-link: 'orange' 54 | # top-nav-dropdown-link-hover-bg: 'DarkSlateGray' 55 | # 56 | # # Side navigation colors 57 | # side-navigation: 58 | # side-nav-bg: 'white' 59 | # side-nav-link: 'black' 60 | # side-nav-link-hover: 'white' 61 | # side-nav-link-hover-bg: 'DarkSlateGray' 62 | # side-nav-link-current: 'DarkSlateGray' 63 | # 64 | # # Footer colors 65 | # footer: 66 | # primary-footer-bg: 'Gainsboro' 67 | # primary-footer-link: 'black' 68 | # footer-bg: 'DarkSlateGray' 69 | # footer-text: 'white' 70 | # footer-link: 'LightBlue' 71 | # 72 | # 73 | # # Font configurations 74 | # # 'sans' - Defines navigation and body text 75 | # # 'serif' - Defines headings 76 | # # 'normal' - Defines the default font weight 77 | # # 'bold' - Defines the bold font weight 78 | # 79 | # fonts: 80 | # sans: >- 81 | # "Source Sans Pro", "Helvetica Neue", "Helvetica", "Roboto", "Arial", sans-serif 82 | # serif: >- 83 | # "Baskerville", "Georgia", "Cambria", "Times New Roman", "Times", serif 84 | # normal: 300 85 | # bold: 500 86 | -------------------------------------------------------------------------------- /pages/agile-fundamentals.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Agile fundamentals" 3 | permalink: /agile-fundamentals/ 4 | layout: page 5 | sidenav: sidenav 6 | --- 7 | 8 | - **Standups:** the team meets daily for short meetings which are typically held standing up, face-to-face to encourage brief sessions. This is not a status meeting. This meeting is for people to ask quick questions that will allow them to get information or remove blockers. Long answers and discussions should have follow-up in smaller groups after the standup meeting. 9 | - **Retrospectives:** on a regular basis, at end of each sprint, weekly or bi-weekly, a retrospective allows for the team to reflect and adjust practices. Any team member can voice a problem or propose a solution 10 | - **Sprints** are the heartbeat of the agile process. Small units of work are delivered in short bursts, typically with 1 or 2 week cycles. We aim for visible progress for people from the target audience that is delivered and validated at the end of each cycle, allowing the team to move iteratively toward the goal, with regular opportunity for course correction. 11 | - **Sprint planning:** include the whole team in reviewing stories, breaking down use cases into small user-facing stories 12 | - **Sprint Review:** A ceremony at the end of each sprint when completed stories are demonstrated to team, stakeholders, and users. 13 | - **Backlog Refinement:** An ongoing team activity of collaboratively updating the Product Backlog via reprioritization, adding/deleting/rewriting stories, splitting, and estimating. This practice ensures that the backlog is always actionable. (Note: This practice was formerly known as “grooming”, which term is out of favor.) 14 | - **Transparency:** The idea that information should be shared freely within and between all Agile teams, projects, and stakeholders. 15 | - **Iteration (Inspect and Adapt):** A problem-solving and development approach that solves large problems by decomposing them into smaller, discrete problems which are each easier to solve, then solving the smaller problems. As each smaller problem is solved, new information is uncovered (Inspect) and decisions can be made and re-made based on the new information (Adapt). 16 | - **Potentially Shippable Product Increment:** In Agile software development, a fully tested and usable version of a product that is produced at the end of each sprint. 17 | - **Self-organizing Teams with Empowered Product Owners:** Agile teams are composed of peers who share ownership of the team’s work and decision-making processes. Self-organizing teams in Scrum are given ownership of their work process, their commitments, and their approach to meeting their commitments. Product Owner is the role in Scrum that represents the business and customer directly within the development team. The Product Owner must be empowered to make product decisions in response to feedback from stakeholders and customers. Taken together, a Scrum team has complete control over how it does its work and what work it does. 18 | -------------------------------------------------------------------------------- /Gemfile.lock: -------------------------------------------------------------------------------- 1 | GEM 2 | remote: https://rubygems.org/ 3 | specs: 4 | addressable (2.8.1) 5 | public_suffix (>= 2.0.2, < 6.0) 6 | autoprefixer-rails (9.8.6.5) 7 | execjs 8 | colorator (1.1.0) 9 | concurrent-ruby (1.1.10) 10 | em-websocket (0.5.3) 11 | eventmachine (>= 0.12.9) 12 | http_parser.rb (~> 0) 13 | eventmachine (1.2.7) 14 | eventmachine (1.2.7-java) 15 | eventmachine (1.2.7-x64-mingw32) 16 | eventmachine (1.2.7-x86-mingw32) 17 | execjs (2.8.1) 18 | ffi (1.15.5) 19 | ffi (1.15.5-java) 20 | ffi (1.15.5-x64-mingw32) 21 | ffi (1.15.5-x86-mingw32) 22 | forwardable-extended (2.6.0) 23 | http_parser.rb (0.8.0) 24 | i18n (1.12.0) 25 | concurrent-ruby (~> 1.0) 26 | jekyll (4.3.1) 27 | addressable (~> 2.4) 28 | colorator (~> 1.0) 29 | em-websocket (~> 0.5) 30 | i18n (~> 1.0) 31 | jekyll-sass-converter (>= 2.0, < 4.0) 32 | jekyll-watch (~> 2.0) 33 | kramdown (~> 2.3, >= 2.3.1) 34 | kramdown-parser-gfm (~> 1.0) 35 | liquid (~> 4.0) 36 | mercenary (>= 0.3.6, < 0.5) 37 | pathutil (~> 0.9) 38 | rouge (>= 3.0, < 5.0) 39 | safe_yaml (~> 1.0) 40 | terminal-table (>= 1.8, < 4.0) 41 | webrick (~> 1.7) 42 | jekyll-autoprefixer (1.0.2) 43 | autoprefixer-rails (~> 9.3) 44 | jekyll-feed (0.16.0) 45 | jekyll (>= 3.7, < 5.0) 46 | jekyll-sass-converter (2.2.0) 47 | sassc (> 2.0.1, < 3.0) 48 | jekyll-sitemap (1.4.0) 49 | jekyll (>= 3.7, < 5.0) 50 | jekyll-watch (2.2.1) 51 | listen (~> 3.0) 52 | kramdown (2.4.0) 53 | rexml 54 | kramdown-parser-gfm (1.1.0) 55 | kramdown (~> 2.0) 56 | libv8-node (15.14.0.1) 57 | libv8-node (15.14.0.1-x86_64-darwin-19) 58 | liquid (4.0.3) 59 | listen (3.7.1) 60 | rb-fsevent (~> 0.10, >= 0.10.3) 61 | rb-inotify (~> 0.9, >= 0.9.10) 62 | mercenary (0.4.0) 63 | mini_racer (0.4.0) 64 | libv8-node (~> 15.14.0.0) 65 | pathutil (0.16.2) 66 | forwardable-extended (~> 2.6) 67 | public_suffix (5.0.0) 68 | rb-fsevent (0.11.2) 69 | rb-inotify (0.10.1) 70 | ffi (~> 1.0) 71 | rexml (3.2.5) 72 | rouge (4.0.0) 73 | safe_yaml (1.0.5) 74 | sassc (2.4.0) 75 | ffi (~> 1.9) 76 | sassc (2.4.0-x64-mingw32) 77 | ffi (~> 1.9) 78 | terminal-table (3.0.2) 79 | unicode-display_width (>= 1.1.1, < 3) 80 | tzinfo (2.0.4) 81 | concurrent-ruby (~> 1.0) 82 | tzinfo-data (1.2022.1) 83 | tzinfo (>= 1.0.0) 84 | unicode-display_width (2.3.0) 85 | uswds-jekyll (5.4.0) 86 | jekyll (>= 4.0, < 5) 87 | jekyll-autoprefixer 88 | mini_racer 89 | webrick (1.7.0) 90 | 91 | PLATFORMS 92 | java 93 | ruby 94 | x64-mingw32 95 | x86-mingw32 96 | x86-mswin32 97 | x86_64-darwin-19 98 | 99 | DEPENDENCIES 100 | jekyll (>= 4.2.0) 101 | jekyll-feed (~> 0.16) 102 | jekyll-sitemap (>= 1.4.0) 103 | tzinfo-data 104 | uswds-jekyll (~> 5.3, >= 5.3.0) 105 | webrick (~> 1.7) 106 | 107 | BUNDLED WITH 108 | 2.1.4 109 | -------------------------------------------------------------------------------- /guild/README.md: -------------------------------------------------------------------------------- 1 | # TTS Agile Guild 2 | 3 | The Technology Transformation Services (TTS) Agile Guild is a community that fosters agile methodologies within government so that our work will deliver more value to its users. 4 | 5 | 6 | ## Purpose 7 | 8 | The agile guild, an open and voluntary group, helps foster a committee of professionals in a specific subject area. Benefits include: 9 | - Improving overall productivity through sharing of knowledge 10 | - Spreading agile practices throughout our organization 11 | - Bringing together different parts of organization with different methodologies, varying experience, and varying understanding of methodologies 12 | - Having a single, specific resource to turn to for support in a given area 13 | - Giving more seasoned team members opportunities to share their expertise with less experienced team members 14 | - Giving less experienced team members opportunities to become better in their roles in an environments away from their chapters and engagements 15 | - Creating energy and have fun! 16 | 17 | Thanks to the writers of [these](https://medium.com/webcom-engineering-and-product/agile-guilds-the-yodle-way-47dc00f6cd3a) [articles](https://agilestrides.com/2015/09/16/getting-your-guilds-going/) as well as others for ideas and inpirations for developing guilds. 18 | 19 | 20 | ## Priorities 21 | 22 | From July 2018, we determined our focus areas for the next several quarters will be making the guild a place for learning as well as creating tools and artifacts to memorialize what we learn as we go along. 23 | 24 | ### 1. Make guild a place for learning 25 | 26 | We make the guild a place for learning by hosting discussion, debates, inviting guest speakers, and checking in with our partners to learn what is and isn't working for them. 27 | 28 | 29 | ### 2. Memorize learnings into tools and artifacts as we go along 30 | 31 | As much as possible, we will document our learnings as we go along so we can share them with others. This will include expanding the [agile guide](https://agile.18f.gov/), summaries of our guild meetings, training materials, and blog posts. 32 | 33 | ## History and background 34 | 35 | Originally focused on work at 18F, guilds began in 2015 as a forum where team members can come together based on discipline areas. For more information on guilds and working groups, see the [TTS Handbook](https://handbook.18f.gov/working-groups-and-guilds-101/). 36 | 37 | Our work is informed by ongoing collaboration with TTS project teams as well as individuals elsewhere in and outside of government with experience in the agile disciplines of XP, Scrum, Lean Startup, Lean UX, as well as the relevant design disciplines of Human Centered Design and Design Thinking. 38 | 39 | We believe that agile implies Human Centered Design and works best when cross-discliplinary teams work together throughout the development cycle. 40 | 41 | 42 | ## Reference 43 | 44 | [Backlog](https://github.com/18F/agile#boards?repos=30204713&showPRs=false&showClosed=false) (ZenHub, requires extension) 45 | 46 | [Google Drive](https://drive.google.com/drive/folders/0B_n2YScccqDXfjRNN0JXdFNYYzhqLWJJN0JCRW12SGQ3emkzc1BqMmZYRi1ZTjdRY2xwclU) 47 | 48 | [Guild meeting notes](https://docs.google.com/document/d/1pbq7swca7DRUygJFL6ovYpcTl6Rep6ABOQFN4IZSa5g/edit#heading=h.def12ik17u13) 49 | -------------------------------------------------------------------------------- /assets/js/respond.min.js: -------------------------------------------------------------------------------- 1 | /*! matchMedia() polyfill - Test a CSS media type/query in JS. Authors & copyright (c) 2012: Scott Jehl, Paul Irish, Nicholas Zakas. Dual MIT/BSD license */ 2 | /*! NOTE: If you're already including a window.matchMedia polyfill via Modernizr or otherwise, you don't need this part */ 3 | window.matchMedia=window.matchMedia||function(a){"use strict";var c,d=a.documentElement,e=d.firstElementChild||d.firstChild,f=a.createElement("body"),g=a.createElement("div");return g.id="mq-test-1",g.style.cssText="position:absolute;top:-100em",f.style.background="none",f.appendChild(g),function(a){return g.innerHTML='­',d.insertBefore(f,e),c=42===g.offsetWidth,d.removeChild(f),{matches:c,media:a}}}(document); 4 | 5 | /*! Respond.js v1.3.0: min/max-width media query polyfill. (c) Scott Jehl. MIT/GPLv2 Lic. j.mp/respondjs */ 6 | (function(a){"use strict";function x(){u(!0)}var b={};if(a.respond=b,b.update=function(){},b.mediaQueriesSupported=a.matchMedia&&a.matchMedia("only all").matches,!b.mediaQueriesSupported){var q,r,t,c=a.document,d=c.documentElement,e=[],f=[],g=[],h={},i=30,j=c.getElementsByTagName("head")[0]||d,k=c.getElementsByTagName("base")[0],l=j.getElementsByTagName("link"),m=[],n=function(){for(var b=0;l.length>b;b++){var c=l[b],d=c.href,e=c.media,f=c.rel&&"stylesheet"===c.rel.toLowerCase();d&&f&&!h[d]&&(c.styleSheet&&c.styleSheet.rawCssText?(p(c.styleSheet.rawCssText,d,e),h[d]=!0):(!/^([a-zA-Z:]*\/\/)/.test(d)&&!k||d.replace(RegExp.$1,"").split("/")[0]===a.location.host)&&m.push({href:d,media:e}))}o()},o=function(){if(m.length){var b=m.shift();v(b.href,function(c){p(c,b.href,b.media),h[b.href]=!0,a.setTimeout(function(){o()},0)})}},p=function(a,b,c){var d=a.match(/@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi),g=d&&d.length||0;b=b.substring(0,b.lastIndexOf("/"));var h=function(a){return a.replace(/(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g,"$1"+b+"$2$3")},i=!g&&c;b.length&&(b+="/"),i&&(g=1);for(var j=0;g>j;j++){var k,l,m,n;i?(k=c,f.push(h(a))):(k=d[j].match(/@media *([^\{]+)\{([\S\s]+?)$/)&&RegExp.$1,f.push(RegExp.$2&&h(RegExp.$2))),m=k.split(","),n=m.length;for(var o=0;n>o;o++)l=m[o],e.push({media:l.split("(")[0].match(/(only\s+)?([a-zA-Z]+)\s?/)&&RegExp.$2||"all",rules:f.length-1,hasquery:l.indexOf("(")>-1,minw:l.match(/\(\s*min\-width\s*:\s*(\s*[0-9\.]+)(px|em)\s*\)/)&&parseFloat(RegExp.$1)+(RegExp.$2||""),maxw:l.match(/\(\s*max\-width\s*:\s*(\s*[0-9\.]+)(px|em)\s*\)/)&&parseFloat(RegExp.$1)+(RegExp.$2||"")})}u()},s=function(){var a,b=c.createElement("div"),e=c.body,f=!1;return b.style.cssText="position:absolute;font-size:1em;width:1em",e||(e=f=c.createElement("body"),e.style.background="none"),e.appendChild(b),d.insertBefore(e,d.firstChild),a=b.offsetWidth,f?d.removeChild(e):e.removeChild(b),a=t=parseFloat(a)},u=function(b){var h="clientWidth",k=d[h],m="CSS1Compat"===c.compatMode&&k||c.body[h]||k,n={},o=l[l.length-1],p=(new Date).getTime();if(b&&q&&i>p-q)return a.clearTimeout(r),r=a.setTimeout(u,i),void 0;q=p;for(var v in e)if(e.hasOwnProperty(v)){var w=e[v],x=w.minw,y=w.maxw,z=null===x,A=null===y,B="em";x&&(x=parseFloat(x)*(x.indexOf(B)>-1?t||s():1)),y&&(y=parseFloat(y)*(y.indexOf(B)>-1?t||s():1)),w.hasquery&&(z&&A||!(z||m>=x)||!(A||y>=m))||(n[w.media]||(n[w.media]=[]),n[w.media].push(f[w.rules]))}for(var C in g)g.hasOwnProperty(C)&&g[C]&&g[C].parentNode===j&&j.removeChild(g[C]);for(var D in n)if(n.hasOwnProperty(D)){var E=c.createElement("style"),F=n[D].join("\n");E.type="text/css",E.media=D,j.insertBefore(E,o.nextSibling),E.styleSheet?E.styleSheet.cssText=F:E.appendChild(c.createTextNode(F)),g.push(E)}},v=function(a,b){var c=w();c&&(c.open("GET",a,!0),c.onreadystatechange=function(){4!==c.readyState||200!==c.status&&304!==c.status||b(c.responseText)},4!==c.readyState&&c.send(null))},w=function(){var b=!1;try{b=new a.XMLHttpRequest}catch(c){b=new a.ActiveXObject("Microsoft.XMLHTTP")}return function(){return b}}();n(),b.update=n,a.addEventListener?a.addEventListener("resize",x,!1):a.attachEvent&&a.attachEvent("onresize",x)}})(this); 7 | -------------------------------------------------------------------------------- /pages/18f-agile-based-project-approach.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 18F Agile based project approach 3 | permalink: /18f-agile-approach/ 4 | layout: page 5 | sidenav: sidenav 6 | --- 7 | The Agile Manifesto is realized at 18F in the combined practices of iterative software development, product management, user-centered design, and DevOps. 8 | 9 | We start with a product vision and strategy, informed by users and the overall mission of 18F or one of our partner agencies. We do this so that the work always stays connected to an overarching goal that everyone understands and is excited about. 10 | 11 | We also work to ensure that the infrastructure and process is there to enable continuous delivery of software to real users (DevOps), and that a clear agile delivery process is set up. Teams are free to tailor their agile process to suit their own situations. Many of them employ the SAFe methodology, while other teams use more traditional Scrum or Kanban methods. 12 | 13 | We conduct discovery research before we build anything. Depending on the complexity of your problem space, this can take up to 2 to 3 months. As opposed to ‘requirements gathering’, this process involves actually visiting with users and prototyping to test out multiple concepts quickly before investing a lot of money in building something. 14 | 15 | When we build, we aim to release early and often to real users in real life situations. Ultimately, the government’s investment should be measured in working software, not phase documents or milestones. Only working systems are of value to real constituents. Based on that premise, teams are only able to measure the success of a waterfall project after most costs have been incurred, because that is the first time working software is delivered. This is a huge risk. Agile projects allow the government to measure success at more regular intervals and if necessary make course corrections. The ability to measure and adapt reduces the overall risk to the project. 16 | 17 | Not all of our projects are greenfield; sometimes we work on legacy systems. Incremental development is important in these situtations as well. Incremental development can allow end users to start seeing benefits even before the legacy system can be fully replaced. If a workflow is worth preserving, then portions of the old systems must be kept up until the new system is fully operational, no matter what approach is used. In a waterfall approach, the end user must wait many months or years to use the new system and see any benefit — and that’s assuming there are no problems with the rollout. With an agile approach, the end user could start seeing benefits in a shorter timeframe. Depending on the architecture of the legacy system, parts of it may even be able to be decommissioned and turned off before the full new system is in place to save money. 18 | 19 | Having well-researched hypotheses beforehand allows us to be deliberate about what we build and why. Research continues throughout the agile process that we can test our hypotheses and pivot when needed. Since our work is centered around user research and user feedback, it’s important to develop participant recruiting strategies, and a research and feedback cadence that will work within the constraints of your agile process, and to ensure that the team is staffed appropriately. 20 | 21 | A common pitfall is expecting agile to be a silver bullet to all that ails software development, and to expect agile to eliminate all project risks. We've seen teams try agile and, when the practices fail to eliminate all the challenges, write off agile entirely, claiming "agile doesn't work." In reality, agile does not eliminate risk completely; it provides techniques to manage risk more effectively than traditional waterfall processes. Unlike waterfall, agile accepts that the unknowns will lead to change. Agile treats change as an integral part of the process, as opposed to exceptions that need to be resolved via change control mechanisms. This enables agile teams to manage risk by allowing change to drive course corrections. However, some agile adoptions focus on the ceremonies as opposed to the intent. Incomplete, incorrect, or uninformed adoption of agile techniques can lead to an ineffective process we call “agilefall.” 18F has written a blog post about [how to avoid this pitfall](https://18f.gsa.gov/2015/12/29/is-your-project-using-agilefall/). Effective agile adoption will enable an organization to be nimble and respond effectively to the inevitable change that arises during software development. 22 | 23 | ![agile and user centered design diagram](../assets/img/agile-ucd.png){:width="770px"} 24 | -------------------------------------------------------------------------------- /_includes/footer.html: -------------------------------------------------------------------------------- 1 | {% assign identifier = site.data.usa_identifier.identifier_data[0] %} 2 | 3 | 89 | -------------------------------------------------------------------------------- /COPYING.txt: -------------------------------------------------------------------------------- 1 | Creative Commons Legal Code 2 | 3 | CC0 1.0 Universal 4 | 5 | CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE 6 | LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN 7 | ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS 8 | INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES 9 | REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS 10 | PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM 11 | THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED 12 | HEREUNDER. 13 | 14 | Statement of Purpose 15 | 16 | The laws of most jurisdictions throughout the world automatically confer 17 | exclusive Copyright and Related Rights (defined below) upon the creator 18 | and subsequent owner(s) (each and all, an "owner") of an original work of 19 | authorship and/or a database (each, a "Work"). 20 | 21 | Certain owners wish to permanently relinquish those rights to a Work for 22 | the purpose of contributing to a commons of creative, cultural and 23 | scientific works ("Commons") that the public can reliably and without fear 24 | of later claims of infringement build upon, modify, incorporate in other 25 | works, reuse and redistribute as freely as possible in any form whatsoever 26 | and for any purposes, including without limitation commercial purposes. 27 | These owners may contribute to the Commons to promote the ideal of a free 28 | culture and the further production of creative, cultural and scientific 29 | works, or to gain reputation or greater distribution for their Work in 30 | part through the use and efforts of others. 31 | 32 | For these and/or other purposes and motivations, and without any 33 | expectation of additional consideration or compensation, the person 34 | associating CC0 with a Work (the "Affirmer"), to the extent that he or she 35 | is an owner of Copyright and Related Rights in the Work, voluntarily 36 | elects to apply CC0 to the Work and publicly distribute the Work under its 37 | terms, with knowledge of his or her Copyright and Related Rights in the 38 | Work and the meaning and intended legal effect of CC0 on those rights. 39 | 40 | 1. Copyright and Related Rights. A Work made available under CC0 may be 41 | protected by copyright and related or neighboring rights ("Copyright and 42 | Related Rights"). Copyright and Related Rights include, but are not 43 | limited to, the following: 44 | 45 | i. the right to reproduce, adapt, distribute, perform, display, 46 | communicate, and translate a Work; 47 | ii. moral rights retained by the original author(s) and/or performer(s); 48 | iii. publicity and privacy rights pertaining to a person's image or 49 | likeness depicted in a Work; 50 | iv. rights protecting against unfair competition in regards to a Work, 51 | subject to the limitations in paragraph 4(a), below; 52 | v. rights protecting the extraction, dissemination, use and reuse of data 53 | in a Work; 54 | vi. database rights (such as those arising under Directive 96/9/EC of the 55 | European Parliament and of the Council of 11 March 1996 on the legal 56 | protection of databases, and under any national implementation 57 | thereof, including any amended or successor version of such 58 | directive); and 59 | vii. other similar, equivalent or corresponding rights throughout the 60 | world based on applicable law or treaty, and any national 61 | implementations thereof. 62 | 63 | 2. Waiver. To the greatest extent permitted by, but not in contravention 64 | of, applicable law, Affirmer hereby overtly, fully, permanently, 65 | irrevocably and unconditionally waives, abandons, and surrenders all of 66 | Affirmer's Copyright and Related Rights and associated claims and causes 67 | of action, whether now known or unknown (including existing as well as 68 | future claims and causes of action), in the Work (i) in all territories 69 | worldwide, (ii) for the maximum duration provided by applicable law or 70 | treaty (including future time extensions), (iii) in any current or future 71 | medium and for any number of copies, and (iv) for any purpose whatsoever, 72 | including without limitation commercial, advertising or promotional 73 | purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each 74 | member of the public at large and to the detriment of Affirmer's heirs and 75 | successors, fully intending that such Waiver shall not be subject to 76 | revocation, rescission, cancellation, termination, or any other legal or 77 | equitable action to disrupt the quiet enjoyment of the Work by the public 78 | as contemplated by Affirmer's express Statement of Purpose. 79 | 80 | 3. Public License Fallback. Should any part of the Waiver for any reason 81 | be judged legally invalid or ineffective under applicable law, then the 82 | Waiver shall be preserved to the maximum extent permitted taking into 83 | account Affirmer's express Statement of Purpose. In addition, to the 84 | extent the Waiver is so judged Affirmer hereby grants to each affected 85 | person a royalty-free, non transferable, non sublicensable, non exclusive, 86 | irrevocable and unconditional license to exercise Affirmer's Copyright and 87 | Related Rights in the Work (i) in all territories worldwide, (ii) for the 88 | maximum duration provided by applicable law or treaty (including future 89 | time extensions), (iii) in any current or future medium and for any number 90 | of copies, and (iv) for any purpose whatsoever, including without 91 | limitation commercial, advertising or promotional purposes (the 92 | "License"). The License shall be deemed effective as of the date CC0 was 93 | applied by Affirmer to the Work. Should any part of the License for any 94 | reason be judged legally invalid or ineffective under applicable law, such 95 | partial invalidity or ineffectiveness shall not invalidate the remainder 96 | of the License, and in such case Affirmer hereby affirms that he or she 97 | will not (i) exercise any of his or her remaining Copyright and Related 98 | Rights in the Work or (ii) assert any associated claims and causes of 99 | action with respect to the Work, in either case contrary to Affirmer's 100 | express Statement of Purpose. 101 | 102 | 4. Limitations and Disclaimers. 103 | 104 | a. No trademark or patent rights held by Affirmer are waived, abandoned, 105 | surrendered, licensed or otherwise affected by this document. 106 | b. Affirmer offers the Work as-is and makes no representations or 107 | warranties of any kind concerning the Work, express, implied, 108 | statutory or otherwise, including without limitation warranties of 109 | title, merchantability, fitness for a particular purpose, non 110 | infringement, or the absence of latent or other defects, accuracy, or 111 | the present or absence of errors, whether or not discoverable, all to 112 | the greatest extent permissible under applicable law. 113 | c. Affirmer disclaims responsibility for clearing rights of other persons 114 | that may apply to the Work or any use thereof, including without 115 | limitation any person's Copyright and Related Rights in the Work. 116 | Further, Affirmer disclaims responsibility for obtaining any necessary 117 | consents, permissions or other rights required for any use of the 118 | Work. 119 | d. Affirmer understands and acknowledges that Creative Commons is not a 120 | party to this document and has no duty or obligation with respect to 121 | this CC0 or use of the Work. -------------------------------------------------------------------------------- /pages/agile-lexicon.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Agile lexicon 3 | permalink: /agile-lexicon/ 4 | layout: page 5 | sidenav: sidenav 6 | --- 7 | The goal of this Lexicon is to provide 18F and our partners a common language for discussion of Agile processes. The definitions are as simple, flexible, and inclusive as we could make them. 8 | 9 | ## High Level Concepts 10 | - **Agile** - pertaining to the Agile Manifesto and/or Agile Principles (http://agilemanifesto.org). Agile is a set of values and principles that describe a way of working that promotes continuous learning and user-focused value delivery. 11 | 12 | ## Agile Disciplines: 13 | - **Lean UX** - a set of design principles which includes early customer validation, collaborative design, defining key success metrics (for more info see: Lean UX manifesto). 14 | - **Scrum** - a framework for Agile product development centered around self-organizing team, customer focus, and responding to change. 15 | - **XP (Extreme Programming)** - an agile software development approach that emphasizes business results first, using pair programming and test-driven development, delivering value continuously 16 | - **Kanban** - a process management and diagnostic tool that can be used with both Agile and non-Agile environments. A Kanban board can be a helpful tool for introducing a few Agile behaviors to a team less familiar with the methodology. 17 | 18 | ## Roles 19 | - **Partner** - The agency with whom we are working. 18F doesn’t have “clients,” we have partners. We deliver something together with agency partner. 20 | - **Client** - When the government hires a vendor to perform services, we are a “client” to that services organization. We cannot delegate responsibility for success to the vendor. In keeping with the Agile principle of small, empowered teams, at least one person from the Client team must be an active part of the Agile team. (For an agency or organization working directly with 18F, see “Partner”.) 21 | - **Customer** - the purchaser of a (digital) product/service. 22 | - **User** - the consumer of a product/service 23 | - **Product Owner (PO)** - owns the product vision and incorporates stakeholder feedback to set priorities and manage the backlog 24 | - **Stakeholder** - an interested party whose buy-in you want (or need) but is not the PO 25 | 26 | 27 | ## How we talk about the work: 28 | - **Prototype** - A functional representation of a feature or group of features not meant to be sold to customers, but rather to get feedback from potential users or customers. 29 | - **Minimum Viable Product (MVP)** - The smallest usable thing you need to start validating the actual idea of the business or product. The very first increment of the build/measure/learn cycle (Zappos example in The Lean Startup.) It’s there to help demonstrate the market exists for a particular idea. The term “MVP” means something different to virtually everyone, so be sure to get clarity from the person or persons using the term in conversations. 30 | - **Release** - a usable increment of customer value delivered to users in the wild. 31 | - **User story** - a description of functionality or value written from the perspective of the user. Each story should be made available to users as an incremental improvement; however, it often makes sense to collect a set of user stories that will be promoted or validated together as a release. 32 | - **Definition of done** - A working agreement among the team detailing the standard for achieving a “Done” Product Backlog Item (i.e, user story). This applies to all user stories and includes meeting acceptance criteria. 33 | - **Acceptance criteria** - A set of conditions detailing the functional goals of the user story. This is a user story-specific description of when that story is done. The acceptance criteria could be used to demo the user story or to write an automated test. 34 | 35 | ## Concepts: 36 | - **Non-Functional Requirements (NFRs)** - desired characteristics of a product that do not deliver direct user value, such as load handling, performance, browser compatibility, or responsive design. 37 | - **Test coverage** - the portion of the code that is actually exercised when a certain set of tests are run. Usually expressed as a percentage. Often specified as a quality standard, as in, “you must have 90% code coverage to consider your tests adequate.” 38 | - **Unit tests** - Automated tests that concentrate on verifying that the code works as written, and which act as safety flags in high-churn agile development environments with constant check-ins, changes, and multiple developers in the same code. They are best run automatically as part of every build. 39 | - **Integration tests** - Also called Feature Tests, Acceptance Tests, and Regression Tests, these are tests that validate a complete, integrated software product against its business goals. They test the user-visible behavior of the software. 40 | - **Continuous Integration** - Running automated tests on every code submission, within an integrated codebase. 41 | - **Continuous Deployment** - Deploying software automatically _to production_ if automated tests pass. 42 | - **User research:** a range of techniques are used to understand the target audience and the problems that they have. Contextual inquiry, involving direct observation, is favored over interviews. 43 | Usability testing: Observation of people attempting to use a product, prototype or mockup. See Design Method: Usability Testing 44 | - **Prototype:** A term that means something different to everyone. You want to come to common understanding about this word early on in any project; but it should be noted here that prototypes should not be referred to as a deliverable and are best described as a supporting activity that promotes learning. 45 | 46 | ## Process words, how we work: 47 | - **Sprint** - the unit of iteration in scrum: a short, fixed interval in which an agile team commits to and delivers a piece of customer value from the backlog. 48 | - **Sprint Backlog Item** - A more granular item than one one would find in a product backlog. It could be a task, chore, bug, or small or finely sliced user story. These items are usually what you find in a trello or waffle board. 49 | - **Product Backlog** - A prioritized list of user value to be produced. 50 | - **Scrum Master** - the team member who is responsible for the team’s rituals and process, who ensures the team can execute on its commitments by removing blockers and facilitating activities like the daily standup, sprint planning, and retrospectives. 51 | - **Velocity** - Any measure of the value produced during each sprint. Average velocity can help guide time-boxed iterations. Velocity is most useful for planning and tracking purposes and does not measure team productivity or performance. 52 | - **Daily Standup (aka Daily Scrum)** - A short, daily meeting during which the team self-organizes for the day. Never more than 15 minutes. Information exchanged can vary but always covers what each team member did yesterday, what they plan to do today, and what if anything is blocking their work. 53 | - **Retrospective** - A meeting of the whole team held once per sprint, wherein the team reflects on what happened in the iteration and identifies actions for team improvement going forward. This is a critical part of the Agile continuous improvement, as contrasted with a post-mortem which happens only after launch, which limits the opportunity for applying lessons learned. 54 | - **Kickoff meeting** - The meeting held with all stakeholders before work begins. The kickoff meeting helps align the team on the project goal, terminology, the day to day process expectations, and roles and responsibilities. 55 | - **Waterfall/SDLC** - a sequential design process, used in digital development processes, in which progress is seen as flowing steadily downwards (like a waterfall) through the phases of conception, initiation, analysis, design, construction, testing, production/implementation and maintenance. Primarily used in instances where requirements are not expected to change and user-designer interaction is not desired. (Source: https://en.wikipedia.org/wiki/Waterfall_model) 56 | --------------------------------------------------------------------------------