Skip to content

Instantly share code, notes, and snippets.

@scopenco
Forked from zsup/ddd.md
Created May 22, 2017 15:35
Show Gist options
  • Save scopenco/d8226baf2d44601db83a6e42e01b86a2 to your computer and use it in GitHub Desktop.
Save scopenco/d8226baf2d44601db83a6e42e01b86a2 to your computer and use it in GitHub Desktop.

Revisions

  1. Zach Supalla revised this gist Mar 8, 2014. 1 changed file with 2 additions and 0 deletions.
    2 changes: 2 additions & 0 deletions ddd.md
    Original file line number Diff line number Diff line change
    @@ -1,5 +1,7 @@
    ### Documentation-Driven Development

    The philosophy behind Documentation-Driven Development is a simple: **from the perspective of a user, if a feature is not documented, then it doesn't exist, and if a feature is documented incorrectly, then it's broken.**

    - Document the feature *first*. Figure out how you're going to describe the feature to users; if it's not documented, it doesn't exist. Documentation is the best way to define a feature in a user's eyes.
    - Whenever possible, documentation should be reviewed by users (community or Spark Elite) before any development begins.
    - Once documentation has been written, development should commence, and test-driven development is preferred.
  2. Zach Supalla revised this gist Mar 8, 2014. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion ddd.md
    Original file line number Diff line number Diff line change
    @@ -1,4 +1,4 @@
    Documentation-Driven Development
    ### Documentation-Driven Development

    - Document the feature *first*. Figure out how you're going to describe the feature to users; if it's not documented, it doesn't exist. Documentation is the best way to define a feature in a user's eyes.
    - Whenever possible, documentation should be reviewed by users (community or Spark Elite) before any development begins.
  3. Zach Supalla created this gist Mar 8, 2014.
    19 changes: 19 additions & 0 deletions ddd.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,19 @@
    Documentation-Driven Development

    - Document the feature *first*. Figure out how you're going to describe the feature to users; if it's not documented, it doesn't exist. Documentation is the best way to define a feature in a user's eyes.
    - Whenever possible, documentation should be reviewed by users (community or Spark Elite) before any development begins.
    - Once documentation has been written, development should commence, and test-driven development is preferred.
    - Unit tests should be written that test the features as described by the documentation. If the functionality ever comes out of alignment with the documentation, tests should fail.
    - When a feature is being modified, it should be modified documentation-first.
    - When documentation is modified, so should be the tests.
    - Documentation and software should both be versioned, and versions should match, so someone working with old versions of software should be able to find the proper documentation.

    So, the preferred order of operations for new features:
    - Write documentation
    - Get feedback on documentation
    - Test-driven development (where tests align with documentation)
    - Push features to staging
    - Functional testing on staging, as necessary
    - Deliver feature
    - Publish documentation
    - Increment versions