As an end user, there's nothing more satisfying than a well crafted design. As a developer, this often takes knowledge, forethought, and work to achieve. We'll go over some fundamental design principles and models, and then build some guidelines and strategies for designing exceptional interfaces and experiences. UI skills are easily transfered across organizations and tech stacks and allow you and your company's products to stand out and deliver value.
User Experience:
All of the aspects that make up with way in which a user interacts with your company
- Surface
- Graphic Design
- Visual Design
- Skeleton
- Interface Design
- Navigation Design
- Structure
- Interaction Design
- Information Architecture
- Scope
- Content Requirements
- Strategy
- User Needs
- Business Objectives
- Support
- Marketing
- Help Desk
Shared boundary between two layers
- API - Application Programing Interface
- UI - User Interface
- GUI - Graphical User Interface
- Discoverability
- Affordances - what actions are possible
- Signifiers - where the action should occur
- Understanding
- Mapping - layout of actions
- Feedback - results of an action
- Conceptual Model - universe of actions
- Paths - Collection of Steps needed to complete a task
- Steps - Physical and Mental Effort
- Length - Amount of time to complete
- Width - The difficulty to complete (opposite precision)
Driving to work
Register an Account
To make things easier:
- Reduce Number of Steps (reduce context shifts)
- Widen Paths (decrease precision)
- Shorten Paths (decrease time to complete)
- Human Centered Design
- A human is using the product - is it designed how humans think
- Conversational Design
- People talk to applications like they talk to people
- The Media Equation by Byron Reeves & Clifford Nass
- We are "polite" to our computers
- Universal Design
- Accessibility(#a11y) along a spectrum
- "Everyone, at some point, has temporary or situational impairments" - Mandy Sithenbank
- You're not designing for "disabled" users, you're designing for everyone across all points in their day & life.
- Standards
- Corner Cuts
- Closed Captions on a Loud Bar TV
- Corner Cuts - help wheelchairs, but also people (blind users)
- Google - Material Design
- Apple - Human Interface Design
- Microsoft - Fluent Design
Create Distinct Visual Hierarchy for master page layout
Page title should describe the purpose of the current page. Page functionality should answer the question how easy is it to do that thing. What tools / info do I need to do it?
Layouts and Natural mapping convey information to the user without any cognitive overhead. Labels and text require the user read and digest that information before it can be deployed, a step that many users will skip, regardless of whether they should or not.
Labels - Last refuge of a design scoundrel. Expectations are much stronger than text and can be absorbed immediately without reading
- Recycle Bin vs Trash Bin
Current Navigational state should be apparent to user (bread crumbs or active highlighting)
Use icons for visual clarity but always include a label text https://ux.stackexchange.com/a/64494/34594
Conditional fields https://ux.stackexchange.com/a/116668/34594 If they can't do something they WOULD expect to do - show it, disable it, and tell them WHY If they can't do something they WOULDN'T expect to do - hide it altogether
All disabled fields should include a message as to why they're disabled
Required fields should be visible before attempting a save This is even true of fields that become conditionally required while editing a field
Required field messages should appear next to the invalid fields they describe in red text
Save buttons should be visible at all times to alert the user they have unsaved data
Users should be warned before abandoning unsaved changes
Clients should not be able to produce an error state within the application. The ability to do so should be considered a bug and should be caught ahead of time with forcing functions. If this happens, the dev, via the application, should strive to be human and apologetic with appropriate levity.
Forcing functions
are constraints that prevent users from performing incorrect operations/actions
All operations that change data state (non-idempotent) should display a modeless confirmation of successful completion to the user.
Actions which update the state of the application should provide immediate visual feedback that the action has been initiated
Any operations that take longer than 2 seconds more than 50% of the time (including non-ideal network conditions / processors) should have a visual indication that the process is taking place
Users should be notified when their Session is about to expire on the sever so they have the opportunity to extend their session before losing their progress
Application State should be managed exclusively though URL With the exception of page specific data entry, the URL should dictate everything you need to know about the state One upshot of this is having specific, deep URLs that can be shared across users/time But it's also a smell that something could go wrong on the client if you're relying on Session to manage State (as opposed to globally cached data) Since users may open multiple tabs, it's never safe to assume we know where we're coming from outside of the URL http://localhost:50004/CSHN-DEV/Client/1480/Service/20622/Assessment/Edit/8#Social http://localhost:50004/CSHN-DEV/Reports?ReportName=ClientList
- Use Good, Descriptive Verbs
- Use Signifiers for discoverability & feedback
- Remember States (:hover,:active,:focus)
- Bigger → Easier
# Options | Component |
---|---|
<5 | Radio Button (List) |
<20 | Dropdown / Comobobox / Select |
<50 | Filterable Dropdown |
<200 | Filterable Dropdown with template (or if differentiated by more than just name) |
200+ | Use Table / Flow |
# Records | View | Sort | Filter | Pagination |
---|---|---|---|---|
< 10 | ✓ | |||
> 10 | ✓ | ✓ | ||
> 25 | ✓ | ✓ | ✓ | |
> 50 | ✓ | ✓ | ✓ | client |
> 500 | ✓ | ✓ | ✓ | server |
> 1000 | ✓ | ✓ | ✓ | database |
Users spend 90% of their time using an application that isn't yours
When adding new UI elements - Check if a similar UI metaphor already exists
- elsewhere in the project
- In whatever framework you're using
- In alternative commercial products
- Else - Do heavy user research and design if it's truly novel outside those arenas
- The Design of Everyday Things by Don Norman | .pdf
- UI is Communication by Everett N McKay
- Don't Make Me Think by Steve Krug
- The Elements of User Experience by Jesse James Garrett
- Nielsen Norman Group - Website Forms Usability: Top 10 Recommendations
- FlowState - Micro Grammers
- Nielsen Norman Group - 10 Usability Hueristics
10 Usability Hueristics Graphic by Scott Klemmer & Janaki Kumar
-
Material Components by Google – 10,857★s
Github | Docs | Demo -
Bootstrap Material Design by FezVrasta – 19,609★s
GitHub | Docs / Demo -
Materialize by Dogfalo – 34,405★s
Github | Docs / Demo -
Material UI by MUI Org – 41,983★s
Github | Docs / Demo -
MD Bootstrap – 4,877★s $$
GitHub | Docs / Demo -
MUI CSS – 4,085★s
Github | Docs / Demo