These questions are ordered for a more natural progression.
- A "consumer" is an individual, a team, or an organization that has a focused scope of concern and their own environment.
- A "product" is any project, code snippet, or deliverable to be leveraged by consumers.
A good example of developing a product for multiple consumers would be the React
library.
First we start by thinking of how this product will be consumed
- Evaluate several possible usage patterns (look around the corner). Analyze their pros and cons, their consistencies and inconsistencies.
- Did we take into account multiple consumers in the design of this product?
- Document the selected pattern.
- Document why the selected pattern was chosen.
Then we think about the development and technical debt incurred by this product.
- This product passes our ESLint validator.
- This product is built using Typescript and can be compiled using our project's Typescript settings.
- This product has adequate tests.
- This product uses our tokens where appropriate.
- This product follows semver.
- This product has a changelog.
- This product is documented.
- This product is accessible.
- Is the solution future proof?
- Throughout technology changes?
- Throughout version changes?
- Throughout feature additions, removals, or modifications?
- What kind of updates could we make in the future? (look around the corner)
- If any future work is expected, documented the plan so that the future maintainer can gain context.
- The
package.json
file contains- the required yarn scripts:
[build, build:dev, clean, prepublishOnly, type-check]
. - the following keys:
[name, version, category, status, description, author, license (MIT), main:dev, main, module, types, sideEffects, files]
- the required yarn scripts:
- The components have defined a
displayName
static. - The package is compiled with rollup and typescript.
- The
@twilio-paste/*
dependencies are marked aspeerDependencies
. - The
@twilio-paste/*
peerDependencies are also listed under devDependencies.