Development Process

New features in Dryad progress through several stages. This page documents tasks that are associated with each stage.

Prioritization and Scoping

 * The feature is expressed on a Trello card.
 * The Trello card links any related customer issues in FogBugz.
 * The Trello card links to an associated page on this wiki that contains more details of the feature.
 * The wiki page should follow the standards described in Documentation.
 * If the feature enhances a pre-existing feature, the wiki page is categorized in Category:Features.
 * If the feature is new or is represents a substantial change to an existing feature, a new wiki page is created in Category:Work Packages.
 * If the feature requires design, work progresses to the User Requirements stage.
 * If the feature is easily specified without design, work immediately progresses to the Implementation stage.

User Requirements

 * Gather requirements from users by sending surveys/questionnaires, or interviewing them one-on-one, or conducting a focus group session.
 * If you need to gather information from a large set of people (10 or more), then send out a survey/questionnaire.
 * If you can meet with a few people face-to-face then, conduct one-on-one interviews.
 * If you want to understand a small group (5 to 7) of people's opinions, then conduct a focus group session.
 * Organize notes and send them to the interviewees for review, to make sure that you did not miss any information, or misinterpret information.
 * Add requirements to the wiki page and link to the associated Trello card.
 * If you do not have the resources to implement all requirements, then prioritize the requirements.
 * Refine summary of the feature on the Trello card.

Technical Requirements

 * Analyze feature for potential technical hurdles.
 * Document any technical constraints on the wiki page.

Design

 * If you are considering several different groups of users and how they will interact with the product, then create personas.
 * Create a task flow to diagram how a feature works and the actions a user will take to interact with it.
 * Gather feedback and iterate.
 * Create simple wireframes (using whiteboard, paper, Balsamiq, etc) to discuss the layout of controls and display elements.
 * Gather feedback and iterate.
 * If the design includes new UI controls, create high-fidelity mockups (e.g., using Axure or simply HTML pages).
 * Gather feedback and iterate.

Usability Testing

 * Use prototypes to test the look and feel of a design as well as the interaction.
 * If you would like feedback on how people will interact with the product using paper, then create paper prototypes.
 * If you want feedback on the product before creating a live prototype, then create interactive prototypes (Axure)
 * If you are at the final stages of the design of the product and need a final round of feedback, create a live prototype (Web)
 * Incorporate feedback into current designs. Complete another round of testing before implementation, if necessary.

Implementation

 * Build test cases to test each aspect expected of the feature.
 * Build out the feature according to the design.
 * Update the wiki page for the feature to include all appropriate technical documentation.

Documentation

 * Write and/or update user-facing documentation on the wiki.

Final Testing

 * Internal testing by Dryad staff.
 * Usability testing with external users.

Release

 * Deploy feature on production server.
 * Update the Release Notes.
 * Perform associated PR work: blog post, tweet, etc.

Improvement

 * Monitor help e-mails (e-mails about the same issue from many different people are priority issues)
 * Check site traffic using Google Analytics