# Experience Design for `ytt`
## Essence of Good Design
Optimizing:
- first experience: quick/effective learning
- how likely can the user guess correctly *the first time* they use the feature?
- how informative is the experience when they guess incorrectly?
- how easily can the user map their need to the feature set?
- ongoing experience: easy to use
- how easily do users remember the feature and syntax?
- how much effort is required in writing, ongoing?
## Principles
- Compactness :: as small/short as possible, without omitting important information
- relies on some implied understanding.
## Aspects of ytt UX
Users interact with:
- Docs
- Locating Information
- Navigating
- Searching
- Kinds of Information
- Reference
- Guides
- Examples
- Error messages
- the wording of the message, itself
- the content of context given
- the format of context given
- Feature names
## ytt User Characteristics
- How experienced are they with YAML?
- How experienced are they with the target system (e.g. Kubernetes, Docker, Concourse, ...)?
- How experienced are they with ytt?
- What they are doing?
- "Authoring"
- "Consuming"
## Scenarios
### Scenario: Author adds validations to their schema
Steps:
1. Through the docs, find the reference for `@schema/validation`
2. In that reference, match _their_ needs with the named rules: