<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
    <channel>
        
        <title>
            <![CDATA[ ux design - freeCodeCamp.org ]]>
        </title>
        <description>
            <![CDATA[ Browse thousands of programming tutorials written by experts. Learn Web Development, Data Science, DevOps, Security, and get developer career advice. ]]>
        </description>
        <link>https://www.freecodecamp.org/news/</link>
        <image>
            <url>https://cdn.freecodecamp.org/universal/favicons/favicon.png</url>
            <title>
                <![CDATA[ ux design - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Wed, 27 May 2026 20:46:38 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/news/tag/ux-design/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ How to Apply Academic Theories to Human-Centered Web Design [Full Handbook] ]]>
                </title>
                <description>
                    <![CDATA[ Have you ever abandoned an app right at the sign‑up page? Or felt uneasy navigating a website because the buttons were scattered randomly, the colors clashed, and the layout felt confusing and unneces ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-apply-academic-theories-to-human-centered-web-design-handbook/</link>
                <guid isPermaLink="false">69fe29e9f239332df4f7cd02</guid>
                
                    <category>
                        <![CDATA[ Frontend Development ]]>
                    </category>
                
                    <category>
                        <![CDATA[ UX ]]>
                    </category>
                
                    <category>
                        <![CDATA[ ux design ]]>
                    </category>
                
                    <category>
                        <![CDATA[ UI ]]>
                    </category>
                
                    <category>
                        <![CDATA[ UI Design ]]>
                    </category>
                
                    <category>
                        <![CDATA[ user experience ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Web Development ]]>
                    </category>
                
                    <category>
                        <![CDATA[ MathJax ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Great John ]]>
                </dc:creator>
                <pubDate>Fri, 08 May 2026 18:22:33 +0000</pubDate>
                <media:content url="https://cdn.hashnode.com/uploads/covers/5e1e335a7a1d3fcc59028c64/d7621fda-83a6-460e-aa38-bce970d4a655.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>Have you ever abandoned an app right at the sign‑up page? Or felt uneasy navigating a website because the buttons were scattered randomly, the colors clashed, and the layout felt confusing and unnecessarily complex?</p>
<p>Maybe you were asked to complete twenty fields in one go. You carefully filled everything out, hit Submit — and only then were you told that your password didn't meet some hidden, unspoken requirement. A requirement that was never communicated upfront.</p>
<p>Instead of helpful guidance, you were met with a vague message: “Invalid input." Invalid how, you wonder?</p>
<p>Required fields weren’t marked. There was no real‑time validation. No helpful red outline showing which field was wrong. Just a generic prompt telling you to “go back and correct missing information,” as if you’re supposed to magically know what the system wants.</p>
<p>So you scroll.</p>
<p>You search.</p>
<p>You guess.</p>
<p>And you're now getting frustrated.</p>
<p>The reason you're frustrated is simple: no one enjoys repeating a task they thought they had already completed — especially when the mistakes could've been prevented with clear guidance along the way.</p>
<p>You manage to fill in the form and you tap the Submit button.</p>
<p>Nothing happens.</p>
<p>No loading spinner.</p>
<p>No subtle animation.</p>
<p>No confirmation message.</p>
<p>No success screen.</p>
<p>Just silence. For a brief moment, you’re left wondering: Did it go through? So you tap again. And maybe… one more time.</p>
<p>At this point, you become fed up and you either postpone the signup process to when you have the time, or you may not ever return.</p>
<p>Even if you haven’t experienced this exact scenario, you’ve almost certainly felt the same kind of friction: that moment when a digital interface makes you pause, hesitate, or wonder what you’re supposed to do next.</p>
<p>These frustrations often arise because frontend developers either overlook or are unaware of the essential design principles and theories that underpin a smooth, intuitive user experience.</p>
<p>As a frontend developer, your interface should minimise cognitive load, provide immediate clarity, and guide users effortlessly through every task.</p>
<p>In this handbook, I'll introduce the academic theories that should inform and elevate your frontend decisions.</p>
<h2 id="heading-table-of-contents">Table of Contents</h2>
<ul>
<li><p><a href="#heading-10-fittss-law">1.0 Fitts’s Law:</a></p>
<ul>
<li><p><a href="#heading-11-use-padding-wisely">1.1 Use padding wisely</a></p>
</li>
<li><p><a href="#heading-12-use-infinite-targets">1.2 Use infinite targets</a></p>
</li>
<li><p><a href="#heading-design-takeaway-from-fitts-law">Design Takeaway from Fitts Law:</a></p>
</li>
</ul>
</li>
<li><p><a href="#heading-20-hicks-law">2.0 Hick's Law:</a></p>
<ul>
<li><a href="#heading-design-takeaway-from-hicks-law">Design Takeaway from Hick's Law</a></li>
</ul>
</li>
<li><p><a href="#heading-30-gestalt-principles">3.0 Gestalt Principles:</a></p>
<ul>
<li><p><a href="#heading-key-gestalt-principles">Key Gestalt Principles:</a></p>
</li>
<li><p><a href="#heading-31-proximity">3.1 Proximity</a></p>
</li>
<li><p><a href="#heading-32-similarity">3.2 Similarity</a></p>
</li>
<li><p><a href="#heading-33-continuity">3.3 Continuity</a></p>
</li>
<li><p><a href="#heading-34-closure">3.4 Closure</a></p>
</li>
<li><p><a href="#heading-35-figureground">3.5 Figure/Ground</a></p>
</li>
<li><p><a href="#heading-36-common-fate">3.6 Common Fate</a></p>
</li>
<li><p><a href="#heading-37-focal-point">3.7 Focal Point</a></p>
</li>
<li><p><a href="#heading-design-takeaways-from-the-gestalt-principles">Design Takeaways from the Gestalt Principles</a></p>
</li>
</ul>
</li>
<li><p><a href="#heading-40-von-restorff-effect-the-isolation-effect">4.0 Von Restorff Effect (The Isolation Effect):</a></p>
<ul>
<li><a href="#heading-design-takeway-from-von-restorff">Design takeway from Von Restorff</a></li>
</ul>
</li>
<li><p><a href="#heading-50-jakobs-law">5.0 Jakob’s Law</a></p>
<ul>
<li><a href="#heading-design-takeaway-from-jakobs-law">Design Takeaway from Jakob's Law</a></li>
</ul>
</li>
<li><p><a href="#heading-60-millers-law">6.0 Miller’s Law</a></p>
<ul>
<li><a href="#heading-design-takeaway-from-millers-law">Design Takeaway from Miller's Law</a></li>
</ul>
</li>
<li><p><a href="#heading-70-the-goal-gradient-hypothesis">7.0 The Goal-Gradient Hypothesis</a></p>
<ul>
<li><a href="#heading-design-takeaway-from-goal-gradient-hypothesis">Design Takeaway from Goal-Gradient Hypothesis</a></li>
</ul>
</li>
<li><p><a href="#heading-80-zeigarnik-effect">8.0 Zeigarnik Effect</a></p>
<ul>
<li><a href="#heading-design-takeaway-from-zeigarnik-effect">Design Takeaway from Zeigarnik Effect</a></li>
</ul>
</li>
<li><p><a href="#heading-90-teslas-law">9.0 Tesla’s Law:</a></p>
<ul>
<li><a href="#heading-design-takeaway-from-teslas-law">Design Takeaway from Tesla's Law</a></li>
</ul>
</li>
<li><p><a href="#heading-100-peak-end-rule">10.0 Peak End Rule:</a></p>
<ul>
<li><a href="#heading-design-takeaway-from-peak-end-rule">Design takeaway from Peak End Rule</a></li>
</ul>
</li>
<li><p><a href="#heading-110-postels-law">11.0 Postel’s Law:</a></p>
<ul>
<li><a href="#heading-design-takeaway-from-postels-law">Design Takeaway from Postel's Law</a></li>
</ul>
</li>
<li><p><a href="#heading-120-doherty-threshold">12.0 Doherty Threshold:</a></p>
<ul>
<li><a href="#heading-design-takeaways-from-doherty-threshold">Design Takeaways from Doherty Threshold</a></li>
</ul>
</li>
<li><p><a href="#heading-130-serial-position-effect-primacy-and-recency">13.0 Serial Position Effect (Primacy and Recency):</a></p>
<ul>
<li><a href="#heading-design-takeaways-serial-position-effect">Design Takeaways Serial Position Effect</a></li>
</ul>
</li>
<li><p><a href="#heading-140-occams-razor">14.0 Occam’s Razor:</a></p>
<ul>
<li><a href="#heading-design-takeaway-from-occams-razor">Design Takeaway from Occam's Razor</a></li>
</ul>
</li>
<li><p><a href="#heading-150-parkinsons-law">15.0 Parkinson's Law</a></p>
<ul>
<li><a href="#heading-design-takeaway-for-parkinsons-law">Design Takeaway for Parkinson's law</a></li>
</ul>
</li>
<li><p><a href="#heading-conclusion">Conclusion</a></p>
</li>
<li><p><a href="#heading-references">References</a></p>
</li>
</ul>
<p>You might wonder what academic theories have to do with frontend development.</p>
<p>The answer is simple. Academic theories aren't abstract ideas. There are the result of rigorous scientific investigation — controlled experiments, validated models, and decades of research into how humans think, learn, perceive, and interact with information.</p>
<p>Because these theories are grounded in evidence rather than opinion, they offer reliable guidance for building interfaces that align with how the human brain actually processes information.</p>
<p>Applying them to frontend development means you're not designing by guesswork or personal preference. Instead, you're applying tested, scientific insights to create clearer, faster, more humane user experiences.</p>
<p>In other words, when you build with academic theory in mind, your frontend becomes more than just visually appealing — it becomes cognitively efficient, behaviourally aligned, and measurably easier for users to navigate.</p>
<p>You can use the following laws and principles to guide your development work. Let’s start by looking at Fitt’s law.</p>
<h2 id="heading-10-fittss-law"><strong>1.0 Fitts’s Law:</strong></h2>
<p>Fitts’s law is the brainchild of Paul Fitts. He was among the early psychologists who recognised that many human errors result from flawed design rather than simple human weakness.</p>
<p>During World War II, he studied airplane cockpit layouts and concluded that numerous incidents attributed to pilot error were actually caused by poor design decisions (Hall, 2023; Budiu, 2022).</p>
<p>Here's the formula:</p>
<p>$$T = a + b \cdot \log_2\left(1 + \frac{D}{W}\right)$$</p>
<p>T = Movement Time</p>
<p>D = Distance to the target</p>
<p>W = Width (size) of the target</p>
<p>a, b = Empirically determined constants</p>
<p>Based on his findings, Fitts postulated that the time required to acquire/reach a target is determined by the distance to the target and the size of the target.</p>
<img src="https://cdn.hashnode.com/uploads/covers/6998def93dc17c4862075045/7d2699bd-4878-4ab0-8669-21616cb8faf1.png" alt="7d2699bd-4878-4ab0-8669-21616cb8faf1" style="display:block;margin:0 auto" width="691" height="244" loading="lazy">

<p><em>Fig 1.0: Illustration of Fitts Law.</em></p>
<p>From the above, between Target B and Target C, it will be faster to interact with Target C than Target B simply because of the distance (Target B is farther away). Interestingly, though Target A and Target C are at the same distance, Target C will still be faster to interact with and less error-prone because of its larger size.</p>
<p>In simple terms, Fitt’s Law tells us that the time required to move to a target depends on two main factors: the distance to the target and the size of the target. The farther away an element is, the longer it takes to reach. The smaller it is, the more precision it demands, which increases the interaction time and the likelihood of errors.</p>
<p>Conversely, closer and larger targets reduce cognitive load, motor effort, and frustration.</p>
<p>In a nutshell, Fitts’s main message to developers is to reduce the distance users must travel on the screen and to make important buttons large and visually dominant.</p>
<img src="https://cdn.hashnode.com/uploads/covers/6998def93dc17c4862075045/bc293949-cadc-46b2-892d-bdfa1dfc6db3.jpg" alt="bc293949-cadc-46b2-892d-bdfa1dfc6db3" style="display:block;margin:0 auto" width="928" height="664" loading="lazy">

<p><em>Fig 1.1: Showing Call-to-Action buttons are the largest and most visually prominent elements on each screen.</em></p>
<p>From the image above, you can see that the Call-to-Action buttons on each of the screens are the most visually dominant button and largest in size. They're also placed within the natural region. This makes them faster/easier to interact with.</p>
<p>You should also place your Call-to-Action button within the natural zone. This is a zone on a mobile phone where it's easy to reach with the thumb (as most people use their thumbs to select things on a phone screen). Here's a diagram showing the "natural zone" on a typical smartphone. It's much faster for a user to interact within the "natural zone" than the "hard zone" (see figure).</p>
<img src="https://cdn.hashnode.com/uploads/covers/5e1e335a7a1d3fcc59028c64/e98d8d91-b4e6-4b4a-96e5-2524a6e09028.png" alt="e98d8d91-b4e6-4b4a-96e5-2524a6e09028" style="display:block;margin:0 auto" width="1536" height="1024" loading="lazy">

<p><em>Fig 1.2: Showing three different zones for buttons placement (natural, stretching and hard region)</em></p>
<h3 id="heading-11-use-padding-wisely">1.1 Use Padding Wisely</h3>
<p>Fitts' law can be applied to your development by increasing padding wisely. You can also use padding to increase the interactive area. By doing this, you're increasing the size of the targets.</p>
<p>This is important, because imagine a menu that disappears the moment your cursor drifts a few inches away. You’re weren't trying to close it — you simply moved slightly, and suddenly the entire menu collapses. That tiny slip forces you to start the interaction all over again. It’s a small mistake, but it creates a disproportionately frustrating experience.</p>
<p>This happens because the interactive area is too narrow.</p>
<p>That’s why effective padding — or more broadly, generous interactive zones — is essential. By increasing the clickable or hoverable area around a menu, you are increasing the size of the targets, which makes the interaction more stable, more forgiving, and far less cognitively demanding.</p>
<p>This ensures users can move naturally without fear of accidentally “falling off” the target.</p>
<h3 id="heading-12-use-infinite-targets">1.2 Use Infinite Targets</h3>
<p>Another fundamental principle that emerges from Fitt’s Law is the idea of infinite targets. When an interface element is placed at the very edge or corner of a screen, it becomes effectively “infinite” because the cursor can't move beyond the screen boundary. The edge acts as a physical barrier, allowing the user to fling the mouse in that direction without precision or careful aiming.</p>
<p>As a result, corners and edges become the fastest, easiest, and most reliable places for users to access important controls.</p>
<p>This is why operating systems such as Apple’s macOS and Microsoft Windows position their most essential menus and buttons at these locations. The macOS Apple Menu sits in the top‑left corner, Windows historically placed the Start button in the bottom‑left corner, and both systems anchor taskbars, docks, and notification areas along screen edges.</p>
<p>These placements reduce cognitive load, minimise motor effort, and increase interaction speed because users do not need to slow down or correct their cursor movement. The screen itself “catches” the pointer.</p>
<p>In essence, infinite targets transform small interface elements into large, easy‑to‑hit zones simply by leveraging the geometry of the screen.</p>
<p>What this means for you: place your most important and frequently used actions where users can reach them with the least effort. Screen edges and corners act as natural stopping points, meaning users can't overshoot them.</p>
<h3 id="heading-design-takeaways-from-fitts-law">Design Takeaways from Fitts Law:</h3>
<p><strong>Place Primary Actions Where the Task Ends:</strong><br>Placing a submit button at the top‑right forces users to travel all the way back after completing a long form. This increases interaction cost and breaks flow. The best place for a submit button is at the bottom of the form — exactly where the user finishes the task. This aligns with natural reading and interaction patterns.</p>
<p><strong>Keep Related Actions Physically Close:</strong><br>Separating “Add to Cart” and “Check Out” across opposite sides of the screen forces unnecessary thumb movement. Group related actions to reduce effort and speed up decisions.</p>
<p><strong>Make Primary Targets Large and Visually Dominant:</strong><br>Your main CTAs (“Subscribe Now,” “Pay Now,” “Create Account,” “Sign Up”) should be the most recognisable elements on the screen. Large, high‑contrast targets reduce errors and improve speed.</p>
<p><strong>Place High‑Value Actions at Screen Edges and Corners:</strong><br>Edges and corners act as “infinite targets” because the cursor can’t overshoot them. This makes them the fastest, easiest, and most reliable places for critical controls.</p>
<p>A tiny icon in the middle of the screen is hard to hit. The same icon placed at an edge becomes effectively huge because the boundary “catches” the pointer. Also, actions like navigation, primary CTAs, or global controls should live where users can reach them with minimal effort. Avoid burying important actions in the centre of the screen.</p>
<p><strong>Increase Target Size With Generous Padding:</strong><br>Small interactive zones force users to aim with pixel‑level precision. Adding padding expands the clickable or hoverable area, making interactions easier, faster, and more forgiving.</p>
<p><strong>Prevent Accidental “Fall‑Off” With Larger Hit Areas:</strong><br>Menus that collapse the moment the cursor drifts slightly create frustration. A wider interactive zone keeps the menu open during natural mouse movement, reducing accidental resets.</p>
<p>Users don’t move perfectly. Interfaces should accommodate slight slips without punishing them. Larger targets reduce cognitive load and eliminate unnecessary frustration. so by increasing the effective size of buttons, menus, and controls, you create interactions that feel stable and predictable, and users can move confidently without fear of losing their place.</p>
<p><strong>To Sum Up:</strong> The farther away an element is, the longer it takes to reach. The smaller it is, the more precision it demands, which increases the interaction time and the likelihood of errors. Conversely, closer and larger targets reduce cognitive load, motor effort, and frustration.</p>
<h2 id="heading-20-hicks-law"><strong>2.0 Hick's Law</strong>:</h2>
<p>Hick’s Law is a psychological principle that describes the relationship between the number of choices presented to a user and the time it takes them to make a decision. It was formulated by William Edmund Hick in 1952 (Yablonski, 2022; Proctor &amp; Scheider, 2018).</p>
<p>The law states that as the number of options increases, the decision time increases logarithmically. In simple terms, more choices slow users down, while fewer choices speed up decision-making.</p>
<p>$$T = a + b \cdot \log_2(n + 1)$$</p>
<p>Where:</p>
<p>T = time to make a decision,</p>
<p>n = number of choices,</p>
<p>b= a constant that depends on the task and the individual</p>
<img src="https://cdn.hashnode.com/uploads/covers/6998def93dc17c4862075045/d2c45f4b-77e9-42dc-a9c3-165dfe5f7ce7.jpg" alt="d2c45f4b-77e9-42dc-a9c3-165dfe5f7ce7" style="display:block;margin:0 auto" width="1136" height="692" loading="lazy">

<p><em>Figure 2.0 illustrates the relationship between user experience, reaction time, and the number of actions.</em></p>
<p>This is how users feel, for example, when they encounter a form that asks for too much information upfront. The longer the form gets, the more frustrated they become.</p>
<p>Examples of this are overloading menus with too many items, presenting long, unorganised forms, giving too many calls-to-action on one screen, and building nested menus with excessive depth.</p>
<p>All of these create friction and can lead to cognitive overload.</p>
<h3 id="heading-design-takeaway-from-hicks-law">Design Takeaway from Hick's Law</h3>
<p><strong>Avoid Overloading Users With Too Many Actions:</strong><br>Too many buttons, menu items, or choices at once increases cognitive load and slows decision‑making. Users freeze when everything competes for attention.</p>
<p><strong>Keep Navigation Clean and Focused:</strong><br>Cluttered menus hurt both usability and SEO. Search engines struggle to track overly complex navigation structures, and users struggle to find what matters.</p>
<p><strong>Use Progressive Disclosure to Reduce Complexity:</strong><br>Hide advanced or rarely used options under “More” or expandable sections. Reveal complexity only when the user needs it.</p>
<p><strong>Break Complex Tasks Into Smaller, Manageable Steps:</strong><br>Progressive disclosure works beautifully for multi‑step forms and decision flows. Smaller steps reduce overwhelm and improve completion rates.</p>
<p><strong>Group Related Options Into Logical Categories:</strong><br>Organising actions into meaningful clusters helps users process information faster. For example, placing “Edit” and “Delete” together leverages natural mental grouping.</p>
<div class="embed-wrapper"><iframe width="560" height="315" src="https://www.youtube.com/embed/mbYIfRxSkHs" style="aspect-ratio: 16 / 9; width: 100%; height: auto;" title="YouTube video player" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen="" loading="lazy"></iframe></div>

<p><em>Video 2.0: Video description of Progressive Disclosure.</em></p>
<p>From the video above, instead of showing all the menu details at once, it is better to hide them initially. As you can see, the additional information only appears when the arrow down button is pressed. This approach prevents overwhelming the user and keeps the interface clean and focused.</p>
<p>You should also reduce decision anxiety, as too many choices create doubt and friction (as they say, the more you ask from a user, the less you get).</p>
<p>Beyond this, try to use recommended labels, show brief descriptions, provide visual previews, and use comparison tables wisely to show comparison between products especially when they have many characteristics. An example of a comparison table is shown below:</p>
<p><a href="https://drive.google.com/file/d/1sY-tb9W1QDnyrH9dd3NSYsteP9WoMT27/view?usp=drive_link"><img src="https://cdn.hashnode.com/uploads/covers/6998def93dc17c4862075045/5e52527a-3faf-4da1-97c2-a2a09ca7af8b.jpg" alt="Use of comparison table to compare products" style="display:block;margin:0 auto" width="1038" height="972" loading="lazy"></a></p>
<p><em>Figure 2.1: A comparison table being used to simplify complex information.</em></p>
<p>Also, rather than showing advanced configuration options by default, display only the most commonly used settings. Advanced options can be hidden under an expandable section like “Advanced” or “More Settings. This makes your interface less cluttered and more visually organized.</p>
<p>And speaking of visual organization, this is the perfect moment to introduce Gestalt principles — the psychological rules that explain how users naturally group and interpret what they see.</p>
<p><strong>To Sum Up</strong>: As the number of options increases, the decision time increases logarithmically.</p>
<h2 id="heading-30-gestalt-principles"><strong>3.0 Gestalt Principles</strong>:</h2>
<p>In the 1920s, a group of German psychologists – Max Wertheimer, Kurt Koffka, and Wolfgang Köhlern – introduced what are now known as the Gestalt Principles. Their work sought to understand how humans perceive and interpret visual information (Bustamante, 2023).</p>
<p>The word “Gestalt” is German for “unified whole,” reflecting the core idea behind the theory: people naturally perceive objects as organised patterns and complete forms rather than as separate, disconnected parts.</p>
<p>These principles explain how the human mind structures visual elements to make sense of the world. Over time, they have become highly influential in fields such as design, user experience (UX), psychology, and data visualization, where understanding perception is critical.</p>
<h3 id="heading-key-gestalt-principles">Key Gestalt Principles:</h3>
<h3 id="heading-31-proximity">3.1 Proximity</h3>
<p>Elements that are placed close to each other are perceived as a group, while those spaced far apart are seen as separate. This is why labels are placed directly next to their corresponding input fields.</p>
<p>For example: In a blog feed, the "Title," "Author," and "Date" should have small margins between them (8px), while the space between one blog post card and the next should be much larger (40px). This tells the user's brain: "These three text strings belong to this specific post."</p>
<img src="https://cdn.hashnode.com/uploads/covers/6998def93dc17c4862075045/b68ab7f4-1b2e-47f1-8e8c-8ae8f32198c1.jpg" alt="b68ab7f4-1b2e-47f1-8e8c-8ae8f32198c1" style="display:block;margin:0 auto" width="1046" height="956" loading="lazy">

<p><em>Fig 3:0 Illustration of proximity (Gestalt Principle)</em></p>
<p>From the fig above, the spacing within the blog feed plays a powerful role in how effortlessly users interpret what they see. When elements sit close together, the brain instinctively treats them as belonging to the same unit. This is why placing the author credit just 8px beneath the title creates an immediate mental link. The viewer doesn’t need to pause or decode who wrote which article; proximity does the cognitive work automatically, forming a tight, intuitive grouping.</p>
<p>Equally important is the generous 40px gap between individual cards. This larger spacing introduces “visual breathing room.” Without it, a feed can quickly collapse into a dense wall of text, overwhelming the user and discouraging exploration. The wider margin establishes a clear boundary—a natural stop-and-start rhythm—that makes each card feel distinct and the entire layout more scannable.</p>
<p>Finally, subtle spacing differences can guide behaviour, not just perception. The slightly larger 12px margin above the read‑more link separates it from the passive information above it. This spacing cues the user that the link represents an action rather than another piece of descriptive text. It’s a small adjustment, but it shifts the element’s role from informational to interactive, helping users understand what they can <em>do</em> next.</p>
<p>Together, these spacing decisions transform a simple list of posts into a structured, intuitive, and behaviourally clear interface—one where the user never has to think about the layout, because the layout is already thinking for them.</p>
<p>Proximity controls meaning: move elements closer to show connection, separate them to show difference.</p>
<h3 id="heading-32-similarity">3.2 Similarity</h3>
<p>We naturally group elements that share similar visual characteristics, such as color, shape, size, or orientation.</p>
<p>For example, even if buttons are spread across a page, if they're all the same shade of blue, the user understands they perform similar functions.</p>
<p>If your primary "Submit" button is blue with rounded corners, every other primary action on your site should look exactly the same. If you suddenly use a square red button for a primary action, the user will be confused because the "similarity" is broken.</p>
<img src="https://cdn.hashnode.com/uploads/covers/6998def93dc17c4862075045/151d9658-5a4b-4d1d-b885-02c73c53cdbd.jpg" alt="151d9658-5a4b-4d1d-b885-02c73c53cdbd" style="display:block;margin:0 auto" width="1618" height="2170" loading="lazy">

<p><em>Fig 3:1 : illustration of similarity (Gestalt principle)</em></p>
<p>As you can see from above, the layout clearly demonstrates how the Gestalt Principle of Similarity works by showing two different visual situations: one where everything matches, and one where a single element breaks the pattern.</p>
<p>All three product cards share the same visual characteristics:</p>
<ul>
<li><p>Same card shape</p>
</li>
<li><p>Same border and shadow</p>
</li>
<li><p>Same image size and placement</p>
</li>
<li><p>Same blue “Add to Cart” button</p>
</li>
<li><p>Same font style and spacing</p>
</li>
</ul>
<p>Because these elements look alike, your brain automatically groups them as one category — “products that belong together.”<br>You don’t have to think about it; the similarity creates instant visual unity.</p>
<p>This is the Gestalt Principle of Similarity in action.</p>
<p>In the second row, everything is still similar except one button:</p>
<ul>
<li><p>The middle product’s button is orange, not blue</p>
</li>
<li><p>It has square corners, not rounded</p>
</li>
<li><p>The text is italic, not regular</p>
</li>
<li><p>The label changes to “Quick Buy”</p>
</li>
</ul>
<p>Because this button breaks the shared pattern, your brain immediately notices it and treats it as different or special.</p>
<p>Developers can use broken similarity to intentionally highlight featured items, promotions, or urgent actions.</p>
<p>When similarity is broken, the different element stands out and draws attention.</p>
<h3 id="heading-33-continuity">3.3 Continuity</h3>
<p>The human eye prefers to follow a continuous path or curve rather than jagged or broken lines. We perceive items aligned on a line or curve as being related. This is often used in navigation menus or horizontal carousels to guide the user's gaze.</p>
<p>For example, you might have a horizontal carousel where the last visible card is slightly "cut off" at the edge of the screen. This visual break creates a path that encourages the user to keep scrolling as their eyes follow the line of cards.</p>
<img src="https://cdn.hashnode.com/uploads/covers/6998def93dc17c4862075045/e44556e8-4174-4073-9c05-63b5df9a1278.jpg" alt="e44556e8-4174-4073-9c05-63b5df9a1278" style="display:block;margin:0 auto" width="1650" height="214" loading="lazy">

<p><em>Fig 3:2: illustration of continuity (Gestalt principle)</em></p>
<p>As you can see, all four form fields — <em>First Name</em>, <em>Last Name</em>, <em>Email Address</em>, and <em>Phone Number</em> — are perfectly aligned along one continuous horizontal path. Because the human eye naturally prefers to follow an unbroken line, your gaze moves smoothly from left to right across the fields without effort.</p>
<p>The final field is slightly cut off at the edge, which creates a subtle visual cue that the line continues beyond the visible area. This encourages the user to keep scrolling or swiping, because their eyes are already following the direction of the form.<br>when elements are arranged along a straight path, curve, or flow, the brain automatically treats them as connected and expects the pattern to continue.</p>
<p>Another example is Instagram Stories, which are arranged in a smooth horizontal line at the top of the app. Instagram reinforces this by slightly revealing the next story circle at the edge of the screen. That tiny “peek” acts as a continuation cue — your eyes expect the line to keep going, so your finger follows.</p>
<img src="https://cdn.hashnode.com/uploads/covers/6998def93dc17c4862075045/bb019a6d-33c9-4509-b1c7-191b5a453c46.jpg" alt="bb019a6d-33c9-4509-b1c7-191b5a453c46" style="display:block;margin:0 auto" width="1320" height="520" loading="lazy">

<p><em>Fig 3:3: illustration of continuity (Gestalt principle)</em></p>
<p>As you can see from above, all the circular story icons are arranged in a straight horizontal line, and your visual system instinctively follows that line from left to right without effort.</p>
<p>The slight visibility of the next story at the edge of the screen strengthens this effect, signaling that the sequence continues beyond what's currently shown. Also, because the icons share the same size, spacing, and shape, there are no visual interruptions, allowing your eyes to glide across them in one continuous motion.</p>
<p>This seamless flow is exactly what continuity describes: the tendency of the human eye to follow the direction of a line or pattern, assuming it continues even when part of it is out of view.</p>
<p>Continuity is the tendency of the human eye to follow the direction of a line or pattern, assuming it continues even when part of it is out of view.</p>
<h3 id="heading-34-closure">3.4 Closure</h3>
<p>Closure refers to the mind’s ability to perceive a complete, unified form even when parts of that form are missing. Rather than requiring every boundary, line, or shape to be explicitly drawn, the brain instinctively fills in the gaps. When used intentionally, closure allows interfaces to feel cleaner, more elegant, and more cognitively efficient.</p>
<p>When we look at a complex arrangement of visual elements, we tend to look for a single, recognisable pattern. If an image is missing parts, our brains fill in the gaps to "close" the shape.</p>
<p>One of the most celebrated examples of closure in visual identity design is the panda symbol used by the World Wide Fund for Nature (WWF). This logo demonstrates how strategic omission can produce a memorable, emotionally resonant, and universally recognisable mark.</p>
<p>At first glance, the panda illustration appears simple, composed of a few bold black shapes arranged against a white background.</p>
<p>Yet a closer look reveals that the panda is not fully drawn. There are no outlines defining the body, no complete contours around the head, and no explicit boundaries separating limbs from background. Instead, the designer uses a series of carefully placed shapes (ears, eye patches, nose, and partial limbs) to imply the rest of the animal. The viewer’s mind fills in the missing information, completing the silhouette effortlessly.</p>
<p>This is closure at its most effective: the brain constructs a whole from fragments, creating a sense of completeness without visual overload.</p>
<img src="https://cdn.hashnode.com/uploads/covers/6998def93dc17c4862075045/0c40effd-e4d2-4669-af1d-56faac976b4a.jpg" alt="0c40effd-e4d2-4669-af1d-56faac976b4a" style="display:block;margin:0 auto" width="522" height="784" loading="lazy">

<p><em>Fig 3:4: illustration of closure (Gestalt principle)</em></p>
<p>For example, a "hamburger menu" (three lines) isn't a literal drawer, but our brains "close" the shape to understand it represents a menu.</p>
<img src="https://cdn.hashnode.com/uploads/covers/6998def93dc17c4862075045/b67253cd-2a2c-4565-9818-f5586dad6d36.jpg" alt="b67253cd-2a2c-4565-9818-f5586dad6d36" style="display:block;margin:0 auto" width="1244" height="236" loading="lazy">

<p><em>Fig 3:5: illustration of closure (Gestalt principle)</em></p>
<p>An example of closure in practice can be seen in step indicators commonly used in checkout flows. These components often rely on partial shapes, implied boundaries, and incomplete outlines to guide the user through a sequence of actions.</p>
<p>For instance, upcoming steps may be represented by dashed circles. Although the circles aren't fully drawn, the viewer immediately recognises them as complete shapes. The brain resolves the missing segments, allowing the interface to communicate progression without heavy borders or fully rendered icons. This subtle use of closure reduces visual clutter while preserving clarity.</p>
<p>Closure refers to the mind’s ability to perceive a complete, unified form even when parts of that form are missing.</p>
<h3 id="heading-35-figureground">3.5 Figure/Ground</h3>
<p>This principle describes the mind's tendency to separate an object (the figure) from its surrounding area (the ground or background). In web design, using a "modal" or "pop-up" relies on this: by blurring the background, you force the user to see the pop-up as the focal figure.</p>
<p>When a user clicks "Login" on a modal/lightbox, the background site often dims (the "Ground") while the login box stays bright and centered (the "Figure"). This immediate depth change tells the user exactly where their attention belongs.</p>
<div class="embed-wrapper"><iframe width="560" height="315" src="https://www.youtube.com/embed/UCdjymjASOU" style="aspect-ratio: 16 / 9; width: 100%; height: auto;" title="YouTube video player" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen="" loading="lazy"></iframe></div>

<p><em>Video 3.5.0 Video description of Figure/Ground (Gestalt Principle)</em></p>
<p>From the video above, you can see that when the Quick View button is clicked, the selected figure stands out while the background darkens. This contrast guides the user’s attention and helps them focus on the figure. Developers can use this technique to direct users’ attention to what matters most or to what they want users to notice.</p>
<p>This principle describes the mind's tendency to separate an object (the figure) from its surrounding area (the ground or background).</p>
<h3 id="heading-36-common-fate">3.6 Common Fate</h3>
<p>Elements that move in the same direction are perceived as more related than elements that are stationary or move in different directions. Think of a dropdown menu: when all sub-items slide down together, they are clearly part of the same "unit."</p>
<p>For example, when you click a FAQ header and five sub-items slide down at the exact same speed and direction, the "Common Fate" tells the user that all those items belong to that specific category. If they flew in from different directions, the relationship would be lost.</p>
<div class="embed-wrapper"><iframe width="560" height="315" src="https://www.youtube.com/embed/T10xmlne6E4" style="aspect-ratio: 16 / 9; width: 100%; height: auto;" title="YouTube video player" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen="" loading="lazy"></iframe></div>

<p><em>Video 3.6.1 Video description of common fate (Gestalt Principle)</em></p>
<div class="embed-wrapper"><iframe width="560" height="315" src="https://www.youtube.com/embed/5FncGLRy0bM" style="aspect-ratio: 16 / 9; width: 100%; height: auto;" title="YouTube video player" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen="" loading="lazy"></iframe></div>

<p><em>Video 3.6.2 Video description of common fate (Gestalt Principle)</em></p>
<p>From the video shown above, the e‑commerce animation example demonstrates these principles clearly by using two distinct motion patterns: a group of regular products that move upward together, and a pair of special‑category items that enter dramatically from the left. Through these contrasting movements, the interface communicates category differences without relying on text labels or explicit instructions.</p>
<p>Therefore, developers can use this motion‑based differentiation as a design strategy to guide users’ perception—allowing the interface to signal hierarchy, category structure, and product importance purely through animated behaviour rather than through static visual labels.</p>
<p>Elements that move in the same direction are perceived as more related than elements that are stationary or move in different directions.</p>
<h3 id="heading-37-focal-point">3.7 Focal Point</h3>
<p>Whatever stands out visually will capture and hold the viewer’s attention first. This is essentially the principle of emphasis. A bright "Sign Up" button in a sea of gray text acts as the focal point, directing the user's primary action.</p>
<p>For example, an alert banner or a pricing table should stand out from its surroundings. Beyond this, in a three-tier pricing table (Basic, Pro, Enterprise), the "Pro" column is often slightly larger or a different color. This creates a focal point that draws the eye to the "recommended" option immediately.</p>
<img src="https://cdn.hashnode.com/uploads/covers/6998def93dc17c4862075045/711c9ee9-b546-4041-bf86-30c80154bd47.jpg" alt="711c9ee9-b546-4041-bf86-30c80154bd47" style="display:block;margin:0 auto" width="1784" height="646" loading="lazy">

<p><em>Fig 3:7: illustration of closure (Gestalt principle)</em></p>
<p>In visual interface design, the Gestalt principle of Focal Point plays a crucial role in directing user attention toward the most important element on a screen.</p>
<p>A focal point is created when one element breaks the established pattern of surrounding elements, making it stand out immediately.</p>
<p>In e‑commerce interfaces, this principle is often applied to highlight primary actions such as purchasing, subscribing, or upgrading. The “Buy Now” button provides a clear and practical example of how focal points function within a layout.</p>
<p>From the example above, the first two buttons share the same visual characteristics: neutral colours, and regular weight text. This repetition establishes a visual pattern that the user quickly becomes familiar with.</p>
<p>But the “Buy Now” button intentionally disrupts this pattern. It uses a bright colour, which contrasts sharply with the muted tones of the other buttons. This colour difference alone is enough to draw the eye, as humans are naturally sensitive to changes in hue and saturation within a uniform environment.</p>
<p>The Focal Point may sound like it's similar to the principle of Similarity, but the two operate in completely opposite ways within perceptual psychology.</p>
<p>Similarity explains how the mind naturally groups elements that share visual characteristics –&nbsp;such as colour, shape, or size – into coherent units. Once this grouping is established, the interface gains structure and predictability.</p>
<p>Focal Point, on the other hand, works by intentionally breaking that structure. Instead of reinforcing uniformity, it introduces a deliberate contrast – through colour, scale, brightness, or motion –&nbsp;to draw the viewer’s attention to one specific element.</p>
<p>In other words, Similarity creates the background pattern, while Focal Point identifies the one element that must stand out against that pattern.</p>
<p>Whatever stands out visually will capture and hold the viewer’s attention first.</p>
<h3 id="heading-design-takeaways-from-the-gestalt-principles">Design Takeaways from the Gestalt Principles</h3>
<p><strong>Use Spacing as Your Primary Grouping Tool:</strong><br>Elements that belong together should sit closer to each other than to anything else. Spacing communicates structure faster than borders or boxes. Use tight internal spacing (6–12px) for related items and wide external spacing (24–48px) to separate groups.</p>
<p><strong>Build a Strict, Consistent Visual System — and Stick to It:</strong><br>Define clear rules for button types, text styles, icon sizes, and alignment patterns. Consistent left‑aligned text blocks, predictable carousel lines, and stable flow patterns reduce cognitive load and make interfaces feel trustworthy.</p>
<p><strong>Guide the Brain With Spacing, Alignment, Consistency, Contrast, and Motion:</strong><br>The human brain is always trying to group, follow, and prioritise what it sees. Your job is to guide that instinct through intentional layout decisions, not fight against it.</p>
<h2 id="heading-40-von-restorff-effect-the-isolation-effect"><strong>4.0 Von Restorff Effect (The Isolation Effect)</strong>:</h2>
<p>This is the brainchild of Hedwig von Restorff, posited in 1933. In principle it states: An item that stands out is more noticable and more likely to be remembered than other items (Hunt, 1995).</p>
<p>So unique or visually distinct elements grab attention and are more memorable – in other words, distinctiveness dictates memory. When a user interacts with an interface, their brain naturally seeks patterns to minimize cognitive effort.</p>
<p>While consistency is generally a virtue in design, a perfectly uniform layout can lead to "banner blindness" or habituation, where the user stops noticing details.</p>
<p>By strategically breaking a pattern through changes in color, size, shape, or spacing, the developer can "isolate" an element, triggering a biological response that flags the item as high-priority.</p>
<p>Note that although the Focal Point principle may initially seem similar to the Von Restorff Effect, they describe two different psychological processes.</p>
<p>Focal Point is a Gestalt visual principle that explains how one element becomes the centre of attention within a composition because it carries the strongest visual contrast –&nbsp;through size, colour, brightness, position, or motion. Its purpose is to guide the viewer’s eye toward the most important element in the layout.</p>
<p>The Von Restorff Effect comes from cognitive psychology, not Gestalt theory. It states that an item that is noticeably different from a group of similar items is not only more attention‑grabbing but also more memorable.</p>
<p>So Focal Point is about where the eye goes first, while the Von Restorff Effect is about what the brain remembers later.</p>
<h3 id="heading-design-takeaways-from-von-restorff">Design takeaways from Von Restorff</h3>
<p><strong>Use Isolation to Make CTAs Impossible to Miss:</strong><br>On a page filled with neutral text and standard links, a single high‑contrast button (like a bold “Primary Blue” or “Emergency Red”) instantly becomes the standout element. This leverages the Von Restorff Effect to pull the user’s eye toward the most important action.</p>
<p><strong>Create a Visual “Hitch” in the Scan Path:</strong><br>A distinct CTA interrupts the user’s natural left‑to‑right, top‑to‑bottom scanning rhythm. This makes actions like “Buy Now” or “Sign Up” the first thing they notice and the last thing they forget.</p>
<p><strong>Make Critical Actions Visually Distinct:</strong><br>Because users naturally notice the one element that breaks a pattern, your most important actions should use deliberate contrast — color, size, shape, weight, or motion. Isolate key information instead of letting it blend into surrounding UI noise.</p>
<p><strong>Avoid Over‑Differentiation — or Nothing Stands Out:</strong> If every button is loud, animated, or uniquely styled, the interface becomes chaotic. The Von Restorff Effect only works when there is a clear, stable pattern — and you break it once, intentionally.</p>
<p><strong>To Sum Up:</strong> An item that stands out is more noticable and more likely to be remembered than other items.</p>
<h2 id="heading-50-jakobs-law"><strong>5.0 Jakob’s Law</strong></h2>
<p>Jakob’s Law states that users spend most of their time on other sites, so they expect your interface to behave like the ones they already know.</p>
<p>Familiar patterns — hamburger menus, top navigation, search icons, and clickable top‑left logos — reduce cognitive load because users don’t have to interpret anything new.</p>
<p>But while Jakob’s Law is foundational to UX, I think it can also unintentionally suppress innovation.</p>
<p>When developers over‑prioritise familiarity, they fall into a standardisation trap: endlessly optimising conventional patterns instead of exploring fundamentally better ones.</p>
<p>The Pie Menu is a perfect illustration of this. According to Fitts’s Law, the time required to reach a target depends on its distance and size. Linear menus place the last item much farther from the cursor than the first, creating uneven interaction costs.</p>
<p>Radial menus position every option at an equal distance from the centre, and their wedge‑shaped targets effectively grow larger as the pointer moves outward.</p>
<p>Mathematically, pie/radial menu are faster to interact with and more efficient — yet they remain rare in mainstream web design because they violate users’ expectations. In other words, Jakob’s Law keeps us locked into a familiar but suboptimal pattern simply because “that’s how it’s always been done.”</p>
<p>But the challenge is not choosing between familiarity and innovation, but balancing them.</p>
<p>This is where the Aesthetic–Usability Effect becomes powerful. Research shows that users perceive attractive interfaces as easier to use, and they are more forgiving of minor usability friction when the design is visually pleasing.</p>
<p>A beautifully crafted Pie Menu, for example, can encourage users to invest the small amount of learning required to use it. By applying aesthetic delight strategically, developers can introduce innovative patterns without overwhelming users.</p>
<p>The principle that emerges is simple: Be conventional where it matters, and innovative where it delights.</p>
<h3 id="heading-design-takeaway-from-jakobs-law">Design Takeaway from Jakob's Law</h3>
<p><strong>Keep Trust‑Critical Elements Predictable:</strong><br>Navigation, search, authentication, and other high‑stakes interactions must follow established conventions. Users rely on these patterns for speed, confidence, and safety — this is where Jakob’s Law should be respected without exception.</p>
<p><strong>Experiment Only in Low‑Risk, High‑Creativity Areas:</strong><br>In creative or productivity‑focused zones — like editing tools in a photo app — you can safely introduce new interaction models such as radial menus, gesture wheels, or context‑aware tool selectors. These areas invite exploration and benefit from efficiency‑driven innovation.</p>
<p><strong>To Sum Up:</strong> Be conventional where it matters, and innovative where it delights.</p>
<h2 id="heading-60-millers-law"><strong>6.0 Miller’s Law</strong></h2>
<p>Miller’s Law originates from George A. Miller’s classic paper “The Magical Number Seven, Plus or Minus Two.” It states that the average person can hold only about 7 (±2) chunks of information in working memory at any given moment (Miller, 1956).</p>
<p>Crucially, Miller emphasised that the brain doesn’t store isolated items — it groups them into meaningful units called chunks. Because working memory is so limited, developers must structure information in ways that respect this cognitive boundary.</p>
<p>This principle has direct implications for interface design. Long, unbroken strings of information overwhelm users, whereas chunked formats are far easier to process.</p>
<p>For example, instead of displaying a phone number as 1234567890, formatting it as 123‑456‑7890 transforms ten digits into three manageable chunks. The same logic applies to navigation: aim for five to nine primary menu items, and if you need more, group them into categories. Users remember the category as a single chunk rather than each individual link.</p>
<p>Miller’s Law also explains why long forms are so intimidating. When a user sees 30 fields on one page, their brain interprets it as a single, massive task — far beyond the 7±2 limit.</p>
<p>A progressive stepper solves this by breaking the form into smaller stages of 5–7 fields each. This reduces cognitive load, creates a sense of progress, and significantly lowers abandonment rates.</p>
<p>The same principle applies to product listings or search results. Expecting users to compare 50 items at once is unrealistic. Instead, provide strong filtering tools so users can narrow the set to a manageable size — ideally within the range their working memory can meaningfully evaluate.</p>
<p>In essence, Miller’s Law reminds developers that humans don’t process information in bulk. They process it in structured, meaningful chunks.</p>
<img src="https://cdn.hashnode.com/uploads/covers/6998def93dc17c4862075045/3add2891-c6f8-4df1-a044-6cea6c5f1945.jpg" alt="Image of progressive stepper" style="display:block;margin:0 auto" width="818" height="960" loading="lazy">

<p><em>Fig 6.0: Illustrating progressive stepper</em></p>
<p>In the example above, the interface uses both a progress bar and a stepper to guide the user through multiple stages of a task. After completing the first page and selecting “Continue,” the user moves to the next step, and the progress bar updates accordingly. This creates a clear sense of forward movement and accomplishment.</p>
<p>By breaking the process into smaller segments, the interface prevents cognitive overload. If all the information were presented on a single page, users might feel overwhelmed, unsure where to begin, or discouraged by the sheer volume of work.</p>
<p>A step‑by‑step flow transforms a large task into a sequence of manageable actions, increasing the likelihood of completion.</p>
<h3 id="heading-design-takeaway-from-millers-law">Design Takeaway from Miller's Law</h3>
<p><strong>Respect the 7±2 Working‑Memory Limit:</strong><br>Users can only hold about seven chunks of information at once. Long, unbroken content overwhelms them, while chunked information is instantly easier to process.</p>
<p><strong>Chunk Information Into Meaningful Units:</strong><br>The brain doesn’t store isolated items — it groups them. Format data (like phone numbers), menus, and settings into clear, memorable chunks instead of long, flat lists.</p>
<p><strong>Keep Navigation Within 5–9 Primary Items:</strong><br>If you need more than nine options, group them into categories. Users remember the category as a single chunk, not each individual link.</p>
<p><strong>Break Long Forms Into Smaller Steps:</strong><br>A 30‑field form feels like one giant task. A progressive stepper with 5–7 fields per step keeps users below the cognitive overload threshold and dramatically reduces abandonment.</p>
<p><strong>Reduce Comparison Load With Strong Filters:</strong><br>Expecting users to compare 50 products at once is unrealistic. Provide filtering tools that shrink the decision set to something the working memory can actually handle.</p>
<p><strong>Design for Chunked Thinking, Not Bulk Processing:</strong><br>Humans don’t process information in bulk — they process structured, meaningful groups. Interfaces that respect this limitation feel lighter, faster, and more intuitive.</p>
<p><strong>To Sum Up:</strong> A step‑by‑step flow transforms a large task into a sequence of manageable actions, increasing the likelihood of completion.</p>
<h2 id="heading-70-the-goal-gradient-hypothesis">7.0 The Goal-Gradient Hypothesis</h2>
<p>This is the perfect moment to introduce the Goal‑Gradient Hypothesis, originally proposed by behaviorist Clark Hull in 1932 (Yablonski, 2022). The hypothesis states that people become more motivated as they get closer to achieving a goal. In other words, users naturally accelerate their engagement when they sense they are nearing completion.</p>
<p>This principle is incredibly powerful in UX design, especially for progress tracking, gamification, and reward systems.</p>
<p>The takeaway is straightforward: Because users are more motivated near the finish line, progress indicators should be prominent and meaningful.</p>
<p>Percentages, progress bars, and step counters reinforce momentum. Micro‑achievements — such as badges, checkmarks, or subtle confetti — amplify motivation by celebrating small wins.</p>
<p>Tasks should be broken into measurable milestones so users can see themselves advancing.</p>
<p>This is why e‑learning platforms display messages like “You’ve completed 8 of 10 lessons — almost there!” and why fitness apps highlight progress with prompts such as “3 km done, 2 km to go.” These cues leverage the goal‑gradient effect to keep users engaged, energized, and eager to finish.</p>
<p>By combining progressive steppers with clear progress feedback, developers create interfaces that feel lighter, more encouraging, and far more motivating — ultimately improving completion rates and overall user satisfaction.</p>
<p>But what happens when a goal isn't completed? Why do we sometimes feel uncomfortable leaving things unfinished? That discomfort is explained by another psychological principle called the Zeigarnik Effect — the tendency for people to remember and feel tension about incomplete tasks. We will look at this next.</p>
<h3 id="heading-design-takeaway-from-goal-gradient-hypothesis">Design Takeaway from Goal-Gradient Hypothesis</h3>
<p><strong>Make Progress Visible to Boost Motivation:</strong><br>According to the Goal‑Gradient Hypothesis, users naturally speed up as they sense they’re nearing completion. Prominent progress bars, percentages, and step counters tap into this instinct and keep momentum high.</p>
<p><strong>Celebrate Micro‑Achievements to Reinforce Engagement:</strong><br>Badges, checkmarks, subtle confetti, and “step completed” cues reward small wins. These micro‑rewards amplify motivation and make long tasks feel lighter and more achievable.</p>
<p><strong>Break Tasks Into Measurable Milestones:</strong><br>Users stay motivated when they can see themselves advancing. Divide complex flows into clear steps so progress feels tangible rather than overwhelming.</p>
<p><strong>Use Progress Feedback to Drive Completion:</strong><br>Messages like “8 of 10 lessons completed — almost there” or “3 km done, 2 km to go” leverage the goal‑gradient effect to energise users and pull them toward the finish line.</p>
<p><strong>Combine Steppers With Clear Feedback for Maximum Impact:</strong><br>Progressive steppers paired with strong visual feedback create interfaces that feel encouraging, structured, and motivating — dramatically improving completion rates.</p>
<div class="embed-wrapper"><iframe width="560" height="315" src="https://www.youtube.com/embed/-mDuFB3W2bg" style="aspect-ratio: 16 / 9; width: 100%; height: auto;" title="YouTube video player" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen="" loading="lazy"></iframe></div>

<p><em>Video 8.0 : Video illustrating goal gradient</em></p>
<p><strong>To Sum Up:</strong> People become more motivated as they get closer to achieving a goal.</p>
<h2 id="heading-80-zeigarnik-effect"><strong>8.0 Zeigarnik Effect</strong></h2>
<p>The Zeigarnik Effect is a psychological principle stating that people remember unfinished or interrupted tasks better than completed ones (Cherry, 2024).</p>
<p>Memory begins with sensory input, which is processed into short-term memory. Unfinished tasks persist in our thoughts, leading to active recall. This ongoing engagement can turn them into long-term memories, enhancing recall until resolved. This increases engagement, encourages task completion, improves retention, and drives conversions.</p>
<p>So because people remember unfinished tasks better than completed ones (Zeigarnik Effect), developers use progress indicators to make users aware that something is incomplete and motivate them to finish it.</p>
<p>In your designs, you can break long forms into multi-step processes to encourage completion and display profile completion percentages (for example, 70% complete) to push users toward 100%.</p>
<p>This is the main reason why e-commerce platforms send abandoned cart reminders to bring users back to complete their purchases. It's also why apps use streak systems to encourage daily engagement and habit formation and learning platforms show course completion bars to motivate users to finish modules.</p>
<h3 id="heading-design-takeaway-from-zeigarnik-effect">Design Takeaway from Zeigarnik Effect</h3>
<p><strong>Unfinished Tasks Stay Active in Memory — Use That to Drive Completion:</strong><br>Because incomplete tasks linger in working memory (Zeigarnik Effect), users naturally keep thinking about what they haven’t finished. This tension boosts recall, engagement, and the likelihood of returning to complete the task.</p>
<p><strong>Make Incompleteness Visible With Progress Indicators:</strong><br>Progress bars, percentages, and step counters remind users that something is still unfinished. This gentle psychological pressure motivates them to continue until the task is complete.</p>
<p><strong>Break Long Flows Into Multi‑Step Processes:</strong><br>A massive form feels overwhelming, but a stepper with smaller chunks keeps users moving. Showing “70% complete” nudges them toward finishing the last stretch.</p>
<p><strong>Use Reminders to Re‑activate Unfinished Intent:</strong><br>Abandoned cart emails, streak reminders, and “continue your lesson” prompts work because the unfinished task is already active in the user’s mind. The reminder simply pulls them back into the loop.</p>
<p><strong>Celebrate Completion to Close the Cognitive Loop:</strong><br>Checkmarks, confirmations, and completion badges give users closure. This resolves the mental tension created by the unfinished task and reinforces positive behaviour.</p>
<p><strong>To Sum Up:</strong> Unfinished tasks persist in our thoughts, leading to active recall.</p>
<h2 id="heading-90-teslers-law"><strong>9.0 Tesler’s Law</strong>:</h2>
<p>This law was proposed by Lawrence Tesler. He was a computer scientist known for his work on human-computer interaction, and he contributed significantly to making software more user-friendly, including work on cut, copy, and paste functionality.</p>
<p>This law is otherwise known as the Law of Conservation of Complexity. The core Idea here is every process has a certain amount of “inherent complexity" that can't be removed. You can only decide who handles it: the user or the system.</p>
<p>Some examples of these inherent complexities might be:</p>
<ul>
<li><p>translating user actions into correct operations behind the scenes,</p>
</li>
<li><p>handling unreliable or slow network connections,</p>
</li>
<li><p>connecting with third-party APIs, services, or legacy systems,</p>
</li>
<li><p>sorting large datasets quickly,</p>
</li>
<li><p>performing complex search operations</p>
</li>
<li><p>managing version changes and compatibility issues,</p>
</li>
<li><p>managing state, interactions, and animations without confusing the user.</p>
</li>
</ul>
<p>All of these can be inherently complex, but it's the job of the developer to deal with the complexity.</p>
<p>As a developer, you should always try as much as possible to push complexity to the system. For example, instead of making a user type their full address manually, use an Auto-complete API (Google’s Places and Map is best for this). The complexity of finding and validating the address still exists, but the software handles the work for them.</p>
<p>Here's a practical example: let’s say you're designing a student platform that requires users to enter their university name. A practical approach would be to store an array of all universities in the UK in your codebase (This is the hard part Tesla hinted at).</p>
<p>As the user types, they don't need to enter the full name, and their full university name is shown (relating to what they have typed). For instance, if they intend to type “University of Sheffield,” simply typing “Sheff” should prompt the system to display the full university name, which they can then select.</p>
<p>In Dart, you can use a package like fuzzysearch to implement this kind of intelligent matching.</p>
<p>The advantage of this approach is greater than it first appears. It improves data consistency because users often enter the same information in different ways. For example, some users might type “Uni of Sheff,” others “Sheffield University,” and others “Uni of Sheffield,” while all are referring to “University of Sheffield.”</p>
<p>This is how messy data is created, and it creates more work for data analysts. Little wonder that data analysts spend up to 70% of their time cleaning data.</p>
<p>If developers invested more time in structuring how data is collected to ensure consistency, there would be far less work downstream for analysts. This same logic should be applied in how we collect date, time, and other information.</p>
<p>So apart from people's names and email addresses, you should try to standardize the data your app collects as much as possible. Use date and time pickers, stepper controls, input masks, checkboxes, dropdown menu and radio buttons, toggle switches. and so on.</p>
<p>The essence of removing complexity from the user is not only about improving usability, but also about ensuring that the data collected is standardised, structured, and consistent.</p>
<h3 id="heading-design-takeaway-from-teslers-law">Design Takeaway from Tesler's Law</h3>
<p><strong>Push Complexity to the System, Not the User:</strong><br>Every process contains unavoidable complexity. Your job is to handle it behind the scenes so the user experiences the simplest possible interaction.</p>
<p><strong>Automate Tasks Users Shouldn’t Have to Think About:</strong><br>Use tools like autocomplete, fuzzy search, intelligent defaults, and validation APIs to remove manual effort. The complexity still exists — but the system absorbs it instead of the user.</p>
<p><strong>Standardise Inputs to Prevent Messy Data:</strong><br>Users enter the same information in wildly different ways. Use pickers, dropdowns, input masks, radio buttons, and toggles to enforce consistent, structured data collection.</p>
<p><strong>Handle Inherent Technical Complexity Internally:</strong><br>Network issues, API quirks, large dataset sorting, search optimisation, state management, and animation logic are all developer responsibilities. Users should never feel this complexity.</p>
<p><strong>To Sum Up:</strong> Every process contains unavoidable complexity. Your job as a developer is to handle it behind the scenes so the user experiences the simplest possible interaction.</p>
<h2 id="heading-100-peak-end-rule"><strong>10.0 Peak End Rule</strong>:</h2>
<p>In 1993, Daniel Kahneman, Barbara Fredrickson, Charles Schreiber, and Donald Redelmeier invited volunteers into a lab for what sounded like a simple experiment. The task was straightforward: place a hand into a container of painfully cold water (Kahneman et al., 1993)</p>
<p>In the first round, participants kept their hand in 14°C water for 60 seconds. It was uncomfortable, sharp, and unpleasant but after one minute, it was over.</p>
<p>In the second round, they again endured 60 seconds in 14°C water. But this time, they were asked to keep their hand in for an extra 30 seconds. The temperature was raised slightly to 15°C. Still cold. Still unpleasant. Just slightly less intense.</p>
<p>Objectively, the second experience was worse. It lasted 90 seconds instead of 60. More total pain. More suffering.</p>
<p>Later, the researchers asked a simple question:</p>
<p>If you had to repeat one of the trials, which would you choose?” Surprisingly, most participants chose the longer one.</p>
<p>Why would anyone choose more pain?</p>
<p>The researchers realised something profound: people don’t remember experiences by calculating total discomfort. Instead, the mind summarizes the experience using just two key moments — the most intense point (the peak) and the final moment (the end).</p>
<p>In both trials, the peak pain was the same: 14°C. But the longer trial ended slightly better, at 15°C. That small improvement at the end reshaped how the entire episode was remembered. The participants’ “experiencing self” suffered more during the longer trial. But their “remembering self” preferred it because it ended on a less painful note.</p>
<p>From this, the researchers introduced what became known as the Peak–End Rule: we judge experiences largely by their most intense moment and how they finish, not by how long they last.</p>
<p>Since people largely judge an experience by how it ends, developers should focus on designing satisfying confirmation screens and smooth exit interactions. You should concentrate less on making every single moment perfect and instead prioritise optimising the peak and final moments.</p>
<p>A negative ending can overshadow an otherwise good experience, so carefully avoid frustrating final steps such as unexpected fees or confusing confirmations.</p>
<p>Emotional intensity strongly shapes memory, which is why many apps incorporate celebration animations, rewards, or success messages at key moments to leave a lasting positive impression.</p>
<h3 id="heading-design-takeaway-from-peak-end-rule">Design takeaway from Peak End Rule</h3>
<p><strong>People Judge Experiences by the Peak and the Ending — Not the Total Duration:</strong><br>Users don’t remember every moment. They remember the most intense point and how the experience ends. A slightly better ending can completely reshape how the entire interaction is remembered.</p>
<p><strong>Prioritise Strong, Positive Endings in Your UX Flows:</strong><br>A smooth final step, a clear confirmation, or a satisfying success screen leaves a disproportionately strong impression. A bad ending can overshadow an otherwise great experience.</p>
<p><strong>Design for Emotional Peaks at Key Moments:</strong><br>Celebration animations, rewards, checkmarks, and success messages create memorable emotional spikes. These peaks anchor the experience in the user’s memory.</p>
<p><strong>Don’t Try to Perfect Every Moment — Perfect the Right Moments:</strong><br>Optimise the peak and the end of the journey. These two moments define how users recall the entire interaction.</p>
<p><strong>Avoid Negative Surprises at the Finish Line:</strong><br>Unexpected fees, confusing confirmations, or friction at the last step can ruin the memory of the whole process. Protect the ending carefully.</p>
<p><strong>To Sum Up:</strong> We judge experiences largely by their most intense moment and how they finish, not by how long they last.</p>
<h2 id="heading-110-postels-law"><strong>11.0 Postel’s Law</strong>:</h2>
<p>Jon Postel’s famous principle – “Be conservative in what you send, be liberal in what you accept” –&nbsp; is a philosophy of kindness in software design. At its core, the principle argues that systems should be generous with what they accept from users, yet disciplined and predictable in what they output.</p>
<p>When developers follow this approach, users feel supported and understood. When they don’t, users feel punished for being human.</p>
<p>A user’s input is rarely perfect. People type quickly, make mistakes, follow their own habits, or rely on formats familiar to them. A robust system embraces this reality. It accepts messy, human input and quietly transforms it into clean, standardized data.</p>
<p>Real people don't think in strict formats. They write dates the way they learned in school, type phone numbers the way they say them aloud, and enter names and addresses in whatever structure feels natural to them.</p>
<p>A rigid system will reject anything that doesn’t match its narrow expectations, but a robust system, by contrast, adapts to the user.</p>
<p>Consider dates. A brittle interface might demand MM/DD/YYYY and reject everything else. A more humane system accepts a wide range of formats — “1 May 2024,” “2024‑05‑01,” “05/01/24,” or “May 1st, 2024” — and quietly converts them into a standard internal representation. This is where the complex handling described by Tesla's Law comes into play (Shifting complexity to the system, rather than the user).</p>
<p>Phone numbers follow the same pattern. People might enter (555) 123 4567, 555‑123‑4567, 5551234567, or +1 555 123 4567. A fragile system throws errors. A robust one parses all of them using libraries like libphonenumber and moves on.</p>
<p>Addresses are equally varied. “221B Baker St,” “221‑B Baker Street,” and “221 Baker St., Apt B” all refer to the same place. A forgiving system normalizes these instead of rejecting them.</p>
<p>Even names can be surprisingly complex. Hyphens, apostrophes, multiple words, and titles are all part of real human identity. Rejecting “O’Connor,” “Jean‑Luc,” or “Dr. Sarah Lee” is not just technically incorrect — it's disrespectful to the user.</p>
<p>Search bars offer another clear example. A strict search bar demands perfect spelling and exact phrasing. A robust one handles typos (“restuarant”), partial words (“resta”), synonyms (“food places”), and natural language (“where can I eat nearby”). It meets the user where they are instead of forcing them to think like a machine.</p>
<p>Currency should be normalized to a clear format such as GBP 5.00, no matter whether the user typed “£5,” “5 pounds,” or “5 GBP.”</p>
<p>Even file uploads benefit from standardization: whether the user uploads .jpeg, .jpg, .JPG, or .JPEG, the system should store everything as .jpg.</p>
<p>Error messages follow the same principle. Vague feedback like “Invalid password” leaves users confused and frustrated.</p>
<p>A clear, conservative message — “Incorrect password. Please try again.” — respects the user’s time. And instead of hiding password requirements, the system should state them upfront: minimum eight characters, at least one uppercase letter, at least one number.</p>
<p>Predictability reduces friction.</p>
<p>Because users inevitably make mistakes or enter data in unexpected ways, developers should design input fields that are tolerant rather than brittle. This means accepting flexible formats, offering autocorrect or intelligent parsing, and using forgiving validation rules that interpret the user’s intent instead of rejecting their effort.</p>
<p>Clear instructions, tooltips, and visible requirements should appear before submission so users understand what the system expects without trial and error.</p>
<p>When errors do occur, the interface should handle them gently—never crashing, and never forcing the user to start over.</p>
<p>Even simple variations, such as phone numbers typed with spaces, dashes, or parentheses, should be accepted and normalized behind the scenes.</p>
<p>By embracing flexibility on the input side and clarity on the output side, developers create systems that feel humane, resilient, and respectful of the way real people actually behave.</p>
<h3 id="heading-design-takeaway-from-postels-law">Design Takeaway from Postel's Law</h3>
<p><strong>Accept Messy Human Input, Output Clean Structured Data:</strong><br>Users type dates, names, phone numbers, and addresses in unpredictable ways. A humane system accepts this variability and quietly normalises it into a consistent internal format.</p>
<p>Rigid interfaces punish users for being human. Robust interfaces interpret intent — handling typos, partial matches, synonyms, and natural language without complaint.</p>
<p>Also accept variations in spacing, punctuation, casing, and structure. Let users type naturally — the system should handle the complexity, not them.</p>
<p><strong>Be Flexible With Input, Be Strict With Output:</strong><br>This is the heart of Postel’s Law. Let users express information naturally, but ensure your system stores and displays it in a predictable, standardised way.</p>
<p><strong>Use Intelligent Parsing and Autocorrection to Reduce Errors:</strong><br>Libraries like libphonenumber, fuzzy search, and natural‑language parsers allow systems to accept a wide range of formats while still producing clean, reliable data.</p>
<p><strong>Normalise Everything Behind the Scenes:</strong><br>Dates, phone numbers, currency, file extensions, and addresses should all be standardised internally. This prevents messy data and reduces downstream cleanup work.</p>
<p><strong>Provide Clear, Predictable Feedback:</strong><br>Error messages should be specific and helpful. Requirements should be visible upfront. Users should never be surprised, confused, or forced to start over.</p>
<p><strong>Combine Postel’s Law With Tesler’s Law:</strong><br>Shift complexity to the system. Intelligent handling of messy input reduces cognitive load, improves usability, and ensures consistent, high‑quality data.</p>
<p><strong>To Sum Up:</strong> A rigid system will reject anything that doesn’t match its narrow expectations, but a robust system, by contrast, adapts to the user.</p>
<h2 id="heading-120-doherty-threshold"><strong>12.0 Doherty Threshold</strong>:</h2>
<p>The Doherty Threshold is a principle in human–computer interaction which proposes that systems should respond quickly enough to keep users actively engaged (Mod 2024).</p>
<p>When response times stay below a certain limit, users remain focused and productive. But once performance already meets this optimal responsiveness level, making the system even faster or adding extra capability doesn't significantly enhance satisfaction or efficiency.</p>
<p>The idea was introduced by Walter J. Doherty in 1976 in his paper “A Comparison of Programming Systems and Doherty Threshold.” His research showed that maintaining rapid system feedback fast enough to sustain continuous interaction has a stronger impact on productivity than simply increasing system power or features beyond that point.</p>
<p>Doherty proposes that this shouldn't be greater than 400ms Rule: If the system responds within this window, the user feels in total control. If the response takes longer, the user's attention begins to wander, and their "train of thought" is broken.</p>
<p>The challenge, of course, is that not every operation can realistically complete within 400ms. Some tasks require heavy computation, large network calls, or complex rendering. This is where the concept of perceived performance becomes essential.</p>
<p>Even when the system can't finish the work quickly, it can feel fast by responding instantly at the UI level. Developers can achieve this illusion of speed through a combination of thoughtful design patterns and disciplined engineering practices.</p>
<p>On the technical side, performance begins with reducing unnecessary work. Keeping the number of HTML elements low helps the browser render faster. Rendering only the visible portion of long lists prevents the Document Oject Model (DOM) from becoming bloated. Splitting scripts and deferring non‑critical code ensures that essential interactions load first.</p>
<p>Using CSS transforms and opacity changes avoids expensive layout recalculations. Lazy‑loading images, videos, and scripts ensures that the interface becomes interactive long before all assets are downloaded.</p>
<p>These optimizations don’t just improve raw speed — they create the foundation for interfaces that feel responsive.</p>
<h3 id="heading-design-takeaways-from-doherty-threshold">Design Takeaways from Doherty Threshold</h3>
<p><strong>Instant Feedback</strong>: When a user clicks a button, provide a visual change (like a button press animation or a spinner) immediately, even if the background task takes longer.</p>
<p><strong>Skeleton Screens</strong>: Use placeholder blocks that mimic the layout of the page while data loads. This makes the app feel like it is responding instantly.</p>
<p><strong>Progressive Loading</strong>: Load text and basic structures first, then "pop in" high-resolution images later.</p>
<p><strong>Optimistic UI</strong>: When a user hits "Save," don't wait for the server. Update the UI instantly (Doherty) and handle the "messy" data formatting on the backend (Postel).</p>
<p><strong>Live Inline Validation</strong>: Show a green checkmark or a helpful error message as the user types. This keeps them below the 400ms "thought-break" limit.</p>
<p><strong>Debouncing</strong>: In search bars, start showing results after a few keystrokes so the user feels the app is "predicting" their needs.</p>
<p><strong>To Sum Up:</strong> When response times stay below a certain limit, users remain focused and productive. But once performance already meets this optimal responsiveness level, making the system even faster or adding extra capability doesn't significantly enhance satisfaction or efficiency.</p>
<h2 id="heading-130-serial-position-effect-primacy-and-recency"><strong>13.0 Serial Position Effect (Primacy and Recency)</strong>:</h2>
<p>Murdock’s study investigated how the position of a word in a list affects recall, known as the serial position effect. He presented 103 psychology students with lists of 10 to 40 words, one at a time, at either 1 or 2 seconds per word (McLeod, 2025).</p>
<p>Participants were divided into six groups, each experiencing a different combination of list length and presentation rate, and were asked to recall as many words as possible in any order.</p>
<p>The results showed that participants were most likely to remember words at the beginning of the list (primacy effect) and at the end of the list (recency effect), while words in the middle were recalled less often. The recency effect persisted even in longer lists, and the middle section of the recall curve formed a flat asymptote.</p>
<p>Murdock explained this using the multi-store model of memory: early words were rehearsed and transferred to long-term memory, last words remained in short-term memory, and middle words were neither sufficiently rehearsed nor retained, leading to poorer recall.</p>
<p>The experiment demonstrated that memory performance varies systematically with the position of information in a sequence.</p>
<p>This is the reason why the most important information or actions should never be buried in the middle.</p>
<p>As a developer, you should put your most critical navigation links (like "Home" or "Dashboard") at the far left or the top of a list. In a pricing table, put the most popular or recommended plan on the Place "Final Actions" (like "Log Out," "Cart," or "Support") at the end of a menu or the far right of a navigation bar.</p>
<p>In a long onboarding flow, put the most exciting benefit of the app on the very last slide so the user enters the app feeling motivated.</p>
<p>Avoid placing highly important buttons in the middle of a row. If you have a row of 7 buttons, the user is statistically likely to overlook the 4th one.</p>
<h3 id="heading-design-takeaways-serial-position-effect">Design Takeaways <strong>Serial Position Effect</strong></h3>
<p><strong>Place Critical Items at the Beginning or End — Never the Middle:</strong><br>Users reliably remember the first and last items in any sequence (primacy and recency). Anything placed in the middle is statistically more likely to be forgotten or ignored. Also, actions such as “Log Out,” “Cart,” “Support,” or “Checkout” should sit at the far right or bottom — the natural recency position.</p>
<p><strong>Put Essential Navigation Links at the Far Left or Top:</strong><br>Links like “Home,” “Dashboard,” or “Overview” should appear at the start of a menu, where recall and recognition are strongest.</p>
<p><strong>To Sum Up:</strong> The results showed that participants were most likely to remember words at the beginning of the list (primacy effect) and at the end of the list (recency effect), while words in the middle were recalled less often.</p>
<h2 id="heading-140-occams-razor"><strong>14.0 Occam’s Razor</strong>:</h2>
<p>Although first articulated in the 14th century by the Franciscan friar William of Ockham, Occam’s Razor remains one of the most indispensable principles in a developer’s toolkit. In fact, skipping this law while discussing other theories and principles would be like skipping the glue that holds the entire framework together.</p>
<p>At its core, Occam’s Razor states that “among competing explanations, the simplest one is usually the best.”</p>
<p>For example, if two user interfaces achieve the same goal, the one with fewer visual elements is typically superior because it requires less processing power.</p>
<p>The fundamental takeaway for modern developers regarding Occam’s Razor is that complexity is a tax on the user’s cognitive resources.</p>
<p>In an era of information density, the developer's primary role is no longer to provide "more" features – rather, it's to curate the most direct path to a solution.</p>
<p>In practice, Occam’s Razor becomes a reminder to keep things as simple as possible. This “less is more” mindset shapes everything from navigation to forms.</p>
<p>A good rule for navigation is the Rule of Five: aim for three to five main menu items instead of a long, overwhelming list. This keeps choices clear and prevents users from freezing up when they see too many options.</p>
<p>The same idea applies to data entry. When you ask only for the information that truly matters, you respect the user’s time and reduce the chance of “form fatigue,” which is one of the biggest reasons people abandon sign‑ups or checkout flows.</p>
<p>Simplicity isn’t just elegant — it’s practical, humane, and far more effective.</p>
<h3 id="heading-design-takeaway-from-occams-razor">Design Takeaway from Occam's Razor</h3>
<p><strong>Choose the Simplest Effective Solution:</strong><br>When two designs achieve the same goal, the one with fewer elements is almost always better. Simplicity reduces cognitive load and speeds up user decision‑making.</p>
<p><strong>Simplicity Is Not Just Aesthetic — It’s Humane:</strong><br>Clear, minimal interfaces respect the user’s time, reduce friction, and make the product feel effortless. Simplicity is both a design strategy and an act of empathy.</p>
<p><strong>To Sum Up:</strong> Simplicity isn’t just elegant — it’s practical, humane, and far more effective.</p>
<h2 id="heading-150-parkinsons-law">15.0 Parkinson's Law</h2>
<p>Occam’s Razor teaches us to prefer the simplest solution that works. But why do we so often end up with complex systems in the first place? That tendency is explained by another principle: Parkinson’s Law.</p>
<p>Parkinson’s Law states that "work expands to fill the time available for its completion". In design, this means projects often become overly complex or take longer than necessary if given too much time, resulting in inefficient, over-designed, or cluttered interfaces.</p>
<p>In design, this manifests as Feature Creep. If you give yourself three months to build an app, you will spend three months adding "nice-to-have" animations, extra settings toggles, and niche edge cases that nobody asked for and in reality, what you have added isn’t that important.</p>
<p>You just succeeded in adding layers of complexity that might ends up violating some of the laws we spoke about. Occam’s Razor reminds us that the simplest solution is often the most effective.</p>
<p>By being aware of Parkinson’s Law and the tendency for work to expand, developers can manage their time intentionally and focus only on what truly matters.</p>
<h3 id="heading-design-takeaway-for-parkinsons-law">Design Takeaway for Parkinson's law</h3>
<p><strong>Set Clear Constraints to Keep Designs Focused:</strong><br>Intentional time limits and scope boundaries prevent over‑designing. Constraints force clarity, prioritisation, and simplicity.</p>
<p><strong>Build Only What Truly Matters for the User:</strong><br>Parkinson’s Law reminds you to resist the urge to fill time with unnecessary features. Focus on the core experience, not the edge cases nobody asked for.</p>
<p><strong>Use Occam’s Razor to Counterbalance Parkinson’s Law:</strong><br>As work expands, complexity grows. Occam’s Razor pulls you back to the simplest effective solution. Together, the two principles prevent bloated, over‑engineered products.</p>
<p><strong>To Sum Up:</strong> Work expands to fill the time available for its completion</p>
<h2 id="heading-conclusion"><strong>Conclusion</strong></h2>
<p>Human-centered design is deeply influenced by a set of psychological principles that explain how users perceive, process, and interact with digital systems.</p>
<p>Among these, Fitts’s Law establishes that the time required to acquire a target depends on its size and distance. In practice, this means that larger and closer elements are easier and faster to interact with.</p>
<p>To apply this in practice, developers should make primary call-to-action elements prominent, large, and easily reachable –&nbsp;especially in mobile interfaces where thumb accessibility is critical.</p>
<p>Closely related to decision-making is Hick’s Law, which states that the more choices a user is presented with, the longer it takes to make a decision. Excessive options can overwhelm users and lead to decision fatigue.</p>
<p>To address this, developers should simplify interfaces, minimise unnecessary options, and guide users through processes step-by-step rather than presenting everything at once.</p>
<p>Another important cognitive principle discussed is Miller’s Law, which suggests that the average person can hold approximately seven (plus or minus two) items in working memory at a time. This limitation highlights the need to present information in manageable chunks.</p>
<p>By breaking content into smaller groups and avoiding information overload, developers can improve comprehension and usability.</p>
<p>User expectations are strongly shaped by Jakob’s Law, which says that people spend most of their time on other websites and therefore expect similar patterns across digital products.</p>
<p>Instead of reinventing basic interactions, developers should follow familiar conventions such as placing the logo in the top‑left, the shopping cart in the top‑right, and keeping scrolling behaviour predictable.</p>
<p>But innovation is still possible where it truly adds value. As we discussed with the Aesthetic‑Usability Effect, users are far more tolerant of new or unusual design patterns when the interface is visually appealing and thoughtfully crafted.</p>
<p>The Gestalt Principles provided additional insight into how users visually organise information. The principle of proximity suggests that objects placed close together are perceived as related, so grouping related elements improves clarity. Similarity indicates that elements with consistent colours, shapes, or styles are seen as belonging together, reinforcing visual hierarchy and function. Closure explains that users can perceive incomplete shapes as complete, allowing for minimalistic designs where the brain fills in missing details. Continuity highlights that users naturally follow smooth visual paths, meaning layouts should guide the eye logically through alignment and structure.</p>
<p>We also looked at The Von Restorff Effect which emphasizes that elements which stand out are more likely to be remembered. By using contrast in colour, size, or design, important features such as buttons or alerts can capture user attention.</p>
<p>Managing complexity was addressed by Tesler’s Law, which asserts that every system has inherent complexity that cannot be eliminated but only managed.</p>
<p>Developers must therefore shift complexity away from the user by simplifying interfaces while handling intricate processes behind the scenes.</p>
<p>The Zeigarnik Effect reveals that people remember unfinished tasks better than completed ones, creating a sense of mental tension. This can be leveraged by incorporating progress indicators, checklists, and reminders that encourage users to complete tasks.</p>
<p>Similarly, the Peak-End Rule suggests that users judge an experience based on its most intense moment and its conclusion. Developers should create memorable highlights and ensure a smooth, satisfying ending to user journeys.</p>
<p>We also discussed the Goal-Gradient Effect, which explains that users become more motivated as they approach the completion of a task. By showing progress –such as indicating that a process is “80% complete” –&nbsp;and breaking tasks into stages, developers can encourage users to finish what they have started.</p>
<p>In terms of system interaction, Postel’s Law advises developers to be flexible in accepting user input while maintaining strict standards for output. This means allowing different input formats while ensuring consistent and reliable system responses.</p>
<p>Performance is equally important, as highlighted by the Doherty Threshold, which shows that productivity increases when system response times stay under 400 milliseconds. Fast systems keep users engaged and create a sense of ease.</p>
<p>This means that developers should focus on building interfaces that feel instant, even when real processing takes longer, by combining smart engineering practices with thoughtful design patterns that maintain the illusion of speed.</p>
<p>Memory and attention are further explained by the Serial Position Effect, where users tend to remember the first and last items in a sequence more than those in the middle. Developers should position key information or actions at the beginning or end of lists.</p>
<p>Simplicity is reinforced by Occam’s Razor, which argues that the simplest solution is often the most effective. Eliminating unnecessary features reduces friction and enhances usability, and we further discussed about Parkinson’s Law, which suggests that tasks expand to fill the time available, indicating the importance of setting constraints such as deadlines or timers to encourage timely action.</p>
<p>These principles collectively highlight the importance of simplicity, clarity, performance, and user psychology in design. By applying them thoughtfully, developers can create intuitive, efficient, and engaging user experiences that align with both human behaviour and user expectations.</p>
<h2 id="heading-references">References</h2>
<p>Budiu, R. (2022). <em>Fitts’s Law and Its Applications in UX</em>. [online] Nielsen Norman Group. Available at: <a href="https://www.nngroup.com/articles/fitts-law/">https://www.nngroup.com/articles/fitts-law/</a>.</p>
<p>Bustamante, N. (2023). <em>Gestalt Psychology? Definition, Principles, &amp; Examples - Simply Psychology</em>. [online] <a href="http://www.simplypsychology.org">www.simplypsychology.org</a>. Available at: <a href="https://www.simplypsychology.org/what-is-gestalt-psychology.html">https://www.simplypsychology.org/what-is-gestalt-psychology.html</a>.</p>
<p>Cherry, K. (2024). <em>The Zeigarnik Effect Is Why You Keep Thinking of Unfinished Work</em>. [online] Verywell Mind. Available at: <a href="https://www.verywellmind.com/zeigarnik-effect-memory-overview-4175150">https://www.verywellmind.com/zeigarnik-effect-memory-overview-4175150</a>.</p>
<p>DO, A.M., RUPERT, A.V. and WOLFORD, G. (2008). Evaluations of pleasurable experiences: The peak-end rule. <em>Psychonomic Bulletin &amp; Review</em>, 15(1), pp.96–98. doi:<a href="https://doi.org/10.3758/pbr.15.1.96">https://doi.org/10.3758/pbr.15.1.96</a>.</p>
<p>GUPTA, S., GUPTA, S., MAHENDRA, A. and GUPTA, S. (2006). Inverse Halo Nevus. <em>Dermatologic Surgery</em>, 32(6), pp.871–872. doi:<a href="https://doi.org/10.1097/00042728-200606000-00025">https://doi.org/10.1097/00042728-200606000-00025</a>.</p>
<p>‌Hall, D. (2023). <em>Pilot Error, Chapanis and The Shape of Things to Come</em>. [online] UX Magazine. Available at: <a href="https://uxmag.com/articles/pilot-error-chapanis-and-the-shape-of-things-to-come">https://uxmag.com/articles/pilot-error-chapanis-and-the-shape-of-things-to-come</a>.</p>
<p>Hunt, R.R. (1995). The subtlety of distinctiveness: What von Restorff really did. <em>Psychonomic Bulletin &amp; Review</em>, 2(1), pp.105–112. doi:<a href="https://doi.org/10.3758/bf03214414">https://doi.org/10.3758/bf03214414</a>.</p>
<p>Kahneman, D., Fredrickson, B.L., Schreiber, C.A. and Redelmeier, D.A. (1993). When More Pain Is Preferred to Less: Adding a Better End. <em>Psychological Science</em>, 4(6), pp.401–405. doi:<a href="https://doi.org/10.1111/j.1467-9280.1993.tb00589.x">https://doi.org/10.1111/j.1467-9280.1993.tb00589.x</a>.</p>
<p>Mod, D. (2024). <em>Doherty Threshold: UX Law of Swift Interactions</em>. [online] Articles on everything UX: Research, Testing &amp; Design. Available at: <a href="https://blog.uxtweak.com/doherty-threshold/">https://blog.uxtweak.com/doherty-threshold/</a>.</p>
<p>Miller, G.A. (1956). The magical number seven, plus or minus two: Some limits on our capacity for processing information. <em>Psychological Review</em>, [online] 101(2), pp.343–352. doi:<a href="https://doi.org/10.1037/0033-295x.101.2.343">https://doi.org/10.1037/0033-295x.101.2.343</a>.</p>
<p>Proctor, R.W. and Schneider, D.W. (2018). Hick’s law for choice reaction time: A review. <em>Quarterly Journal of Experimental Psychology</em>, [online] 71(6), pp.1281–1299. doi:<a href="https://doi.org/10.1080/17470218.2017.1322622">https://doi.org/10.1080/17470218.2017.1322622</a>.</p>
<p>Yablonski, J. (2022). <em>Hick’s Law</em>. [online] Laws of UX. Available at: <a href="https://lawsofux.com/hicks-law/">https://lawsofux.com/hicks-law/</a>.</p>
<p>Yablonski, J. (2022). <em>Goal-Gradient Effect</em>. [online] Laws of UX. Available at: <a href="https://lawsofux.com/goal-gradient-effect/">https://lawsofux.com/goal-gradient-effect/</a>.</p>
<p>‌</p>
<p>‌</p>
<p>‌</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Boost Conversions with UX-Focused Microcopy ]]>
                </title>
                <description>
                    <![CDATA[ In this article, I’ll walk you through what microcopy is, why it matters more than you think, and how to write effective, empathetic, and high-converting microcopy. Whether you're a designer, writer, or product builder, you’ll learn practical tips, r... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-boost-conversions-with-ux-focused-microcopy/</link>
                <guid isPermaLink="false">68880d881bd0d07a1731c788</guid>
                
                    <category>
                        <![CDATA[ Microcopy ]]>
                    </category>
                
                    <category>
                        <![CDATA[ ux design ]]>
                    </category>
                
                    <category>
                        <![CDATA[ ux designer ]]>
                    </category>
                
                    <category>
                        <![CDATA[ user experience ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Mfonobong Umondia ]]>
                </dc:creator>
                <pubDate>Mon, 28 Jul 2025 23:53:44 +0000</pubDate>
                <media:content url="https://cdn.hashnode.com/res/hashnode/image/upload/v1753746811969/e16afede-4e1a-4499-bb10-ed2a8de8c159.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>In this article, I’ll walk you through what microcopy is, why it matters more than you think, and how to write effective, empathetic, and high-converting microcopy.</p>
<p>Whether you're a designer, writer, or product builder, you’ll learn practical tips, real-world examples, and actionable principles you can start applying today.</p>
<h2 id="heading-table-of-contents"><strong>Table of Contents</strong></h2>
<ul>
<li><p><a class="post-section-overview" href="#heading-the-problem">The Problem</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-so-what-exactly-is-microcopy">So, What Exactly Is Microcopy?</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-why-designers-should-be-microcopy-maestros">Why Designers Should Be Microcopy Maestros</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-why-does-microcopy-matter-more-than-you-think">Why Does Microcopy Matter More Than You Think?</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-five-principles-for-crafting-microcopy-that-converts">Five Principles for Crafting Microcopy That Converts</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-everyday-microcopy-examples-that-boost-ux">Everyday Microcopy Examples That Boost UX</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-wrapping-up">Wrapping Up</a></p>
</li>
</ul>
<h2 id="heading-the-problem"><strong>The Problem</strong></h2>
<p>Recently, my team and I were redesigning the onboarding and sign-up experience for a kids’ streaming platform that we planned to test in the market. The platform was completely free, but there was one big problem: people weren’t signing up. Many potential users seemed to assume it was just another paid streaming service and dropped off before even trying it.</p>
<p>During one of our team sessions, a designer suggested something simple yet powerful: <strong>“Maybe people think it’s not free. What if we just say that clearly?”</strong> So we added five little words right below the sign-up button: <strong>“No credit card required.”</strong></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1749123395863/b1dd1769-491c-4511-b13d-8742b438d824.png" alt="b1dd1769-491c-4511-b13d-8742b438d824" class="image--center mx-auto" width="2160" height="1517" loading="lazy"></p>
<p>That’s it.</p>
<p>The results? Sign-ups jumped by <strong>19%</strong>. Not after a full redesign. Not after a marketing push. But just from one tiny line.</p>
<p>That, my friends, is the power of <strong>microcopy</strong>.</p>
<p>A few well-chosen words can smooth the path, ease anxieties, and encourage users to take action. For designers, mastering microcopy is like unlocking a secret language of persuasion, one that quietly transforms hesitant visitors into loyal users.</p>
<h2 id="heading-so-what-exactly-is-microcopy"><strong>So, What Exactly Is Microcopy?</strong></h2>
<p>In simple terms, microcopy is the text that guides users throughout your product. Think of microcopy as the tiny linguistic signposts and friendly nudges that guide users within your interface. Examples of microcopy include a:</p>
<ul>
<li><p>Call to Action (CTA) on a button: <strong>"Add to Cart"</strong> vs <strong>"Get Yours Now!"</strong></p>
</li>
<li><p>Hint text in a form field: "e.g., <a target="_blank" href="mailto:name@example.com">name@example.com</a>"</p>
</li>
<li><p>Error messages: <strong>"Oops! That password isn't quite right. Try again?"</strong></p>
</li>
<li><p>Success messages: <strong>"Woohoo! Your order is confirmed!"</strong></p>
</li>
<li><p>Tooltips and helper text: <strong>"Your CVV is the 3-digit code on the back of your card."</strong></p>
</li>
<li><p>Loading messages: <strong>"Brewing your results..."</strong></p>
</li>
<li><p>Empty states: <strong>"No projects yet. Ready to create your first masterpiece?"</strong></p>
</li>
</ul>
<p>It’s the voice of your product, speaking directly to your user at crucial moments.</p>
<h2 id="heading-why-designers-should-be-microcopy-maestros"><strong>Why Designers Should Be Microcopy Maestros</strong></h2>
<p><em>“But I'm a designer, not a writer!”</em> I hear you. And that's fair enough. But microcopy is closely tied to the user experience, so it should be part of a designer's toolkit. Here’s why:</p>
<h3 id="heading-it-sets-expectations-amp-provides-clarity">It Sets Expectations &amp; Provides Clarity</h3>
<p>Good microcopy tells users what will happen next.</p>
<p>For instance, “Proceed” is vague, while “Pay Securely Now” is crystal clear. This clarity reduces anxiety and builds trust.</p>
<h3 id="heading-it-guides-and-reduces-friction">It Guides and Reduces Friction</h3>
<p>Let’s say Bella is trying to sign up on a new platform and gets an error message. Instead of "Error 404," imagine: "Hmm, that email address is already in our system. Did you mean to log in?"</p>
<p>Suddenly, she now knows exactly what to do because the system has reminded her. Friction <strong>gone</strong>.</p>
<h3 id="heading-it-humanizes-your-product-amp-builds-brand-voice">It Humanizes Your Product &amp; Builds Brand Voice</h3>
<p>This is where you can inject personality. Is your brand playful? "Got it! We're packing your goodies!" Serious and professional? "Your transaction has been successfully processed."</p>
<p>Microcopy helps establish and reinforce that voice.</p>
<h3 id="heading-it-motivates-action-hello-conversions">It Motivates Action (Hello, Conversions!)</h3>
<p>The right words can be incredibly persuasive. For instance, "Start Your Free Trial" is good. "Start Your 14-Day Free Trial – No Credit Card Required!" is even better because it addresses potential objections upfront.</p>
<h3 id="heading-it-can-delight-and-surprise">It Can Delight and Surprise</h3>
<p>A little charm in unexpected places (like a 404 page or a loading spinner) can turn a moment of potential frustration into a smile. For example, Mailchimp’s "This is your moment of glory" before you send a campaign? Genius.</p>
<h2 id="heading-why-does-microcopy-matter-more-than-you-think"><strong>Why Does Microcopy Matter More Than You Think?</strong></h2>
<p>Good microcopy…</p>
<ul>
<li><p><strong>Reduces friction</strong>: It clearly instructs users on what to do (and what not to do).</p>
</li>
<li><p><strong>Builds trust</strong>: Clear copy helps users feel safe, informed, and in control.</p>
</li>
<li><p><strong>Encourages action</strong>: A well-crafted CTA (Call to Action) can be the nudge someone needs to take the desired action.</p>
</li>
<li><p><strong>Reflects your brand personality</strong>: Whether you’re fun, formal, or friendly, microcopy sets the tone.</p>
</li>
</ul>
<h2 id="heading-five-principles-for-crafting-microcopy-that-converts"><strong>Five Principles for Crafting Microcopy That Converts</strong></h2>
<p>Let’s get into the practical stuff. Here are five field-tested principles I live by:</p>
<h3 id="heading-1-be-clear-first-clever-second">1. Be Clear First, Clever Second</h3>
<p>Yes, wordplay is fun. But if users don’t get it, it’s useless. Always prioritize clarity, and avoid using jargon or overly witty phrases that obscure meaning. The user's understanding comes first.</p>
<p>Also, remember that brevity is your friend. Every word should earn its place. If you can say it in three words instead of five, do it.</p>
<p>Finally, context is king. The same button may require different text depending on its location in the user flow. For example, "Sign Up" on a homepage is fine, while "Create My Profile" on the final step of a registration form might be better.</p>
<p><strong>Example:</strong><br><strong>Instead of:</strong> <em>“Oops! Something went sideways.”</em><br><strong>Try:</strong> <em>“We couldn’t save your changes. Please try again.”</em></p>
<h3 id="heading-2-talk-like-a-human">2. Talk Like a Human</h3>
<p>I get it, you want to be professional. But you must remember that people want to feel like they’re talking to someone who genuinely understands them. Avoid robotic language and internal jargon. Nobody outside your company knows what <em>"Synergize User Data Stream"</em> means on a button.</p>
<p><strong>Before:</strong> <em>“Password does not meet the required criteria.”</em><br><strong>After:</strong> <em>“Oops! Your password needs at least eight characters, one number, and one capital letter.”</em></p>
<p>Imagine explaining it to a friend. That’s the tone you should use.</p>
<h3 id="heading-3-guide-dont-scold">3. Guide, Don’t Scold</h3>
<p>Users make mistakes. That’s okay. Your copy shouldn’t make them feel dumb.</p>
<p><strong>Bad:</strong> <em>“Invalid email.”</em><br><strong>Better:</strong> <em>“Hmm, that email doesn’t look right. Mind checking for typos?”</em></p>
<p>Use microcopy to guide users back on track, rather than chastising them.</p>
<h3 id="heading-4-write-with-purpose">4. Write with Purpose</h3>
<p>Every word should earn its place. What does the user need to know at this exact moment?</p>
<p>Instead of: <em>“Click here to submit your application for review.”</em><br>Use: <em>“Submit Application.”</em></p>
<p>Shorter. Clearer. More direct.</p>
<h3 id="heading-5-infuse-personality-in-the-right-moments">5. Infuse Personality (In the Right Moments)</h3>
<p>There’s a time and place to sprinkle in your brand’s voice. Confirmation pages, 404s, empty states, tooltips, these are great moments for charm.</p>
<p><strong>Example 404:</strong><br><em>“We lost the page (and possibly our minds). Try heading home.”</em></p>
<p>Humor and friendliness create a connection. But when users are frustrated (as during an error), they tend to lean toward helpful and empathetic responses instead.</p>
<h3 id="heading-6-be-action-oriented">6. Be Action-Oriented</h3>
<p>Start with a verb when possible, especially for CTAs. For example, try phrases like "Download Report," "Explore Features," and "Save Changes."</p>
<p>Also, inform users about what they can do, not about what the system does. "View Your Orders" is better than "Orders Will Be Displayed."</p>
<h3 id="heading-7-anticipate-needs-and-alleviate-fears">7. Anticipate Needs and Alleviate Fears</h3>
<p>If a form asks for a phone number, a little note like "We'll only use this for order updates" can make all the difference.</p>
<p>For a "Delete" button, try adding text like "Are you sure? This action cannot be undone." Crucial.</p>
<h3 id="heading-8-test-test-test-and-iterate">8. Test, Test, Test (and Iterate!)</h3>
<p>Don't just set it and forget it. A/B test different versions of your microcopy, especially for key CTAs or tricky form fields.</p>
<p>Watch user testing sessions. Where do people hesitate? What questions do they ask out loud? Those are your cues for better microcopy.</p>
<p>Sometimes, what you think is clear <strong>isn’t</strong>. Humility is a virtue here.</p>
<h2 id="heading-everyday-microcopy-examples-that-boost-ux">Everyday Microcopy Examples That Boost UX</h2>
<p>Here are a few everyday examples and how minor tweaks make a significant impact:</p>
<p>✅ <strong>Form Labels:</strong><br><strong>Instead of:</strong> <em>“Username”</em><br><strong>Use:</strong> <em>“Pick a name your friends will recognize.”</em></p>
<p>✅ <strong>Error Messages:</strong><br><strong>Instead of:</strong> <em>“This field is required.”</em><br><strong>Use:</strong> <em>“Let’s not skip this, your email helps us contact you.”</em></p>
<p>✅ <strong>Onboarding Tips:</strong><br><strong>Instead of:</strong> <em>“Step 1 of 3”</em><br><strong>Use:</strong> <em>“Almost there! Let’s set up your account in 3 quick steps.”</em></p>
<p>✅ <strong>CTA Buttons:</strong><br><strong>Instead of:</strong> <em>“Submit”</em><br><strong>Use:</strong> <em>“Send My Application”</em></p>
<p><strong>Instead of:</strong> <em>“Next”</em><br><strong>Use:</strong> <em>“Continue to Payment”</em></p>
<h2 id="heading-wrapping-up">Wrapping Up</h2>
<p>Microcopy isn't an afterthought – it’s an integral part of the design process.</p>
<p>It is everyone’s job. Designers, writers, engineers, and even product managers are all part of the microcopy puzzle.</p>
<p>If you’re designing the experience, you’re also shaping the story. Don’t wait for a copywriter to jump in. Write it yourself. Then test it. Then tweak it. Then test again.</p>
<p>Start treating every word as part of the design. Because when you do, users feel seen, supported, and confident.</p>
<p>And that’s how you build experiences that not only work, but <strong>convert</strong>.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How UX and Marketing Are Saying the Same Things, Differently ]]>
                </title>
                <description>
                    <![CDATA[ Could it be that the key to designing a great product experience might be hidden in a 60-year-old marketing playbook? Well, for years, marketing and user experience (UX) have been treated as separate worlds. Marketing grabs attention and drives sales... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-ux-and-marketing-are-saying-the-same-things-differently/</link>
                <guid isPermaLink="false">680aa2e68a164048d5799e47</guid>
                
                    <category>
                        <![CDATA[ UX ]]>
                    </category>
                
                    <category>
                        <![CDATA[ ux design ]]>
                    </category>
                
                    <category>
                        <![CDATA[ UXdesign  ]]>
                    </category>
                
                    <category>
                        <![CDATA[ marketing ]]>
                    </category>
                
                    <category>
                        <![CDATA[ #Marketing strategy ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Customer Experience ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Anamol Rajbhandari ]]>
                </dc:creator>
                <pubDate>Thu, 24 Apr 2025 20:45:26 +0000</pubDate>
                <media:content url="https://cdn.hashnode.com/res/hashnode/image/upload/v1745520497294/c0cac6d6-feaf-4633-a8eb-18baf7f7f479.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>Could it be that the key to designing a great product experience might be hidden in a 60-year-old marketing playbook?</p>
<p>Well, for years, marketing and user experience (UX) have been treated as separate worlds. Marketing grabs attention and drives sales, while UX makes products easy and enjoyable to use.</p>
<p>It may seem that they speak different languages, but if we dig a little deeper, we may find that they share a common foundation – often telling the same story in different words.</p>
<p>In this article, I’ll walk you through how the classic 4Ps of marketing (Product, Price, Place, and Promotion) intersect with UX to reveal how these disciplines can collaborate to create cohesive and effective product experiences.</p>
<h2 id="heading-the-four-ps-marketings-old-recipe-for-success"><strong>The Four P’s: Marketing’s Old Recipe for Success</strong></h2>
<p>In 1960, marketing professor E. Jerome McCarthy introduced what he called the “marketing mix,” famously distilled as the <a target="_blank" href="https://management.org/marketing-mix">Four P’s of marketing</a>. The four elements – <em>Product, Price, Place, Promotion</em> – became the cornerstone of modern marketing strategy.</p>
<p>This simple framework was about orchestrating everything a business offers: making the right product, at the right price, available at the right place, with the right promotion.</p>
<p>For decades, the 4Ps guided how companies aligned their offerings with customer needs and expectations. And even today, the 4Ps remain <em>“a foundational model in marketing,”</em> widely taught and practiced for one reason, which is that it works. Get each “P” right – build a product people want, price it fairly, distribute it conveniently, and communicate its value clearly – and that sets the stage for success.</p>
<p>Marketing hasn’t really changed at its core since McCarthy’s time. Sure, we’ve gone digital and added more Ps (like People, Process, and so on), but the heart of marketing is still understanding customers and delivering value.</p>
<p>What has changed is the context. As the century turned and the internet era took off, consumer behavior shifted dramatically. In this digital transformation, a new discipline rose to prominence alongside marketing: User Experience design, or just UX.  </p>
<p>The term “user experience” itself was popularized in the 1990s by <a target="_blank" href="https://careerfoundry.com/en/blog/ux-design/the-fascinating-history-of-ux-design-a-definitive-timeline/">cognitive psychologist Don Norman</a> to describe “all aspects of the end-user’s interaction with the company, its services, and its products”.</p>
<p>In essence, UX zooms in on how people feel when using a product or service to achieve their goals. It asks whether the product is usable, useful, and even enjoyable, and whether it meets the user’s needs without hassle.</p>
<p>As <a target="_blank" href="https://www.nngroup.com/articles/definition-user-experience/">Norman and Nielsen famously put it</a>, the first requirement for an exemplary UX is to meet the customer’s exact needs, without fuss or bother. And doing that well is the job of UX designers as much as it is the job of engineers, marketers, graphic designers, and interface designers.</p>
<p>In other words, great UX has always been a team sport, with marketing playing an important position in shaping user expectations.</p>
<p>Fast-forward to today, where marketing and UX are often seen as separate silos – but they’re really two sides of the same coin.</p>
<p>Both exist to create value for people. Both put the <em>user</em> (or <em>customer</em>) at the center of their decisions. Both aim to make a product desirable and worthwhile. The difference is that they just approach it from different directions.</p>
<p>Marketing is about increasing the <em>perceived value</em> of a product through messaging, brand, and offerings, while UX is about decreasing the <em>effort and friction</em> for the user <a target="_blank" href="https://www.nngroup.com/articles/ux-and-marketing/">through good design</a>. Put together, those efforts determine whether a product is actually worth it to the people using it.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1745405945475/1a64bb70-5c87-48a4-9688-f64eadb8868f.png" alt="The marketing mix. Source: https://www.techtarget.com/whatis/definition/Four-Ps" class="image--center mx-auto" width="1200" height="504" loading="lazy"></p>
<h2 id="heading-two-disciplines-one-goal-via-different-paths"><strong>Two Disciplines, One Goal via Different Paths</strong></h2>
<p>If we think of the journey as starting from when a customer first hears about a product to when they become a loyal user, marketing tends to focus on the “before”. Its responsibilities are customer acquisition, attracting the right people, and shaping their expectations.</p>
<p>On the other hand, UX focuses on the “after”. It takes over once the user is in the door, striving for customer satisfaction and retention while ensuring the product delivers on its promise.</p>
<ul>
<li><p>The marketer asks, <em>“How do we get people to notice and try this product?”</em></p>
</li>
<li><p>The UX designer asks, <em>“Now that they’re here, how do we make this experience fulfilling so they’ll stay (and come back)?”</em></p>
</li>
</ul>
<p>These are two halves of a continuous cycle. If marketing sets up a great promise and UX provides a great product experience, you’ve created something powerful: trust and loyalty.</p>
<p>If either side falls short, say, misleading hype from marketing or a clunky product from design, the whole experience breaks down. It’s no surprise, then, that the 4Ps matter just as much to UX as they do to marketing, as the 4Ps define the context in which users experience a product.</p>
<p>Let’s see how each P influences the user experience:</p>
<h3 id="heading-product-what-is-being-offered"><strong>Product:</strong> <strong><em>What is being offered?</em></strong></h3>
<p>This is the core of the experience. A product’s features and quality solve a problem for the user (or fail to). In marketing terms, a product is a bundle of benefits and values that fulfill a need. In UX terms, understanding the <em>right product</em> means researching what users truly need and designing the solution around that.</p>
<p>If the product doesn’t fit the user’s needs, no amount of pretty UI or even UX can fix that. McCarthy’s framework itself was about ensuring you have the <em>“right product”</em> to satisfy the target consumer.</p>
<h3 id="heading-price-how-much-does-it-cost-and-what-is-its-value"><strong>Price:</strong> <strong><em>How much does it cost, and what is its value?</em></strong></h3>
<p>Price is more than a number on a tag that sets an expectation in the user’s mind for what the product is worth. It also represents what the user is investing (money, but also time and effort). If an app is free but demands tons of personal data or time, that’s a “price” a user pays as well.</p>
<p>UX designers implicitly deal with price when they consider the effort a user must exert. A key principle in UX is minimizing “interaction cost”, which is the mental or physical effort to complete a task. To put it differently, a good UX strives to make the user’s side of the value exchange as smooth and fair as possible. When the price, which could be in dollars or effort, feels too high for the perceived benefit, the experience will suffer.</p>
<h3 id="heading-place-where-and-how-does-the-user-access-the-product"><strong>Place:</strong> <strong><em>Where and how does the user access the product?</em></strong></h3>
<p>This is about distribution and context. From a UX perspective, the questions to ask are whether it’s a mobile app used on the go, a website used from a desktop at work, or a physical retail store.</p>
<p>The marketing job is to put the product where its audience can find it. UX’s job is to ensure it works well in that context. A user’s environment (noisy bus vs. quiet office, 5-minute window vs. leisurely hour) can drastically affect their experience.</p>
<p>The best marketing in the world won’t help if the product isn’t available where users need it, and the best-designed interface will frustrate if it doesn’t fit the context of use. “Place” is part of the experience, like a stage on which your UX plays out.</p>
<h3 id="heading-promotion-what-does-the-user-hear-about-the-product-and-does-the-experience-live-up-to-that-message"><strong>Promotion:</strong> <strong><em>What does the user hear about the product, and does the experience live up to that message?</em></strong></h3>
<p>Promotion is how marketing sets expectations through advertising, branding, content, and word-of-mouth. It’s the story of the product. UX, in turn, is about delivering on that story. If the marketing promises one thing and the product delivers another, users feel disappointed or even deceived. Conversely, when promotion and experience align, the product feels trustworthy.</p>
<p>This is the reason why modern UX teams pay attention to onboarding messaging, in-app copy, and other content: they know every touchpoint either reinforces or contradicts what the user has been told. A good promotion can draw a user in, but only a matching UX will keep them in.</p>
<p>As the Nielsen Norman Group notes, both marketing and UX ultimately “<a target="_blank" href="https://www.nngroup.com/articles/ux-and-marketing/">aim to make a product or service desirable</a>” by increasing its perceived utility and value. Promotion creates the desire, and UX fulfills it.</p>
<p>Understanding these overlaps helps explain how most UX problems aren’t just UI problems or usability problems. Often, when a product fails for users, the culprit is a disconnect in one of the above areas.</p>
<p>Maybe the product didn’t actually solve the problem the user thought it would, which could be a product/expectation issue. Maybe the user felt the outcome wasn’t worth what they had to put in, which is a Price/value issue, with too much effort for too little reward. Perhaps they never fully understood the product’s value or got lost finding it, which is a Place/distribution issue. Or, they might have felt a little too let down because the hype didn’t match reality, which is a Promotion/trust issue.  </p>
<p>Many of these so-called “UX issues” boil down to expectation, value, and trust, the same concerns at the heart of marketing. But these are often completely ignored by UXers because they are deemed “out of scope”. And it is no coincidence that an actual seamless user experience tends to foster brand trust and loyalty.</p>
<p>So, when UX and marketing are in sync, the product feels right to the user on top of it working well. It meets the expectations set, provides real value, and earns the user’s confidence.</p>
<p><strong>Big picture:</strong> UX happens within a value exchange between a user and a product, and the 4Ps define many of the terms of that exchange. If a UX designer ignores things like pricing strategy or how the product is marketed, they might be missing half the story of the user’s experience.</p>
<h2 id="heading-a-shared-foundation-between-ux-and-the-4ps-and-why-it-matters-today"><strong>A Shared Foundation between UX and the 4Ps and Why It Matters Today</strong></h2>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1745444445059/c71e0b15-0497-4439-a922-e591ca845035.png" alt="c71e0b15-0497-4439-a922-e591ca845035" class="image--center mx-auto" width="3840" height="2160" loading="lazy"></p>
<p>There’s often a quiet tension in organizations between the UX team and the marketing team. Marketers might joke that designers only care about “pretty screens,” and UX designers might grumble that marketers would sell anything with a flashy ad.</p>
<p>But at the end of the day, both teams are trying to solve the same problem. Both try to connect people with a product in a meaningful way, using their own processes and coming at it from different angles.</p>
<p>If users are churning or a product flops, it doesn’t really matter whether we call it a marketing failure or a UX failure – it’s usually a bit of both. This realization is exactly why the common ground between UX and marketing is so important in today’s digital product landscape.</p>
<p>Thinking with a marketing mindset, in fact, can make UX design stronger and more holistic. The classic marketing questions – <em>Who is the customer? What do they need? What will they pay or sacrifice? How do they discover us?</em> – are strategic questions that UX designers should ask as well. They force us to zoom out from the interface and consider the entire user journey.</p>
<p>The 4Ps framework is about interplay, as it is about tactics in isolation to ensure we’re aligning everything from the thing being sold to how people find it, what it costs, and where they get it. It asks whether we are even solving the right problem, in the right way, for the right people. And that should be a UX concern as much as a marketing concern, as that is the central question of making any product successful.</p>
<p>So why does this shared space between these two domains matter so much today? It’s because designing a great product is no longer confined to just the product’s interface or just the advertising around it, but with a cohesive experience from first impression to last use.</p>
<p>The lines between discovery, purchase, use, and re-use have blurred. A user can see an Instagram ad (promotion), click straight into an app store (place), download and try an app (product), and decide within minutes if it’s worth paying for full features (price). If any part of that chain breaks, say the ad misleads, or the app is confusing, or the value for cost isn’t there, the user is gone.</p>
<p>This means that teams need a common lens. The 4Ps offer exactly such a lens, bridging strategy and design. And maybe other marketing frameworks do, too. But the most important thing to remember is that marketing and UX are really playing in the same field of contributing to the total experience a customer has.</p>
<h2 id="heading-how-to-mindfully-collaborate-between-ux-and-marketing-teams"><strong>How to Mindfully Collaborate Between UX and Marketing Teams</strong></h2>
<p>Getting UX and marketing to work together can be messy in practice, as we’re merging different domains – and of course we may not get it right at first. The important thing is to be mindful of potential friction points as well as opportunities for collaboration.</p>
<p>It’s similar to running a new campaign. The first few attempts rarely deliver results, and throwing hands up after initial failures is common, but shortsighted. Teams could instead try openly sharing failures and frustrations, which is a rare thing to do, but that is how we can find things we usually don’t.  </p>
<p>We should let marketing look into UX’s messy usability tests, let UX dig through marketing’s failed campaigns, and ask each other simple, tough questions. Questions like, ‘<em>What would marketing do here? How might UX solve this problem?’</em> It can feel awkward, even frustrating, but doing this can uncover critical insights neither team could find alone.</p>
<p>Realistically, meaningful collaboration won’t happen by itself and thus might mean trying joint workshops once in a while – not every week, maybe just every few months – purely to understand each other's perspective. Marketers could step into the shoes of UX designers, and UX teams could tackle marketing challenges, engaging in a role-swapping session to build empathy.</p>
<p>We have to acknowledge from the get-go that these sessions could get uncomfortable, but that’s exactly the point. Solving big problems means dealing with uncertainty, making mistakes, and iterating patiently until we see what works.</p>
<p>Engaging in activities like working in the same sandbox, swapping insights and failures, role-playing each other’s perspective, asking “each other’s” questions as well as “each other” questions could help embrace frustration.</p>
<p>All in all, it’ll involve leaning into each other’s domains, understanding that persistence through repeated attempts is exactly how UX and marketing teams’ amalgamation might help solve great, challenging problems.</p>
<h2 id="heading-final-thoughts">Final Thoughts</h2>
<p>UX and marketing have always been two voices telling the same story. But for too long, we’ve drawn an imaginary line between them when in truth, they’re team members on a shared mission.</p>
<p>A UX designer talks about empathy and ease. A marketer talks about value and desire. Different words, but same goal to resonate with a human need.</p>
<p>The classic 4Ps of marketing should be taken as a mirror for UX that reflects a more holistic way to design. This definitely isn’t about doing marketing’s job and vice versa, but rather doing our job with a wider lens and striving to realize that what we thought was “their” language was always part of our own.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ What is Information Architecture? How to Create Userflows and Sitemaps for UX Design ]]>
                </title>
                <description>
                    <![CDATA[ At some point in your design career, you may hear about Information Architecture (or IA). You might even have to create a userflow or sitemap. Now, this article aims to help you go back to the basics and remind you of the meaning and importance of IA... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/information-architecture-userflow-sitemap/</link>
                <guid isPermaLink="false">66d03a33dcbab93f8b58df8f</guid>
                
                    <category>
                        <![CDATA[ Design ]]>
                    </category>
                
                    <category>
                        <![CDATA[ user experience ]]>
                    </category>
                
                    <category>
                        <![CDATA[ ux design ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Faith Olohijere ]]>
                </dc:creator>
                <pubDate>Tue, 18 Jul 2023 20:40:51 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2023/07/pexels-sevenstorm-juhaszimrus-425160--1-.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>At some point in your design career, you may hear about Information Architecture (or IA). You might even have to create a userflow or sitemap.</p>
<p>Now, this article aims to help you go back to the basics and remind you of the meaning and importance of IA. So if you don't really understand the concept of Information Architecture, this is the best place to be. </p>
<p>We'll also explore how to do a userflow and a sitemap later in the article. Let's get started!</p>
<h2 id="heading-what-is-information-architecture">What is Information Architecture?</h2>
<p>Information Architecture (IA) is the process of planning and designing how information is organized in websites and applications. It focuses on meeting user needs and business goals by creating a logical and user-friendly information structure.</p>
<p>Information Architecture is mostly used by designers to structure the layout of their designs, especially during the sketching/low-fidelity stage.</p>
<h3 id="heading-importance-of-information-architecture">Importance of Information Architecture</h3>
<p>I can't overstate the importance of Information Architecture. Below, I'll share some reasons why every UX Designer should learn what IA means and how to implement it effectively:</p>
<ul>
<li>Organization and Structure: Information Architecture provides a framework for organizing and structuring information. It helps you make sure your designs are logically grouped and categorized.</li>
<li>Content Prioritization and Hierarchy: Hierarchy is one of the basic principles of design, and IA helps you achieve that. It enables designers to highlight key information and arrange content based on its relevance and importance to users.</li>
<li>User-Centric Design: Information Architecture helps designers think of their users during the design process, by considering how users typically think, behave, and search for information. Everyone has mental models, including users, and IA helps to make sure that information is presented in a way that matches the mental models of your already existing/target users.</li>
<li>Navigation: Information Architecture provides a clear way to navigate a design. It allows users to understand intuitively where they are in a site and how to move between different sections of a design.</li>
<li>Business Goals: Information Architecture helps to make sure the information presentation of your design aligns with the goals and objectives of the business/firm/company. </li>
</ul>
<h2 id="heading-types-and-forms-of-information-architecture">Types and Forms of Information Architecture</h2>
<p>There are so many types and forms of Information Architecture, especially since it's used in a lot of fields. But here we'll be looking at Userflows and Sitemaps, which are the most common ones in design.</p>
<h3 id="heading-what-is-a-userflow">What is a Userflow?</h3>
<p>A userflow refers to a diagram that shows the step-by-step journey of a user through a website, application, or system. </p>
<p>Imagine trying to order food online. Some steps you might take include: opening the food ordering application on your phone, signing up/logging in, choosing from the list of available food, choosing how many portions you'd like, and finally making payment online. </p>
<p>That's a typical example of how a user flow might be structured.</p>
<p>Userflows illustrate the paths, interactions, and decision points users encounter as they navigate and complete specific tasks or goals. They help designers and stakeholders understand and optimize the user journey.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/07/media_127cc680607ff7d6703be50271d9f563fd17e071c.png" alt="Image" width="600" height="400" loading="lazy">
<em>An example of a Userflow</em></p>
<h3 id="heading-what-is-a-sitemap">What is a Sitemap?</h3>
<p>Sitemaps are diagrams that display the layout and organization of content within a website or application. </p>
<p>Imagine a 2 bedroom apartment. The apartment could contain a sitting room, a kitchen, 2 bedrooms, a bathroom, and a dining room. The sitemap simply tells us how we can get to the kitchen from the sitting room/the bedroom/any place in the apartment.</p>
<p>In design, sitemaps provide an overview of the pages, menus, and sub-pages, helping us plan and visualize the information architecture and user experience of the system. They aid in content planning, navigation design, and website development.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/07/337-sitemap-template.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>An example of a Sitemap</em></p>
<h2 id="heading-differences-between-userflows-and-sitemaps">Differences Between Userflows and Sitemaps</h2>
<ol>
<li>Focus and Perspective: Userflows primarily focus on the step-by-step actions and interactions a user takes within an app or website, to accomplish a task or goal. Sitemaps focus on the overall structure and organisation of a website or an application, depicting the hierarchical relationship between different pages or sections.</li>
<li>Level of Detail: Userflows provide more detailed information about each step of the user's journey, including specific actions, decisions, and possible outcomes at each stage. Sitemaps provide a high-level overview of the app's or website's structure, showing the main pages or sections, without diving into the specific interactions within each page.</li>
<li>User-Centric vs Architectural: Userflows are user-centric and primarily represents the user's perspective and actions within the app or website. Sitemaps are more architectural in nature, representing the overall structure and organisation of an app or a website from a high-level viewpoint.</li>
<li>Interactivity and Decision-points: Userflows highlight interactive elements within the app or website, illustrating the choices and options available to the user at each step. Sitemaps do not explicitly showcase interactivity or decision points. </li>
</ol>
<h2 id="heading-when-to-use-information-architecture">When to Use Information Architecture</h2>
<p>You might be wondering when knowledge about Information Architecture will come in handy. </p>
<p>You can use Information Architecture in any or situation at all, really – like designing a mobile app, a website, a pitch deck, and more. Information Architecture is always helpful because it helps you decide what content/information comes first, what follows and how, and so on. </p>
<p>Typically, you'll think about Information Architecture after conducting user research. This is because research can help you understand the goals and needs of your users, and what they would likely do when they're trying to accomplish a goal on your site. </p>
<p>Also, userflows usually come before sitemaps, because you have to understand how a typical user would journey through your site, before deciding on how the layout or organization of that site would look like.</p>
<h2 id="heading-how-to-create-userflows-and-sitemaps">How to Create Userflows and Sitemaps</h2>
<p>You can use the same methods and tools to create userflows and sitemaps. You just need to understand the differences between them and bear in mind that the purpose of each one is different.</p>
<h3 id="heading-how-to-create-a-userflow">How to Create a Userflow</h3>
<h4 id="heading-step-1-define-your-goals-and-identify-tasks">Step 1: Define your Goals and Identify Tasks</h4>
<p>The first step is to define your goals and objectives for the project, stating what kind of Information Architecture you're trying to create (a userflow or a sitemap). You can just write this down on paper before digitalizing it.</p>
<p>For example: I'm working on a food ordering app, and I'd like to make a userflow showing how a typical user would order food using the app. </p>
<p>I would write down the typical/possible steps the user would have to go through to achieve the task of ordering food. These steps could be:</p>
<ul>
<li>The user opens the application on their phone.</li>
<li>The user signs up or logs into the application.</li>
<li>The user goes to the homepage.</li>
<li>The user chooses from restaurants close to them.</li>
<li>The user selects from the menu and adds food to cart.</li>
<li>The user pays for the food and waits for delivery.</li>
<li>The user exits the application.</li>
</ul>
<h4 id="heading-step-2-choose-a-tool">Step 2: Choose a Tool</h4>
<p>The next step is to choose a tool you want to use to create your userflow. There are lots of tools available for this, like Figjam, Miro, Whimsical, and others. I use Figjam since it's so easy to understand. </p>
<p>Here's what it looks like:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/07/Userflow1.png" alt="Image" width="600" height="400" loading="lazy">
<em>Figjam interface</em></p>
<h4 id="heading-step-3-sketch-your-design">Step 3: Sketch your design</h4>
<p>The next thing is for you to sketch your actual flow on Figjam. Before this, you should note that every shape for a userflow has a specified meaning. You can see some shapes, flows and associations, and their meanings below.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/07/Userflow2.png" alt="Image" width="600" height="400" loading="lazy">
<em>Shapes, flows, and associations for a userflow.</em></p>
<p>The First Shape (Rounded edge rectangle): This shape represents the start/end of a userflow. It's typically used when you want to start or end a userflow. If you notice, there's also an end tag with a similar shape in the image above. Some people also use a circle to represent this.</p>
<p>The Second Shape (Rhombus): This shape represents a decision. It's used to show when a user has to make a decision like "login", "signup", and so on.</p>
<p>The Third Shape (Rectangle with dotted lines): This represents a group. A group in a userflow can contain process and data, showing that an action has been submitted to the database, and it's expecting feedback from the site.</p>
<p>The Fourth Shape (Parallelogram): This shape shows when the user has to make an input, like "choose how many portions of food they want to order, and so on.</p>
<p>The Fifth Shape (Rectangle with solid lines): This shape shows the process of the user going through the application or website. It might also include screens the user needs to pass through in order to achieve their goal.</p>
<p>The Sixth Shape (Cylinder): this shape represents the data running in the system, which feedback is required from.</p>
<p>Now that you know the different shapes and their uses, you'll need to first draw the shape for 'start':</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/07/Userflow4.png" alt="Image" width="600" height="400" loading="lazy">
<em>Choosing a Shape</em></p>
<p>Next, you'll want to resize the shape if necessary, and input your text.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/07/Userflow-5.png" alt="Image" width="600" height="400" loading="lazy">
<em>Resizing shape and adding text</em></p>
<p>Up next, you'll need to add another shape and draw a connector. To add a connector, you can either click on the edge of the previous shape and drag, or draw the connector directly from the Figjam tools.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/07/Userflow6.png" alt="Image" width="600" height="400" loading="lazy">
<em>Drawing a connector to the next shape.</em></p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/07/Userflow7.png" alt="Image" width="600" height="400" loading="lazy">
<em>Drawing a Connector from Figjam tools</em></p>
<p>When you do that, you then input your text. (Remember to take note of the meanings/roles of each particular shape).</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/07/Userflow8.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>You continue this way until you're done adding all the steps in your userflow diagram.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/07/Userflow9.png" alt="Image" width="600" height="400" loading="lazy">
<em>Example userflow diagram with multiple steps</em></p>
<h4 id="heading-step-4-validate-and-finalize">Step 4: Validate and finalize</h4>
<p>Once you're done with your userflow, the next thing is to validate the diagram. This just means reviewing the userflow to make sure it's accurate, usable, and aligns with the users' needs. </p>
<p>Basically just go through the diagram and consider whether it represents the intended user journey, and whether all necessary steps and decision points are included.</p>
<h3 id="heading-how-to-create-a-sitemap">How to Create a Sitemap</h3>
<p>Earlier in the article, I mentioned that the processes for creating a sitemap and a userflow are similar. The difference lies in the purpose of the two diagrams. We'll be exploring how to create a sitemap using Miro, a diagramming tool.</p>
<h4 id="heading-step-1-open-the-tool">Step 1: Open the tool</h4>
<p>The first step obviously, is to open your tool. If you don't have an account already, sign up at <a target="_blank" href="https://www.freecodecamp.org/news/p/d9aa98df-32bc-4463-bf4e-557863ae187c/miro.com">Miro</a> and it should display your dashboard.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/07/miro1.png" alt="Image" width="600" height="400" loading="lazy">
<em>Miro Dashboard</em></p>
<p>Next, click on "New Board" to open a blank canvas.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/07/miro2.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h4 id="heading-step-2-start-drawing-the-sitemap">Step 2: Start drawing the sitemap</h4>
<p>Next, you start drawing your sitemap. You should already know what screens you'll be designing, and how these screens connect to each other. Your userflow might help inform this.</p>
<p>Click on the Shapes tool from the toolbar on the lefthand side of your screen, to bring up all available shapes. </p>
<p>Note that, unlike Userflows where every shape has a meaning, you can use any shape for your sitemaps. Most designers make use of rectangles when doing sitemaps. It's very easy to build and stack, especially when you have lots of pages to represent.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/07/miro3.png" alt="Image" width="600" height="400" loading="lazy">
<em>Choosing a shape</em></p>
<p>A plus icon will appear, and you just have to drag till the shape is to your satisfaction.</p>
<h4 id="heading-step-3-edit-the-shapes">Step 3: edit the shapes</h4>
<p>Next, you edit the shape to add colour, and your text. This could be "Homepage", "Log-in", "Signup", and so on – whatever is the first screen of your design. </p>
<p>When you click on the button, a sub-menu comes up. Here, you can switch your shape type, change text font and size, add text colour, align it, add a border or fill colour for the shape, and more.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/07/miro4.png" alt="Image" width="600" height="400" loading="lazy">
<em>Typing inside a shape</em></p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/07/miro5.png" alt="Image" width="600" height="400" loading="lazy">
<em>Editing a shape</em></p>
<h4 id="heading-step-4-add-shapes-for-the-next-screens">Step 4: add shapes for the next screens</h4>
<p>Next, you need to draw shapes for the next screens which the homepage branches into. This could be major items on the navigation bar, where you have to click on CTAs (Call To Actions) to open them. </p>
<p>To draw the next shape, you can simply click on the edges of the first one, and the outline of the shape will be displayed.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/07/miro6.png" alt="Image" width="600" height="400" loading="lazy">
<em>Sketching the next shape</em></p>
<p>Click on the outline to indicate that you want the shape to stay, and basically edit just like you did the first one.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/07/miro7.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/07/miro7.5.png" alt="Image" width="600" height="400" loading="lazy">
<em>Editing the second shape</em></p>
<p>Next, you need to add other shapes that represent the subpages which the homepage branches out into. Just click on the first shape like you did when making the first sub-page shape.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/07/miro8.png" alt="Image" width="600" height="400" loading="lazy">
<em>Adding other sub-pages</em></p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/07/miro9.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>You can also change their colours to differentiate from the homepage and show hierarchy.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/07/miro10.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h4 id="heading-step-5-draw-more-pages">Step 5: draw more pages</h4>
<p>Next, you draw shapes for the pages under the first set of sub-pages.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/07/miro11.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>You just continue that way until you're done with your sitemap, and all the screens you want to design have been represented in it.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/07/miro12.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>When you're done making your userflow and sitemaps, you can move on to your low-fidelity wireframes or your main design proper. The IA you've done informs your next step and decides what screens you should be designing in particular.</p>
<h2 id="heading-conclusion">Conclusion</h2>
<p>Information Architecture is very important for you to be able to organize the layouts of your designs and arrange them. This is helpful because it can really help improve the quality of your designs. </p>
<p>There are even templates on some softwares that could help you do your Information Architecture diagrams. Remember to practice as often as you can.</p>
<p>Thank you for reading!</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Why Data Visualization is Important for UX Design ]]>
                </title>
                <description>
                    <![CDATA[ These days, we find ourselves consuming vast amounts of information, at an unprecedented rate. From online transactions, to social media interactions, to scientific research, the complexity of data grows exponentially. This reveals a challenge — how ... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/why-data-visualization-is-important-for-ux-design/</link>
                <guid isPermaLink="false">66d03a45ab216b411575949d</guid>
                
                    <category>
                        <![CDATA[ data visualization ]]>
                    </category>
                
                    <category>
                        <![CDATA[ User Interface ]]>
                    </category>
                
                    <category>
                        <![CDATA[ ux design ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Faith Olohijere ]]>
                </dc:creator>
                <pubDate>Thu, 01 Jun 2023 15:39:07 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2023/05/luke-chesser-JKUTrJ4vK00-unsplash.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>These days, we find ourselves consuming vast amounts of information, at an unprecedented rate. From online transactions, to social media interactions, to scientific research, the complexity of data grows exponentially. This reveals a challenge — how to transform this raw data to actionable insight. </p>
<p>This is where data visualization comes in. Data visualization is a very important concept we should all consider when designing for our users.</p>
<p>In this article, you'll learn what data visualization is, how it relates to UX Design, and challenges faced when designing for data visualization.</p>
<h2 id="heading-what-is-data-visualization">What is Data Visualization?</h2>
<p>Data Visualization can be defined as being able to view data in designs. This could be done using charts, maps, tables, and so on. Data visualization simply enables users to see and understand data, without stressing their head or eyes. </p>
<p>By leveraging the power of visual perception, data visualization empowers individuals and organizations to gain deeper insights, and make informed decisions.</p>
<h2 id="heading-how-does-data-visualization-relate-to-ux-design">How Does Data Visualization Relate to UX Design?</h2>
<p>You might be wondering if and how data visualization relates to UX design. After all, isn't data all about numbers?</p>
<p>They do relate! You see, data visualization isn't just about numbers. It's about representing these numbers in a way that makes sense to the user, and also helps them make decisions. </p>
<p>As UX designers, our primary goal is to solve a problem for our users. When we design for data visualization, we're reducing the strain of going through bulky amounts of data for our users, and generally making their lives easier.</p>
<h2 id="heading-why-is-data-visualization-important">Why is Data Visualization important?</h2>
<p>Data Visualization is important for so many reasons, some of which are:</p>
<ul>
<li>Enhancement of understanding: Just putting out data might confuse a particular user or customer. Using visuals to interpret the data makes it easier and more fun for the users.</li>
<li>Communication of insight: Data visualization helps communicate insights on a digital platform. Users will be able to understand the data, data sources and how it's being analyzed.</li>
<li>Better user experience: Overall, data visualization helps in making sure your user has a better experience while interacting with your platform. You're generally trying to make their lives easier and reduce information overload.</li>
<li>Informed decision-making: Helping the user understand the data better, will keep them informed, and help them make better decisions which can boost their businesses.</li>
</ul>
<h2 id="heading-challenges-of-designing-for-data-visualization">Challenges of Designing for Data Visualization</h2>
<p>Data visualization is so easy to get wrong. Because of the delicate nature of data and how broad it can appear, designers might face some challenges when trying to help users visualize data. Some of these challenges include:</p>
<ul>
<li>Bulky/complex data: The bulky nature of the data might make it difficult to represent the data using visuals. Also, simplifying the data without losing information can be very tricky.</li>
<li>Cluttered interface: Somewhat related to the previous point, the overwhelming nature of the data can make the design look cluttered. Because you're designing with a lot of data, you might end up having a messy interface, while trying to put it all on a screen. You have to find a way to make sure your user interfaces don't look cluttered with an overload of information.</li>
<li>Usage of color: Despite the fact that we want the interface to look visually appealing, we have to consider the fact that colors can distract users from the overall intention, which is to communicate data to the users. Therefore, we should figure out a way to strike the balance, especially when differentiating color categories and highlighting important information.</li>
<li>Background of the target audience: You should also consider the background and understanding of your target audience. Some users might not have technical knowledge so, it would be best not to use jargon while designing for them.</li>
</ul>
<h2 id="heading-how-to-design-efficiently-for-data-visualization">How to Design Efficiently for Data Visualization</h2>
<p>To effectively design for data visualization and correctly interpret data for your users, you should consider these tips:</p>
<h3 id="heading-define-the-purpose">Define the purpose</h3>
<p>First of all, you'll want to define your purpose for the design. This is a common step in most designs. You need to understand the purpose of the visualization – is it to convey trends, monitor business growth, and so on. </p>
<p>Also, consider the domain, requirements, and possible constraints. This will help you determine the best visualization type to use.  </p>
<p>For example, say you're designing a data visualization for a social media tracking platform. The purpose here is to track the growth of the social media account, note what posts are most engaged with, and basically providing actionable insights to help the user make decisions that would further boost the account.</p>
<h3 id="heading-know-your-audience">Know your audience</h3>
<p>Another tip for designing effectively is to know your audience. You have to understand what your audience needs before figuring out how to help them. </p>
<p>You can conduct some research on the kind of people that would use the data visualization tool for the domain you're working on.</p>
<p>Using the same example as the first tip, your audience would generally be social media managers, brand ambassadors, or others who work primarily in the social media space. Do note that the audience may vary in terms of age, expertise, and personal preferences. </p>
<h3 id="heading-choose-the-visualization-type">Choose the visualization type</h3>
<p>Here, you choose the best visualization type for conveying your information. You can decide to use bar charts, tables, graphs, and so on, to represent your data.</p>
<p>Continuing with our example, you'd want to select visualizations that effectively represent progress over time, such as bar charts, progress charts, and so on. You might also want to analyze key data such as active followers. Would you use a bar chart or a line chart to do so? This is what choosing the visualization type entails.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/06/15319232948826_guardianmasterclass-dataviz-1292.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>Examples of some data visualization charts. Image from [OpenClassrooms](https://www.google.com/url?sa=i&amp;url=https%3A%2F%2Fopenclassrooms.com%2Fen%2Fcourses%2F4555961-apply-metrics-to-design-decisions%2F5403056-decide-on-an-approach-to-present-information&amp;psig=AOvVaw11EJaN3uJ8zzLGJ7VRciQd&amp;ust=1685717146266000&amp;source=images&amp;cd=vfe&amp;ved=0CBEQjRxqFwoTCKjA</em>--nov8CFQAAAAAdAAAAABAR)_</p>
<h3 id="heading-have-an-intuitive-and-simple-layout">Have an intuitive and simple layout</h3>
<p>Here, you'd have to think of the kind of layout you want to use for your design. You would want to go for a simple layout that would help your users easily understand the visuals.</p>
<p>For the social media data visualization, you might want to: </p>
<ul>
<li>Incorporate a clear hierarchy of elements using size, colors, and placement.</li>
<li>Use familiar patterns like icons or symbols, to represent different social media metrics.</li>
<li>Embrace a minimalist approach by displaying essential information only. </li>
<li>Design a clear navigation system so users would always understand their current location on the application. </li>
</ul>
<p>Having an intuitive layout can help reduce information overload on your users. When elements are arranged logically, and the visualization is simple and free of clutter, your users are sure to have a great experience.</p>
<h3 id="heading-use-accessible-colors">Use accessible colors</h3>
<p>Next, choose colors that are easy on the eyes. Aside from the background and primary colors, you might use color coding to differentiate between different metrics/elements. </p>
<p>For example, you may decide to get the gender demography of the audience for the social media account. To represent this data, you could use a circle graph (doughnut), and choose different colors to represent the genders.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/06/Circle-Chart.png" alt="Image" width="600" height="400" loading="lazy">
<em>An example of a circle graph with each element differentiated by colors.</em></p>
<p>Please note that accessibility isn't only for people with disabilities. Make sure to use colors that don't distract the user from important elements and information. You can use <a target="_blank" href="https://www.freecodecamp.org/news/the-60-30-10-rule-in-design/">the 60-30-10 rule</a> to choose a color palette that improves understanding and aids interpretation.</p>
<h3 id="heading-a-data-visualization-dashboard">A Data Visualization Dashboard</h3>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/05/Desktop---6--3-.png" alt="Image" width="600" height="400" loading="lazy">
<em>Example of a dashboard for a Data Visualization Tool</em></p>
<p>The image above shows a dashboard for a social media data visualization tool. The dashboard contains performance metrics, analytics of likes, followers and comments on the account. The dashboard also contains the demographics of the audience, engagement rates and posts activity. </p>
<p>All these are important data analytics information which are useful to the owner of the account.</p>
<p>You can see how charts and bar graphs are used to interpret the data. Imagine having one big list which has the demographics of each user, each like and comment posted, everyone who engaged with each posts, and so on. It would be a bit overwhelming and hard to sift through to find insights.</p>
<h2 id="heading-conclusion">Conclusion</h2>
<p>The average person consumes about 40-75 gigabytes of data per day. Now, that's quite a lot. Imagine having to take in this huge amount of data through cluttered and disorganized interfaces. This would make it difficult to understand and interpret the data.</p>
<p>As designers, it's our job to ease the experiences of users while interacting with our products. We have to focus and align our design choices with the purpose and audience, as well as continuously evaluate our visualizations to ensure they effectively convey insights and appropriately inform the viewers. Remember, this gets better with practice.</p>
<p>Thank you for reading!</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ UX vs UI – What's the Difference? Definition and Meaning ]]>
                </title>
                <description>
                    <![CDATA[ When designing a website or an app, the finished product needs to be functional, intuitive, and aesthetically pleasing. This is where UX and UI design come in. UX and UI design are two technical terms that can often be confusing. Many people may use ... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/ux-vs-ui-whats-the-difference-definition-and-meaning/</link>
                <guid isPermaLink="false">66b1e4c841fdb67461b85280</guid>
                
                    <category>
                        <![CDATA[ UI Design ]]>
                    </category>
                
                    <category>
                        <![CDATA[ UI UX ]]>
                    </category>
                
                    <category>
                        <![CDATA[ user experience ]]>
                    </category>
                
                    <category>
                        <![CDATA[ User Interface ]]>
                    </category>
                
                    <category>
                        <![CDATA[ ux design ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Web Design ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Dionysia Lemonaki ]]>
                </dc:creator>
                <pubDate>Fri, 14 Oct 2022 16:15:57 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2022/10/pexels-picjumbocom-196644.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>When designing a website or an app, the finished product needs to be functional, intuitive, and aesthetically pleasing. This is where UX and UI design come in.</p>
<p>UX and UI design are two technical terms that can often be confusing.</p>
<p>Many people may use these two terms interchangeably, incorrectly, or assume they are the same thing. But that is not the case, as they are two different fields.</p>
<p>In a nutshell, UX design focuses on how well the product <em>works</em> and how the user <em>feels</em> when using it, whereas UI design focuses on how that software product <em>looks</em>. </p>
<p>Both are equally important and play a vital role when creating and developing software. </p>
<p>Think of it like this: a pretty UI may attract visitors, but if the product is not functional, the visitors won't stick around. And if the product works properly but doesn't look good, users will feel frustrated and look elsewhere to satisfy their needs.</p>
<p>There needs to be a balance.</p>
<p>With that said, the definition above only scratches the surface.</p>
<p>In this article, you will learn about the differences between UX and UI design and understand what UX and UI designers do in their day-to-day work.</p>
<p>Here is what we will cover:</p>
<ol>
<li><a class="post-section-overview" href="#ux-definition">What is UX design and why is it important?</a></li>
<li><a class="post-section-overview" href="#ux-job">What does a UX designer actually do? The UX design process explained</a><ol>
<li><a class="post-section-overview" href="#phase-1">Understanding phase</a></li>
<li><a class="post-section-overview" href="#phase-2">User research phase</a></li>
<li><a class="post-section-overview" href="#phase-3">Analyze and define phase</a></li>
<li><a class="post-section-overview" href="#phase-4">Ideate and design phase</a></li>
<li><a class="post-section-overview" href="#phase-5">Reporting phase</a></li>
</ol>
</li>
<li><a class="post-section-overview" href="#ui-intro">What is UI design?</a><ol>
<li><a class="post-section-overview" href="#ui-skills">What does a UI designer do?</a></li>
</ol>
</li>
<li><a class="post-section-overview" href="#differences">UX VS UI design - what's the difference?</a></li>
</ol>
<h2 id="heading-what-is-ux-design-and-why-is-it-important">What Is UX Design and Why Is It Important? <a></a></h2>
<p>UX design is short for user experience design.</p>
<p>The term was coined and popularized in the early 1990s by Donald Norman, an American researcher, professor, and author, during his time at Apple.</p>
<p>According to Norman:</p>
<blockquote>
<p>User experience encompasses all aspects of the end-user’s interaction with the company, its services, and its products. </p>
</blockquote>
<p>Note that the original definition of UX referred to physical and digital products. Nowadays, UX design mainly relates to digital products. </p>
<p>So, user experience design is a process that involves cultivating a good relationship between a company, the company's software products /services, and the company's clients/customers.</p>
<p>The relationship is based on how a user feels when using the company's products.</p>
<p>UX has to do with feelings, emotions, thoughts, behaviors, and human psychology.</p>
<p>Specifically, good UX depends on the following points:</p>
<ul>
<li>How does a person feel when using the product?</li>
<li>How accessible is it for the person to navigate the product? Can everyone use it?</li>
<li>How usable is the product? Does it work as intended?</li>
<li>How easy is it for the person to navigate and find the necessary information?</li>
<li>How well-planned and intuitive are the steps a user needs to take to accomplish a task?</li>
<li>How logical is the sequence of actions a user needs to perform to accomplish their goal with ease?</li>
<li>Does it make it easy for them to achieve their initial goal?</li>
<li>How well structured is the content available? Does it follow a logical hierarchy?</li>
<li>How useful is the product?</li>
<li>How valuable is the product?</li>
<li>Does it serve a purpose?</li>
</ul>
<p>All of the above are part of what makes good UX design and contribute to the value the software offers.</p>
<p>UX is all about solving problems and always keeping the user in mind.</p>
<p>The end goal is to provide a pleasant and positive experience for the user, create digital products that a user feels comfortable using, and for the user to accomplish their task and have their needs met.</p>
<p>All in all, it focuses on anything and everything that affects the user's journey when trying to solve a problem they have.</p>
<p>Good user experience is vital for every business. If the user/customer is happy and not frustrated, they are more likely to remain loyal.</p>
<p>If users can't use the product with ease, this will result in them giving up on it and looking for an alternative product/service that meets their needs, resulting in a loss for the business. They are unlikely to return to a product after a bad experience.</p>
<h2 id="heading-what-does-a-ux-designer-actually-do-the-ux-design-process-explained">What Does A UX Designer Actually Do? The UX Design Process Explained <a></a></h2>
<p>The UX design process is comprised of many parts. It is a sequential process with the end user always in mind throughout all stages.</p>
<p>The role of a UX designer will vary from business to business and depends on the size of the team they are on. </p>
<p>On a small team, a UX designer will probably be responsible for the whole UX process from start to finish. On a larger team, they might be involved in only one part of the process, such as UX research.</p>
<p>That means a UX designer may not be part of all the stages outlined in the following sections.</p>
<p>Now, let's see the different phases in the UX design process in more detail.</p>
<h3 id="heading-understanding-phase">Understanding Phase <a></a></h3>
<p>The first step in the UX design process is understanding the brand and its users.</p>
<p>Specifically, it is about understanding how the project the UX designer is working on aligns with the brand's mission, vision, and goals. </p>
<p>And it is about understanding the brand's users/customers. </p>
<p>A UX designer can't make assumptions about what the users really want or what problems they are facing when using the product/service. They will only know once they ask the users directly.</p>
<p>The UX designer needs to understand, be in tune with, and empathize with the problems users are facing and their pain points. They need to understand their users' wants and needs.</p>
<p>The key word here is <a target="_blank" href="https://www.freecodecamp.org/news/how-empathy-makes-you-a-better-software-engineer/">empathy</a>! Empathy is the ability to understand the user's hopes, goals, frustrations, and needs. </p>
<p>Once the UX designer has gathered those insights and identified the goals of the brand and the problems the users are facing, they can figure out how to solve problems and provide solutions through their designs and how they can create products/services that solve those problems.</p>
<h3 id="heading-user-research-phase">User Research Phase <a></a></h3>
<p>As mentioned in the section above, a UX designer can't assume, and if they do, they need to question those assumptions by conducting user research.</p>
<p>There are two main methods for conducting user research:</p>
<ul>
<li>Qualitative methods</li>
<li>Quantitative methods</li>
</ul>
<p>Qualitative research methods focus on observational and non-numerical findings, human behaviors, opinions, and emotions. </p>
<p>They include creating customer feedback surveys and asking open-ended questions to understand the key frustrations and pain points and what needs improving.</p>
<p>They also include reaching out to customers directly and conducting 1:1 face-to-face or online user interviews or focus groups of 3-5 target users for usability testing.</p>
<p>Quantitative methods focus on numbers, metrics, and measurable data points. </p>
<p>They include using web analytics tools and researching how the current design is performing. For example, they might find out how many visitors of an e-commerce site are clicking on a particular item and adding it to their cart, or what is the average time spent on the checkout page.</p>
<p>To learn more about user research, check out the following resources:</p>
<ul>
<li><a target="_blank" href="https://www.freecodecamp.org/news/why-you-need-a-ux-researcher-on-your-product-team/">Why you need a UX researcher on your product team</a></li>
<li><a target="_blank" href="https://www.freecodecamp.org/news/use-user-reseach-to-create-the-perfect-ui-design/">Use User Research to Create the Perfect UI Design</a></li>
<li><a target="_blank" href="https://www.freecodecamp.org/news/qualitative-vs-quantitative-definition-research-methods-and-data/">Qualitative VS Quantitative Definition – Research Methods and Data</a></li>
</ul>
<h3 id="heading-analyze-and-define-phase">Analyze and Define Phase <a></a></h3>
<p>After gathering user insights, the next phase in the UX design process is for the UX designer to analyze and make sense of all the information and define the problem they need to solve for the user. </p>
<p>They define what their focus should be and what would have the most impact on the users.</p>
<p>At this stage, it is crucial not to lose sight of the user's needs.</p>
<p>For this reason, the UX designer will create user personas based on the research they've gathered.</p>
<p>A user persona is a fictional character that will use the product/service. </p>
<p>It represents a typical target user and identifies their needs, frustrations, behaviors, and goals.</p>
<p>User personas allow UX designers to understand their users better and make wise design decisions.</p>
<p>At this stage, a UX designer might also create use cases. </p>
<p>A use case is a description of how different users might use and interact with the product or service.</p>
<p>Finally, a UX designer might also create journey maps.</p>
<p>A journey map is a visual and graphic representation of how the user will interact with the product/service from start to finish, and a map depicting the whole user journey until the user accomplishes their goal. </p>
<p>Journey maps are useful for understanding the different pain points a user faces when using the product and where those pain points occur, which leads to restructuring the product/service.</p>
<p>To learn more about user personas and use cases, check out the following resources:</p>
<ul>
<li><a target="_blank" href="https://www.freecodecamp.org/news/how-to-write-user-stories-epics-pesonas/">How To Write User Stories, Epics, &amp; Personas</a></li>
<li><a target="_blank" href="https://www.freecodecamp.org/news/use-cases-and-organizational-structure/">Use cases and organizational structure</a></li>
</ul>
<h3 id="heading-ideate-and-design-phase">Ideate and Design Phase <a></a></h3>
<p>The ideate phase is all about brainstorming and exploring out-of-the-box design ideas.</p>
<p>At this stage, the UX designer will come up with different creative options for how to solve the problem at hand.</p>
<p>They will brainstorm ideas and sketch them on paper before using any digital tools.</p>
<p>They will also create wireframes. Wireframes are rough prototypes and visual representations of what the UI and its various components will look like and which act as a guide and direction for the final design.</p>
<p>They will outline the steps and the complete path a user will take while using the product/service.</p>
<p>The end goal of this phase of the UX design process is to design low or high-fidelity versions of the structure and layout of the product (which may or may not be interactive) and of what the final design will look like. The first design is never the final design.</p>
<p>After continuously iterating the designs, adding new ideas and features,  rigorous testing, and feedback, the UX designer will have a detailed and carefully crafted digital mockup.</p>
<p>The mockup will look almost identical to the final product, which they hand off to the engineering team. The engineering team will build and ship the real-world working product.</p>
<p>To learn more about creating wireframes, check out the following resources:</p>
<ul>
<li><a target="_blank" href="https://www.freecodecamp.org/news/what-is-a-wireframe-ux-design-tutorial-website/">What is a Wireframe? This UX Design Tutorial Will Show You.</a></li>
<li><a target="_blank" href="https://www.freecodecamp.org/news/designing-a-website-ui-with-prototyping/">How to Design a Website Prototype from a Wireframe</a></li>
</ul>
<h3 id="heading-reporting-phase">Reporting Phase <a></a></h3>
<p>After the product launches, the next phase of the UX design process is the reporting phase. This includes conducting usability testing, observing how users are using the end product, collecting feedback, and gaining additional insights.</p>
<p>This phase helps the UX designer and their teams understand if the end product solves the initial problem and if it meets the needs of their end users.</p>
<p>At this phase, here are some of the questions that a UX designer may ask:</p>
<ul>
<li>"What did we do right?"</li>
<li>"What <em>didn't</em> we do right, and why?" </li>
<li>"What did we learn?"</li>
<li>"How can we improve in the future?"</li>
<li>"How are users responding to the product/service? Did we solve their problems and pain points?"</li>
</ul>
<p>With that said, the UX design process doesn't end here, since there are continuous iterations and improvements to be made.</p>
<h2 id="heading-what-is-ui-design-and-why-its-important-an-overview-of-ui-design">What Is UI Design and Why It's Important? An Overview of UI Design   <a></a></h2>
<p>So far, you have seen that UX design involves every aspect of a user’s experience when using a product. So what exactly is UI design, then?</p>
<p>Back in the 1970s, to use a computer, you had to use a command line interface (or CLI for short), and users needed to know a programming language to communicate with the machine. </p>
<p>At that time, you needed a lot of technical knowledge and skills to complete a simple task with a computer.</p>
<p>That changed in the 1980s with the introduction of Graphical User Interfaces (or GUIs for short) and personal computers. </p>
<p>A mouse, application icons, buttons, menus, checkboxes, and folders replaced the cryptic command line. Anyone could use a computer. Users could easily create, update, move, and delete files and send emails – no coding required.</p>
<p>The people that created these early graphical user interfaces were called User Interface (or UI for short) designers.</p>
<p>Nowadays, the term user interface involves every visual part of a digital product/service that a user interacts with. This includes mobile apps, websites, screens, touchscreens, keyboards, and wearable technology such as smartwatches, to name a few.</p>
<p>You can think of it as the bridge between the user and technology.</p>
<p>A UI designer is responsible for designing every step that allows a user to interact with the digital product/service. This includes layouts, structure, buttons, colors, and animations.</p>
<p>UI design is all about the <em>look,</em> <em>feel</em>, and <em>aesthetics</em> of a digital product. It involves every visual aspect and appearance of the product the user interacts with.</p>
<p>The end goal of a UI designer is to make something visually appealing to the user that's easy to interact with.</p>
<p>Good UI is vital for drawing attention to potential customers and attracting new users. Everyone appreciates a well-designed, clean, intuitive, and modern design.</p>
<p>But how does all this relate to UX design? You can think of UI design as a subset of UX design and a small part of the UX design process. But it is a separate discipline in its own right. </p>
<h3 id="heading-what-does-a-ui-designer-do-ui-design-skills-definition-and-examples">What Does A UI Designer Do? UI Design Skills Definition and Examples <a></a></h3>
<p>UI designers need to have visual design skills.</p>
<p>Specifically, they need to know the following concepts and disciplines:</p>
<ul>
<li><a target="_blank" href="https://www.freecodecamp.org/news/how-to-increase-user-engagement-with-your-app-using-color-theory-7c6f5c632570/">Color theory</a>, creating color palettes and creating accessible contrast that ensures both usability and readability.</li>
<li><a target="_blank" href="https://www.freecodecamp.org/news/how-to-design-good-typography/">Typography</a>.</li>
<li><a target="_blank" href="https://www.freecodecamp.org/news/how-to-layout-and-design-a-website-without-any-design-skills-86d94e40b55a/">Layout</a>, spacing, structure, and effective placement of elements on a page.</li>
<li>Graphics, icons, and illustration design.</li>
<li>Interaction design principles, animation effects, and motion design.</li>
<li>Branding – creating a consistent visual identity for a brand/product and communicating the brand's mission and message.</li>
<li><a target="_blank" href="https://www.freecodecamp.org/news/master-responsive-website-design/">Responsive design</a>, and ensuring the UI looks good on all screen sizes and devices.</li>
<li>Creating <a target="_blank" href="https://www.freecodecamp.org/news/how-to-create-a-style-guide-in-figma/">style guides</a>.</li>
<li>Creating <a target="_blank" href="https://www.freecodecamp.org/news/learn-how-to-create-a-design-system-in-figma/">design systems</a>.</li>
<li>Knowledge of industry tools such as <a target="_blank" href="https://www.freecodecamp.org/news/ui-design-with-figma-tutorial/">Figma</a></li>
<li><a target="_blank" href="https://www.freecodecamp.org/news/ui-ux-design-tutorial-from-zero-to-hero-with-wireframe-prototype-figma/">Wireframing and prototyping</a>.</li>
</ul>
<h2 id="heading-ux-vs-ui-design-whats-the-difference-the-difference-between-ux-and-ui-design-explained-in-plain-english">UX VS UI Design – What's the Difference? The Difference Between UX and UI Design Explained in Plain English <a></a></h2>
<p>By this point, you hopefully understand what UX and UI design involves.</p>
<p>To summarize their differences:</p>
<p>UX design is how things <em>work</em> and how <em>useful</em> they are. UX design focuses on the whole experience and the journey a user takes when using a product from start to finish. It involves the overall experience a user has when trying to solve a problem. </p>
<p>UX requires knowledge of psychology, cognitive science, human behavior, identifying the user's pain points, and solving their problems.</p>
<p>UI design is how things <em>look</em>. UI design is a subset of UX design and is a more specialized field. It focuses only on the visual aspects that a user interacts with and creates inclusive, accessible, pleasant, and aesthetically pleasing digital interfaces. </p>
<p>UI design also focuses on creating a brand aesthetic that leads to an emotional connection with users/customers.</p>
<p>Both UX and UI design are equally important in creating useful, usable, and modern digital products and services and meeting the needs of their users.</p>
<h2 id="heading-conclusion">Conclusion</h2>
<p>This marks the end of the article – thank you so much for making it to the end!</p>
<p>Hopefully, this guide was helpful, and it gave you some insight into what UX and UI design are, what UX and UI designers do in their day-to-day work, and what the differences between those two terms are.</p>
<p>Thank you for reading!</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Override Root Font Size to Create a Better User Experience ]]>
                </title>
                <description>
                    <![CDATA[ By Damla Erkiner Back in the day, web developers, front-end engineers, and UI designers had a bit of an easier job. This is because they weren't expected to rearrange their code and designs to fit so many different screen sizes.  But in today's world... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/override-root-font-size-for-a-better-user-experience/</link>
                <guid isPermaLink="false">66d45e03052ad259f07e4a83</guid>
                
                    <category>
                        <![CDATA[ Accessibility ]]>
                    </category>
                
                    <category>
                        <![CDATA[ user experience ]]>
                    </category>
                
                    <category>
                        <![CDATA[ ux design ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Tue, 23 Aug 2022 15:14:55 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2022/08/root-font-size-article-image.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Damla Erkiner</p>
<p>Back in the day, web developers, front-end engineers, and UI designers had a bit of an easier job. This is because they weren't expected to rearrange their code and designs to fit so many different screen sizes. </p>
<p>But in today's world, if you make a decision that doesn't take responsive design techniques into consideration it can be doomed to failure. </p>
<p>After all, no one wants to visit a web site to stare at weird shapes, distorted images, and illegible text. </p>
<p>People's time is precious and limited, particularly in today's fast-paced world. A poor user experience in the form of non-responsive web design can really harm a business or brand in the blink of an eye. </p>
<p>This is why every developer should treat their products and websites like gemstones in their portfolio. These are literally a part of your personal brand and you don't want to ruin it with bad designs.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/08/responsive-webdesign-vs-non-responsive-webdesign.png" alt="Image" width="600" height="400" loading="lazy">
<em><a target="_blank" href="https://www.fortyone.io/en/responsive-webdesign.html">Illustration by Forty One</a></em></p>
<p>If you want to guarantee a hassle-free user experience, as a web developer or designer you're supposed to adopt certain practices that require you to play around with the layout. In this way, every single page you compose looks sophisticated and is user-friendly regardless of the screen size. </p>
<p>This process of creating responsive designs is deeply connected to <a target="_blank" href="https://www.madcapsoftware.com/blog/content-architecture-what-it-is-and-why-its-important/#:~:text=What%20is%20Content%20Architecture%3F,can%20affect%20the%20content%20architecture.">content architecture</a>. </p>
<p>There are various techniques you can use to make your website's potential users smile – or at least not feel frustrated – when they look at their screens. </p>
<p>Those may involve using media queries, CSS Flexbox, or CSS Grid. That being said, this article will primarily consider a method that is popular among experienced web developers. </p>
<h2 id="heading-why-should-you-adjust-the-root-font-size">Why Should You Adjust the Root Font Size?</h2>
<p>In a nutshell, this technique targets the root font-size and it also has to do with why you choose 'rem' units with this set-up. If you're already curious about it, let's dive right into it.</p>
<p>First and foremost, you should know that the standard root font-size of browsers is 16px. This fixed value is in 'px' units by default. But 'rem' units compared to 'px' are capable of creating more responsive websites. You can read more about that in <a target="_blank" href="https://www.aleksandrhovhannisyan.com/blog/use-rems-for-font-size/">this article</a>. </p>
<p>So if we try to convert px values into rem, we'll need to do some math. Suppose we want to set the font-size of an element to 4px, but we also want it to be as responsive as possible. To turn it into a 'rem' value, we need to divide it into 16px and the result will be 0.25rem. <a target="_blank" href="https://nekocalc.com/px-to-rem-converter">An online converter</a> exists for this purpose as well.</p>
<p>Everything would be fine and dandy if we had a way to turn every 'px' value into a 'rem' figure more easily, now that rem is considered to be more responsive. Here is how our dreams can come true.</p>
<p>In lieu of dealing with such cumbersome calculations, we can set the root (HTML) font-size to 62.5%. In this case, you can make all the other calculations automatically through the system. </p>
<h2 id="heading-how-to-change-root-font-size">How to Change Root Font Size</h2>
<p>Let's delve into the details to better grasp the situation. When the root font/HTML size is 100%, the font-size is 16px by default. But, if you set it to 62.5%, the new root value will be 10px. </p>
<p>Now, 10px (1rem) is way too tiny and is a recipe for disaster in terms of good user experience. So we should set it to 1.6rem (16x) again in the body. Everything looks the same on the surface. But still, this time, the new rem set-up will be more responsive than that of the 'px' version.</p>
<p>Now we're able to translate all the values into rem units. The tricky bit here is the root size calculation in the HTML section. Now, whatever size we pick for the body will be re-shaped in accordance with the pre-defined value in the root/HTML. To put it simply, the new percentage value '62.5%' in the root/html section ensures the smooth transformation of 'px' into 'rem'.</p>
<h2 id="heading-why-we-prefer-the-percentage-expression">Why We Prefer the 'Percentage' Expression</h2>
<p>At this point, you might be asking yourself why we opt for the percentage expression (62.5%) along with 'rem' units. Why bother? Isn't the 'px' version supposed to be the same? Well, not so much. </p>
<p>As <a target="_blank" href="https://www.quora.com/Why-is-the-CSS-technique-html-font-size-62-5-used-to-set-the-base-font-size-to-10px-Why-not-just-simply-say-html-font-size-10px">some developers on Quora</a> suggest, percentage-based values can scale more smoothly compared to fixed numbers. This means that not only are rem units important, but also the percentage preference in the root/HTML part matters a lot in this particular set-up.</p>
<p>The most effective part regarding the figure '62.5%' in the root is that even if the visitor alters the font size of the browser, they'll be able to view the page properly thanks to the related CSS set-up. </p>
<p>Also, it poses no threats in terms of accessibility because we also set the font-size of the body as 1.6rem in addition to the 62.5% arrangement in the root/HTML section. This way, we ensure that those two numbers go hand in hand no matter what the screen size is.</p>
<h2 id="heading-why-accessibility-is-important">Why Accessibility is Important</h2>
<p>It's important to elaborate on the accessibility issue. I believe it should be of the utmost importance to web developers and designers from all walks of life.</p>
<p><a target="_blank" href="https://websitesetup.org/websites-for-visually-impaired/">Research</a> shows that the number of visually impaired individuals is gradually on the rise, and there are many reasons for this. But one thing is for sure: in an era of cutting-edge technological advancements, everyone should be able to enjoy the internet and access information through certain accessibility measures. And applying proper responsive design techniques is definitely one of those. </p>
<h2 id="heading-what-is-bruce-lawsons-significant-message">What is Bruce Lawson's Significant Message?</h2>
<p>I remember watching <a target="_blank" href="https://www.youtube.com/watch?v=tgXbbOirY8o">an excellent talk by Bruce Lawson</a>, an expert when it comes to web standards. During a virtual free bootcamp organised by <a target="_blank" href="https://www.classcentral.com/">Class Central</a> and freeCodeCamp last year, he was a guest speaker. He explained very clearly why we as web developers are responsible for keeping everyone included and making sure that no one else is left out when coding and/or designing a website.</p>
<div class="embed-wrapper">
        <iframe width="560" height="315" src="https://www.youtube.com/embed/tgXbbOirY8o" style="aspect-ratio: 16 / 9; width: 100%; height: auto;" title="YouTube video player" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen="" loading="lazy"></iframe></div>
<h2 id="heading-shall-we-test-our-new-set-up">Shall We Test Our New Set-up?</h2>
<p>Let's be more specific and come up with an imaginary scenario. Suppose a visually-impaired user wants to visit the webpage you've designed. To be able to see everything more clearly, they decide to make some adjustments t0 the browser's font-size in advance. For example they might set it to 18px, a bit bigger than the standard size (16px). </p>
<p>It is now time to examine the following code snippet closely to witness the functionality of the HTML and body-oriented set-up from the perspective of this individual.</p>
<pre><code class="lang-css"><span class="hljs-selector-tag">html</span> {
    <span class="hljs-attribute">font-size</span>: <span class="hljs-number">62.5%</span>;
}
<span class="hljs-selector-tag">body</span> {
    <span class="hljs-attribute">font-size</span>: <span class="hljs-number">1.6rem</span>;
}
</code></pre>
<p>As the developer of this webpage, you chose '62.5%' for the HTML and '1.6rem' for the body as the initial font size. But remember that the browser's font-size determined by the above user is now 18px, not 16px anymore. How is it going to work out? Will this person be upset and leave the page feeling frustrated or will they keep surfing the webpage without trouble?</p>
<p>Here's the answer. Once the browser's font-size is chosen as 18px by the user, the font-size will instantly be re-calculated as 11.25px (18px <em> 62.5%) by the system. As a result, the value for the body will be 18px (1.6rem </em> 11.25px) just the way it is requested by that specific user. So this person will not be negatively affected by the situation just because they wish to see the font-size bigger than the standard version. </p>
<p>The good news is that all of these will be re-calculated automatically. And thanks to the percentage and rem-oriented set-up, the text on the webpage will be more responsive and user-friendly. </p>
<h2 id="heading-more-experiments">More Experiments</h2>
<p>To further see the possible effects of this setup, let's now take a look at how the font-sizes of the following elements/main containers will work out for our user.</p>
<pre><code class="lang-css"><span class="hljs-selector-tag">html</span> {
    <span class="hljs-attribute">font-size</span>: <span class="hljs-number">62.5%</span>;
}
<span class="hljs-selector-tag">body</span> {
    <span class="hljs-attribute">font-size</span>: <span class="hljs-number">1.6rem</span>;
}
<span class="hljs-selector-tag">header</span> {
    <span class="hljs-attribute">font-size</span>: <span class="hljs-number">3rem</span>;
}
<span class="hljs-selector-tag">section</span> {
    <span class="hljs-attribute">font-size</span>: <span class="hljs-number">2.5rem</span>;
}
<span class="hljs-selector-tag">footer</span> {
    <span class="hljs-attribute">font-size</span>: <span class="hljs-number">2.8rem</span>;
}
</code></pre>
<p>In line with the new HTML size (62.5% <em> 18px = 11.25px), the re-calculated value of the header element's font-size will be 33.75px (3rem </em> 11.25px ). The one for the section element will roughly be 28px (2.5rem <em> 11.25px). And finally, the font-size of the footer will be 31.5px (11.25px </em> 2.8rem) from the perspective of our imaginary user. </p>
<p>In other words, with the new arrangement involving the font-size of the HTML and body, everything else will be handled smoothly under the hood without you as the developer having to perform separate calculations for every single element.</p>
<h2 id="heading-is-this-method-bullet-proof">Is This Method Bullet-Proof?</h2>
<p>Despite the fact that the method that uses the root size '62.5%', since it's specifically a percentage value and the rem-based preference in the body section gives us a chance to play around with the general font-size dynamically, it is also not risk-free and you should use it cautiously (see <a target="_blank" href="https://www.joshwcomeau.com/css/surprising-truth-about-pixels-and-accessibility/">this article</a> for more info). </p>
<p>For instance, it may lead to <a target="_blank" href="https://css-tricks.com/forums/topic/62-5-font-size/">some problems</a> when 'em' values are preferred instead of 'rem' values. Plus, this technique only resizes text. So you'll need to use some other tricks (for example, when dealing with the size of the images). </p>
<p>That said, overriding the root font-size is still a widespread practice preferred by <a target="_blank" href="https://www.aleksandrhovhannisyan.com/blog/62-5-percent-font-size-trick/">many developers</a> around the world and it can be handy if used carefully. </p>
<h2 id="heading-wrapping-up">Wrapping Up</h2>
<p>All in all, the concepts of accessibility, responsive web design, maintainable and scalable code, and web performance are fundamental in creating a solid user experience. </p>
<p>Perhaps in the future, someone will come up with a better way to handle this. I just wanted to share with you the pros and cons of adjusting the root font size. </p>
<p>Even if you are not planning to use it at all, one of your teammates might go for it. So it is always a good idea to be aware of the arguments for and against it.</p>
<p>Thank you for reading. If you've liked this article, one of the best ways to support me is to share it. Should you have any questions or comments, you can always contact me via <a target="_blank" href="https://www.linkedin.com/in/damla-erkiner-000b76227/">LinkedIn</a>. I'll be more than happy to help you out with your queries.</p>
<p>Happy coding!</p>
<p><strong>“Knowledge is power.” – Francis Bacon</strong></p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ What is a UX Engineer? User Experience Engineer Role Explained ]]>
                </title>
                <description>
                    <![CDATA[ I am currently a User Experience or UX Engineer for D2iQ. And lots of people ask me what exactly is a UX Engineer.  This question comes from designers and developers alike. So, I figured it was time to write about it to create awareness and demystify... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/what-is-a-ux-engineer/</link>
                <guid isPermaLink="false">66bc4cbf7fa38392bfab8132</guid>
                
                    <category>
                        <![CDATA[ user experience ]]>
                    </category>
                
                    <category>
                        <![CDATA[ UX ]]>
                    </category>
                
                    <category>
                        <![CDATA[ ux design ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Natalie Pina ]]>
                </dc:creator>
                <pubDate>Fri, 25 Mar 2022 21:47:17 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2022/03/Blog-Header-1200x600-px--1--1.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>I am currently a User Experience or UX Engineer for D2iQ. And lots of people ask me what exactly is a UX Engineer. </p>
<p>This question comes from designers and developers alike. So, I figured it was time to write about it to create awareness and demystify the role.</p>
<p>This article will help you understand what a UX Engineer is, what their duties are, the required skillset, and it may even convince you to be come one yourself.</p>
<h2 id="heading-what-does-user-experience-mean">What Does User Experience Mean?</h2>
<p>Before we jump into the role of UX Engineer, let's take a brief moment to define User Experience. </p>
<p>Most people are familiar with UI, which refers to the user interface. The user interface is most commonly the screen in which user is interacting with, for example a website or application. </p>
<p>UX relates to the all encompassing experiences the end user has while using a product or service, UI included.</p>
<p>The significance of UX is undeniable. In <em>The User Experience Team of One</em>, author Leah Buley notes, </p>
<blockquote>
<p>“UX is a force for good. In an increasingly technological world, designing products with real people in mind helps us make sure that technology integrates in our lives in a human way. It’s a voice of reason, arguing that products and technology can support and even enrich our fundamental humanity.” </p>
</blockquote>
<h2 id="heading-who-are-ux-engineers">Who are UX Engineers?</h2>
<p>A UX Engineer (UXE) is the bridge between design and development. </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/03/UXEngineer_Diagram.png" alt="Image" width="600" height="400" loading="lazy">
<em>Icon credit: Noun Project</em></p>
<h3 id="heading-engineers">Engineers</h3>
<p>UXE's are engineers first, with a working knowledge of design. Front end development skills are a prerequisite. A UXE cares deeply about the user experience and is heavily involved in impacting it.</p>
<blockquote>
<p>"Developers write the code and build the systems that make the experience real. That moment when a flat concept on a page becomes a working, functioning, interactive thing is like making life. It’s incredibly rewarding. It also enables them to see and understand how it will feel and function for the enduser." – <em>The User Experience Team of One</em></p>
</blockquote>
<h3 id="heading-designers">Designers</h3>
<p>UXEs can be particularly useful in conceptualization stages of design. They are able to help designers understand what is feasible and how much engineering effort it may take to achieve.</p>
<p>Some UXE's will contribute prototypes, wireframes, and design mockups. The amount of true design work can vary from company to company. </p>
<p>It is common for a UX Engineer to be working within a Design System. For example, my role at D2iQ includes maintaining a design system and component library.</p>
<h3 id="heading-advocates">Advocates</h3>
<p>A UXE will need to have empathy for both sides and be able to advocate for design or development. They may be required to push back on either side as an advocate. This is the reason they are considered the bridge between design and development.</p>
<p>A UXE may even need to advocate for UX itself within their organization, to create awareness and to build support for their work. This can be achieved through setting up a peer-to-peer learning community, lunch and learn meetings, and other methods to share and educate others.</p>
<p>You may find varying definitions of what a UX Engineer means. The lines are often blurred between UI Engineer, UX Engineer, and Design Technologist. Much of the role can depend on the company and what are the needs they want to fill with that role. </p>
<p>You may thrive as a UXE if you enjoy:</p>
<ul>
<li>Front end engineering</li>
<li>Styling with CSS specifically</li>
<li>Design thinking</li>
<li>Occasionally flexing some design skills</li>
<li>Participating in UX Research</li>
<li>Working with Design Systems</li>
<li>Creative leeway</li>
</ul>
<p>We'll dive deeper on the skills required as a UXE which may clarify what exactly it entails.</p>
<h3 id="heading-confusion-within-the-front-end">Confusion within the Front End</h3>
<p>I wanted to make a note on the confusion between UI Engineer, UX Engineer and Front End Engineer. These are often assumed to be the same role. That may or may not be the case, depending on what is in the job description. However, there are some notable differences.</p>
<p>UI Engineer is the most similar to a Front End Engineer. They're not entirely the same historically, but the line between the two has become blurry. They will work on the technical side of building the user interface. Working on the UI can easily start to bleed into UX topics as they are tightly coupled, which may be where the confusion arises. </p>
<p>On the other hand, a UX Engineer is the more design forward of the two. A UXE is a technical role that is intrinsically involved in the user's experience. They would be the one to consider "how is the user interacting with this button?", "how can I make it absolutely clear what this button does", and "how can I provider the user a better experience when using this button?" </p>
<p>On the other hand, a UI Engineer would generally ask themselves how to best match the design to engineer an efficient button. </p>
<p>This is of course glossing over the depths that each role can go into. UI Engineers can become more involved in UX if they take a conscious efforts to impact it. </p>
<p>The job description of UX Engineer might align more with what you would see under Design Technologist or Design System Engineer.</p>
<p>Overall, the term Front End can cover a broad range of individually complex topics and skillsets, which is why we are starting to see the need to define more specific roles within Front End. UX Engineer is among the more recent positions to become defined based on this.</p>
<h2 id="heading-required-skills-for-a-user-experience-engineer">Required Skills for a User Experience Engineer</h2>
<p>There are many skills that a UXE may possess that aren't limited to Front End development and design. Again, much of the role can be dictated by the company’s definition of the role and responsibilities. </p>
<p>Below are some of the key skills that would be most commonly applicable and helpful to have.</p>
<h3 id="heading-technical-skills">Technical Skills</h3>
<p><strong>Front End Development.</strong> This includes knowledge of HTML, CSS and JavaScript. You should also know popular JavaScript libraries such as React. This could additionally include testing, debugging, build tools, and dependency managers.</p>
<p><strong>CSS Specialists.</strong> It is important to note that the role requires in-depth knowledge of CSS. This could entail CSS architecture or working with preprocessors like Sass and Less. It's beneficial to have experience with CSS-in-JS libraries such as Styled Components and Emotion.</p>
<p><strong>UI/UX Design.</strong> This may be a mix of design related skills from prototyping to UX Principles to wire-framing. UXE’s may produce low-fidelity or high-fidelity design mockups. It is helpful to have experience with design tools such as Figma, Sketch, or InVision. Design systems could also be lumped into this category. It's valuable to understand the benefit of design systems, and knowing how to enforce the design standards in the UI. </p>
<p><strong>Storybook.</strong> Storybook is a tool to help engineers build, test, and display UI components. Working with Storybook will require additional niche technical know-how specific to this tool. There is a likelihood that if you are working with a design system and component library, the documentation is utilizing Storybook.</p>
<p><strong>Accessibility.</strong> To excel in this role, you need to understand accessibility guidelines. Caring for users means inclusive design. Products should not limit the type of user. Products should account for all users. Having technical skills to test and improve the accessibility of applications will be extremely beneficial.</p>
<p><strong>Responsive Design.</strong> Designers may only be able to mock up several screen size views such as mobile, tablet, and desktop. You'll be implementing those designs. There are gaps between each screen size mock which will require technical and decision making skills and for a seamless transition. These are the types of problems you will encounter and they impact the user experience.</p>
<h3 id="heading-less-technical-skills">Less Technical Skills</h3>
<p><strong>Empathy.</strong> This is a crucial skill for a UXE. They need to understand users in order to improve their experience. This includes having a passion for understanding how people think. Caring deeply about the impact you can have on user experiences will take you far in this field. </p>
<p><strong>Communication and Collaboration.</strong> UXEs are required to do a lot of cross-functional communication. They can speak with users, designers, developers, product owners, and stakeholders. They are held responsible for translations between design and engineering teams. There is a likelihood of contributing to documentation which uses written communication skills. This could include documenting style guides, components, or guides for users.</p>
<p><strong>Creativity.</strong> It may seem obvious that this would be a great skill to have based on the design factor of the role. UXE's have the opportunity to find creative solutions especially when design and development need to meet in the middle.</p>
<p><strong>User Experience Principles and Theories.</strong> Understanding the psychological aspect of UX will come in handy when making design decisions. Learning psychological heuristics is essential. The <a target="_blank" href="https://lawsofux.com/">Laws of UX</a> site is a great overview of these.</p>
<h2 id="heading-summary">Summary</h2>
<p>As design and engineering processes mature, there is a need for roles like UX Engineer, UX Researcher, UI/UX Designer, UI Engineer, and more, each with their own set of advanced skills. </p>
<p>By collaborating, these roles are able to come together to create top-notch experiences for users. The need for many of these roles has been increasing in recent years, especially with the recognization of the importance of design systems within organizations.</p>
<p>UX Engineers fill a void that can be beneficial to the handoff between design and development. We will continue to see an increasing amount of UX Engineering roles surface as the significance of this role becomes further recognized. </p>
<p>I love the blend of skills that I am able to use daily as a UXE. If you are a creative individual who wants to work closer with design teams this may be the perfect role for you too. </p>
<p>If you would like to learn more about working as a UX Engineer, feel free to reach out on <a target="_blank" href="https://twitter.com/ui_natalie">Twitter</a>. </p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ UX Designer Salary – How much do UX/UI Designers Make? Entry Level Range ]]>
                </title>
                <description>
                    <![CDATA[ If you are new to tech, you might have just discovered UI/ UX design and want to pursue that career path. But what is the starting salary for entry level UX/UI designers? In this article, I will provide definitions for UI/ UX design as well as starti... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/ux-designer-salary-how-much-do-ux-ui-designers-make-entry-level-range/</link>
                <guid isPermaLink="false">66b8da568cd1c2aa053d49bd</guid>
                
                    <category>
                        <![CDATA[ UI Design ]]>
                    </category>
                
                    <category>
                        <![CDATA[ UI UX ]]>
                    </category>
                
                    <category>
                        <![CDATA[ user experience ]]>
                    </category>
                
                    <category>
                        <![CDATA[ User Interface ]]>
                    </category>
                
                    <category>
                        <![CDATA[ ux design ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Jessica Wilkins ]]>
                </dc:creator>
                <pubDate>Fri, 15 Oct 2021 17:39:48 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2021/10/daniel-korpai-bOKIptPzdPk-unsplash.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>If you are new to tech, you might have just discovered UI/ UX design and want to pursue that career path. But what is the starting salary for entry level UX/UI designers?</p>
<p>In this article, I will provide definitions for UI/ UX design as well as starting salary information from around the world. </p>
<h2 id="heading-what-is-ux-design">What is UX design?</h2>
<p>The term User Experience refers to how users interact with a product or service. Whenever you login into a website, or play a game on your phone, your interaction with that application is considered user experience.</p>
<p>If you find a product to be easy to use and understand, then that would be considered a positive user experience. But if the product is confusing and frustrating then that would be considered a negative user experience.</p>
<p>If you want to learn more about UX design, and find resources to start learning, then I would suggest reading my article on <a target="_blank" href="https://www.freecodecamp.org/news/user-experience-design-what-does-a-ux-designer-do/">What is UX Design?</a></p>
<h2 id="heading-what-is-ui-design">What is UI design?</h2>
<p>The term User Interface refers to the look and feel of a product. For digital products, UI design focuses on all visual aspects including fonts, colors, spacing, responsive design and more. </p>
<p>Good UI design is considered to be simple, easy to understand and consistent. You don't want users to have to struggle with navigating through the product because it is not intuitive. </p>
<p>Bad UI design is considered to be inconsistent and difficult to understand. If users are confronted with low quality images, inconsistent fonts or poor contrast in visual content, then the user will want to leave the product as soon as possible.</p>
<p>If you are interested in learning the fundamentals of UI design, then I would suggest reading through <a target="_blank" href="https://www.freecodecamp.org/news/learn-ui-design-fundamentals-with-this-free-one-hour-course/">this Per Harald Borgen article</a>. </p>
<h2 id="heading-resources-to-start-learning-uiux-design">Resources to start learning UI/UX design</h2>
<p>Here is a list of resources to learn UI/UX design.</p>
<ul>
<li><a target="_blank" href="https://www.coursera.org/learn/foundations-user-experience-design?specialization=google-ux-design">Foundations of User Experience (UX) Design</a></li>
<li><a target="_blank" href="https://www.youtube.com/watch?v=_Hp_dI0DzY4">The 2019 UI Design Crash Course for Beginners</a></li>
<li><a target="_blank" href="https://www.youtube.com/watch?v=3q3FV65ZrUs">Figma Tutorial – A Free UI Design/Prototyping Tool</a></li>
<li><a target="_blank" href="https://www.uxpin.com/studio/ebooks/">UXpin: Free UX Ebooks</a></li>
</ul>
<h2 id="heading-salaries-around-the-world-for-uiux-designers">Salaries around the world for UI/UX designers</h2>
<p>In this section, I will show you some salaries from around the around for entry level UI/UX designers. </p>
<h3 id="heading-united-states">United States</h3>
<p>This data was pulled from indeed.com, payscale.com, and ZipRecruiter. </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/10/Screen-Shot-2021-10-15-at-7.14.02-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/10/Screen-Shot-2021-10-15-at-7.14.26-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/10/Screen-Shot-2021-10-15-at-7.19.05-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>This data represents the national average. If you want data for your specific city, then you can search for that in these job sites. </p>
<h3 id="heading-canada">Canada</h3>
<p>This data was pulled from ZipRecruiter. </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/10/Screen-Shot-2021-10-15-at-7.28.02-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/10/Screen-Shot-2021-10-15-at-7.28.13-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h3 id="heading-mexico">Mexico</h3>
<p>This data was pulled from payscale.com and is in MXN currency.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/10/Screen-Shot-2021-10-15-at-7.35.20-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h3 id="heading-uk">UK</h3>
<p>This data was pulled from uk.talent.com. The average entry level salaries for UI/UX designers would start at £35,000. </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/10/Screen-Shot-2021-10-15-at-7.46.23-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h3 id="heading-other-countries-around-the-world">Other Countries around the world</h3>
<p>If you want to explore other UX salaries from around the world, you can look into <a target="_blank" href="https://uxdesignersalaries.com/">https://uxdesignersalaries.com/</a> </p>
<p>You can also use popular job sites in your area, to find out the average entry level salary for UI/UX designers. </p>
<p>I hope you enjoyed this article and best of luck on your UI/UX journey.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ What is UX Design? User Experience Design Explained in Plain English ]]>
                </title>
                <description>
                    <![CDATA[ You might have heard of the term User Experience or UX design. But what does it mean exactly? In this article, I will explain what UX design is and talk about how to become a UX designer.  What is UX design? The term User Experience refers to how use... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/user-experience-design-what-does-a-ux-designer-do/</link>
                <guid isPermaLink="false">66b8da526b74ac70ba21e6cd</guid>
                
                    <category>
                        <![CDATA[ user experience ]]>
                    </category>
                
                    <category>
                        <![CDATA[ UX ]]>
                    </category>
                
                    <category>
                        <![CDATA[ ux design ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Jessica Wilkins ]]>
                </dc:creator>
                <pubDate>Mon, 04 Oct 2021 16:21:30 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2021/10/UX-design-pic.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>You might have heard of the term User Experience or UX design. But what does it mean exactly?</p>
<p>In this article, I will explain what UX design is and talk about how to become a UX designer. </p>
<h2 id="heading-what-is-ux-design">What is UX design?</h2>
<p>The term User Experience refers to how users interact with a product or service. Whenever you login into a website, or play a game on your phone, your interaction with that application is considered user experience.</p>
<p>UX Design goes beyond digital applications. User Experience is relevant for any product or service that a user interacts with. </p>
<p>Other examples would include assembly guides for putting together furniture or a dining experience at a restaurant. </p>
<p>If you find a product to be easy to use and understand, then that would be considered a positive user experience. But if the product is confusing and frustrating then that would be considered a negative user experience. </p>
<p>Professional UX designers put a lot of thought into how a user interacts with a product to ensure that they have a positive experience. Negative experiences can lead to loss of revenue for a company if the user decides, based on their experience, to no longer use the product or service.</p>
<h2 id="heading-history-of-ux-design">History of UX design</h2>
<p>The term User Experience Design was first introduced in the early 1990's by Donald Arthur Norman. In 1993, Donald was working as a User Interface Architect for Apple when he decided to change his title to User Experience Architect. </p>
<p>This is what Donald had to say about inventing the term User Experience:</p>
<blockquote>
<p>“I invented the term because I thought Human Interface and usability were too narrow: I wanted to cover all aspects of the person’s experience with a system, including industrial design, graphics, the interface, the physical interaction, and the manual.”</p>
</blockquote>
<p>Donald is considered a leader and educator for User Experience Design. He is also an accomplished author with his best selling book The Design of Everyday Things.</p>
<p>Even though the term User Experience Design wasn't introduced until the early 90's, examples of UX design date back further than that. </p>
<p>Many people regard Walt Disney as one of the first UX designers because of his parks and resorts. </p>
<p>In the 1950's, Walt Disney wanted to create an amusement park that was fun for both adults and children. During those times, amusements parks were seen as dirty and seedy places that weren't appropriate for children. </p>
<p>But Disney wanted to change all of that and provide park goers with a positive experience. A lot of care went into the construction of the park by the designers and engineers ("Disney Imagineers").</p>
<p>One example of strong UX design at the parks is the number of options that attendees can choose from. The parks were designed to appeal to all types of guests. </p>
<p>Whether you are a teenager looking for thrill rides or a young family looking to ride Dumbo the Flying Elephant or the tea cups – there is something for everyone. </p>
<h2 id="heading-examples-of-bad-ux-design">Examples of bad UX design</h2>
<p>Anything that is considered overly complicated, confusing, and hard to navigate would be bad UX design. </p>
<p>One example of bad UX in websites would be broken or invalid links.</p>
<p>I have created an example with dummy text and links that don't go anywhere.</p>
<div class="embed-wrapper">
        <iframe width="100%" height="350" src="https://codepen.io/jessica-wilkins/embed/PojvBvv" style="aspect-ratio: 16 / 9; width: 100%; height: auto;" title="CodePen embed" scrolling="no" allowtransparency="true" allowfullscreen="true" loading="lazy"></iframe></div>
<p>If this were a real website, the user experience would be pretty poor because a lot of time is wasted clicking on links that do not work. This can be frustrating because users need to access that information but it is not available. </p>
<p>Another example of poor user experience is constant pop up ads and messages. These types of sites make it difficult to enjoy the content because you are constantly being interrupted with popups. </p>
<p>In this example, I have created a fake blog site where three different pop up messages urge you to subscribe. </p>
<div class="embed-wrapper">
        <iframe width="100%" height="350" src="https://codepen.io/jessica-wilkins/embed/qBjGMvw?editors=1010" style="aspect-ratio: 16 / 9; width: 100%; height: auto;" title="CodePen embed" scrolling="no" allowtransparency="true" allowfullscreen="true" loading="lazy"></iframe></div>
<p>This is clearly annoying to the user because they can't even read the blog post and now want to leave the page. </p>
<h2 id="heading-what-does-a-ux-designer-do">What does a UX designer do?</h2>
<p>UX designers will test and research to make sure that products and services create a positive user experience. When designing a new product or service, the first step is to conduct user research to better understand the audience. </p>
<p>During this first phase, UX designers need to understand what the user is hoping to get out of the product and identify possible challenges the user might face with the product or service. </p>
<p>The next phase is to create a User Persona which serves as an example persona of a customer using the product or service. This type of tool helps UX designers identify what a user is looking for from the product and produce a positive experience. </p>
<p>The next phase is to think about the structure and layout of the product so the user can easily find the information they are looking for. UX designers will start to focus on the user flow which is the complete process a user goes through while interacting with the product. </p>
<p>The last step is to create a prototype and perform user testing. UX designers will study the results from those tests and make the necessary modifications to the product. </p>
<h2 id="heading-where-to-learn-ux-design">Where to learn UX design?</h2>
<p>There are plenty of free high quality courses you can take online to start learning about UX design. </p>
<p>I would suggest going through the <a target="_blank" href="https://www.coursera.org/professional-certificates/google-ux-design">Google UX Design Professional Certificate</a> on Coursera. Each of the seven classes are free to audit. </p>
<p>You can also <a target="_blank" href="https://www.freecodecamp.org/news/ui-ux-design-tutorial-from-zero-to-hero-with-wireframe-prototype-figma/">read this article and watch the associated YouTube course</a> for a good introduction to UX and UI Design.</p>
<h2 id="heading-salary-for-ux-designers">Salary for UX designers</h2>
<p>There are many different job titles for User Experience.</p>
<p>Here are some common job titles:</p>
<ul>
<li>User Experience Architect</li>
<li>User Experience Researcher</li>
<li>User Experience Designer</li>
</ul>
<p>It is important to note that salaries will differ depending on your location. You can use sites like <a target="_blank" href="https://www.indeed.com/">Indeed</a> or <a target="_blank" href="https://www.glassdoor.com/index.htm">Glassdoor</a> to research salaries.  </p>
<p>These are some example salaries for UX designers based in the United States. This data is being pulled from <a target="_blank" href="https://www.salary.com/">Salary.com</a>. </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/10/Screen-Shot-2021-10-04-at-6.21.03-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>I hope you enjoyed this article and best of luck on your UX journey. </p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ UI/UX Design Guide: What Are UI Designers, and How Are They Different Than UX Designers? ]]>
                </title>
                <description>
                    <![CDATA[ Have you noticed how User Interface and User Experience design are considered different topics nowadays?  You're not the only one. We live in a beautiful era of design, with new techniques and trends coming and going. Frontend development is also gai... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/ui-ux-design-guide/</link>
                <guid isPermaLink="false">66c375aef278f15f931a3422</guid>
                
                    <category>
                        <![CDATA[ Design ]]>
                    </category>
                
                    <category>
                        <![CDATA[ UI Design ]]>
                    </category>
                
                    <category>
                        <![CDATA[ UI UX ]]>
                    </category>
                
                    <category>
                        <![CDATA[ ux design ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Alexandru Paduraru ]]>
                </dc:creator>
                <pubDate>Tue, 13 Jul 2021 02:14:52 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2021/07/cover.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>Have you noticed how User Interface and User Experience design are considered different topics nowadays? </p>
<p>You're not the only one.</p>
<p>We live in a beautiful era of design, with new techniques and trends coming and going. Frontend development is also <a target="_blank" href="https://2020.stateofcss.com/en-US/">gaining increased momentum</a>, with more and more developers getting involved in UI/UX design.</p>
<p>While both UI and UX design are often placed on the same pedestal, they are fundamentally different, and beginners should understand the difference between the two.</p>
<p>Knowing this, my team from <a target="_blank" href="https://creative-tim.com">Creative Tim</a> and I have done a lot of research and created a comprehensive guide on the most important parts of these two huge domains:</p>
<ol>
<li><a class="post-section-overview" href="#heading-ui-design-how-things-look"><strong>UI Design — How Things Look</strong></a></li>
<li><a class="post-section-overview" href="#heading-ux-design-how-things-work"><strong>UX Design — How Things Work</strong></a></li>
<li><a class="post-section-overview" href="#heading-what-are-the-key-differences-between-ui-and-ux-design"><strong>What Are the Key Differences Between UI and UX Design?</strong></a></li>
<li><a class="post-section-overview" href="#heading-what-do-uiux-designers-do"><strong>What Do UI/UX Designers Do?</strong></a></li>
<li><a class="post-section-overview" href="#heading-what-are-the-disadvantages-of-a-combined-uiux-role"><strong>What Are the Disadvantages of a Combined UI/UX Role?</strong></a></li>
<li><a class="post-section-overview" href="#heading-how-do-uiux-designers-work-together"><strong>How Do UI/UX Designers Work Together?</strong></a></li>
<li><a class="post-section-overview" href="#heading-what-are-the-salaries-of-ui-and-ux-designers"><strong>What Are the Salaries of UI and UX Designers?</strong></a></li>
<li><a class="post-section-overview" href="#heading-how-do-you-become-a-ui-or-ux-expert-what-kind-of-design-coursestutorials-should-you-take"><strong>How Do You Become a UI or UX Expert? What Kind of Design Courses/Tutorials Should You Take?</strong></a></li>
<li><a class="post-section-overview" href="#heading-which-should-you-specialize-in-ui-or-ux-design"><strong>Which Should You Specialize In? UI or UX Design?</strong></a></li>
</ol>
<h2 id="heading-ui-design-how-things-look"><strong>UI Design — How Things Look</strong></h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/07/quote-martin-leblac-1.jpg" alt="Image with the quote &quot;A User interface is like a joke. If you have to explain it, it's not that good.&quot; — Martin LeBlac" width="600" height="400" loading="lazy"></p>
<p>A UI (User Interface) deals with the application's graphical layout, which includes buttons, screen layout, animations, transitions, micro-interactions, and so on. In short, UI is all about how things look.</p>
<p>UI design includes the following formats:</p>
<ul>
<li><strong><a target="_blank" href="https://en.wikipedia.org/wiki/Graphical_user_interface">Graphical User Interface (GUI)</a></strong>: GUI design involves how users interact with the visuals and digital control panels of a system. The computer's desktop is an example of a GUI.</li>
<li><strong><a target="_blank" href="https://en.wikipedia.org/wiki/Voice_user_interface">Voice-controlled Interface (VUI)</a></strong>: VUI design deals with the interaction between a user and a system using voice. Smart assistants like Bixby for Samsung mobile devices and Siri for iPhones are examples of VUIs.</li>
<li><strong><a target="_blank" href="https://en.wikipedia.org/wiki/Gesture_recognition">Gesture-based Interface</a></strong>: This is mostly used in virtual reality (VR) and other gesture-based design scenarios, which deal with the engagement of users within 3D spaces. Here is an example of our fully coded simulation of the <a target="_blank" href="https://www.creative-tim.com/product/soft-ui-dashboard-pro">Soft UI Admin Dashboard</a> in VR:</li>
</ul>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/07/soft-vr-2-1.gif" alt="Example of a gesture-based interface." width="600" height="400" loading="lazy">
<em><a target="_blank" href="https://demos.creative-tim.com/soft-ui-dashboard-pro/pages/dashboards/default.html">Source</a></em></p>
<p>For good UI design, you should take these characteristics into consideration:</p>
<ul>
<li>The design should be focused on helping users complete tasks quickly with minimum effort. Completing tasks should be a seamless experience.</li>
<li>It should be enjoyable, satisfactory, and free from frustration.</li>
<li>The UI design should communicate the brand value of the company/organization.</li>
</ul>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/07/10-design-pinciples-1.jpg" alt="A list of principles for good design." width="600" height="400" loading="lazy"></p>
<h2 id="heading-ux-design-how-things-work"><strong>UX Design — How Things Work</strong></h2>
<p>UX (User Experience) design deals with how users interact with the system. Logical navigation and how smooth and intuitive the experience is all fall under UX design. In short, this type of design helps users have a positive experience.</p>
<p>To get a feeling of the UX process, here are the main steps:</p>
<ul>
<li><strong>Interaction Design</strong> deals with how users can complete their tasks effortlessly by using the interactive components of a system (page transitions, animations, buttons, and so on).</li>
<li><strong>User Research</strong> involves conducting extensive research, collecting feedback and ideas from new or existing customers, understanding end user needs, and making design decisions based on these parameters.</li>
<li><strong>Information Architecture</strong> involves the organization of information and content that users need to do their tasks. This requires a UX designer to understand the relationship between different sets of content and present them in the most understandable way possible.</li>
</ul>
<p>For good UX design, you should follow these practices:</p>
<ul>
<li>The product should be easily usable, logical, and self-explanatory.</li>
<li>The product should solve users's problems.</li>
<li>The product should be accessible and usable to a wide range of people.</li>
<li>The product should create a positive experience for the user, allowing them to complete tasks without frustration.</li>
</ul>
<h3 id="heading-cognitive-biases"><strong>Cognitive Biases</strong></h3>
<p>Great UX designers must be aware of the cognitive biases that we all have, as this can affect the interaction between the user and interfaces. Many marketing strategies are based on these biases:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/07/Cognitive_bias_codex_en.svg" alt="A codex of cognitive biases" width="600" height="400" loading="lazy">
_<a target="_blank" href="https://upload.wikimedia.org/wikipedia/commons/6/65/Cognitive_bias_codex_en.svg">Source</a>_</p>
<h2 id="heading-what-are-the-key-differences-between-ui-and-ux-design"><strong>What Are the Key Differences Between UI and UX Design?</strong></h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/07/ui-vs-ux-1.jpg" alt="Image of a branching walking path and dirt path." width="600" height="400" loading="lazy"></p>
<p>UI and UX design have often been used as interchangeable terms.</p>
<p>While the end product requires consideral input from both design methodologies, the process of designing UI and UX is very different.</p>
<p>UX design mostly deals with the user’s entire journey to solve a problem. </p>
<p>On the other hand, UI design is focused on how the product looks and feels when the problem is being solved.</p>
<p>Here are the main differences between UI and UX design:</p>
<ul>
<li><strong>Main focus:</strong> The main focus of UI designers is to deal with the quality and visuals of the end product, and use hi-fi models as prototypes. UX designers focus more on the purpose and functionality of the end product, and care more about logic. Additionally, UI designers deal with the technicalities of the product design, while UX designers focus more on project management and analysis of the project.</li>
<li><strong>Use of color:</strong> UI designers design prototypes in full color while UX designers do so in black, white, or grey.</li>
<li><strong>Tools:</strong> UI designers use tools like <a target="_blank" href="https://www.sketch.com/">Sketch</a>, <a target="_blank" href="https://www.flinto.com/">Flinto</a>, <a target="_blank" href="https://principleformac.com/">Principle</a>, and <a target="_blank" href="https://www.invisionapp.com/">InVision</a> for collaborative image designing. UX designers use wireframe-based prototyping tools like <a target="_blank" href="https://www.mockplus.com/">Mockplus</a>.</li>
<li><strong>Artistic Component:</strong> UI designers have to include an artistic component in their design since it is related to what the end user sees, hears, and feels. UX design has more of a social component, as it needs to understand what a user wants to experience in the end product.</li>
</ul>
<p>Here is an example of UX and UI prototypes for the same end product:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/07/soft-ui-design-system-1.jpg" alt="A simple UX design wireframe and a hi-fi UI prototype for the same web page." width="600" height="400" loading="lazy">
<em><a target="_blank" href="https://www.creative-tim.com/product/soft-ui-design-system-pro">Source</a></em></p>
<h2 id="heading-what-do-uiux-designers-do"><strong>What Do UI/UX Designers Do?</strong></h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/07/table-1.jpg" alt="A table showing the differences between UI and UX designers." width="600" height="400" loading="lazy"></p>
<p>If you want to become a greate <strong>UI designer</strong>, you should develop the following skills/responsibilities:</p>
<ul>
<li>Working in agile teams.</li>
<li>Creating user flows, wireframes, prototypes and so on.</li>
<li>Visualization tools such as <a target="_blank" href="https://www.invisionapp.com/">InVision</a>,<a target="_blank" href="https://www.sketch.com/"> Sketch</a>,<a target="_blank" href="https://www.photoshop.com/"> Photoshop</a>,<a target="_blank" href="https://www.figma.com/"> Figma</a>, etc. For more details about which tool to choose, check out our research in this article: <a target="_blank" href="https://www.freecodecamp.org/news/adobe-xd-vs-sketch-vs-figma-vs-invision/">InVision vs Sketch vs Figma vs Photoshop</a></li>
<li>Frontend programming languages such as HTML5, CSS3, and JavaScript.</li>
<li>Executing visual design stages from inception to final hand-off.</li>
<li>Collaborating with UX designers, developers, QA, and product managers to design and implement innovative visual ideas for products.</li>
<li>Communicating the branding and style of the company to users through design.</li>
<li>Creating the look and feel of the product using customer analysis and research.</li>
<li>Managing the responsiveness, interactivity, and animation of a product and making it adaptive to all device screen sizes.</li>
</ul>
<p>If you want to become a great <strong>UX designer</strong>, you should develop these skills/responsibilities:</p>
<ul>
<li>Working in agile teams.</li>
<li>A strong understanding of the UX process.</li>
<li>Prototyping tools like <a target="_blank" href="https://www.adobe.com/creativecloud.html">Adobe Creative Suite</a>, <a target="_blank" href="https://www.sketch.com/">Sketch</a>,<a target="_blank" href="https://www.invisionapp.com/"> InVision</a>, <a target="_blank" href="https://www.axure.com/">Axure</a>, etc.</li>
<li>Problem solving skills and curiosity about everything related to design, people, life and technology.</li>
<li>Stakeholder management and client interaction.</li>
<li>Creating process flows, wireframes, sitemaps, prototypes, and UX deliverables.</li>
<li>Collaborating closely with developers, product managers, UI designers, external stakeholders, and QA Engineers to iterate designs based on market dynamics, user feedback, and tech constraints.</li>
<li>Analyzing customer needs, competitors, product structure, and strategies for designing the experience of a product.</li>
<li>Creating seamless design and interaction strategies for mobile, web, desktop, and other hardware endpoints.</li>
</ul>
<h2 id="heading-what-are-the-disadvantages-of-a-combined-uiux-role"><strong>What Are the Disadvantages of a Combined UI/UX Role?</strong></h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/07/Artboard--4--1.jpg" alt="A concept seat belt design from the 1960s which went around people's necks." width="600" height="400" loading="lazy"></p>
<p>Having a combined UI/UX role is almost like wearing two different hats at the same time.</p>
<p>While most organizations advertize a UI/UX role as a single, combined role, a UI and UX designers have different skill sets. Their main focus, way of thinking, and method of prototyping a product differ greatly.</p>
<p>A combined UI/UX role requires constant switching between conceptualization and visualization, which is often difficult and can reduce the amount of attention that each discipline requires.</p>
<h2 id="heading-how-do-uiux-designers-work-together"><strong>How Do UI/UX Designers Work Together?</strong></h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/07/Artboard-Copy-4--1--1.jpg" alt="Designers working together." width="600" height="400" loading="lazy"></p>
<p>While UI design and UX design require very different skill sets, they are both important components that must work in harmony to give the best experience to end users.</p>
<p>A UI design might be beautiful, but it can be clunky and confusing to navigate without a good UX design. On the other hand, the user experience of a product can be flawless, but it is nothing without a good looking user interface.</p>
<p>Any frontend development and design process should start with understanding the needs of the user. UX and UI designers should work in collaboration with other developers, managers, and product owners to understand what the end product should be able to do, how it should feel, and what it should look like.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/07/quote-steve-jobs-1.jpg" alt="A quote from Steve Jobs that reads, &quot;Design is not just what it looks like and feels like. Design is how it works.&quot;" width="600" height="400" loading="lazy"></p>
<p>UX designers are generally involved in the earlier phases of a product design since they need to design the flow of activities that take place when a user needs to solve a problem. This involves analytic and project management activities.</p>
<p>Later, a UI designer builds on the aesthetics and interactions based on the models provided by the UX designer.</p>
<p>Given this, it is safe to state that UX and UI go hand in hand. And while there are instances when the same person does both, one design principle cannot exist without the other.</p>
<h2 id="heading-what-are-the-salaries-of-ui-and-ux-designers"><strong>What Are the Salaries of UI and UX Designers?</strong></h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/07/ux-salary-1.jpg" alt="A map showing different UI/UX designer salaries in different parts of the world." width="600" height="400" loading="lazy"></p>
<p>UI designers earn an average of 50k worldwide, with the average salary in the USA being 91k, Germany being 57k, France being 47k, and 67k in the UK.</p>
<p>UX designers earn slightly more, with an average of 52k worldwide. UX designers in the US earn 102k on average, with Germany paying 53k, 49k in France, and 68k in the UK. (Source: <a target="_blank" href="http://www.glassdoor.com/">Glassdoor</a>)</p>
<p>Note: All the salaries listed above are an average for the area, and are in USD.</p>
<h2 id="heading-how-do-you-become-a-ui-or-ux-expert-what-kind-of-design-coursestutorials-should-you-take"><strong>How Do You Become a UI or UX Expert? What Kind of Design Courses/Tutorials Should You Take?</strong></h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/07/tutorials--1--1.jpg" alt="Animated people using laptops." width="600" height="400" loading="lazy"></p>
<p>Becoming a UI or UX expert starts with being genuinely interested in UI/UX design. Once you know you're interested, you should find resources and take design courses that help prepare you for the job market.</p>
<p>There are online courses like the <a target="_blank" href="https://careerfoundry.com/en/courses/become-a-ui-designer/">UI Design Program</a> and <a target="_blank" href="https://learnui.design/">Learning UI Design</a> that can help you kickstart your journey towards becoming a UI designer.</p>
<p>For UX design, you can study online,<a target="_blank" href="https://www.interaction-design.org/courses"> paid courses</a>, or courses from<a target="_blank" href="https://online.rmit.edu.au/course/sc-user-experience-design-dtr105"> online universities</a>. You can also look at the<a target="_blank" href="https://uxplanet.org/30-best-online-course-websites-to-learn-ui-ux-updated-6b104762731a"> best online course websites to learn UI/UX</a> so you can see which websites offer courses for free and the user feedback on these websites.</p>
<p>For UX design, there are a number of <a target="_blank" href="https://www.interaction-design.org/courses">paid courses</a>, of courses from <a target="_blank" href="https://online.rmit.edu.au/course/sc-user-experience-design-dtr105">online universities</a>. You can also check out a list of the <a target="_blank" href="https://uxplanet.org/30-best-online-course-websites-to-learn-ui-ux-updated-6b104762731a">best online courses to learn UI/UX design</a> so you can see which websites offer courses for free, and read user feedback.</p>
<p>Suppose you already have some of the required skills to be a UI/UX designer. In that case, you can also take a look at articles like the <a target="_blank" href="https://uxdesign.cc/10-essential-cognitive-behavior-patterns-for-ux-design-7f0cc2e00d31">behavior patterns for UX design</a>, <a target="_blank" href="https://uxdesign.cc/65-ux-methods-and-when-to-use-them-73e70c742d12">UX methods that you can use</a>, <a target="_blank" href="https://dribbble.com/tags/article">inspirational graphic designs from the world's best designers</a>, and <a target="_blank" href="https://uxdesign.cc/5-academic-research-papers-every-designer-should-read-f24b170db295">academic research papers that designers should read</a>.</p>
<h3 id="heading-which-should-you-specialize-in-ui-or-ux-design"><strong>Which Should You Specialize In? UI or UX Design?</strong></h3>
<p>Specializing in UI or UX design is a personal preference that depends on your particular skillset. </p>
<p>However, there are a huge number of companies that advertise a combined UI/UX designer role. </p>
<p>While the roles and responsibilities of both these vary differently, there is still a niche market for UI/UX design, making it a good idea to have adequate knowledge about both.</p>
<p>While difficult to implement, a combined UI/UX career can prove fruitful in terms of salary compensation and importance in the company.</p>
<p>However, a combined UI/UX designer role is difficult to perform since it needs constant switching from one mindset to the other. So it is often a better option to specialize in one role instead.</p>
<p>For example, if you are artistic, know effective color combinations, and understand how products can be visually enhanced, UI design is a good choice for you.</p>
<p>On the other hand, if you are good with managing user and stakeholder needs, have excellent analysis skills, and understand how user experiences can be improved, UX design would be more suited to you.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/07/quote-joe-sparano-1.jpg" alt="A quote from Joe Sparano that reads, &quot;Good design is obvious. Great design is transparent.&quot;" width="600" height="400" loading="lazy"></p>
<h2 id="heading-final-thoughts"><strong>Final Thoughts</strong></h2>
<p>User Interface and User Experience design both require an understanding of what users need.</p>
<p>Once you have this understanding, frontend development and design do not have to be a complex affair — there are a lot of ready-made components, tools, and kits that can make design easier and more effective.</p>
<p><a target="_blank" href="https://www.creative-tim.com/">Creative Tim</a> offers you a huge number of free and premium, fully coded UI tools like Templates, Dashboards, and Design Systems.</p>
<p>If you want to build your illustrations using hand-drawn sketch components in a scalable manner, look no further than Creative Tim’s product: <a target="_blank" href="https://iradesign.io/">IRA Design</a>.</p>
<p>And let's keep in touch on <a target="_blank" href="https://twitter.com/CreativeTim">Twitter</a>.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Write Helpful Error Messages to Improve Your App's User Experience ]]>
                </title>
                <description>
                    <![CDATA[ Gone are the days of useless and generic error messaging. Screenshot taken moments before a rage-quit If you're here, you're likely concerned with making your user-facing products as delightful as possible. And error messaging plays an important rol... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-write-helpful-error-messages-to-improve-your-apps-ux/</link>
                <guid isPermaLink="false">66bb8dfb3e3fa59ecfecb866</guid>
                
                    <category>
                        <![CDATA[ error handling ]]>
                    </category>
                
                    <category>
                        <![CDATA[ JavaScript ]]>
                    </category>
                
                    <category>
                        <![CDATA[ user experience ]]>
                    </category>
                
                    <category>
                        <![CDATA[ ux design ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Andrico Karoulla ]]>
                </dc:creator>
                <pubDate>Mon, 05 Apr 2021 22:07:00 +0000</pubDate>
                <media:content url="https://cdn-media-2.freecodecamp.org/w1280/60622fcb9618b008528a924c.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>Gone are the days of useless and generic error messaging.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/03/ykhg3yuzq8931--1-.png" alt="A generic error message displaying: &quot;Oops, something went wrong. Please try again later&quot;" width="600" height="400" loading="lazy">
<em>Screenshot taken moments before a rage-quit</em></p>
<p>If you're here, you're likely concerned with making your user-facing products as delightful as possible. And error messaging plays an important role in that. </p>
<p>Having useful error messages can go a long way toward making a frustrating scenario for an end-user as pleasant as possible.</p>
<p>This article is split into two parts. The first builds context around error messages and why they're important. This section should be useful, regardless of whether you're a JavaScript developer or not.</p>
<p>The second part is a short follow-along to help get you started managing your own error messages.</p>
<h2 id="heading-the-current-state-of-error-messaging"><strong>The current state of error messaging</strong></h2>
<p>In a perfect world, error messages would be redundant and users would be able to use anything you've built a-okay, no problem-o. But errors will happen, and your end-users will run into them. </p>
<p>These errors can stem from:</p>
<ul>
<li>Failing validation</li>
<li>Server-side failures</li>
<li>Rate limiting</li>
<li>Borked code</li>
<li>Acts of god</li>
</ul>
<p>And when things go wrong, often the client-facing error messaging takes shape in one of two ways:</p>
<ul>
<li>Generic errors with no meaningful information, e.g. <code>Something went wrong, please try again later</code></li>
<li>Hyper specific messages from the stack trace sent by the server, e.g. <code>Error 10x29183: line 26: error mapping Object -&gt; Int32</code></li>
</ul>
<p>Neither are helpful for our end-users.</p>
<p>For our users, the generic error can create a feeling of helplessness and frustration. If they get such a message, they can't complete an action, and have no way of knowing why the error happened and how (or if) they can resolve it. This can result in loss of end-user trust, loss of customer, or an angry review.</p>
<p>On the other hand, hyper-specific error messages are a leaky abstraction and shouldn't be seen by our end-user's eyes.</p>
<p>For one, these kind of errors provide implementation information about our server-side logic. Is this a security concern? probably? I'm no pen-tester.</p>
<p>Secondly, if we're in the business of crafting engaging user experiences, (and why wouldn't you be?) our error messages should feel human and be service-oriented. This is a sentiment shared in a number of resource I've come across, many of which of I've included in a further reading section at the end.</p>
<h2 id="heading-why-should-i-create-sane-error-messaging"><strong>Why should I create sane error messaging?</strong></h2>
<h3 id="heading-to-help-maintain-developer-sanity">To help maintain developer sanity</h3>
<p>Hunting bugs is hard, and scanning logs is tedious. Sometimes we're provided with context about why things failed, and other times we aren't. If an end-user reports a bug it's important they can present to us as much useful information as possible.</p>
<p>A report from a user that says:</p>
<p><code>Hi, I was using the app sometime last night updating my profile and all of a sudden it stopped working. The error said something about a validation error, but I don't know what that means</code></p>
<p>is much less useful than:</p>
<p><code>Hi, I was using the app sometime last night updating my profile and all of a sudden it stopped working. The error said "We had trouble updating your details. Your address must be located within the EU" but I live in England</code></p>
<p>This saves us time and cuts down on red herrings. A clear and specific error message may also help an end-user understand what they themselves have done wrong, and can allow them to fix their mistake.</p>
<h3 id="heading-to-help-maintain-organisation-sanity">To help maintain organisation sanity</h3>
<p>Sane error messages also yield benefits on an organisation level. For those working in larger companies, copy/messaging may be the responsibility of an entirely separate department. The more places in the code that require copy changes, the easier it is for the copy to get out of sync with your company's brand guidelines. </p>
<p>Conversely, keeping all of your error messages in a single source makes it much easier for those owning copy to adhere to those brand guidelines.</p>
<p>Other departments, like the support team, may be inundated with support tickets from users. If you're an engineer, why not reach out to your support team to see how many support tickets could be avoided with improved error messaging. </p>
<p>Fixing the problems with your messaging when a user incorrectly fills out a form, has missing data, or doesn't have permissions for a specific action could positively impact the lives of the support team.</p>
<h3 id="heading-to-help-maintain-end-user-sanity">To help maintain end-user sanity</h3>
<p>By providing sane error messaging we hope to not leave our end users feeling helpless. </p>
<p>As described earlier, our messaging should be <em>service</em>-<em>oriented</em>. They should guide our user on how to complete their process, or at least let them know where they can go and get help if the problem is beyond their control.</p>
<p>In Jon Yablonski's book, the Laws of UX, he describes a psychological concept called the Peak-end Rule:</p>
<blockquote>
<p><em>People judge an experience largely based on how they felt at its peak and at its end rather than the total sum or average of every moment of the experience</em></p>
</blockquote>
<p>In the context of this article, if people become so frustrated that they rage quit your site, their lasting memory of your application is of how frustrating it is to use. </p>
<p>Error messages play a large part in preventing this, as they can act as the final gatekeeper preventing a user who is simply stuck from turning to one so frustrated they quit your app.</p>
<p>If someone is using your product for a transactional purpose like buying an airplane ticket or shopping online, and they've been stopped dead in their tracks during a task with no way to continue, the likelihood of them leaving your site for another skyrockets. Another lost customer.</p>
<p>While this is wholly anecdotal, I've rage quit sites often from not knowing how to complete a process – either nothing happened when I clicked a button, or I just kept getting vague error messages. </p>
<p>Unless these sites/apps are one of those few ubiquitous platforms (like Google, Instagram, Apple), I likely haven't have used them since. I'm sure you can even remember a time this happened to you. In fact, I'll openly welcome pictures of awful error messages via <a target="_blank" href="https://twitter.com/andricokaroulla?lang=en">Twitter</a></p>
<p>Using sane error messaging can help offset this frustration if something doesn't go right. Surprisingly, creating a useful error message only requires a handful of qualities.</p>
<h2 id="heading-what-makes-a-good-error-message">What makes a good error message?</h2>
<p>Taken from <a target="_blank" href="https://www.microcopybook.com/">Microcopy: A complete guide</a>. A useful error message should satisfy these qualities:</p>
<ul>
<li>Explain clearly that there is a problem</li>
<li>Explain what the problem is</li>
<li>If possible, provide a solution so that the user can complete the process, or</li>
<li>Point them to where they can go for help</li>
<li>Make a frustrating scenario as pleasant as possible</li>
</ul>
<p>This might sound like a lot to cover with just a couple of sentences, but here are some examples of what I deem to be good error messages:</p>
<ul>
<li>We've limited how many times you can reset your password every hour. You can try again later.</li>
<li>Please log in to view this profile</li>
<li>We couldn't create your profile, only UK residents can use our app.</li>
</ul>
<p>It's worth noting that I'm not a UX researcher/designer, just a frontend developer with a keen interest in UX. It may be that my above examples miss the mark on what's required within your project or organisation. </p>
<p>Saying that, if you're a frontend engineer, improving your organisation's error messaging makes for an excellent opportunity to upskill and collaborate with your UXer colleagues.</p>
<h2 id="heading-how-can-i-start-writing-sane-error-messages">How can I start writing sane error messages?</h2>
<p>I've open-sourced a simple tool called <code>sane-error-messages</code>. Running the tool will generate a brand new repo designed to house your default error messaging. You can tweak the default values, add or remove messages, and then publish it to consume within your client facing apps.</p>
<p><code>sane-error-messages</code> works by aggregating all of your messaging in to a single JavaScript object. The key is an error code, and the value is a corresponding message. </p>
<p>The error codes should be the same codes you receive from your server, such as  <code>POSTS_NOT_FOUND</code> or <code>CONFLICTING_USER_RECORD</code>. Your error messaging repo exposes a function to get your error message from an error code. </p>
<p>This approach was inspired by how tools like <a target="_blank" href="https://www.freecodecamp.org/news/p/009d4c55-b3e6-4e48-b186-541f5959af8c/*https://github.com/cypress-io/cypress/blob/develop/packages/server/lib/errors.js*">Cypress</a> handle their error messaging.</p>
<p>As long as your server returns predictable error codes, the server-side implementation doesn't matter. The following sequence is just one way of implementing <em><code>sane-error-messages</code></em></p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/03/Screenshot-2021-03-15-at-21.41.28.png" alt="A sequence diagram showing the process of displaying a sane error message." width="600" height="400" loading="lazy">
<em>Having a separate repo becomes more important the more user-facing apps you have.</em></p>
<p>In short:</p>
<ul>
<li>The user "views all products"</li>
<li>The frontend makes a network request</li>
<li>The network request fails and returns an error code "USER_NOT FOUND"</li>
<li>The frontend requests the corresponding error message from your <code>error-messages</code> package.</li>
<li>The frontend applies any relevant contextual information</li>
<li>The frontend displays this information to the end user.</li>
</ul>
<p>If you want to try something hands on, you can play with this <a target="_blank" href="https://codesandbox.io/s/amazing-platform-dxtjc?file=/src/App.js">CodeSandbox</a>. The CodeSandbox fires off a request to a mock server which returns 1 of 12 error codes at random. </p>
<p>The client side will use the error code to retrieve a sane error message from the error messages repo. The client side then displays the error message to the user. If the code doesn't have a specified message, the generic fallback gets shown (and it sucks).</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/03/ezgif.com-gif-maker--2-.gif" alt="A gif of relevant error messages displaying on a code sandbox" width="600" height="400" loading="lazy">
<em>Some sane error messages in the wild</em></p>
<h2 id="heading-how-to-set-up-your-error-messages">How to set up your error messages</h2>
<p>Note: You can find the <a target="_blank" href="https://github.com/andrico1234/sane-error-messages#readme">repo here</a>. If you come across any problems during the tutorial process you can file a GitHub issue.</p>
<p>Begin by running</p>
<p><code>yarn global add sane-error-message</code></p>
<p>then</p>
<p><code>sane-error-messages create &lt;dirName&gt;</code></p>
<p>to scaffold your project. Doing so will create a brand new module for you to customise with your default error messages. </p>
<p>Your new module uses <code>tsdx</code> under-the-hood to handle all of the module management scripts, such as running, building, and testing.</p>
<p>You can learn more about <a target="_blank" href="https://www.freecodecamp.org/news/p/009d4c55-b3e6-4e48-b186-541f5959af8c/*https://tsdx.io/*">tsdx here</a>.</p>
<p>In short, the contents of your new package will look like this:</p>
<pre><code class="lang-typescript"><span class="hljs-comment">/* errorCodes.ts: The file that defines each error code like */</span>
<span class="hljs-keyword">const</span> USER_NOT_ADMIN = <span class="hljs-string">'403_USER_NOT_ADMIN'</span>

<span class="hljs-comment">/* defaultErrorMessages.ts: Maps each code to a default message */</span>
<span class="hljs-keyword">const</span> errorCodes {
  <span class="hljs-comment">// your codes and messages go here...</span>
  [USER_NOT_ADMIN]: <span class="hljs-string">"We're afraid only administrators have access to "</span>
}

<span class="hljs-comment">/* ErrorMessages.ts: The class you'll use to instantiate your error messages object in the consuming project */</span>
<span class="hljs-keyword">class</span> ErrorMessages {
  <span class="hljs-comment">// You can override default messages with more specific ones</span>
  <span class="hljs-keyword">constructor</span>: (<span class="hljs-params">customErrorMessages: Partial&lt;Record&lt;<span class="hljs-built_in">string</span> | <span class="hljs-built_in">number</span>, <span class="hljs-built_in">string</span>&gt;&gt;</span>): ErrorMessages;

  <span class="hljs-comment">// Pass through an error code to get your custom message</span>
  getErrorMessage: (code: <span class="hljs-built_in">string</span> | <span class="hljs-built_in">number</span>, fallbackMessage?: <span class="hljs-built_in">string</span>): <span class="hljs-built_in">string</span>;

  <span class="hljs-comment">// Checks to see if the argument is a valid error code and acts as a guard for non-ErrorCode values</span>
  isErrorCode(code: <span class="hljs-built_in">string</span> | <span class="hljs-built_in">number</span>): <span class="hljs-built_in">boolean</span>;

  <span class="hljs-comment">// Returns the errorCodes object with your custom messages</span>
  messages: Record&lt;ErrorCode, <span class="hljs-built_in">string</span>&gt;
}

<span class="hljs-keyword">type</span> ErrorCode = ValueOf&lt;errorCodes&gt;
</code></pre>
<h2 id="heading-how-to-consume-your-error-messages">How to consume your error messages</h2>
<p>If you created a repo with the name <code>custom-error-messages</code> and published it to npm, you'd be able to consume it within your apps by doing the following:</p>
<pre><code class="lang-typescript"><span class="hljs-keyword">import</span> { ErrorMessages } <span class="hljs-keyword">from</span> <span class="hljs-string">'custom-error-messages'</span>;

<span class="hljs-keyword">const</span> customErrorMessages = {
  <span class="hljs-string">'400_validation'</span>: <span class="hljs-string">'Please enter the fields in your form correctly'</span>,
};

<span class="hljs-comment">// Initialise your errorMessages object with your custom messages</span>
<span class="hljs-keyword">const</span> errorMessages = <span class="hljs-keyword">new</span> ErrorMessages(customErrorMessages);

<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">riskyFunction</span>(<span class="hljs-params"></span>) </span>{
  <span class="hljs-keyword">try</span> {
    <span class="hljs-comment">// Throws an error </span>
    <span class="hljs-keyword">await</span> boom();
  } <span class="hljs-keyword">catch</span> (err) {
    <span class="hljs-comment">// Get the error code our server sent over</span>
    <span class="hljs-keyword">const</span> { code } = err;

    <span class="hljs-comment">// Get the code's corresponding message</span>
    <span class="hljs-keyword">const</span> message = errorMessages.getErrorMessage(code);

    <span class="hljs-comment">// Display the message to the client</span>
    displayNotification(message);
  }
}
</code></pre>
<p>You can then take all of the error codes that your server-side returns and apply corresponding messages to them.</p>
<p>Once you're ready, you can publish your tool to NPM, and then consume it from your client-facing apps.</p>
<h2 id="heading-conclusion"><strong>Conclusion</strong></h2>
<p>I hope you've enjoyed learning about an often overlooked aspect of web development. </p>
<p>I've done a bunch of reading to learn about error messaging and I've shared some of my favourite resources below. Some are books and others are short articles, but they're all worth your time.</p>
<p>You can also reach out if any part of the tutorial wasn't clear, or if you feel I can streamline things. Thanks for reading.</p>
<h2 id="heading-faqs">FAQs</h2>
<h3 id="heading-why-cant-the-server-side-just-return-these-messages">Why can't the server-side just return these messages?</h3>
<p>The server shouldn't be concerned with any client-facing logic. But if you're fortunate enough to work with an API that gives useful error codes with each failed request, then you're nearly there.</p>
<h3 id="heading-will-i-need-to-create-an-instance-of-error-messages-for-every-api-consumer">Will I need to create an instance of error-messages for every API consumer?</h3>
<p>Not necessarily. Because this package can take a list of default messages and codes, as long as it's in sync with the APIs, your frontends will be able to consume the same package. </p>
<p>In each client-side instance, you can pass through additional error codes, or override existing messages to tailor your frontend messaging.</p>
<h3 id="heading-i-think-this-package-should-have-x-or-do-y-differently">I think this package should have X or do Y differently</h3>
<p>I'm dogfooding this internally at my job, and this is a problem space I'm very new to. I would love to hear of any suggestions, or improvements to the overall architecture or feature-set of <em><code>sane-error-messages</code>.</em></p>
<h2 id="heading-further-reading"><strong>Further Reading</strong></h2>
<p><strong>Microcopy: A Complete Guide</strong><br>I mentioned this book a little earlier, and it's one of my favourites when it comes to making my user-facing products a lot more personable.</p>
<p>The book's author Kinneret Yifrah, has graciously provided a coupon for 10% off, you can purchase it <a target="_blank" href="https://www.microcopybook.com/">here</a>.</p>
<p>Coupon code for the eBook: andrico-ebook</p>
<p>Coupon code for the bundle: andrico-bundle</p>
<p><strong>Error messaging guidelines: NN Group</strong><br>A <a target="_blank" href="https://www.nngroup.com/articles/error-message-guidelines/">short article</a> on the importance of sane error messaging which shares some very useful tips on how to create sane error messaging.</p>
<p>In short:</p>
<ul>
<li>Errors should be expressed in plain language</li>
<li>Indicate what the problem is</li>
<li>Suggest a solution</li>
</ul>
<p><strong>Error Messages (Design basics): Microsoft</strong><br>An <a target="_blank" href="https://docs.microsoft.com/en-us/windows/win32/uxguide/mess-error">in-depth article</a> that covers both design guidelines messaging practices</p>
<p><strong>Laws of UX</strong><br>A <a target="_blank" href="https://www.amazon.co.uk/gp/product/149205531X/ref=as_li_tl?ie=UTF8&amp;camp=1634&amp;creative=6738&amp;creativeASIN=149205531X&amp;linkCode=as2&amp;tag=calistheni02b-21&amp;linkId=3f089ce27d59c4eeb48522be9ac52fb2">short book</a> that introduces how a handful of psychology concepts can be used to improve your products UX.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Interaction Design – How to Evaluate Interaction Costs and Improve User Experience ]]>
                </title>
                <description>
                    <![CDATA[ By Richard Yang There are three core skills that every modern product designer must master: product thinking, visual design, and interaction design. The “table-stakes” for all modern product designers. In general, you should be good at all three, bu... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/interaction-design-evaluate-interaction-costs-improve-ux/</link>
                <guid isPermaLink="false">66d460c5d7a4e35e384349a9</guid>
                
                    <category>
                        <![CDATA[ Design ]]>
                    </category>
                
                    <category>
                        <![CDATA[ user experience ]]>
                    </category>
                
                    <category>
                        <![CDATA[ ux design ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Mon, 08 Mar 2021 21:16:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2021/02/1_WzkvMd3sZRb6BCwKEsoHjA.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Richard Yang</p>
<p>There are three core skills that every modern product designer must master: product thinking, visual design, and interaction design.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/02/image-146.png" alt="Diagram showing the three core product design skills: product thinking, visual design (UI), and interaction design (IxD)." width="600" height="400" loading="lazy">
<em>The “table-stakes” for all modern product designers.</em></p>
<p>In general, you should be good at all three, but you should be really good at two. Most designers can teach themselves visual design and product thinking through online resources, practice, and shipping real products.</p>
<p>As a product design lead at a FAANG company that has mentored hundreds of aspiring designers, I find that interaction design tends to be the most challenging core skill for designers to self-learn.</p>
<p>In this article, I provide a foundation and framework for learning and improving your interaction design skills.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/02/image-148.png" alt="Diagram showing the overlap and difference between UX and IxD. IxD is a sub-domain of UX." width="600" height="400" loading="lazy">
<em>The difference between UX (user experience) and IxD (interaction design).</em></p>
<h2 id="heading-what-is-interaction-cost">What is Interaction Cost?</h2>
<p>The foundational concept behind interaction design is “interaction cost,” which is often used to measure a product’s usability. Nielsen Norman defines “interaction costs” as the <a target="_blank" href="https://www.nngroup.com/articles/interaction-cost-definition/">sum of mental and physical efforts</a> that users must exert to reach their goals.</p>
<p>In general, we want to keep interaction costs as low as possible. However, this is difficult, as the more use cases your product covers, the harder this becomes.</p>
<p>Supporting more use cases and functionality adds complexity to your product’s information architecture (IA) and navigation. A use case is a sequence of steps, starting with a user’s goal and the result when that goal is achieved.</p>
<p>A more complex IA will inherently increase the number of clicks required to accomplish a user’s goal. For example, an iOS clock app has the following alarm use case goals: turn on the alarm, create a new alarm, and edit the alarm.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/02/image-149.png" alt="An information architecture (IA) diagram." width="600" height="400" loading="lazy">
<em>The more complex the IA, the more the user has to click to get to their desired screen. [Credits: Topta](https://dribbble.com/shots/4406909-The-Comprehensive-Guide-to-Information-Architecture" rel="noopener nofollow)l</em></p>
<p>The rule of thumb focuses on reducing the interaction costs for your target user’s primary use cases. Whenever a product accommodates too many use cases (for example, enterprise products with a million dropdown menus and features), it becomes harder to use. </p>
<p>To avoid this over-complication, choose a specific user and use case to focus on when building a brand new product.</p>
<h3 id="heading-physical-and-mental-interaction-costs">Physical and Mental Interaction Costs</h3>
<p>Many junior designers have the misconception that interaction cost equals the number of clicks required for a user to complete a task.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/02/image-150.png" alt="A diagram showing PIC and MIC." width="600" height="400" loading="lazy"></p>
<p>However, it goes much deeper than that. Interaction cost can be classified as mental interaction costs (MIC) and physical interaction costs (PIC), which I’ll explain below.</p>
<h2 id="heading-how-to-evaluate-interaction-cost-find-the-critical-user-flows-first">How to Evaluate Interaction Cost – Find the Critical User Flows First</h2>
<p>A best practice is to identify the primary use cases (that is, the red routes) and reduce their interaction costs at the expense of secondary and tertiary use cases if necessary.</p>
<p>You can use a <a target="_blank" href="https://medium.muz.li/red-routes-critical-design-paths-that-make-or-break-your-app-a642ebe0940a">Red Route Analysis (RRA)</a> to assess which use case interaction flows are most important to your primary users.</p>
<p>Red routes tend to be critical, encompass end-to-end tasks with multiple steps, are often used, are built for high volume usage, provide the most value, have clear success criteria, and tie to product metrics.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/02/image-151.png" alt="An example of a RRA." width="600" height="400" loading="lazy">
<em>You can create an RRA from user interviews or with data if the product is live.</em></p>
<p>For instance, in the Uber app, the rider’s red route would be requesting a ride, while their normal route would be adding a payment method.</p>
<h2 id="heading-how-teslers-law-helps-reduce-interaction-costs">How Tesler’s Law Helps Reduce Interaction Costs</h2>
<p>According to <a target="_blank" href="https://lawsofux.com/laws/teslers-law/">Tesler’s Law</a> of Conservation of Complexity, all systems have an inherent complexity that cannot be removed or hidden.</p>
<p>Good design ensures that as much of the complexity burden is on the system as possible, rather than on the user.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/02/image-152.png" alt="A diagram illustrating Tesler's law, where the burden of complexity is shifted between the user and the product." width="600" height="400" loading="lazy"></p>
<p>You should begin by reducing the interaction costs within the primary use cases and shift the complexity burden towards the least important use cases.</p>
<p>Tesler argued that a designer and engineer should spend an extra week reducing an application’s complexity rather than making millions of users spend an additional minute.</p>
<p>Be careful not to simplify interfaces to the point of abstraction, though. A common pitfall is reducing the PIC at the expense of the MIC (I’m looking at you, Apple).</p>
<p>When the system has handled as much of the inherent complexity as possible, you should shift the rest of the complexity away from the primary use cases to the secondary and tertiary use cases.</p>
<p>Most digital products have complicated settings for this reason. In most cases, settings are usually a tertiary use case and are very rarely used.</p>
<p>Imagine if you always saw the settings screen instead of the home screen and needed to click several times to get to the screen you needed instead. You’d probably be frustrated at the unreasonable interaction costs.</p>
<h2 id="heading-mental-interaction-costs-mic">Mental Interaction Costs (MIC)</h2>
<p><a target="_blank" href="https://www.researchgate.net/publication/23456170_A_Framework_of_Interaction_Costs_in_Information_Visualization">Mental interaction costs (MICs)</a> are often overlooked by new designers who only pay attention to physical interaction costs (PIC).</p>
<p>Common MICs that you may have noticed in products with poor usability include complex navigation, dense instructions, unconventional mental models and interaction patterns, and so on.</p>
<h3 id="heading-attention-and-memory">Attention and Memory</h3>
<p>The two most important components of MIC are attention and memory.</p>
<p>When a task requires excessive attention or memory to complete, it will have a proportionally high MIC — decreasing usability.</p>
<p>Some common elements that increase attention costs or divert attention include pop-up banners, models, attention-grabbing visuals, and motion unrelated to the user’s current task. </p>
<p>Users are easily distracted. Make sure you’re not pulling their attention elsewhere when they are trying to complete a task.</p>
<h3 id="heading-evaluating-attention">Evaluating Attention</h3>
<p>If you want to evaluate how much attention MIC your interface has, consider doing an <a target="_blank" href="https://uxplanet.org/uxers-quick-guide-to-eye-tracking-edf70bffd03d">eye-tracking study (ETS)</a>. You can use an ETS to infer not only where users look but what they’re thinking.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/02/image-153.png" alt="An example of an ETS." width="600" height="400" loading="lazy">
<em>An example of an ETS.</em></p>
<p>The ETS examines two relevant eye movements in particular: “fixation” and “saccade.” </p>
<p>Fixation occurs when a user’s pupils linger over an interface element long enough to process it. A Saccade occurs when the eye is in motion — darting between various areas within your interface.</p>
<p>If your ETS reveals many task-irrelevant saccadic movements, it’s likely due to a distracting interface. Your ETS results can help you understand if users are missing critical elements within the interface, what’s distracting, and what’s unnecessary.</p>
<h3 id="heading-working-memory">Working memory</h3>
<p>There is an extensive classification for all the different types of memory.</p>
<p>For our purposes as designers, working memory (part of short-term memory) is the most relevant. The shortest type of memory is known as working memory, which typically only lasts a couple of seconds during a task.</p>
<p>In other words, our working memory is responsible for the information we can hold in our heads while we engage with other cognitive processes.</p>
<p><a target="_blank" href="https://lawsofux.com/laws/millers-law/">Miller’s Law</a> states that the average person can only keep 5–11 items in their working memory at a time. The working memory required to complete a task within your product is proportional to the MIC burden you impose on your users.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/02/image-154.png" alt="A poster illustration of Miller's Law." width="600" height="400" loading="lazy"></p>
<p>Conversely, at no point should your task require the user to hold more than seven items in their working memory at any moment.</p>
<p>In rare scenarios where you require the user to hold more than 11 items in their memory, use “chunking” to reduce their mental burden. Chunking is when individual pieces of an information set are broken down and then grouped in a meaningful whole.</p>
<p>For example, we remember phone numbers as XXX-XXXX rather than XXXXXXX. It’s easier to remember the number in two chunks rather than a series of seven individual units.</p>
<p>Another factor to consider related to attention and memory is <a target="_blank" href="https://lawsofux.com/laws/hicks-law/">“Hick’s Law.”</a> The law states, “the time it takes to make a decision increases with the number and complexity of choices.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/02/image-155.png" alt="A graph of Hick's Law with time x number of options." width="600" height="400" loading="lazy">
<em>The more choices there are, the longer it takes the user to make a decision.</em></p>
<p>Avoid overwhelming users with excessive choices, highlight the best option for them whenever possible. Break complex tasks into smaller steps, that is using progressive disclosure when appropriate.</p>
<h2 id="heading-physical-interaction-costs-pic">Physical Interaction Costs (PIC)</h2>
<p>I won’t go into too much detail on PICs because most designers understand them well.</p>
<p>Common PIC factors include reaching distance and target width (<a target="_blank" href="https://lawsofux.com/laws/fittss-law/">Fitt’s Law</a>), number of user inputs and actions required to complete a task, and so on.</p>
<p><a target="_blank" href="https://lawsofux.com/laws/fittss-law/">Fitt’s Law</a> states that the time to hit a target (that is, clicking on a button) is a function of the distance from your input device and the target’s hit-box width.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/02/image-156.png" alt="Image" width="600" height="400" loading="lazy">
<em>A diagram for Fitt's Law.</em></p>
<p>For example, clicking on a button on the desktop would take much longer if your mouse cursor was far away and the button was tiny.</p>
<p>An excellent method to assess PIC is <a target="_blank" href="https://www.nngroup.com/articles/task-analysis/">“task analysis”</a> and examining <a target="_blank" href="https://usabilitygeek.com/usability-metrics-a-guide-to-quantify-system-usability/">usability metrics</a> such as “task time (TT).”</p>
<p>The root of TA is looking at the number of tasks required to complete the user’s goal, the frequency of those tasks, the physical requirements, and the task time.</p>
<p>TA and usability metrics are advanced topics that warrant an entirely separate note, so I’ll save it for next time.</p>
<h2 id="heading-common-pitfalls-to-avoid">Common Pitfalls to Avoid</h2>
<p>According to Nielsen Norman Group, some of the most common aspects of a product that result in increased interaction costs include the following:</p>
<ul>
<li>Excessive reading and scrolling</li>
<li>Looking around to find relevant information user</li>
<li>Comprehending information presented to the user</li>
<li>Physical user inputs</li>
<li>Page loads and waiting times</li>
<li>Attention switches</li>
<li>Memory load</li>
</ul>
<h3 id="heading-situational-interaction-costs">Situational Interaction Costs</h3>
<p>The pitfalls mentioned above may be more or less critical depending on the user. For example, dyslexic users find reading more challenging than the average user (pro-tip: use a dyslexic friendly font like <a target="_blank" href="https://www.dyslexiefont.com/en/typeface/">“Dyslexie”</a>).</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/02/image-157.png" alt="A 3D animation of the Dyslexie font." width="600" height="400" loading="lazy">
<em>[Source](https://www.dyslexiefont.com/" rel="noopener nofollow)</em></p>
<p>Users with motor impairments might find clicking much harder than reading. Even the user’s device can play an important role. For instance, a page load on a mobile device may take forever if the cellular coverage is slow.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/02/image-158.png" alt="A standard loading spinner." width="600" height="400" loading="lazy"></p>
<h3 id="heading-interaction-paths-and-motivation">Interaction Paths and Motivation</h3>
<p>In some situations, there are multiple possible paths a user can take to accomplish their goal. Users decide which path to take based on the concept of “expected utility,” defined as expected utility = expected benefits — expected interaction costs.</p>
<p>In other words, users weigh the benefits and costs of each action and choose the path that has the best balance of benefits versus cost.</p>
<p>Users will gravitate towards the path that has the lowest estimated interaction cost. Even if there’s a lower-cost path, if that path is unintuitive or unfamiliar, they will end up choosing the path they are more familiar with due to lower MIC.</p>
<p>Users with a high motivation (for example, due to your marketing or branding efforts) are more likely to put up high interaction costs to complete their goal. For example, if Apple’s website had high interaction costs, users may still be motivated enough to complete their task.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/02/image-159.png" alt="Image" width="600" height="400" loading="lazy">
<em>Apple is the world’s most valuable brand for a reason.</em></p>
<p>However, if users wanted to purchase a generic product, and the checkout process had a high interaction cost, they will buy it from a competitor instead.</p>
<p>For more details, take a look at Nielsen Norman Group’s <a target="_blank" href="https://www.nngroup.com/articles/interaction-cost-definition/">example of how to assess the interaction cost of a use case</a>, “finding out where the word ‘ceremony’ comes from.”</p>
<h2 id="heading-conclusion">Conclusion</h2>
<p>Understanding interaction cost is a vital skill for any modern product designer. I encourage you to go beyond the superficial interaction design considerations and delve deeper into the numerous PIC and MIC factors.</p>
<p>Of course, we should strive to reduce the interaction costs as much as possible. But when push comes to shove, we should make trade-offs to ensure the primary use cases have the least friction.</p>
<p>An excellent first step is to create a mental model of laws, frameworks, and tests to evaluate your design’s interaction costs.</p>
<p>If you liked this article, <a target="_blank" href="https://theambitiousdesigner.substack.com/"><strong>join my free newsletter</strong></a> “The Ambitious Designer” for more career &amp; design insights.</p>
<p>I also run a <a target="_blank" href="https://www.facebook.com/groups/richarduxmentorship">private mentorship group</a> on Facebook and a design <a target="_blank" href="https://www.instagram.com/richard.ux/">Instagram</a> account.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Create a Theme-able Static Website ]]>
                </title>
                <description>
                    <![CDATA[ A while ago I wanted to create a dark theme for my personal site. So I did some clicking around to find out the most suitable and clean way to do this. I read Max Bock's article on creating a custom theme, where he explained the process quite clearly... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/design-a-themeable-static-website/</link>
                <guid isPermaLink="false">66d461523a8352b6c5a2ab1d</guid>
                
                    <category>
                        <![CDATA[ JavaScript ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Static Site Generators ]]>
                    </category>
                
                    <category>
                        <![CDATA[ ux design ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Web Design ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Spruce Emmanuel ]]>
                </dc:creator>
                <pubDate>Mon, 08 Feb 2021 21:00:38 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2021/02/20210207_172754_0000-1.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>A while ago I wanted to create a dark theme for my <a target="_blank" href="https://spruce.com.ng">personal site</a>. So I did some clicking around to find out the most suitable and <strong>clean</strong> way to do this.</p>
<p>I read <a target="_blank" href="https://mxb.dev/blog/color-theme-switcher">Max Bock's article on creating a custom theme</a>, where he explained the process quite clearly. He also really went super pro (with TEN different color schemes).</p>
<p>But for my case I wanted more. I wanted users to be able to change the color scheme to the different options provided.</p>
<p>I also wanted them to be able to change the font size. This is because I had a fixed header on my site which was kind of great, but on small mobile devices it took up quiet a lot of space – not great for UX design, right? So I also gave users the ability to turn off that fixed header.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/02/spruce-theme.png" alt="spruce.com.ng customizable static website preview with dark theme" width="600" height="400" loading="lazy"></p>
<p><em>Spruce.com.ng Theme-able static site</em></p>
<p>You can find a live preview of this on my personal site <a target="_blank" href="https://spruce.com.ng">spruce.com.ng</a>. You can also copy the source code <a class="post-section-overview" href="#not-much-of-a-tutorial-person-you-can-copy-the-complete-source-code-here">here</a> to save you some read time.</p>
<h2 id="heading-what-i-wanted-to-do">What I Wanted to Do</h2>
<ol>
<li><p>Ask users their preferred color scheme, font size, and header type (fixed or static)</p>
</li>
<li><p>Collect user choices</p>
</li>
<li><p>Save them in localStorage</p>
</li>
<li><p>Get them from localStorage and show them to the user immediately on page reload, if they switch tabs and come back, and if they close their browser and come back after a week or month, until they clear their browser storage</p>
</li>
</ol>
<h2 id="heading-how-i-created-the-theme">How I Created the Theme</h2>
<p>In 11ty (the static site generator I'm using) you can create a JSON file in the <code>_data</code> folder. You can access the data globally in your template (Jekyll does this too). It's likely that your preferred static site generator (SSG) can do the same.</p>
<pre><code class="lang-json">_data/themes.json file

[
    {
        <span class="hljs-attr">"id"</span>: <span class="hljs-string">"default"</span>,
        <span class="hljs-attr">"colors"</span>: {
            <span class="hljs-attr">"text"</span>: <span class="hljs-string">"#222126"</span>,
            <span class="hljs-attr">"text-dark"</span>: <span class="hljs-string">"#777;"</span>,
            <span class="hljs-attr">"border"</span>: <span class="hljs-string">"rgba(0,0,0,.1)"</span>,
            <span class="hljs-attr">"primary"</span>: <span class="hljs-string">"#665df5"</span>,
            <span class="hljs-attr">"secondary"</span>: <span class="hljs-string">"#6ad1e0"</span>,
            <span class="hljs-attr">"primary-dark"</span>: <span class="hljs-string">"#382cf1"</span>,
            <span class="hljs-attr">"bg"</span>: <span class="hljs-string">"#ffffff"</span>,
            <span class="hljs-attr">"bg-alt"</span>: <span class="hljs-string">"#f8f8f8"</span>,
            <span class="hljs-attr">"overlay"</span>: <span class="hljs-string">"rgba(255, 255, 255, .4)"</span>
        }
                }, 
    ... other color schemes
]
</code></pre>
<h2 id="heading-how-to-generate-the-css">How to Generate the CSS</h2>
<p>To use the data file, create a file called <code>theme.css.liquid</code> and give it a permalink where you want the CSS file to output to.</p>
<pre><code class="lang-css"><span class="hljs-selector-tag">css</span>/<span class="hljs-selector-tag">theme</span><span class="hljs-selector-class">.css</span><span class="hljs-selector-class">.liquid</span> <span class="hljs-selector-tag">file</span>
<span class="hljs-selector-tag">---</span>
<span class="hljs-selector-tag">permalink</span>: /<span class="hljs-selector-tag">css</span>/<span class="hljs-selector-tag">theme</span><span class="hljs-selector-class">.css</span>
<span class="hljs-selector-tag">---</span>
// <span class="hljs-selector-tag">when</span> <span class="hljs-selector-tag">no</span> <span class="hljs-selector-tag">theme</span> <span class="hljs-selector-tag">is</span> <span class="hljs-selector-tag">selected</span>
// <span class="hljs-selector-tag">use</span> <span class="hljs-selector-tag">default</span> <span class="hljs-selector-tag">theme</span>
<span class="hljs-selector-pseudo">:root</span> {
    <span class="hljs-attribute">--text</span>: {{ themes[<span class="hljs-number">0</span>].colors.text }};
    <span class="hljs-selector-tag">--text-dark</span>: {{ themes[0].colors.text-dark }};
    <span class="hljs-selector-tag">--border</span>: {{ themes[0].colors.border }};
    <span class="hljs-selector-tag">--primary</span>: {{ themes[0].colors.primary }};
    <span class="hljs-selector-tag">--secondary</span>: {{ themes[0].colors.secondary }};
    <span class="hljs-selector-tag">--primary-dark</span>: {{ themes[0].colors.primary-dark }};
    <span class="hljs-selector-tag">--bg</span>: {{ themes[0].colors.bg }};
    <span class="hljs-selector-tag">--bg-alt</span>: {{ themes[0].colors.bg-alt }};
}  
// <span class="hljs-selector-tag">if</span> <span class="hljs-selector-tag">user</span> <span class="hljs-selector-tag">preferred</span> <span class="hljs-selector-tag">color</span> <span class="hljs-selector-tag">scheme</span> <span class="hljs-selector-tag">is</span> <span class="hljs-selector-tag">dark</span>
// <span class="hljs-selector-tag">use</span> <span class="hljs-selector-tag">the</span> <span class="hljs-selector-tag">dark</span> <span class="hljs-selector-tag">theme</span>

<span class="hljs-keyword">@media</span>(prefers-color-scheme: dark) {
    <span class="hljs-selector-pseudo">:root</span> {
    <span class="hljs-attribute">--text</span>: {{ themes[<span class="hljs-number">1</span>].colors.text }};
    <span class="hljs-selector-tag">--text-dark</span>: {{ themes[1].colors.text-dark }};
    <span class="hljs-selector-tag">--border</span>: {{ themes[1].colors.border }};
    <span class="hljs-selector-tag">--primary</span>: {{ themes[1].colors.primary }};
    <span class="hljs-selector-tag">--secondary</span>: {{ themes[1].colors.secondary }};
    <span class="hljs-selector-tag">--primary-dark</span>: {{ themes[1].colors.primary-dark }};
    <span class="hljs-selector-tag">--bg</span>: {{ themes[1].colors.bg }};
    <span class="hljs-selector-tag">--bg-alt</span>: {{ themes[1].colors.bg-alt }};
    }
}
// <span class="hljs-selector-tag">generate</span> <span class="hljs-selector-tag">the</span> <span class="hljs-selector-tag">theme</span> <span class="hljs-selector-tag">css</span> <span class="hljs-selector-tag">from</span> <span class="hljs-selector-tag">the</span> <span class="hljs-selector-tag">data</span> <span class="hljs-selector-tag">file</span>
// <span class="hljs-selector-tag">here</span> <span class="hljs-selector-tag">we</span> <span class="hljs-selector-tag">use</span> <span class="hljs-selector-tag">a</span> <span class="hljs-selector-tag">for</span> <span class="hljs-selector-tag">loop</span>
// <span class="hljs-selector-tag">to</span> <span class="hljs-selector-tag">iterate</span> <span class="hljs-selector-tag">over</span> <span class="hljs-selector-tag">all</span> <span class="hljs-selector-tag">the</span> <span class="hljs-selector-tag">themes</span> <span class="hljs-selector-tag">in</span> <span class="hljs-selector-tag">our</span> _<span class="hljs-selector-tag">data</span>/<span class="hljs-selector-tag">themes</span><span class="hljs-selector-class">.json</span>
// <span class="hljs-selector-tag">and</span> <span class="hljs-selector-tag">output</span> <span class="hljs-selector-tag">them</span> <span class="hljs-selector-tag">as</span> <span class="hljs-selector-tag">plain</span> <span class="hljs-selector-tag">css</span>


{% for theme in themes %}
 <span class="hljs-selector-attr">[data-theme=<span class="hljs-string">"{{ theme.id }}"</span>]</span> {
    <span class="hljs-attribute">--text</span>: {{ theme.colors.text }};
    <span class="hljs-selector-tag">--text-dark</span>: {{ theme.colors.text-dark }};
    <span class="hljs-selector-tag">--border</span>: {{ theme.colors.border }};
    <span class="hljs-selector-tag">--primary</span>: {{ theme.colors.primary }};
    <span class="hljs-selector-tag">--secondary</span>: {{ theme.colors.secondary }};
    <span class="hljs-selector-tag">--primary-dark</span>: {{ theme.colors.primary-dark }};
    <span class="hljs-selector-tag">--bg</span>: {{ theme.colors.bg }};
    <span class="hljs-selector-tag">--bg-alt</span>: {{ theme.colors.bg-alt }};
 }
{% endfor %}
</code></pre>
<p>Notice that I'm using <strong>themes[0].colors.text</strong> because my default theme is the first one on the list. It has an index of 0, so also my dark theme has an index of 1.</p>
<p>In <strong>Jekyll</strong> you can output liquid in CSS by just adding empty front matter at the top of the file.</p>
<pre><code class="lang-css"><span class="hljs-selector-tag">css</span>/<span class="hljs-selector-tag">theme</span><span class="hljs-selector-class">.css</span> <span class="hljs-selector-tag">file</span>
<span class="hljs-selector-tag">---</span>
<span class="hljs-selector-tag">---</span>

// <span class="hljs-selector-tag">your</span> <span class="hljs-selector-tag">liquid</span> <span class="hljs-selector-tag">in</span> <span class="hljs-selector-tag">css</span> <span class="hljs-selector-tag">goes</span> <span class="hljs-selector-tag">here</span>
</code></pre>
<p>I'm sure your favourite static site generator provides a similar way to output liquid in a CSS file. You can also handcode all this if you are just writing plain HTML and CSS without a SSG.</p>
<h2 id="heading-how-to-use-the-css-in-your-site">How to Use the CSS in Your Site</h2>
<p>If you are reading this, then I assume that you already know how to work with CSS custom properties. So I won't go in depth into that here.</p>
<pre><code class="lang-css">// <span class="hljs-selector-tag">css</span> <span class="hljs-selector-tag">custom</span> <span class="hljs-selector-tag">properties</span> <span class="hljs-selector-tag">are</span> <span class="hljs-selector-tag">declared</span> <span class="hljs-selector-tag">using</span> <span class="hljs-selector-tag">the</span> <span class="hljs-selector-tag">keyword</span> **<span class="hljs-selector-tag">var</span>**
// <span class="hljs-selector-tag">color</span>: <span class="hljs-selector-tag">var</span>(<span class="hljs-selector-tag">--text</span>);
<span class="hljs-selector-tag">body</span> {
    <span class="hljs-attribute">background</span>: <span class="hljs-built_in">var</span>(--bg);
    <span class="hljs-attribute">color</span>: <span class="hljs-built_in">var</span>(--text);
}
<span class="hljs-selector-tag">h1</span>,<span class="hljs-selector-tag">h2</span> {
    <span class="hljs-attribute">color</span>: <span class="hljs-built_in">var</span>(--text-dark)
}
// <span class="hljs-selector-tag">i</span> <span class="hljs-selector-tag">also</span> <span class="hljs-selector-tag">had</span> <span class="hljs-selector-tag">default</span> <span class="hljs-selector-tag">font-size</span> <span class="hljs-selector-tag">and</span> <span class="hljs-selector-tag">margin-top</span> <span class="hljs-selector-tag">properties</span> <span class="hljs-selector-tag">set</span>
// <span class="hljs-selector-tag">i</span> <span class="hljs-selector-tag">added</span> <span class="hljs-selector-tag">this</span> <span class="hljs-selector-tag">to</span> <span class="hljs-selector-tag">the</span> <span class="hljs-selector-pseudo">:root</span> <span class="hljs-selector-tag">in</span> <span class="hljs-selector-tag">css</span>
<span class="hljs-selector-pseudo">:root</span> {
    <span class="hljs-attribute">--font-size</span>: <span class="hljs-number">18px</span>;
    <span class="hljs-attribute">--position</span>: fixed;
    <span class="hljs-attribute">--top-margin</span>: <span class="hljs-number">96px</span>;
}
</code></pre>
<p>You just have to change every bit of color on your site to the custom properties you have generated.</p>
<h2 id="heading-how-to-generate-the-html">How to Generate the HTML</h2>
<p>Now let's provide a UI to allow users to change the font size, header type, and color scheme of our site. Mine is a bit simple, but you can take yours further. I'm just explaining the concept here.</p>
<pre><code class="lang-html">theme.html file
// create the font buttons
// I gave each button a value
// I want to get the value and save it in local storage 

<span class="hljs-tag">&lt;<span class="hljs-name">section</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"theme-section"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"theme-btn-wrapper"</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">button</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"btn btn--small btn--border js-font-btn"</span> <span class="hljs-attr">value</span>=<span class="hljs-string">"16"</span>&gt;</span>16px<span class="hljs-tag">&lt;/<span class="hljs-name">button</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">button</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"btn btn--small btn--border js-font-btn"</span> <span class="hljs-attr">value</span>=<span class="hljs-string">"18"</span>&gt;</span>18px<span class="hljs-tag">&lt;/<span class="hljs-name">button</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">button</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"btn btn--small btn--border js-font-btn"</span> <span class="hljs-attr">value</span>=<span class="hljs-string">"20"</span>&gt;</span>20px<span class="hljs-tag">&lt;/<span class="hljs-name">button</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">button</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"btn btn--small btn--border js-font-btn"</span> <span class="hljs-attr">value</span>=<span class="hljs-string">"22"</span>&gt;</span>22px<span class="hljs-tag">&lt;/<span class="hljs-name">button</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">section</span>&gt;</span>

// Create the toggle button
// To turn On &amp; Off
// The fixed header
// The **sr-only** is used to hide the text visually 
// while keeping accessibilty in mind
// note the **role="switch"** nd aria-checked
// they are what turns the button to a On and Off switch
<span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"check-wrapper"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">span</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"btn-label"</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"sr-only"</span>&gt;</span>Fixed or static header<span class="hljs-tag">&lt;/<span class="hljs-name">span</span>&gt;</span>
   <span class="hljs-tag">&lt;<span class="hljs-name">button</span> <span class="hljs-attr">role</span>=<span class="hljs-string">"switch"</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"button"</span> <span class="hljs-attr">aria-checked</span>=<span class="hljs-string">"true"</span> <span class="hljs-attr">aria-labelledby</span>=<span class="hljs-string">"btn-label"</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"js-theme-toggle btn btn--border btn--rounded btn--toggle"</span>&gt;</span>
       <span class="hljs-tag">&lt;<span class="hljs-name">span</span>&gt;</span>On<span class="hljs-tag">&lt;/<span class="hljs-name">span</span>&gt;</span>
       <span class="hljs-tag">&lt;<span class="hljs-name">span</span>&gt;</span>Off<span class="hljs-tag">&lt;/<span class="hljs-name">span</span>&gt;</span>
   <span class="hljs-tag">&lt;/<span class="hljs-name">button</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
</code></pre>
<p>That's pretty much the HTML for my use case. Again you can do more if you want, and there is some CSS styling involved (which would be left out in our case).</p>
<h2 id="heading-the-fun-part-how-to-create-the-javascript">The Fun Part: How to Create the JavaScript</h2>
<pre><code class="lang-js">/assets/js/theme.js file
<span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">CustomTheme</span> </span>{
    <span class="hljs-keyword">constructor</span>() {
        <span class="hljs-comment">// part A: check if localStorage works</span>
        <span class="hljs-built_in">this</span>.islocalStorage = <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params"></span>) </span>{
            <span class="hljs-keyword">try</span> {
                <span class="hljs-built_in">localStorage</span>.setItem(<span class="hljs-string">"test"</span>, <span class="hljs-string">"testing"</span>);
                <span class="hljs-built_in">localStorage</span>.removeItem(<span class="hljs-string">"test"</span>);
                <span class="hljs-keyword">return</span> <span class="hljs-literal">true</span>;
            } <span class="hljs-keyword">catch</span> (error) {
                <span class="hljs-keyword">return</span> <span class="hljs-literal">false</span>
            }

        };
        <span class="hljs-comment">// part B: Get the value from the buttons</span>
        <span class="hljs-built_in">this</span>.schemeBtns = <span class="hljs-built_in">document</span>.querySelectorAll(<span class="hljs-string">'.js-theme-color'</span>);
        <span class="hljs-built_in">this</span>.schemeBtns.forEach(<span class="hljs-function">(<span class="hljs-params">btn</span>) =&gt;</span> {
            <span class="hljs-keyword">const</span> btnVal = btn.value;
            btn.addEventListener(<span class="hljs-string">'click'</span>, <span class="hljs-function">() =&gt;</span> <span class="hljs-built_in">this</span>.themeScheme(btnVal))
        });

        <span class="hljs-built_in">this</span>.fontBtns = <span class="hljs-built_in">document</span>.querySelectorAll(<span class="hljs-string">'.js-font-btn'</span>);
        <span class="hljs-built_in">this</span>.fontBtns.forEach(<span class="hljs-function">(<span class="hljs-params">btn</span>) =&gt;</span> {
            <span class="hljs-keyword">const</span> btnVal = btn.value;
            <span class="hljs-keyword">const</span> btnTag = btn;
            btn.addEventListener(<span class="hljs-string">'click'</span>, <span class="hljs-function">() =&gt;</span> <span class="hljs-built_in">this</span>.themeFont(btnVal, btnTag))
        });

        <span class="hljs-comment">// part C: get the html button element</span>
        <span class="hljs-built_in">this</span>.switchBtn = <span class="hljs-built_in">document</span>.querySelector(<span class="hljs-string">'.js-theme-toggle'</span>);
        <span class="hljs-keyword">const</span> clicked = <span class="hljs-built_in">this</span>.switchBtn;
        <span class="hljs-built_in">this</span>.switchBtn.addEventListener(<span class="hljs-string">'click'</span>, <span class="hljs-function">() =&gt;</span> <span class="hljs-built_in">this</span>.themePosition(clicked))
    }

    <span class="hljs-comment">// part D: Save the data in localStorage</span>
    themeScheme(btnVal) {
        <span class="hljs-built_in">document</span>.documentElement.setAttribute(<span class="hljs-string">'data-theme'</span>, btnVal);
        <span class="hljs-keyword">if</span> (<span class="hljs-built_in">this</span>.islocalStorage) {
            <span class="hljs-built_in">localStorage</span>.setItem(<span class="hljs-string">'theme-name'</span>, btnVal);
        }
    };

    themeFont(btnVal,btnTag) {
        <span class="hljs-built_in">document</span>.documentElement.style.setProperty(<span class="hljs-string">'--font-size'</span>, <span class="hljs-string">`<span class="hljs-subst">${btnVal}</span>px`</span>);
        <span class="hljs-keyword">if</span> (<span class="hljs-built_in">this</span>.islocalStorage) {
            <span class="hljs-built_in">localStorage</span>.setItem(<span class="hljs-string">'font-size'</span>, btnVal);
        }
        ;
        <span class="hljs-keyword">if</span> (btnVal == <span class="hljs-built_in">localStorage</span>.getItem(<span class="hljs-string">'font-size'</span>)) {
            removeActive();
            btnTag.classList.add(<span class="hljs-string">'active'</span>);
    }
};

    themePosition(clicked) {
    <span class="hljs-keyword">if</span> (clicked.getAttribute(<span class="hljs-string">'aria-checked'</span>) == <span class="hljs-string">'true'</span>) {
        clicked.setAttribute(<span class="hljs-string">'aria-checked'</span>, <span class="hljs-string">'false'</span>);
        <span class="hljs-built_in">document</span>.documentElement.style.setProperty(<span class="hljs-string">'--position'</span>, <span class="hljs-string">'static'</span>);
        <span class="hljs-built_in">document</span>.documentElement.style.setProperty(<span class="hljs-string">'--top-margin'</span>, <span class="hljs-string">'0px'</span>);
        <span class="hljs-keyword">if</span> (<span class="hljs-built_in">this</span>.islocalStorage) {
            <span class="hljs-built_in">localStorage</span>.setItem(<span class="hljs-string">'position'</span>, <span class="hljs-string">'static'</span>);
        }

    } <span class="hljs-keyword">else</span> {
        clicked.setAttribute(<span class="hljs-string">'aria-checked'</span>, <span class="hljs-string">'true'</span>);
        <span class="hljs-built_in">document</span>.documentElement.style.setProperty(<span class="hljs-string">'--position'</span>, <span class="hljs-string">'fixed'</span>);
        <span class="hljs-built_in">document</span>.documentElement.style.setProperty(<span class="hljs-string">'--top-margin'</span>, <span class="hljs-string">'96px'</span>);
        <span class="hljs-keyword">if</span> (<span class="hljs-built_in">this</span>.islocalStorage) {
            <span class="hljs-built_in">localStorage</span>.setItem(<span class="hljs-string">'position'</span>, <span class="hljs-string">'fixed'</span>);
        }
    }

    }
}

<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">removeActive</span>(<span class="hljs-params"></span>) </span>{
    <span class="hljs-keyword">const</span> btns = <span class="hljs-built_in">document</span>.querySelectorAll(<span class="hljs-string">'.js-font-btn'</span>);
    btns.forEach(<span class="hljs-function">(<span class="hljs-params">btn</span>) =&gt;</span> {
        btn.classList.remove(<span class="hljs-string">'active'</span>);
    })
}

<span class="hljs-comment">// part E: Only use our class if css custom properties are supported</span>
<span class="hljs-keyword">if</span> (<span class="hljs-built_in">window</span>.CSS &amp;&amp; CSS.supports(<span class="hljs-string">'color'</span>, <span class="hljs-string">'var(--i-support'</span>)) {
    <span class="hljs-keyword">new</span> CustomTheme()
};

<span class="hljs-comment">// part E: Add an active class to selected font size button</span>

<span class="hljs-built_in">window</span>.addEventListener(<span class="hljs-string">'load'</span>, <span class="hljs-function">() =&gt;</span> {
    <span class="hljs-keyword">const</span> fontBtns = <span class="hljs-built_in">document</span>.querySelectorAll(<span class="hljs-string">'.js-font-btn'</span>);
    fontBtns.forEach(<span class="hljs-function">(<span class="hljs-params">btn</span>) =&gt;</span> {
        <span class="hljs-keyword">const</span> btnVal = btn.value;
        <span class="hljs-keyword">const</span> btnTag = btn;
        <span class="hljs-keyword">if</span> (btnVal == <span class="hljs-built_in">localStorage</span>.getItem(<span class="hljs-string">'font-size'</span>)) {
            btnTag.classList.add(<span class="hljs-string">'active'</span>);
    }
    });   
})
</code></pre>
<p>I know that's a big chunk of JavaScript code, but it basically only does a few things:</p>
<ul>
<li><p>it collects and checks if localStorage is supported</p>
</li>
<li><p>then it saves the data in localStorage</p>
</li>
</ul>
<p>Also notice that I used <strong>Javascript Classes</strong>, but you could use functions as well.</p>
<h3 id="heading-checking-for-local-storage">Checking for local storage</h3>
<p>A lot of browsers support localStorage these days, but why do we still need to check?</p>
<p>Some users may be browsing your site in <strong>incognito mode (private browsing mode)</strong>. And sometimes localStorage is turned off by default so it doesn't save anything on the users device.</p>
<p>So instead of saving it directly and sometimes getting an error on browsers that don't support it, we can check if the browser does support it. If it does, great – and if it doesn't then we're also cool.</p>
<p>Now if you notice, everything seems to work just fine. But if you change the theme or font size and you reload your browser, everything is going to revert to default. This is because we haven't used the data we stored in <strong>localStorage</strong></p>
<p>So go ahead and add this piece of code to the top of your head file before any CSS files. We're doing this to eliminate the flash you get when you reload your browser.</p>
<pre><code class="lang-js">&lt;script&gt;
    <span class="hljs-keyword">const</span> scheme = <span class="hljs-built_in">localStorage</span>.getItem(<span class="hljs-string">'theme-name'</span>);
      <span class="hljs-built_in">document</span>.documentElement.setAttribute(<span class="hljs-string">'data-theme'</span>, scheme);

      <span class="hljs-keyword">const</span> fontSize = <span class="hljs-built_in">localStorage</span>.getItem(<span class="hljs-string">'font-size'</span>);
    <span class="hljs-built_in">document</span>.documentElement.style.setProperty(<span class="hljs-string">'--font-size'</span>,  <span class="hljs-string">`<span class="hljs-subst">${fontSize}</span>px`</span>);


    <span class="hljs-keyword">const</span> position = <span class="hljs-built_in">localStorage</span>.getItem(<span class="hljs-string">'position'</span>);
    <span class="hljs-keyword">if</span> (position == <span class="hljs-string">'fixed'</span>) {
        <span class="hljs-built_in">document</span>.documentElement.style.setProperty(<span class="hljs-string">'--position'</span>, <span class="hljs-string">'fixed'</span>);
        <span class="hljs-built_in">document</span>.documentElement.style.setProperty(<span class="hljs-string">'--top-margin'</span>, <span class="hljs-string">'96px'</span>);

    } <span class="hljs-keyword">else</span> {
        <span class="hljs-built_in">document</span>.documentElement.style.setProperty(<span class="hljs-string">'--position'</span>, <span class="hljs-string">'static'</span>);
        <span class="hljs-built_in">document</span>.documentElement.style.setProperty(<span class="hljs-string">'--top-margin'</span>, <span class="hljs-string">'0px'</span>);

    }    

  &lt;/script&gt;
</code></pre>
<h2 id="heading-wrapping-up">Wrapping up</h2>
<p>And that's it! You now have a simple and customizable static site.</p>
<p>The main purpose of this guide was to show you the endless possibilities of creating a user-customizable website. So go ahead and play around with it – there are a lot of things you can do, like:</p>
<ol>
<li><p>Show users specific content based on their choices</p>
</li>
<li><p>Display notification messages based on user's visits</p>
</li>
<li><p>Display ads in the least annoying way by showing users ads based on user choices</p>
</li>
</ol>
<p>You can do these things and a lot more with our SSG's. Just imagine the endless possibilities.</p>
<p>Not much of a tutorial person? You can copy the complete source code <a target="_blank" href="https://spruce.com.ng/blog/on-designing-a-themeable-static-website">here</a>.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How I Redesigned Clubhouse, Silicon Valley’s Buzziest app ]]>
                </title>
                <description>
                    <![CDATA[ By Amy Lima I wanted to test my limits as a young designer by improving the user experience of Clubhouse, the hottest new audio conversation app on the social media scene.  After speaking with both power users and novices on the app, I uncovered some... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-i-redesigned-clubhouse/</link>
                <guid isPermaLink="false">66d45d9836c45a88f96b7caf</guid>
                
                    <category>
                        <![CDATA[ Design ]]>
                    </category>
                
                    <category>
                        <![CDATA[ designer ]]>
                    </category>
                
                    <category>
                        <![CDATA[ software design ]]>
                    </category>
                
                    <category>
                        <![CDATA[ ux design ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Tue, 02 Feb 2021 22:03:37 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2021/02/clubhouse-product-image-work.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Amy Lima</p>
<p>I wanted to test my limits as a young designer by improving the user experience of Clubhouse, the hottest new audio conversation app on the social media scene. </p>
<p>After speaking with both power users and novices on the app, I uncovered some specific pain points with wayfinding and discoverability in the app. These became the primary design challenges that guided my work throughout this project.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/02/onboarding-mockups.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>Onboarding Mockups</em></p>
<p><strong>Disclaimer</strong>: I do not work for Clubhouse, and the views in this case study are strictly my own. </p>
<p>As a budding designer, I acknowledge that my vision for this project may be overly ambitious and at times reliant on assumptions of business goals and user data. </p>
<p>In a perfect world, I’d be working alongside the Clubhouse team with direct access to these resources to guide my work. Until then, this case study is meant to be an exploratory learning experience on a product I deeply admire.</p>
<h2 id="heading-the-brief">The Brief</h2>
<p>It’s difficult to understate the excitement around <strong>Clubhouse,</strong> the audio chat app where members can move around virtual rooms discussing topics ranging from culture to politics. </p>
<p>The app raised its first <a target="_blank" href="https://www.forbes.com/sites/alexkonrad/2020/05/15/andreessen-horowitz-wins-vc-sweepstakes-to-back-clubhouse-voice-app/?sh=57e5f3bd6f2a">$100 million</a> with only 1,500 users a month after its beta release. And at the time of this writing, Silicon Valley’s buzziest app has just been valued at <a target="_blank" href="https://fortune.com/2021/01/25/clubhouse-reaches-a-1-billion-after-taking-off-some-nine-months-ago/">$1 billion</a> dollars, a mere 9 months after taking off and before even launching to the public.</p>
<p>Beyond its success with investors, Clubhouse has amassed a fiercely loyal user base, whose creativity has spanned from a 24-hour continuous room dedicated to new user onboarding to a live production of <a target="_blank" href="https://www.complex.com/pop-culture/2020/12/clubhouse-users-organize-live-production-the-lion-king">The Lion King.</a></p>
<p>As an early beta user on the invite-only platform, I had the unique perspective of following the product’s updates (and exponential success) in real-time. And I sought to challenge myself with my most ambitious project yet: redesigning Silicon Valley’s most exciting app in recent memory. <em>No pressure.</em></p>
<p>The high-level goals of this project were:</p>
<ul>
<li><strong>Improving discoverability within Clubhouse</strong>, allowing users to more easily find new rooms, people, and clubs to engage with</li>
<li><strong>Creating a more seamless Hallway experience,</strong> where users can filter and find the most relevant rooms to them</li>
</ul>
<h2 id="heading-ux-challenges-simplifying-a-complex-information-hierarchy">UX Challenges: Simplifying a complex information hierarchy</h2>
<p>One of the main considerations I had to take into account was the hierarchy of the main components users can interact with inside the app:</p>
<ul>
<li><strong>People</strong> (other users of the app)</li>
<li><strong>Rooms</strong> (a virtual meeting place for audio conversations), and</li>
<li><strong>Clubs</strong> (interest-based groups that rooms can be hosted under).</li>
</ul>
<p>Beyond this, <strong>I had to consider how each of these components were connected,</strong> both interpersonally and through time. </p>
<p>Currently, a Clubhouse user’s Hallway (home screen) shows <em>live</em> rooms connected to the people and clubs they follow (which I’ll refer to throughout this case study as “in-network”). This makes it difficult for users to easily keep track of upcoming rooms in their network, as well as join new, out-of-network rooms.</p>
<p><strong>This became a major dichotomy throughout my work:</strong> I needed to find a balance between making each of these individual parts of Clubhouse easily discoverable while maintaining – and simplifying – the web that weaves them together.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/02/ch-task-flow.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>Discovery task flow</em></p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/02/ch-sketch.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>Mind map of the relationship between Clubhouse components</em></p>
<h2 id="heading-research-planning-a-ux-researchers-dream">Research + Planning: A UX Researcher’s Dream</h2>
<p>Another unique aspect of this project was the <strong>direct access beta users have to the Clubhouse founders,</strong> Paul Davison and Rohan Seth. Every Sunday, the pair host Clubhouse Townhall, an open forum where they share the week’s latest product updates, their upcoming roadmap, business goals, and top priorities, as well as holding space for user-submitted Q&amp;As.</p>
<p>And thanks to Clubhouse’s enthusiastic user base, the official Townhalls are regularly followed by Townhall recap rooms (shoutout to Community Club), where power users would deep dive into the week’s updates and what features they’re most excited for.</p>
<p>Between Clubhouse Townhalls, recap rooms, and both official and community-run new member onboarding rooms (including FAQs, Q&amp;As, and discussions), <strong>I spent on average 5 hours a week for 6 weeks gaining as many business insights and goals as I possibly could</strong> from my limited vantage point.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/02/clubhouse-research-screenshots.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>A compilation of some of the rooms that became a regular part of my UX Research</em></p>
<p>From these discussions, the overarching goals of the Clubhouse team are:</p>
<ul>
<li><strong>Making Clubhouse accessible for everyone:</strong> Paul always made it clear that the team’s top priority was to scale Clubhouse as quickly as possible while not sacrificing quality</li>
<li><strong>Putting creators first:</strong> another point Paul never understated was the team’s prioritization of the platform’s creators, building tools that would allow for creator monetization</li>
<li><strong>Improving discoverability and suggested content:</strong> at the time of this project, Clubhouse was actively building out their topics directory and algorithms that would make finding relevant rooms progressively easier</li>
</ul>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/02/clubhouse-sketches.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>Early sketches of how different screens might behave</em></p>
<h2 id="heading-user-interviews-from-power-users-to-newbies">User Interviews, from power users to newbies</h2>
<p>I spoke with Clubhouse users — both power users and more casual community members — to uncover friction points they currently had with the app’s discovery experience. These interviews showed gave me the following insights:</p>
<ul>
<li><strong>Keep it lightweight:</strong> most users preferred room discovery to be a spontaneous experience, not necessarily wanting to schedule upcoming rooms in their personal calendars</li>
<li><strong>Cluttered Hallway:</strong> most users were confused by how the hallway was currently curated, and who of the people they followed were in any given room present</li>
<li><strong>Hallway as a source of discovery:</strong> despite the cluttered hallway experience, most users still relied on the hallway to find new rooms, despite there being an existing (but not yet robust) “Explore” tab</li>
<li><strong>Friends first:</strong> when deciding which rooms to join in the hallway, users unanimously wanted to see which of their friends were in any given room</li>
</ul>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/02/affinity-map--1-.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>Affinity map of my user interviews (made using Evolve)</em></p>
<p>So how might we make the Hallway a clear and concise place for spontaneous interaction, while facilitating lightweight out-of-network discovery?</p>
<h2 id="heading-ux-solution-streamlining-the-discovery-to-hallway-pipeline">UX Solution: Streamlining the Discovery-to-Hallway pipeline</h2>
<p>I developed a simple yet powerful UI that makes wayfinding within your hallway and rooms easier. It also makes bringing rooms found through the discover page into your hallway a breeze.</p>
<p>In order for this solution to feel cohesive and not siloed, <strong>I needed to implement a near-full redesign of Clubhouse,</strong> broken up into 5 main experiences.</p>
<p><em>Play with the final prototype</em> <a target="_blank" href="https://www.figma.com/proto/zZ7KUnIt9Hrw27IKiXJfEo/CH-wireframes?node-id=263%3A257&amp;scaling=scale-down"><em>here</em></a><em>.</em></p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/02/clubhouse-wireframes.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>Early Wireframes</em></p>
<h2 id="heading-experience-1-the-hallway">Experience 1: The Hallway</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/02/ch-hallway-before-after.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>The Clubhouse Hallway currently (left), and reoptimized for more functionalities and access to controls (right)</em></p>
<p>Users wanted their hallway experience to feel more intentional and within their control. To achieve this, I established a top-level hierarchy of:</p>
<ul>
<li><strong>ongoing vs. upcoming</strong>, to allow users to not only see active rooms but get a quick overview of scheduled rooms within their network</li>
<li><strong>filters by topics of interest,</strong> selected by the user during onboarding, and</li>
<li><strong>sort rooms in your hallway</strong> by people vs clubs you follow</li>
</ul>
<p>An additional UI decision was to only present people you follow within the rooms in your hallway. This would alleviate the current issue of ambiguity surrounding the names users currently see in the room cards in their hallways.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/02/hallway-recording-1-.gif" alt="Image" width="600" height="400" loading="lazy">
<em>Navigating the reimagined Hallway</em></p>
<h2 id="heading-experience-2-room-preview">Experience 2: Room preview</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/02/room-preview-recording-2-.gif" alt="Image" width="600" height="400" loading="lazy">
<em>Room preview in action, where users can see a full list of which friends are inside any given room</em></p>
<p>Currently in Clubhouse, clicking on a room in a hallway immediately drops you into that room’s conversation.</p>
<p>Since identifying friends in any given room was a high decision factor for users joining a room, I wanted to design a way for users to see whom they know inside before committing to join.</p>
<h2 id="heading-experience-3-discovery">Experience 3: Discovery</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/02/ch-explore-page-before-and-after--1-.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>Clubhouse’s Explore tab currently (left), and redesigned as an immersive discovery experience (right)</em></p>
<p><strong>Currently, discovery in Clubhouse is siphoned:</strong> users go to the Explore tab to discover people and clubs by categories and keywords, and they go to the calendar tab to discover both active and upcoming rooms across all of Clubhouse.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/02/ch-save-room-page-after.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>Bringing a room to your hallway via Clubhouse’s Calendar tab currently (left), and reimagined as a simple bottom sheet function (right)</em></p>
<p><strong>Most participants actually didn’t use these tabs to achieve their primary goal of discovery</strong>. Instead, they adopted workarounds such as discovering clubs through user profiles, discovering people through rooms, and discovering rooms primarily through their hallway, limiting the scope of content they were being exposed to.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/02/discovery-filter-recording-1-.gif" alt="Image" width="600" height="400" loading="lazy">
<em>An immersive discovery experience with rich filter and sort options</em></p>
<p>While I designed UI solutions to make these workarounds more seamless, I wanted the discover page to be the go-to destination to accommodate for all these use cases, allowing users to search for people, clubs, and rooms by Clubhouse’s growing topics directory, in addition to keywords.</p>
<p>I also integrated an additional sort functionality to further facilitate discovery.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/02/discovery-recording-1-.gif" alt="Image" width="600" height="400" loading="lazy">
<em>Sending an out-of-network room to your Hallway</em></p>
<p>Users also wanted an easy, lightweight solution to discover and access out-of-network rooms.</p>
<p>The ability to send a room from the discover feed to your hallway without committing to following that room’s moderators, corresponding club, or scheduling in your personal calendar was the biggest challenge of this project, involving many iterations in order to feel intuitive.</p>
<h2 id="heading-experience-4-active-users">Experience 4: Active Users</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/02/ch-active-users-before-after.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>Clubhouse “Available to Chat” flyout currently (left), and reimagined as an “Online Now” tab (right)</em></p>
<p>A close cousin to the hallway, your active users screen is where all your Clubhouse people and clubs that are currently online live. <strong>83% of users interviewed mentioned scanning this screen to quickly identify what rooms their friends were in.</strong></p>
<p>I added a much-requested search bar to further facilitate friend-finding, as well as a sort drop-down menu to reach an even more important distinction: who’s actively participating in a room vs. just listening in.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/02/active-users-recording-1-.gif" alt="Image" width="600" height="400" loading="lazy">
<em>Discovering active users by different sort options</em></p>
<h2 id="heading-experience-5-user-and-club-profiles">Experience 5: User and Club Profiles</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/02/club-prof-before-after.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>Clubhouse User Profiles currently (left), and after consolidating clubs as one metric (right)</em></p>
<p><strong>87% of users discover suitable clubs to follow via user profiles directly.</strong> There exists a further hierarchy within clubs: followers (who receive notifications and see club-branded rooms in their hallway), and members (who, in addition to the above, can also start club-branded rooms themselves).</p>
<p>In Clubhouse’s current design, <strong>the clubs a user follows vs. clubs a user is a member of are in disparate locations:</strong> in the user’s following list and at the bottom of their user profile, respectively. This was confusing to users wanting scan all the clubs associated with a particular person.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/02/user-club-profile-recording-1-.gif" alt="Image" width="600" height="400" loading="lazy">
<em>Navigating both User and Club Profiles</em></p>
<p>By making clubs associated with a user a consolidated metric, users visiting that profile <strong>can more easily see what clubs that person belongs to,</strong> and immediately follow without visiting a new screen.</p>
<p>On the club level, <strong>being able to access metadata</strong> such as previously held rooms, upcoming rooms, and club admins can help a user get a more effective overview of the club.</p>
<h2 id="heading-ui-amp-branding-a-case-for-dark-ui">UI &amp; Branding: A Case for Dark UI</h2>
<p>In bringing all the pieces of this experience together, it became clear that adding too many visual elements would disrupt the visual hierarchy needed to move through the app with ease.</p>
<p>Additionally, the typical user experience on Clubhouse is already so immersive and emotive, often spanning all hours of the night — I wanted to take advantage of this use case and implement an elegant UI that emphasized Clubhouse’s few content types harmoniously.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/02/CH-style-tile.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>A snippet of the Style Guide that guided my work</em></p>
<h2 id="heading-usability-testing-how-effectively-is-findability-and-discoverability-throughout-the-app">Usability Testing: How effectively is findability and discoverability throughout the app?</h2>
<p>After conducting my usability tests, I created an affinity map with insights, behaviors, and findings during the tests. </p>
<p>Most users moved through the app with little to no missteps, but for many participants, there was one main point of friction that disrupted a key pillar of this redesign:</p>
<p><strong>It was still unclear how to access a room you saved from the Discovery page to your Hallway.</strong></p>
<h2 id="heading-usability-testing-insights-amp-priority-changes">Usability Testing Insights &amp; Priority Changes</h2>
<p>Initially, I designed for upcoming out-of-network rooms found in the discover tab to appear in the hallway by the user starring the room. These would then appear in your hallway algorithmically, further discoverable via the “sort by” drop-down menu. There were a few problems with this:</p>
<ul>
<li><strong>The original design essentially treated these rooms as saved items,</strong> which inadvertently (and incorrectly) prioritized these rooms over other rooms found in your hallway</li>
<li><strong>This treatment could have greater implications of disincentivizing spontaneous room creation,</strong> or unfairly prioritizing out-of-network rooms in general</li>
<li>Beyond this, <strong>embedding a saved item in a sort drop-down wasn’t intuitive</strong> or an expected place to find this type of content</li>
</ul>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/02/set-notifications-flow-recording-2-.gif" alt="Image" width="600" height="400" loading="lazy">
<em>Setting notifications on the room, club, and user level</em></p>
<h2 id="heading-ia"> </h2>
<p>Conclusion: Lessons learned &amp; where we go from here</p>
<p>Going into this project, I knew this would be an ambitious challenge for a young designer. What I didn’t know was just how intricate and all-encompassing that challenge would be.</p>
<p>I learned that <strong>working on a highly publicized and highly beloved product</strong> comes with a lot of external pressure and internal emotions to <strong>do right by (seemingly) everyone</strong>. </p>
<p>There are the power users with fierce attachment to existing structures, and new users who can’t fully experience the nuance of an audio app as a static prototype.</p>
<p>Then there's the small but mighty Clubhouse team, who are actively iterating their product on a weekly basis, potentially launching imaginative solutions themselves for the same challenges I’m working on. And even others I haven’t imagined yet. </p>
<p>Against a constant stream of public conversation over an exciting product that felt almost ethereal, I’ll humbly admit that there were times where this pressure got the best of me and I felt like a total imposter who bit off way more than she could ever chew.</p>
<p>The biggest lessons this project taught me were the delicate balance between perseverance when faced with complex challenges, grace in the wake of perceived failure, and when to be okay with “good enough” (for this iteration, of course).</p>
<p>In the end, I’m extremely proud of what I was able to accomplish with this project at this stage in my design journey. And I often reminded myself of my favorite mantra that led me to product design in the first place:</p>
<blockquote>
<p><em>“All I wanted was a job like a book so good I’d be finishing it for the rest of my life.”</em></p>
</blockquote>
<p>Product design is that job for me, and I’m proud to say that while this project (and all my others) will never be fully finished, I breathed as much life into it as I could — I hope you enjoyed it!</p>
 ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
