Watch this video to learn what this checklist is about.
Project name
Company name
Was the project a success?
- Yes
- No
What is the project's vision?
This is typically a single sentence that describes what the project aspires to be. Example: "A JS framework that allows developers to build better apps, faster". If this doesn't exist, write "none".
How will the project measure success?
Example: Increase mobile conversion rates to 0.75-1.0%, currently ~0.3%. If this doesn't exist, write "none".
What is the strategy for accomplishing the project's goals?
Example: Combine the desktop and mobile sites for an improved user experience, site parity, and centralized ownership. If this doesn't exist, write "none".
What is the project's roadmap? What are the goals, plans and release schedule after the current release?
Example: Phase 1: Complete A, B, C. Phase 2: Complete D, E, F. If there are no plans, write "none".
Do people have the skills needed to accomplish the goals and roadmap? Is the roadmap possible? Is there the access across the organizational bureaucracy?
Do all employees go through a technical training?
For example a week long JS training.
- Yes
- No
Is there at least a yearly additional training opportunities for all employees?
- Yes
- No
How long until something can be released?
- 3 months
- 6 months
- 1 year
- 1.5 years
What is the org chart?
Each person's name and title. Indent subordinates under a manager. If this doesn't exist, write "none".
Who has the final say in content and copy decisions?
A person's name. If multiple people, separate names with ";".
Who has the final say in design decisions?
A person's name. If multiple people, separate names with ";".
Who has final say in technology and infrastructure decisions?
The person's name. If multiple people, separate names with ";".
Do product owners frequently (at least once a month) meet with:
- UX teams
- Dev teams
Have your companies values, experiences, and goals been expressed to management and the client team?
- Yes
- No
Has this checklist been reviewed with the management, design and development teams?
- Yes
- No
Does the company have outings?
Examples: dinners / activities outside work.
- Yes
- No
How often, in months, do employee reviews happen?
How many designers on the project?
Is user testing done?
- Yes
- No
What user testing techniques are being used?
- Usability testing
- User interviews
- Surveys
Is analytic software being used?
- Yes
- No
Is AB testing being performed?
- Yes
- No
Are the results of user testing, analytics, and other data being discussed at least monthly?
- Yes
- No
How long, on average in weeks, between design changes and a user testing them?
Are design revisions factored into the estimate?
- Yes
- No
Are beta releases user tested?
- Yes
- No
Are prototypes and mockups user tested?
- Yes
- No
The following documents are created with the client:
- Design guidelines / goals / statements
- Personas
- User stories or use cases.
- Competitive analysis
The following documents are created:
- Wireframes and mockups
- Storyboards
- Prototypes
- Prototypes
- High fidelity comps
- HTML prototypes
- HTML style guide
Are videos or animations used to express interactions?
- Yes
- No
Are design issues and discussions "publicly" tracked?
- Yes
- No
Where are design issues and discussions tracked?:
- Project management software (Trello, Basecamp)
- Issue tracker (Jira / github)
- Excel
Does a design changelog exist?
A design changelog is a document that contains a list of changes to the mockup/prototypes.
- Yes
- No
The following questions concern development specific problems.
The essential tools are in place and being used in the right way.
Source control is
- Used
- Git
- Used with a branch and merge strategy.
An issue tracker is
- Used
- Integrated with source control.
- Used by non developers.
The following environments exist
- Development
- Test
- Staging
- Production
Continuous integration
- Exists
- Runs on all commits / pushes
- Emails on failure
A 1-3 step process for the following exist:
- Setting up a development environment
- Testing the application.
- Building the application into a production distributable.
- Deploy to test and staging.
Practices and patterns that ensure good code.
Is a module loader used?
Examples: StealJS, RequireJS, Webpack, sprokets
- Yes
- No
Is the high level architecture documented and followed?
For example: MVVM plus a client state observable with specified properties.
- Yes
- No
All modules include:
- High level documentation.
- Tests
- Inline documentation
- A demo
Are there performance tests?
- Yes
- No
The service layer is:
- RESTful
- Documented
- Tested
- Built / working
Is technical debt measured?
Is some value (often in days / weeks) of technical debt calculated?
- Yes
- No
Is technical debt factored into estimates?
Do estimations of time, or points, or effort include discussions of technical debt?
- Yes
- No
Does the development team work well together.
Is there a QA team or resource?
- Yes
- No
Are teams grouped by specialty?
Example: client vs server
- Yes
- No
How many front-end developers?
Do your work alongside the client's developers?
Your developers work on the same code as the client developers.
- Yes
- No
Is every piece of code known to at least two people?
No piece of code should be "workable" by only one person.
- Yes
- No
There are code reviews
- Every commit
- Every week
- Every month
- Of new people's code
- Never
List examples of the client demonstrating the ability to add or change to new technology as needed.
Examples: Adding memcache, moving to a cloud, setting up a CDN.
List examples of needed changes in technology or process.
Examples: Adding memcache, moving to a cloud, setting up a CDN.
questions.json
contains a list of questions. To change a question, add or modify the relevant section and submit a pull request. The following types are available:
text
- A text fieldtextarea
- A textarea fieldnumber
- A number inputsection
- Specifies a new section that can contain more questionssingle
- A list of potential answers invalues
only allowing to select onesingle
- A list of potential answers invalues
selecting multiple