1. Landscape
1.1. Designing Complexity
1.1.1. Complex application: applications supporting broad, unstructured goals or nonlinear workflows
1.1.1.1. Users with specialized knowledge
1.1.1.2. Large underlying data sets
1.1.1.3. Problem solving with unknown/variable underlying tasks
1.1.1.4. Handoff/collaboration among multiple roles/tools/platforms
1.1.1.5. Mitigate risks of executing high impact/high value tasks
1.1.2. Layers of complexity
1.1.2.1. Integration
1.1.2.2. Information
1.1.2.3. Intention
1.1.2.4. Environment
1.1.2.5. Institution
1.1.3. Specialized domain: a field of work that requires specialized knowledge or training (e.g., “expertise”) to reach objectives
1.2. Complex App Users
1.2.1. Legacy/long-time user
1.2.2. Legend/expert user
1.2.3. Learner/novice user
2. Methods
2.1. Understand
2.1.1. Contextual inquiry
2.1.2. Work domain analysis
2.2. Materialize
2.2.1. Cooperative usability testing
2.2.2. Group-based expert walkthrough
3. Patterns
3.1. Learning and Efficiency
3.1.1. Safe explroation
3.1.1.1. Encourage safe exploration, trial-and-error during information manipulation
3.1.1.2. Enable incremental construction, real-time previews
3.1.1.3. Provide route knowledge
3.1.1.4. Design for spatial predicatability
3.1.2. Satisficing
3.1.3. Accelerator
3.1.3.1. Performance improvement
3.1.3.1.1. Intramodal improvement: performance with one method
3.1.3.1.2. Intermodal improvement: transition to faster methods
3.1.3.1.3. Vocabulary extension: expand users' knowledge and use of the functions available
3.1.3.2. Revealing accelerators in context of core actions, e.g. in-line keyboard shortcuts
3.1.3.3. Super tooltips to improve intermodal performance
3.1.3.4. In-line help is useful for vocabulary extension
3.1.3.5. Calm messaging for vocabulary extension
3.1.3.6. Provide guardrails: guidance that won't constrain expert users
3.1.3.7. Use empty space for learning cues
3.1.4. Personalization vs. Customization
3.1.4.1. Enable global objects/bulk actions
3.1.4.2. Enable automation for known mappings or actions
3.2. Inquiry and Workflow
3.2.1. Patterns of inquiry
3.2.1.1. Detection > Diagnosis > Repair
3.2.1.2. Allow flexibility in process
3.2.1.2.1. Skipping ahead
3.2.1.2.2. Looping back
3.2.1.2.3. Move to a specific step
3.2.1.3. Linear pathways help guide
3.2.1.3.1. Use wizards to split to multiple steps
3.2.1.4. Track and visualize decisions made
3.2.1.5. Multiple pathways support flexibility
3.2.1.5.1. Different modalities
3.2.1.5.2. Do not create multiple instances of the same command or function
3.2.1.6. Help users resume tasks
3.2.1.7. Access points enable quick re-entrance
3.2.1.8. Persistent dialogues support re-entrance
3.2.1.9. Comments/notes track thought process and leave way-finding cues
3.2.1.10. Designing for long waits
3.2.1.11. Demi-analysis
3.2.1.12. Accept the ecosystem
3.2.2. Visual momentum
3.2.2.1. Spatial dedication
3.2.2.2. Reduce unnecessary travel
3.2.2.3. Dual-function menus
3.2.2.4. Use modals with caution
3.3. Information and Sensemaking
3.3.1. Clutter
3.3.2. Progressive disclosure
3.3.2.1. Staged disclosure: only show options relevant
3.3.2.2. Responsive enabling: disable options not relevant to the current object
3.3.2.3. Provide external memory
3.3.3. Dashboard
3.3.3.1. Enable access to supplemental information
3.3.3.2. Provide a convenient return path
3.3.3.3. Follow domain conventions
3.3.4. Visual salience
3.3.4.1. Reduce information density by eliminating non-data pixels
3.3.4.2. Indicate erros prominently
3.3.4.3. Use confirmation dialogues only before committing to actions with serious consequences