├── .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 |
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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/_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 | {:width="770px"}
24 |
--------------------------------------------------------------------------------
/_includes/footer.html:
--------------------------------------------------------------------------------
1 | {% assign identifier = site.data.usa_identifier.identifier_data[0] %}
2 |
3 |