Category: Blog

Your blog category

  • Designing for the Unexpected

    Designing for the Unexpected

    Although I’m not certain when I first heard this statement, it has stuck with me over the centuries. How do you generate solutions for scenarios you can’t think? Or create items that are functional on products that have not yet been created?

    Flash, Photoshop, and flexible pattern

    My go-to program when I first started designing websites was Photoshop. I created a 960px paint and set about creating a design that I would eventually lose information in. Set widths, fixed heights, and total placement were the keys to pixel-perfect accuracy during the development phase.

    Ethan Marcotte’s speak at An Event Off and later content” Responsive Web Design” in A List Off in 2010 changed all this. As soon as I learned about responsive style, I was convinced, but I was even terrified. The pixel-perfect models full of special figures that I had formerly prided myself on producing were no longer good enough.

    My first encounter with flexible design didn’t help my fear. My second project was to get an active fixed-width website and make it reactive. You can’t really put responsiveness at the end of a job, which I learned the hard way. To make smooth design, you need to prepare throughout the style stage.

    a novel style process

    Developing flexible or smooth sites has always been about removing limitations, producing material that can be viewed on any system. I originally used local CSS and utility classes, but it now relies on percentage-based layouts:

    .column-span-6 { width: 49%; float: left; margin-right: 0.5%; margin-left: 0.5%;}.column-span-4 { width: 32%; float: left; margin-right: 0.5%; margin-left: 0.5%;}.column-span-3 { width: 24%; float: left; margin-right: 0.5%; margin-left: 0.5%;}

    Then with Sass so I could take advantage of @includes to re-use repeated slabs of script and walk up to more semantic html:

    .logo { @include colSpan(6);}.search { @include colSpan(3);}.social-share { @include colSpan(3);}

    internet inquiries

    The next ingredient for reactive design is press queries. Without them, content would shrink to fit the available space, regardless of whether it remained readable ( The exact opposite issue resulted from the development of a mobile-first approach ).

    internet inquiries prevented this by allowing us to add breakpoints where the design could adapt. Like most people, I started out with three breakpoints: one for desktop, one for tablets, and one for mobile. Over the years, I added more and more for phablets, wide screens, and so on. 

    For years, I happily worked this way and improved both my design and front-end skills in the process. The only problem I encountered was making changes to content, since with our Sass grid system in place, there was no way for the site owners to add content without amending the markup—something a small business owner might struggle with. This is because each row in the grid was defined using a div as a container. Adding content meant creating new row markup, which requires a level of HTML knowledge.

    String premium was a mainstay of early flexible design, present in all the frequently used systems like Bootstrap and Skeleton.

    1 of 7
    2 of 7
    3 of 7
    4 of 7
    5 of 7
    6 of 7
    7 of 7

    Another difficulty arose as I moved from a design firm building websites for smaller- to medium-sized companies, to larger in-house teams where I worked across a collection of related sites. In those capacities, I began to work more with washable parts.

    Our rely on multimedia queries resulted in parts that were tied to frequent window sizes. If modify is the goal of part libraries, then this is a real issue because you can just use these components if the devices you’re designing for match the window sizes in the design library, which prevents you from actually achieving the “devices that don’t yet occur” goal.

    Then there’s the problem of space. internet inquiries allow components to adapt based on the viewport size, but what if I put a component into a sidebar, like in the figure below?

    Container queries: a false dawn or our savior?

    Container queries have long been touted as an improvement upon media queries, but at the time of writing are unsupported in most browsers. Although there are JavaScript workarounds, they can lead to dependability and compatibility issues. The basic theory underlying container queries is that elements should change based on the size of their parent container and not the viewport width, as seen in the following illustrations.

    One of the biggest arguments in favor of container queries is that they help us create components or design patterns that are truly reusable because they can be picked up and placed anywhere in a layout. This is a significant step in the direction of a component-based design that can be used on any device of any size.

    In other words, responsive components to replace responsive layouts.

    Container queries will enable us to design components that can be placed in a sidebar or in the main content and respond accordingly rather than designing pages that respond to the browser or device size.

    My concern is that we are still using layout to determine when a design needs to adapt. This strategy will always be restrictive because we will still require pre-defined breakpoints. For this reason, my main question with container queries is, How would we decide when to change the CSS used by a component?

    The best place to make that choice is probably not a component library that is disconnected from context and real content.

    As the diagrams below illustrate, we can use container queries to create designs for specific container widths, but what if I want to change the design based on the image size or ratio?

    In this instance, the container’s dimensions are not what should be used to dictate the design; rather, the image is.

    It’s hard to say for sure whether container queries will be a success story until we have solid cross-browser support for them. Responsive component libraries would undoubtedly change the way we design, and they would increase the possibilities for reuse and design at scale. But maybe we will always need to adjust these components to suit our content.

    CSS is evolving.

    Whilst the container query debate rumbles on, there have been numerous advances in CSS that change the way we think about design. The days of fixed-width elements measured in pixels and floated div elements used to cobble layouts together are long gone, consigned to history along with table layouts. Flexbox and CSS Grid have revolutionized layouts for the web. We can now create elements that wrap onto new rows when they run out of space, not when the device changes.

    .wrapper { display: grid; grid-template-columns: repeat(auto-fit, 450px); gap: 10px;}

    The repeat() function paired with auto-fit or auto-fill allows us to specify how much space each column should use while leaving it up to the browser to decide when to spill the columns onto a new line. Similar things can be achieved with Flexbox, as elements can wrap over multiple rows and “flex” to fill available space. 

    .wrapper { display: flex; flex-wrap: wrap; justify-content: space-between;}.child { flex-basis: 32%; margin-bottom: 20px;}

    The biggest benefit of all this is you don’t need to wrap elements in container rows. Without rows, content is not directly linked to page markup, allowing for content removals or additions without further development.

    This is a significant improvement when it comes to developing designs that allow for dynamic content, but CSS Subgrid is the real game changer for flexible designs.

    Remember the days of crafting perfectly aligned interfaces, only for the customer to add an unbelievably long header almost as soon as they’re given CMS access, like the illustration below?

    Subgrid allows elements to respond to adjustments in their own content and in the content of sibling elements, helping us create designs more resilient to change.

    .wrapper { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); grid-template-rows: auto 1fr auto; gap: 10px;}.sub-grid { display: grid; grid-row: span 3; grid-template-rows: subgrid; /* sets rows to parent grid */}

    CSS Grid allows us to separate layout and content, thereby enabling flexible designs. Subgrid also enables us to create designs that can change to fit changing content. Subgrid at the time of writing is only supported in Firefox but the above code can be implemented behind an @supports feature query.

    Intrinsic layouts

    I’d be remiss not to mention intrinsic layouts, the term created by Jen Simmons to describe a mixture of new and old CSS features used to create layouts that respond to available space.

    Columns with percentages are flexible in responsive layouts. Intrinsic layouts, on the other hand, use the fr unit to create flexible columns that won’t ever shrink so much that they render the content illegible.

    frunits is a statement that says I want you to distribute the extra space in this manner, but never that it should be smaller than the content inside.

    —Jen Simmons,” Designing Intrinsic Layouts”

    Intrinsic layouts can also make use of a mix of fixed and flexible units, letting the content choose how much space it occupies.

    What distinguishes intrinsic design is that it not only creates designs that can withstand future devices but also helps scale designs without losing flexibility. Components and patterns can be lifted and reused without the prerequisite of having the same breakpoints or the same amount of content as in the previous implementation.

    They now have the ability to adapt to the content both inside and outside of them. With an intrinsic approach, we can construct responsive components without depending on container queries.

    Another 2010 moment?

    This intrinsic approach should in my view be every bit as groundbreaking as responsive web design was ten years ago. It’s another “everything changed” moment for me.

    But it doesn’t seem to be moving quite as fast, I haven’t yet had that same career-changing moment I had with responsive design, despite the widely shared and brilliant talk that brought it to my attention.

    One possible explanation for that might be that I now work for a sizable company, which is significantly different from the role I held as a design agency in 2010: In my agency days, every new project was a clean slate, a chance to try something new. Modern projects frequently improve existing websites with an existing codebase and use existing tools and frameworks.

    Another could be that I feel more prepared for change now. I was new to design in general in 2010; the shift was frightening and required a lot of learning. Also, an intrinsic approach isn’t exactly all-new, it’s about using existing skills and existing CSS knowledge in a different way.

    You can’t framework your way out of a content issue.

    Another reason for the slightly slower adoption of intrinsic design could be the lack of quick-fix framework solutions available to kick-start the change.

    Ten years ago, responsive grid systems were everywhere. With a framework like Bootstrap or Skeleton, you had a responsive design template at your fingertips.

    Because having a selection of units is a hindrance when creating layout templates, intrinsic design and frameworks do not work together quite as well. The beauty of intrinsic design is combining different units and experimenting with techniques to get the best for your content.

    Additionally, there are design tools. We probably all, at some point in our careers, used Photoshop templates for desktop, tablet, and mobile devices to drop designs in and show how the site would look at all three stages.

    How do you do that right away, with each component responding to content and layout flexing as and when necessary? This type of design must happen in the browser, which personally I’m a big fan of.

    Another topic that has persisted for years is the debate over “whether designers should code.” When designing a digital product, we should, at the very least, design for a best- and worst-case scenario when it comes to content. It’s not ideal to do this in a graphics-based software package. In code, we can add longer sentences, more radio buttons, and extra tabs, and watch in real time as the design adapts. Does it continue to function? Is the design too reliant on the current content?

    I’m personally anticipating the day when a design component can truly be flexible and adapt to both its space and content without relying on the device or container dimensions. This is the day.

    Content first

    Content is not a fixed thing. After all, to design for the unknown or unexpected we need to account for content changes like our earlier Subgrid card example that allowed the cards to respond to adjustments to their own content and the content of sibling elements.

    Thankfully, there’s more to CSS than layout, and plenty of properties and values can help us put content first. Subgrid and pseudo-elements like ::first-line and ::first-letter help to separate design from markup so we can create designs that allow for changes.

    Instead of the dated markup tricks below,

    First line of text with different styling...

    —we can target content based on where it appears.

    .element::first-line { font-size: 1.4em;}.element::first-letter { color: red;}

    Much bigger additions to CSS include logical properties, which change the way we construct designs using logical dimensions (start and end) instead of physical ones (left and right), something CSS Grid also does with functions like min(), max(), and clamp().

    This flexibility allows for directional changes according to content, a common requirement when we need to present content in multiple languages. This was frequently accomplished with Sass mixins in the past, but it was frequently limited to a switch from a left-to-right to a right-to-left orientation.

    In the Sass version, directional variables need to be set.

    $direction: rtl;$opposite-direction: ltr;$start-direction: right;$end-direction: left;

    These variables can be used as values.

    body { direction: $direction; text-align: $start-direction;}

    —or as properties.

    margin-#{$end-direction}: 10px;padding-#{$start-direction}: 10px;

    However, with native logical properties, there is no longer a need to rely on Sass ( or another similar tool ) or pre-planning, which made using variables throughout a codebase necessary. These properties also start to break apart the tight coupling between a design and strict physical dimensions, creating more flexibility for changes in language and in direction.

    margin-block-end: 10px;padding-block-start: 10px;

    There are also native start and end values for properties like text-align, which means we can replace text-align: right with text-align: start.

    Like the earlier examples, these properties help to build out designs that aren’t constrained to one language, the design will reflect the content’s needs.

    Fluid and fixed

    We briefly covered the power of combining fixed widths with fluid widths with intrinsic layouts. The min() and max() functions are a similar concept, allowing you to specify a fixed value with a flexible alternative. 

    For min() this means setting a fluid minimum value and a maximum fixed value.

    .element { width: min(50%, 300px);}

    As long as the element’s width is not greater than 300px, the element in the figure above will cover 50 % of its container.

    For max() we can set a flexible max value and a minimum fixed value.

    .element { width: max(50%, 300px);}

    As long as the element’s width is at least 300px, it will now cover 50 % of its container. This means we can set limits but allow content to react to the available space.

    The clamp() function builds on this by allowing us to set a preferred value with a third parameter. Now we can allow the element to shrink or grow if it needs to without getting to a point where it becomes unusable.

    .element { width: clamp(300px, 50%, 600px);}

    This time, the element’s width will be 50 % of its container’s preferred value, with no exceptions for 300px and 600px.

    With these techniques, we have a content-first approach to responsive design. We can’t change markup because content can’t be changed, so user modifications won’t have an impact on the design. We can start to future-proof designs by planning for unexpected changes in language or direction. Additionally, we can increase flexibility by specifying desired dimensions alongside adaptable alternatives, which will allow for the display of more or less content correctly.

    Situation first

    We can address device flexibility by changing our approach, which focuses on content and space rather than devices, as we’ve discussed so far. But what about that last bit of Jeffrey Zeldman’s quote,”… situations you haven’t imagined”?

    It’s a completely different design process for someone using a mobile phone and moving through a crowded street in glaring sunshine from a person using a desktop computer. Situations and environments are hard to plan for or predict because they change as people react to their own unique challenges and tasks.

    This is why making a decision is so crucial. One size never fits all, so we need to design for multiple scenarios to create equal experiences for all our users.

    Thankfully, there is a lot we can do to give people choices.

    Responsible design

    ” Mobile data is prohibitively expensive in some places around the world, and broadband infrastructure is sparse or absent.”

    I Used the Web for a Day on a 50 MB Budget

    Chris Ashton

    One of the biggest assumptions we make is that people interacting with our designs have a good wifi connection and a wide screen monitor. However, our users may be commuters using smaller mobile devices that may experience drops in connectivity while traveling on trains or other modes of transportation. There is nothing more frustrating than a web page that won’t load, but there are ways we can help users use less data or deal with sporadic connectivity.

    The srcset attribute allows the browser to decide which image to serve. This means we can create smaller ‘cropped’ images to display on mobile devices in turn using less bandwidth and less data.

    Image alt text

    The preload attribute can also help us to think about how and when media is downloaded. It can be used to tell a browser about any critical assets that need to be downloaded with high priority, improving perceived performance and the user experience. 

      

    Additionally, there is native lazy loading, which indicates that only required files should be downloaded for use.

    …

    With srcset, preload, and lazy loading, we can start to tailor a user’s experience based on the situation they find themselves in. What none of this does, however, is allow the user themselves to decide what they want downloaded, as the decision is usually the browser’s to make. 

    So how can we put users in control?

    The return of media inquiries

    internet inquiries have always been about much more than device sizes. They allow content to adapt to different situations, with screen size being just one of them.

    We’ve long been able to check for media types like print and speech and features such as hover, resolution, and color. Because of these checks, we can offer options that work for more than one situation. It’s less about one-size-fits-all and more about providing adaptable content.

    As of this writing, the Media Queries Level 5 spec is still under development. It introduces some really intriguing queries that will enable us to design for a number of other unanticipated situations in the future.

    For example, there’s a light-level feature that allows you to modify styles if a user is in sunlight or darkness. These features, which have custom properties, make it simple to create designs or themes for particular environments.

    @media (light-level: normal) { --background-color: #fff; --text-color: #0b0c0c; }@media (light-level: dim) { --background-color: #efd226; --text-color: #0b0c0c;}

    Another key feature of the Level 5 spec is personalization. Instead of creating designs that are the same for everyone, users can choose what works for them. This is achieved by using features like prefers-reduced-data, prefers-color-scheme, and prefers-reduced-motion, the latter two of which already enjoy broad browser support. These features tap into preferences set via the operating system or browser so people don’t have to spend time making each site they visit more usable. 

    internet inquiries like this go beyond choices made by a browser to grant more control to the user.

    Expect the unanticipated

    In the end, the one thing we should always expect is for things to change. With foldable screens already available on the market, devices especially change more quickly than we can keep up.

    We can’t design the same way we have for this ever-changing landscape, but we can design for content. We can create more robust, flexible designs that increase the longevity of our products by putting content first and allowing that content to adapt to whatever space surrounds it.

    A lot of the CSS discussed here is about moving away from layouts and putting content at the heart of design. There is a lot more we can do to adopt a more intrinsic approach, from responsive components to fixed and fluid units. Even better, we can test these techniques during the design phase by designing in-browser and watching how our designs adapt in real-time.

    When it comes to unexpected circumstances, we must make sure our goods are accessible whenever and wherever needed. We can move closer to achieving this by involving users in our design decisions, by creating choice via browsers, and by giving control to our users with user-preference-based media queries.

    A good design for the unexpected should allow for change, give choice, and give control to those we serve: our users themselves.

  • Design for Safety, An Excerpt

    Design for Safety, An Excerpt

    According to anti-racist analyst Kim Crayton, “intention without plan is chaos.” We’ve discussed how our prejudices, beliefs, and carelessness toward marginalized and resilient parties lead to dangerous and irresponsible tech—but what, precisely, do we need to do to fix it? We need a strategy, not just the desire to make our software safer.

    This book will provide you with that plan of action. It covers how to incorporate safety concepts into your design work to create healthy technology, how to persuade stakeholders that this work is required, and how to respond to criticism that there isn’t really enough diversity. ( Spoiler: we do, but diversity alone is not the antidote to fixing unethical, unsafe tech. )

    The procedure for ensuring equitable safety

    When you are designing for health, your goals are to:

    • determine the best ways to abuse your item.
    • style ways to prevent the maltreatment, and
    • offer assistance for harmed people to regain control and power.

    The Process for Inclusive Safety is a tool to help you reach those goals ( Fig 5.1 ). I developed this strategy in 2018 to better understand the various methods I used to create products that were designed with safety in mind. Whether you are creating an entirely new product or adding to an existing element, the Process can help you produce your product secure and diverse. Five main public areas of action are included in the Process:

    • Conducting study
    • creating themes
    • Pondering problems
    • creating answers
    • Testing for security

    It is intended to be flexible, so teams might not want to apply every action in all circumstances. Use the parts that are related to your special function and environment, this is meant to be something you can put into your existing style process.

    And if you’ve used it, if you’ve got ideas for improving it, or just want to give an example of how it helped your staff, please get in touch with me. It’s a dwelling report that I hope will continue to be a helpful and practical tool that technicians can use in their day-to-day job.

    If you’re developing a product especially for a defenseless group or victims of some kind of stress, like an application for victims of domestic violence, sexual abuse, or drug habit, make sure to read Chapter 7, which specifically addresses the issue and should be handled a little different. The guidelines below are for evaluating safety when designing a more basic product that will have a large customer base ( which, we now know from data, will include specific groups that should be protected from harm ). Chapter 7 concentrates on goods made especially for those who are most vulnerable and those who have gone through stress.

    Step 1: Do study

    A thorough examination of how your technology might be used to abuse people as well as a detailed analysis of the experiences of those who have survived and perpetrated that kind of abuse should be included in the design research. At this stage, you and your group does investigate issues of emotional damage and abuse, and examine any other safety, security, or inclusivity issues that might be a concern for your product or service, like data security, prejudiced algorithms, and harassment.

    broad-based research

    Your project should begin with broad, general research into similar products and issues around safety and ethical concerns that have already been reported. A team building a smart home device would be wise to comprehend the many ways that already-existing smart home devices have been misused as abuse tools. If your product will involve AI, seek to understand the potentials for racism and other issues that have been reported in existing AI products. Nearly all different types of technology have some sort of potential or actual harm that has been covered in the media or written about by academics. Google Scholar is a useful tool for finding these studies.

    Specific research: Survivors

    When possible and appropriate, include direct research ( surveys and interviews ) with people who are experts in the forms of harm you have uncovered. In order to gain a better understanding of the subject and be better positioned to avoid traumatizing survivors, you should first interview those who work in the area of your research. If you’ve uncovered possible domestic violence issues, for example, the experts you’ll want to speak with are survivors themselves, as well as workers at domestic violence hotlines, shelters, other related nonprofits, and lawyers.

    It is important to pay people for their knowledge and lived experiences, especially when interviewing survivors of any kind of trauma. Don’t ask survivors to share their trauma for free, as this is exploitative. You should always make the offer in the first interview, even though some survivors might not want to be paid. An alternative to payment is to donate to an organization working against the type of violence that the interviewee experienced. In Chapter 6, we’ll discuss more about how to appropriately interview survivors.

    Specific research: Abusers

    Teams aiming to design for safety are unlikely to be able to interview self-declared abductors or those who have broken laws in areas like hacking. Don’t make this a goal, rather, try to get at this angle in your general research. Attempt to understand how abusers or bad actors use technology to harm others, how they use it against others, and how they justify or explain the abuse.

    Step 2: Create archetypes

    Use your research after you’ve finished conducting it to create abuser and survivor archetypes. Archetypes are not personas, as they’re not based on real people that you interviewed and surveyed. Instead, they are based on your investigation into potential safety problems, much like when we design for accessibility: we don’t need to have identified any blind or deaf people in our interview pool to come up with a design that is representative of them. Instead, we base those designs on existing research into what this group needs. While archetypes are broad and can be more generalized, real users typically represent real users and contain many details.

    The abuser archetype is someone who will look at the product as a tool to perform harm ( Fig 5.2 ). They may be attempting to harm someone they don’t know by using surveillance or anonymous harassment, or they may be trying to control, monitor, abuse, or otherwise torment someone they know.

    The survivor archetype describes a person who is being abused with the product. There are various situations to consider in terms of the archetype’s understanding of the abuse and how to put an end to it: Do they need proof of abuse they already suspect is happening, or are they unaware they’ve been targeted in the first place and need to be alerted ( Fig 5.3 )?

    To capture a range of experiences, you might want to create several survivor archetypes. They may know that the abuse is happening but not be able to stop it, like when an abuser locks them out of IoT devices, or they know it’s happening but don’t know how, such as when a stalker keeps figuring out their location ( Fig 5.4). Include as many of these scenarios in your survivor archetype as you need. You’ll use these later on when you design solutions to help your survivor archetypes achieve their goals of preventing and ending abuse.

    It may be useful for you to create persona-like artifacts for your archetypes, such as the three examples shown. Focus on their objectives rather than the demographic details we frequently see in personas. The goals of the abuser will be to carry out the specific abuse you’ve identified, while the goals of the survivor will be to prevent abuse, understand that abuse is happening, make ongoing abuse stop, or regain control over the technology that’s being used for abuse. Later, you’ll think about how to help the survivor’s goals and the abuser’s goals.

    And while the “abuser/survivor” model fits most cases, it doesn’t fit all, so modify it as you need to. For instance, if you found a security flaw, such as the ability for someone to hack into a home camera system and talk to kids, the malicious hacker would receive the abuser archetype and the child’s parents would receive the survivor archetype.

    Step 3: Brainstorm problems

    Brainstorm novel abuse cases and safety concerns after creating archetypes. ” Novel” means things not found in your research, you’re trying to identify completely new safety issues that are unique to your product or service. This step is intended to exhaust every effort put forth to identify potential harms your product might cause. You aren’t worrying about how to prevent the harm yet—that comes in the next step.

    How else could your product be used for any kind of abuse besides what you’ve already found in your research? I recommend setting aside at least a few hours with your team for this process.

    Try conducting a Black Mirror brainstorming session if you want to start somewhere. This exercise is based on the show Black Mirror, which features stories about the dark possibilities of technology. Find out the most outrageous, horrible, and out-of-control ways your product could be used for harm in an episode of the show. When I’ve led Black Mirror brainstorms, participants usually end up having a good deal of fun ( which I think is great—it’s okay to have fun when designing for safety! ). I suggest time-boxing a Black Mirror brainstorm for the first half an hour, then dialing back, and using the remaining time to consider more plausible forms of harm.

    After you’ve identified as many opportunities for abuse as possible, you may still not feel confident that you’ve uncovered every potential form of harm. When you’re doing this kind of work, a healthy amount of anxiety is normal. It’s common for teams designing for safety to worry,” Have we really identified every possible harm? What if something is missing? If you’ve spent at least four hours coming up with ways your product could be used for harm and have run out of ideas, go to the next step.

    It’s impossible to say 100 % assurance that you’ve done everything, but instead of aiming for 100 %, acknowledge that you’ve done it and will continue to prioritize safety in the future. Once your product is released, your users may identify new issues that you missed, aim to receive that feedback graciously and course-correct quickly.

    4: Create solutions

    At this point, you should have a list of ways your product can be used for harm as well as survivor and abuser archetypes describing opposing user goals. Next, it is important to figure out how to design in opposition to the identified abuser’s objectives and to support the survivor’s objectives. This step is a good one to insert alongside existing parts of your design process where you’re proposing solutions for the various problems your research uncovered.

    Questions to ask yourself include: What are some ways to protect your archetypes and to support your self-identity?

    • Can you design your product in such a way that the identified harm cannot happen in the first place? If not, what barriers can you place to stop the harm from occurring?
    • How can you make the victim aware that abuse is happening through your product?
    • How can you explain to the victim what they must do to stop the problem?
    • Can you identify any types of user activity that would indicate some form of harm or abuse? Could your product provide support for the user?

    In some products, it’s possible to proactively recognize that harm is happening. For instance, a pregnancy app might allow users to report being assault victims, which could result in an offer to receive resources from local and national organizations. This sort of proactiveness is not always possible, but it’s worth taking a half hour to discuss if any type of user activity would indicate some form of harm or abuse, and how your product could assist the user in receiving help in a safe manner.

    Nonetheless, be careful when doing anything that could harm a user if their devices are being monitored. If you do offer some kind of proactive help, always make it voluntary, and think through other safety issues, such as the need to keep the user in-app in case an abuser is checking their search history. In the next chapter, we’ll walk through a good illustration of this.

    Step 5: Test for safety

    The final step is to evaluate the prototypes against the perspectives of your archetypes, who wants to harm the product or the victim of the harm who needs to regain control of the technology. Just like any other kind of product testing, at this point you’ll aim to rigorously test out your safety solutions so that you can identify gaps and correct them, validate that your designs will help keep your users safe, and feel more confident releasing your product into the world.

    Safety testing should be performed in addition to usability testing. If you’re at a company that doesn’t do usability testing, you might be able to use safety testing to cleverly perform both, a user who goes through your design attempting to weaponize the product against someone else can also be encouraged to point out interactions or other elements of the design that don’t make sense to them.

    If your final prototype or the finished product has already been released, you’ll want to conduct safety testing on both. There’s nothing wrong with testing an existing product that wasn’t designed with safety goals in mind from the onset —”retrofitting” it for safety is a good thing to do.

    Keep in mind that testing for safety involves both an abuser and a survivor’s perspective, even though it might not make sense for you to do both. Alternatively, if you made multiple survivor archetypes to capture multiple scenarios, you’ll want to test from the perspective of each one.

    You as the designer are most likely too closely connected to the product and its design at this point, just like other types of usability testing, and you know the product too well. Instead of doing it yourself, set up testing as you would with other usability testing: find someone who is not familiar with the product and its design, set the scene, give them a task, encourage them to think out loud, and observe how they attempt to complete it.

    Abuse testing

    The goal of this testing is to understand how easy it is for someone to weaponize your product for harm. You want to make it impossible, or at least difficult for them to accomplish their goal, unlike with usability testing. Reference the goals in the abuser archetype you created earlier, and use your product in an attempt to achieve them.

    For instance, we can imagine that the abuser archetype would have the goal of discovering where his ex-girlfriend currently lives in a fitness app with GPS-enabled location features. With this goal in mind, you’d try everything possible to figure out the location of another user who has their privacy settings enabled. You might try to follow her running routes, view any information she has on her profile, view any information she has made private, and check out other users ‘ profiles, such as those of her followers.

    If by the end of this you’ve managed to uncover some of her location data, despite her having set her profile to private, you know now that your product enables stalking. Returning to step 4 and figuring out how to stop this from occurring is your next step. You may need to repeat the process of designing solutions and testing them more than once.

    Survivor testing

    Survivor testing involves identifying how to give information and power to the survivor. Depending on the product or context, it might not always make sense. Thwarting the attempt of an abuser archetype to stalk someone also satisfies the goal of the survivor archetype to not be stalked, so separate testing wouldn’t be needed from the survivor’s perspective.

    There are times, however, when it makes sense. For example, for a smart thermostat, a survivor archetype’s goals would be to understand who or what is making the temperature change when they aren’t doing it themselves. If you couldn’t find the information in step 4, you would need to perform more work in step 4. You could test this by looking for the thermostat’s history log and looking for usernames, actions, and times.

    Another goal might be regaining control of the thermostat once the survivor realizes the abuser is remotely changing its settings. Your test would involve trying to figure out how to do this: are there instructions on how to remove and change the password, and are they simple to locate? This might again reveal that more work is needed to make it clear to the user how they can regain control of the device or account.

    stress testing

    To make your product more inclusive and compassionate, consider adding stress testing. This idea is a result of Design for Real Life by Sara Wachter-Boettcher and Eric Meyer. The authors pointed out that personas typically center people who are having a good day—but real users are often anxious, stressed out, having a bad day, or even experiencing tragedy. These are known as” stress cases,” and testing your products for users in stress-case scenarios can reveal areas where your design lacks compassion. Design for Real Life has more details about what it looks like to incorporate stress cases into your design as well as many other great tactics for compassionate design.

  • Sustainable Web Design, An Excerpt

    Sustainable Web Design, An Excerpt

    Some members of the elite running group were beginning to think it was impossible to run a hour in less than four hours in the 1950s. Riders had been attempting it since the later 19th century and were beginning to draw the conclusion that the human body just wasn’t built for the job.

    However, on May 6, 1956, Roger Bannister caught anyone by surprise. It was a cold, damp morning in Oxford, England—conditions no one expected to give themselves to record-setting—and but Bannister did really that, running a mile in 3: 59.4 and becoming the first people in the history books to run a mile in under four hours.

    The world today knew that the four-minute hour could be accomplished thanks to this change in the standard. Bannister’s history lasted just forty-six days, when it was snatched aside by American sprinter John Landy. Finally, in the same race, three athletes all managed to cross the four-minute challenge. Since therefore, over 1, 400 walkers have actually run a mile in under four days, the current document is 3: 43.13, held by Moroccan performer Hicham El Guerrouj.

    We do a lot more when we think something is possible, and we only think it can be done when we see someone else doing it once more. As for individual running speed, we also think there are strict guidelines for how a website should do.

    Establishing requirements for a green website

    The key indicators of climate performance in most big companies are very well established, such as power per square metre for homes and miles per gallon for cars. The tools and methods for calculating those measures are standardized as well, which keeps everyone on the same site when doing economic evaluations. But, we are not required to follow any specific environmental standards in the world of websites and apps, and we have only recently developed the tools and methods to do so.

    The main objective in green web layout is to reduce carbon emissions. However, it’s nearly impossible to accurately assess the amount of CO2 that a website merchandise produces. We didn’t measure the pollutants coming out of the exhaust valves on our laptops. Our websites produce far-away, invisible, and unremarkable emissions when they leave fuel and gas-burning power plants. We have no way to track the particles from a website or app up to the power station where the light is being generated and really know the exact amount of house oil produced. What then do we do?

    If we can‘t measure the actual carbon emissions, then we need to get what we can estimate. The following are the main elements that could be used as measures of coal emissions:

    1. Transfer of data
    2. Electricity’s coal power

    Let’s take a look at how we can use these indicators to calculate the energy use, and in turn the carbon footprint, of the sites and web applications we create.

    Transfer of data

    Most researchers use kilowatt-hours per gigabyte (k Wh/GB ) as a metric of energy efficiency when measuring the amount of data transferred over the internet when a website or application is used. This serves as a wonderful example of how much energy is consumed and how much coal is released. As a rule of thumb, the more files transferred, the more electricity used in the data center, telecoms systems, and end users products.

    The easiest way to calculate data exchange for a second visit for web pages is to measure the site weight, which is the page’s transfer size in kilobytes when someone first visits the page. It’s very easy to measure using the engineer equipment in any modern internet browser. Statistics for the total data transfer of any web application are frequently included in your web hosting account ( Fig. 2.1 ).

    The great thing about website weight as a parameter is that it allows us to compare the effectiveness of web pages on a level playing field without confusing the issue with frequently changing traffic volumes.

    A large scope is necessary to reduce page weight. By early 2020, the median page weight was 1.97 MB for setups the HTTP Archive classifies as “desktop” and 1.77 MB for “mobile”, with desktop increasing 36 percent since January 2016 and mobile page weights nearly doubling in the same period ( Fig 2.2 ). Image files account for the majority of this data transfer, making them the single biggest contributor to carbon emissions on a typical website.

    History clearly shows us that our web pages can be smaller, if only we set our minds to it. While most technologies, including the underlying technology of the web like data centers and transmission networks, become more and more energy efficient, websites themselves become less effective as time goes on.

    You may be aware of the idea of performance budgeting as a method for directing a project team to deliver faster user experiences. For example, we might specify that the website must load in a maximum of one second on a broadband connection and three seconds on a 3G connection. Performance budgets are upper limits rather than hazy ideas, much like speed limits while driving. As a result, the goal should always be to stay within budget.

    Designing for fast performance does often lead to reduced data transfer and emissions, but it isn’t always the case. Page weight and transfer size are more objective and reliable benchmarks for sustainable web design, whereas web performance is frequently more about the subjective perception of load times than it is about the underlying system’s actual efficiency.

    We can set a page weight budget in reference to a benchmark of industry averages, using data from sources like HTTP Archive. We can also use the page weight to compare it to competitors or the outdated website we’re replacing. For example, we might set a maximum page weight budget as equal to our most efficient competitor, or we could set the benchmark lower to guarantee we are best in class.

    If we want to take it to the next level, we could start looking at how much more popular our web pages are when people visit them frequently. Although page weight for the first time someone visits is the easiest thing to measure, and easy to compare on a like-for-like basis, we can learn even more if we start looking at transfer size in other scenarios too. For instance, visitors who load the same page more frequently are likely to have a high percentage of the files cached in their browser, which means they don’t need to move all the files on subsequent visits. Likewise, a visitor who navigates to new pages on the same website will likely not need to load the full page each time, as some global assets from areas like the header and footer may already be cached in their browser. Moving beyond the first visit and measuring page weight budgets for scenarios beyond this level of detail can help us learn even more about how to optimize efficiency for users who regularly visit our pages.

    Page weight budgets are easy to track throughout a design and development process. Although they don’t directly disclose their data on energy consumption and carbon emissions, they do provide a clear indicator of efficiency in comparison to other websites. And as transfer size is an effective analog for energy consumption, we can actually use it to estimate energy consumption too.

    In summary, less data transfer leads to more energy efficiency, which is a crucial component of reducing web product carbon emissions. The more efficient our products, the less electricity they use, and the less fossil fuels need to be burned to produce the electricity to power them. However, as we’ll see next, it’s important to take into account the source of that electricity because all web products require some power.

    Electricity’s coal power

    Regardless of energy efficiency, the level of pollution caused by digital products depends on the carbon intensity of the energy being used to power them. The term” carbon intensity” is used to describe how many grams of carbon are produced for every kilowatt-hour of electricity (gCO2/k Wh ). This varies widely, with renewable energy sources and nuclear having an extremely low carbon intensity of less than 10 gCO2/k Wh ( even when factoring in their construction ), whereas fossil fuels have very high carbon intensity of approximately 200–400 gCO2/k Wh.

    The majority of electricity is produced by national or state grids, where different levels of carbon intensity are combined with energy from a variety of sources. The distributed nature of the internet means that a single user of a website or app might be using energy from multiple different grids simultaneously, a website user in Paris uses electricity from the French national grid to power their home internet and devices, but the website’s data center could be in Dallas, USA, pulling electricity from the Texas grid, while the telecoms networks use energy from everywhere between Dallas and Paris.

    Although we don’t have complete control over the energy supply of web services, we do have some control over where our projects are hosted. With a data center using a significant proportion of the energy of any website, locating the data center in an area with low carbon energy will tangibly reduce its carbon emissions. This user-provided data is reported and mapped by Danish startup Tomorrow, and a look at their map demonstrates how, for instance, choosing a data center in France will result in significantly lower carbon emissions than choosing a data center in the Netherlands ( Fig. 2.3 ).

    However, we don’t want to move our servers too far away from our users because it requires energy to transmit data through the telecom’s networks, and the more energy is used. Just like food miles, we can think of the distance from the data center to the website’s core user base as “megabyte miles” —and we want it to be as small as possible.

    We can use website analytics to determine the country, state, or even city where our core user group is located and measure the distance from that location to the data center used by our hosting company by using the distance itself as a benchmark. This will be a somewhat fuzzy metric as we don’t know the precise center of mass of our users or the exact location of a data center, but we can at least get a rough idea.

    For instance, if a website is hosted in London but the main audience is on the United States ‘ West Coast, we could calculate the distance between San Francisco and London, which is 5,300 miles. That’s a long way! We can see how hosting it somewhere in North America, ideally on the West Coast, would significantly shorten the distance and the amount of energy needed to transmit the data. In addition, locating our servers closer to our visitors helps reduce latency and delivers better user experience, so it’s a win-win.

    Reverting it to carbon emissions

    If we combine carbon intensity with a calculation for energy consumption, we can calculate the carbon emissions of our websites and apps. A tool my team created accomplishes this by measuring the data transfer over the wire when a web page is loaded, calculating the associated electricity consumption, and then converting that data into a CO2 figure ( Fig. 2.4). It also factors in whether or not the web hosting is powered by renewable energy.

    The Energy and Emissions Worksheet that comes with this book teaches you how to take it to the next level and tailor the data more accurately to the individual aspects of your project.

    With the ability to calculate carbon emissions for our projects, we could actually expand our page weight budget and establish carbon budgets as well. CO2 is not a metric commonly used in web projects, we’re more familiar with kilobytes and megabytes, and can fairly easily look at design options and files to assess how big they are. Although translating that into carbon adds a layer of abstraction that isn’t as intuitive, carbon budgets do focus our minds on the main thing we’re trying to reduce, and this is in line with the main goal of sustainable web design: reducing carbon emissions.

    Browser Energy

    Transfer of data might be the simplest and most complete analog for energy consumption in our digital projects, but by giving us one number to represent the energy used in the data center, the telecoms networks, and the end user’s devices, it can’t offer us insights into the efficiency in any specific part of the system.

    One part of the system we can look at in more detail is the energy used by end users ‘ devices. The computational burden is increasingly shifting from the data center to the users ‘ devices, whether they are phones, tablets, laptops, desktops, or even smart TVs, as front-end web technologies advance. Modern web browsers allow us to implement more complex styling and animation on the fly using CSS and JavaScript. Additionally, JavaScript libraries like Angular and React make it possible to create applications where the” thinking” process is performed partially or completely in the browser.

    All of these advances are exciting and open up new possibilities for what the web can do to serve society and create positive experiences. However, more computation in a web browser requires more energy to be used by the user’s devices. This has implications not just environmentally, but also for user experience and inclusivity. Applications that put a lot of processing power on a user’s device unintentionally exclude those who have older, slower devices and make the batteries on phones and laptops drain more quickly. Furthermore, if we build web applications that require the user to have up-to-date, powerful devices, people throw away old devices much more frequently. This not only harms the environment, but it places a disproportionate financial burden on the poorest members of society.

    In part because the tools are limited, and partly because there are so many different models of devices, it’s difficult to measure website energy consumption on end users ‘ devices. The Energy Impact monitor inside the Safari browser’s developer console ( Fig. 2.5 ) is one of the tools we currently use.

    You are aware of the moment your computer’s cooling fans start spinning so frantically that you mistakenly believe it might take off when you load a website? That’s essentially what this tool is measuring.

    It uses these figures to create an energy impact rating and shows the percentage of CPU used and how long the CPU used when loading the web page last. It doesn’t give us precise data for the amount of electricity used in kilowatts, but the information it does provide can be used to benchmark how efficiently your websites use energy and set targets for improvement.

  • A Content Model Is Not a Design System

    A Content Model Is Not a Design System

    Do you recall the days gone by when having a successful site was sufficient? Nowadays, people are getting answers from Siri, Google seek fragments, and mobile applications, not only our websites. Organizations with forward-thinking goals have adopted an holistic content strategy that aims to reach people across a range of digital programs and platforms.

    But how can a content management system ( CMS ) be set up to reach your current and future audience? I learned the hard way that creating a content model—a concept of information types, attributes, and relationships that let people and systems understand content—with my more comfortable design-system wondering would collapse my patient’s holistic information strategy. By developing willing versions that are conceptual and that also connect related information, you can avoid that result.

    I just had the opportunity to direct the CMS application for a Fortune 500 company. The customer was excited by the benefits of an holistic information plan, including material modify, multichannel marketing, and robot delivery—designing content to be comprehensible to bots, Google knowledge panels, snippets, and voice user interfaces.

    A content type is essential for an omnichannel articles strategy, and the model needed conceptual types, which are types of types that are categorized according to their meaning rather than their presentation. Our objective was to allow writers to write articles and use it where necessary. However, as the project progressed, I realized that the entire group had to be aware of a new design in order to support material reuse on the level that my customer needed.

    Despite our best motives, we kept drawing from what we were more common with: design techniques. Unlike web-focused material strategies, an holistic information strategy doesn’t rely on WYSIWYG equipment for design and structure. Our inclination to approach the material model using our well-known design-system thinking consistently stifled our attention from one of the main objectives of a willing model: delivering content to audiences across multiple marketing channels.

    Two fundamental tenets are necessary for a successful content type

    We needed to explain to our designers, developers, and stakeholders that we were doing something completely different from their previous internet projects, where everyone assumed that content would fit into layouts as physical building blocks. The past approach made the designs feel more recognizable and intuitive, at first, at least because it was more common and also more intuitive. We discovered two guiding principles that helped the group grasp how a willing model and the design processes we were familiar with were:

    1. Instead of design, content models may establish semantics.
    2. And glad models may connect elements that belong together.

    Conceptual articles models

    A conceptual content type uses form and attribute names that reflect the content’s intended purpose and not its intended display. For instance, in a nonsemantic design, groups may produce varieties like teasers, press blocks, and cards. These types may make it simple to present information, but they do not aid in understanding the meaning of the information, which would have opened the door to the content presented in each marketing channel. To allow each distribution channel to comprehend the information and use it as it sees fit, a conceptual content type uses kind names like product, service, and testimonial.

    A great place to start when creating a conceptual content concept is by reviewing the types and qualities that Schema has defined. nonprofit, a community-driven source for type meanings that are comprehensible to platforms like Google search.

    A semantic information model has many advantages:

      A semantic material type decouples content from its presentation but that teams can change the website’s design without having to restructure its content, even if your team doesn’t worry about omnichannel content. In this way, content can withstand disruptive website redesigns.
    • A semantic content model also gives you a competitive advantage. by including schema-based structured data. org’s types and properties, a website can provide hints to help Google understand the content, display it in search snippets or knowledge panels, and use it to answer voice-interface user questions. Potential customers could access your content without ever visiting your website.
    • Beyond those practical advantages, you’ll also require an omnichannel content delivery model. Delivery channels must be able to comprehend the same content in order to use it across multiple marketing channels. For instance, if your content model provided a list of questions and answers, it could be easily displayed on a frequently asked questions ( FAQ ) page as well, but it could also be used by a bot that answers frequently asked questions.

    For example, using a semantic content model for articles, events, people, and locations lets A List Apart provide cleanly structured data for search engines so that users can read the content on the website, in Google knowledge panels, and even with hypothetical voice interfaces in the future.

    Content models that connect

    Instead of slicing up related content across disparate content components, I’ve come to the realization that the best models are those that are semantic and also connect related content components ( such as a FAQ item’s question and answer pair ). Content that needs to be reused by multiple delivery channels can be connected to each other without having to assemble those pieces again in a good content model.

    Write an essay or article about it. An article’s meaning and usefulness depends upon its parts being kept together. Without the full context of the article, would one of the headings or paragraphs have any relevance on their own? Our well-known design-system thinking on our project frequently led us to want to develop content models that would divide content into distinct chunks to fit the web-centric layout. Similar effects could have been felt to an article that had its headline removed. Because we were dividing content into separate pieces based on layout, content that belonged together became challenging to manage and nearly impossible for multiple delivery channels to comprehend.

    To illustrate, let’s look at how connecting related content applies in a real-world scenario. A complex layout for a software product page that included multiple tabs and sections was presented by the client’s design team. Our instincts were to follow the content model’s. Shouldn’t we make adding any number of tabs in the future as simple and as flexible as possible?

    We felt like we needed a “tab section” content type because our design-system instincts allowed for the addition of multiple tab sections to a page because they were so well-versed. Each tab section would display a variety of content. One tab might provide the software’s overview or its specifications. Another tab might provide a list of resources.

    Our tendency to divide the content model into “tab section” pieces would have resulted in a cumbersome editing process, as well as unnecessarily complex content that couldn’t have been digested by additional delivery channels. How would another system have resorted to counting tab sections and content blocks, for instance, if it had been able to identify a product’s “tab section” when referring to its specifications or resource list? This would have prevented the tabs from ever being rearranged, and it would have required adding logic to each other delivery channel to interpret the layout of the design system. Additionally, it would have been difficult to migrate to a new content model in response to the new page redesign if the customer had decided against displaying this content in a tab layout.

    We had a breakthrough when we discovered that our customer had a specific purpose in mind for each tab: it would reveal specific information such as the software product’s overview, specifications, related resources, and pricing. Our desire to concentrate on what was visually and historically significant had obscured the purpose of the designs once implementation began. With a little digging, it didn’t take long to realize that the concept of tabs wasn’t relevant to the content model. What was important was the meaning of the content they were planning to display in the tabs.

    In fact, the customer could have chosen to display this content elsewhere, without tabs. In response to this realization, we created content types for the software product based on the meaningful attributes the client wanted to display on the web. There were obvious semantic attributes like name and description as well as rich attributes like screenshots, software requirements, and feature lists. The software’s product information stayed together because it wasn’t sliced across separate components like “tab sections” that were derived from the content’s presentation. Any delivery channel—including future ones—could understand and present this content.

    Conclusion

    In this omnichannel marketing project, we discovered that the best way to maintain the content model’s semantic consistency was by ensuring that it was semantic ( with type and attribute names that reflected the content’s meaning ) and that it maintained content that belonged together ( as opposed to fragmenting it ). These two ideas made it easier for us to decide what to do with the content model based on the design. Remember: If you’re developing a content model to support an omnichannel content strategy, or even if you just want to make sure that Google and other interfaces understand your content, keep in mind:

    • A design system isn’t a content model. You should maintain the semantic value and contextual structure of the content strategy throughout the entire implementation process because team members might be tempted to combine them and to make your content model resemble your design system. This will enable each delivery channel to consume the content without the need for a magic decoder ring.
    • You can still use Schema if your team is having trouble making this transition. org–based structured data in your website. The benefit of search engine optimization is a compelling reason on its own, even if additional delivery channels aren’t on the horizon in the near future.
    • Remind the team that separating the content model from the design will allow them to update the designs more quickly because they won’t be hindered by the cost of content migrations. They will be prepared for the upcoming big thing, and they will be able to create new designs without compromising the compatibility between the content and the design.

    By firmly defending these ideas, you’ll help your team treat content the way it deserves as the most important component of your user experience and the best way to engage with your audience.

  • Breaking Out of the Box

    Breaking Out of the Box

    CSS is all about appearance containers. In fact, the whole website is made of containers, from the website viewport to components on a webpage. However, there are times when we have a fresh element that forces us to reevaluate our design strategy.

    Square features, for instance, make it fun to play with round picture areas. Finding the best way to organize articles that stays out of reach with smart screen notches and electronic keyboards is challenging. And two display or portable devices make us reassess how to best utilize available space in a number of various device postures.

    These new evolutions of the internet system made it both more demanding and more exciting to design products. They’re fantastic options for us to leave our triangular boxes.

    I’d like to talk about a new feature similar to the above: the Window Controls Overlay for Progressive Web Apps ( PWAs ).

    Democratic Web Apps are bridging the gap between websites and apps. They combine the best of both worlds. On the one hand, they are flexible, shareable, and stable, just like websites. On the other hand, they provide more effective features, work online, and read documents just like local apps.

    PWAs are really exciting as a style area because they challenge us to consider how to combine online and native user interface. On desktop products in certain, we have more than 40 years of history telling us what software may look like, and it can be hard to break out of this mental concept.

    PWAs on desktop are ultimately limited to the top of a rectangle with a title bar.

    Here’s what a typical desktop PWA app looks like:

    Sure, as the author of a PWA, you get to choose the color of the title bar (using the Web Application Manifest theme_color property ), but that’s about it.

    What if we could look beyond this box and reclaim the entire window of the app? Doing so would give us a chance to make our apps more beautiful and feel more integrated in the operating system.

    This is exactly what the Window Controls Overlay provides. This new PWA functionality makes it possible to take advantage of the full surface area of the app, including where the title bar normally appears.

    About the window and title bar controls

    Let’s start with an explanation of what the title bar and window controls are.

    The title bar is the window at the top of an app that typically contains the app’s name. Window controls are the affordances, or buttons, that make it possible to minimize, maximize, or close the app’s window, and are also displayed at the top.

    Window Controls Overlay removes the physical constraint of the title bar and window controls areas. The title bar and window control buttons are overlayed on top of the application’s web content, allowing for full height to be the app window.

    If you are reading this article on a desktop computer, take a quick look at other apps. They’re probably already carrying out similar tasks. In fact, the very web browser you are using to read this uses the top area to display tabs.

    Spotify displays album artwork all the way to the top edge of the application window.

    Microsoft Word uses the available title bar space to display the auto-save and search functionalities, and more.

    This feature’s main goal is to give you the ability to use this space with your own content while also providing a way to account for the window control buttons. And it enables you to offer this modified experience on a range of platforms while not adversely affecting the experience on browsers or devices that don’t support Window Controls Overlay. PWAs are all about progressive enhancement, so this feature is a chance to improve your app so that you can use this extra space when it’s available.

    Let’s use the feature

    We’ll be developing a demo app for the remainder of this article to learn more about how to use the feature.

    The demo app is called 1DIV. Users can create designs using CSS and a single HTML element in a simple CSS playground.

    The app has two pages. The first lists the CSS designs you’ve already created:

    You can edit and create CSS designs on the second page:

    Since I’ve added a simple web manifest and service worker, we can install the app as a PWA on desktop. What it appears to be on macOS is shown below:

    And on Windows:

    The first page’s white title bar is a waste of space, despite our app’s attractive design. In the second page, it would be really nice if the design area went all the way to the top of the app window.

    To enhance this, let’s use the Window Controls Overlay feature.

    Enabling Window Controls Overlay

    The film is still in its experimental phase right now. To try it, you need to enable it in one of the supported browsers.

    It has currently been implemented in Chromium as a result of a collaboration between Microsoft and Google. We can therefore use it in Chrome or Edge by going to the internal about: //flags page, and enabling the Desktop PWA Window Controls Overlay flag.

    Using Window Controls Overlay

    To use the feature, we need to add the following display_override member to our web app’s manifest file:

    { "name": "1DIV", "description": "1DIV is a mini CSS playground", "lang": "en-US", "start_url": "/", "theme_color": "#ffffff", "background_color": "#ffffff", "display_override": [ "window-controls-overlay" ], "icons": [ ... ]}

    The feature appears to be very simple to use. This manifest change is the only thing we need to make the title bar disappear and turn the window controls into an overlay.

    We’ll need a little bit of CSS and JavaScript code to make the most of the title bar area in our design and make a great experience for all users regardless of device or browser they use.

    Here is what the app looks like now:

    Our logo, search field, and NEW button are now partially obscured by the window controls because our layout now begins at the top of the window, which is what we wanted.

    It’s similar on Windows, with the difference that the close, maximize, and minimize buttons appear on the right side, grouped together with the PWA control buttons:

    Screenshot of the Windows operating system’s Window Controls Overlay-enabled 1DIV app thumbnail display. The separate top bar area is gone, but the window controls are now blocking some of the app’s content.

    CSS to avoid the window controls

    Along with the feature, new CSS environment variables have been introduced:

    • titlebar-area-x
    • titlebar-area-y
    • titlebar-area-width
    • titlebar-area-height

    You can use these variables in conjunction with the CSS env function to position your content where the title bar would have been and make sure it doesn’t overlap with the window controls. In our case, we’ll use two of the variables to position our header, which contains the logo, search bar, and NEW button.

    header { position: absolute; left: env(titlebar-area-x, 0); width: env(titlebar-area-width, 100%); height: var(--toolbar-height);}

    The titlebar-area-x variable gives us the distance from the left of the viewport to where the title bar would appear, and titlebar-area-width is its width. (Remember, this is not equivalent to the width of the entire viewport, just the title bar portion, which as noted earlier, doesn’t include the window controls.)

    By doing this, we make sure our content remains fully visible. We’re also defining fallback values (the second parameter in the env() function) for when the variables are not defined (such as on non-supporting browsers, or when the Windows Control Overlay feature is disabled).

    Our header now adapts to its surroundings, and it doesn’t seem like the window control buttons were left out. The app looks a lot more like a native app.

    Changing the window controls the background color so that it blends in

    Now let’s take a closer look at our second page: the CSS playground editor.

    Not very good. Our CSS demo area does go all the way to the top, which is what we wanted, but the way the window controls appear as white rectangles on top of it is quite jarring.

    By changing the theme color of the app, we can fix this. There are a couple of ways to define it:

      PWAs can use the theme_color manifest member to set a theme color in the web app manifest file. This color is then used by the OS in different ways. It serves as a background color for the title bar and window controls on desktop computers.
    • Websites can use the theme-color meta tag as well. It’s used by browsers to customize the color of the UI around the web page. For PWAs, this color can override the manifest theme_color.

    In our case, we can set the manifest theme_color to white to provide the right default color for our app. The OS will read this color value when the app is installed and use it to make the window controls background color white. This color works great for our main page with the list of demos.

    The theme-color meta tag can be changed at runtime, using JavaScript. So we can do that to override the white with the right demo background color when one is opened.

    Here is the function we’ll use:

    function themeWindow(bgColor) { document.querySelector("meta[name=theme-color]").setAttribute('content', bgColor);}

    With this in place, we can envision how using CSS and color transitions to smoothly transition between the list page and the demo page and make the window control buttons blend in with the rest of the app’s interface.

    Dragging the window

    Now, getting rid of the title bar entirely does have an important accessibility consequence: it’s much more difficult to move the application window around.

    Users can use the Window Controls Overlay feature to move the window, but this area becomes limited to where the control buttons are, and they must very precisely aim between these buttons to move the window. However, the title bar offers a sizable area for users to click and drag.

    Fortunately, this can be fixed using CSS with the app-region property. This property is, for now, only supported in Chromium-based browsers and needs the -webkit- vendor prefix. 

    To make any element of the app become a dragging target for the window, we can use the following:

    -webkit-app-region: drag;

    Additionally, it is possible to specify explicitly that an element be non-draggable:

    -webkit-app-region: no-drag; 

    These options can be useful for us. We can rename the entire header as a dragging target, but we can also make the NEW button and search field non-draggable so they can still be used as they normally are.

    However, because the editor page doesn’t display the header, users wouldn’t be able to drag the window while editing code. Let’s take a different strategy, then. We’ll create another element before our header, also absolutely positioned, and dedicated to dragging the window.

    ...
    .drag { position: absolute; top: 0; width: 100%; height: env(titlebar-area-height, 0); -webkit-app-region: drag;}

    With the above code, we’re making the draggable area span the entire viewport width, and using the titlebar-area-height variable to make it as tall as what the title bar would have been. This way, our draggable area is aligned with the window control buttons as shown below.

    And now, to make sure our search field and button are usable:

    header .search,header .new { -webkit-app-region: no-drag;}

    With the above code, users can click and drag where the title bar used to be. Users are expecting to be able to move windows on their desktops, and we don’t violate this expectation, which is good.

    Adapting to window resizing

    It may be useful for an app to know both whether the window controls overlay is visible and when its size changes. The search field, logo, and button would need to be pushed down a little bit if the user made the window very narrow.

    The Window Controls Overlay feature comes with a JavaScript API we can use to do this: navigator.windowControlsOverlay.

    Three intriguing things are provided by the API:

    • navigator.windowControlsOverlay.visiblelets us know whether the overlay is visible.
    • navigator.windowControlsOverlay.getBoundingClientRect()lets us know where the title bar’s area is located and how big it is.
    • navigator.windowControlsOverlay.ongeometrychangelets us know when the size or visibility changes.

    Use this to check the size of the title bar area and lower the header if it’s too small.

    if (navigator.windowControlsOverlay) { navigator.windowControlsOverlay.addEventListener('geometrychange', () => { const { width } = navigator.windowControlsOverlay.getBoundingClientRect(); document.body.classList.toggle('narrow', width < 250); });}

    In the example above, we set the narrow class on the body of the app if the title bar area is narrower than 250px. We could do something similar with a media query, but using the windowControlsOverlay API has two advantages for our use case:

    • It’s only fired when the feature is supported and used, we don’t want to adapt the design otherwise.
    • We can see the title bar area on different operating systems, which is great because Mac and Windows have different title bar sizes. Using a media query wouldn’t make it possible for us to know exactly how much space remains.
    .narrow header { top: env(titlebar-area-height, 0); left: 0; width: 100%;}

    When the window is too small, we can use the above CSS code to move our header down and move the thumbnails down in accordance with this.

    Thirty pixel of creative challenge


    Using the Window Controls Overlay feature, we were able to take our simple demo app and turn it into something that feels so much more integrated on desktop devices. Something that transcends the traditional window restrictions and offers its users a personalized experience.

    In reality, this feature only gives us about 30 pixels of extra room and comes with challenges on how to deal with the window controls. However, these additional space and those difficulties can also serve as creative outlet for creative work.

    More devices of all shapes and forms get invented all the time, and the web keeps on evolving to adapt to them. To make it easier for us, web authors, to integrate more and more deeply with those devices, new features are added to the web platform. From watches or foldable devices to desktop computers, we need to evolve our design approach for the web. We can now think beyond the rectangular box when building for the web.

    So let’s embrace this. Use the common technologies at our disposal and experiment with new concepts to create personalized experiences for all devices using just one codebase!


    If you get a chance to try the Window Controls Overlay feature and have feedback about it, you can open issues on the spec’s repository. You can help make this feature even better because it’s still in its early stages of development. Or, you can take a look at the feature’s existing documentation, or this demo app and its source code.

  • How to Sell UX Research with Two Simple Questions

    How to Sell UX Research with Two Simple Questions

    Do you find yourself designing screens with only a vague idea of how the things on the screen relate to the things elsewhere in the system? Do you leave stakeholder meetings with unclear directives that often seem to contradict previous conversations? You know a better understanding of user needs would help the team get clear on what you are actually trying to accomplish, but time and budget for research is tight. When it comes to asking for more direct contact with your users, you might feel like poor Oliver Twist, timidly asking, “Please, sir, I want some more.” 

    Here’s the trick. You need to get stakeholders themselves to identify high-risk assumptions and hidden complexity, so that they become just as motivated as you to get answers from users. Basically, you need to make them think it’s their idea. 

    In this article, I’ll show you how to collaboratively expose misalignment and gaps in the team’s shared understanding by bringing the team together around two simple questions:

    1. What are the objects?
    2. What are the relationships between those objects?

    A gauntlet between research and screen design

    These two questions align to the first two steps of the ORCA process, which might become your new best friend when it comes to reducing guesswork. Wait, what’s ORCA?! Glad you asked.

    ORCA stands for Objects, Relationships, CTAs, and Attributes, and it outlines a process for creating solid object-oriented user experiences. Object-oriented UX is my design philosophy. ORCA is an iterative methodology for synthesizing user research into an elegant structural foundation to support screen and interaction design. OOUX and ORCA have made my work as a UX designer more collaborative, effective, efficient, fun, strategic, and meaningful.

    The ORCA process has four iterative rounds and a whopping fifteen steps. In each round we get more clarity on our Os, Rs, Cs, and As.

    I sometimes say that ORCA is a “garbage in, garbage out” process. To ensure that the testable prototype produced in the final round actually tests well, the process needs to be fed by good research. But if you don’t have a ton of research, the beginning of the ORCA process serves another purpose: it helps you sell the need for research.

    In other words, the ORCA process serves as a gauntlet between research and design. With good research, you can gracefully ride the killer whale from research into design. But without good research, the process effectively spits you back into research and with a cache of specific open questions.

    Getting in the same curiosity-boat

    What gets us into trouble is not what we don’t know. It’s what we know for sure that just ain’t so.

    Mark Twain

    The first two steps of the ORCA process—Object Discovery and Relationship Discovery—shine a spotlight on the dark, dusty corners of your team’s misalignments and any inherent complexity that’s been swept under the rug. It begins to expose what this classic comic so beautifully illustrates:

    This is one reason why so many UX designers are frustrated in their job and why many projects fail. And this is also why we often can’t sell research: every decision-maker is confident in their own mental picture. 

    Once we expose hidden fuzzy patches in each picture and the differences between them all, the case for user research makes itself.

    But how we do this is important. However much we might want to, we can’t just tell everyone, “YOU ARE WRONG!” Instead, we need to facilitate and guide our team members to self-identify holes in their picture. When stakeholders take ownership of assumptions and gaps in understanding, BAM! Suddenly, UX research is not such a hard sell, and everyone is aboard the same curiosity-boat.

    Say your users are doctors. And you have no idea how doctors use the system you are tasked with redesigning.

    You might try to sell research by honestly saying: “We need to understand doctors better! What are their pain points? How do they use the current app?” But here’s the problem with that. Those questions are vague, and the answers to them don’t feel acutely actionable.

    Instead, you want your stakeholders themselves to ask super-specific questions. This is more like the kind of conversation you need to facilitate. Let’s listen in:

    “Wait a sec, how often do doctors share patients? Does a patient in this system have primary and secondary doctors?”

    “Can a patient even have more than one primary doctor?”

    “Is it a ‘primary doctor’ or just a ‘primary caregiver’… Can’t that role be a nurse practitioner?”

    “No, caregivers are something else… That’s the patient’s family contacts, right?”

    “So are caregivers in scope for this redesign?”

    “Yeah, because if a caregiver is present at an appointment, the doctor needs to note that. Like, tag the caregiver on the note… Or on the appointment?”

    Now we are getting somewhere. Do you see how powerful it can be getting stakeholders to debate these questions themselves? The diabolical goal here is to shake their confidence—gently and diplomatically.

    When these kinds of questions bubble up collaboratively and come directly from the mouths of your stakeholders and decision-makers, suddenly, designing screens without knowing the answers to these questions seems incredibly risky, even silly.

    If we create software without understanding the real-world information environment of our users, we will likely create software that does not align to the real-world information environment of our users. And this will, hands down, result in a more confusing, more complex, and less intuitive software product.

    The two questions

    But how do we get to these kinds of meaty questions diplomatically, efficiently, collaboratively, and reliably

    We can do this by starting with those two big questions that align to the first two steps of the ORCA process:

    1. What are the objects?
    2. What are the relationships between those objects?

    In practice, getting to these answers is easier said than done. I’m going to show you how these two simple questions can provide the outline for an Object Definition Workshop. During this workshop, these “seed” questions will blossom into dozens of specific questions and shine a spotlight on the need for more user research.

    Prep work: Noun foraging

    In the next section, I’ll show you how to run an Object Definition Workshop with your stakeholders (and entire cross-functional team, hopefully). But first, you need to do some prep work.

    Basically, look for nouns that are particular to the business or industry of your project, and do it across at least a few sources. I call this noun foraging.

    Here are just a few great noun foraging sources:

    • the product’s marketing site
    • the product’s competitors’ marketing sites (competitive analysis, anyone?)
    • the existing product (look at labels!)
    • user interview transcripts
    • notes from stakeholder interviews or vision docs from stakeholders

    Put your detective hat on, my dear Watson. Get resourceful and leverage what you have. If all you have is a marketing website, some screenshots of the existing legacy system, and access to customer service chat logs, then use those.

    As you peruse these sources, watch for the nouns that are used over and over again, and start listing them (preferably on blue sticky notes if you’ll be creating an object map later!).

    You’ll want to focus on nouns that might represent objects in your system. If you are having trouble determining if a noun might be object-worthy, remember the acronym SIP and test for:

    1. Structure
    2. Instances
    3. Purpose

    Think of a library app, for example. Is “book” an object?

    Structure: can you think of a few attributes for this potential object? Title, author, publish date… Yep, it has structure. Check!

    Instance: what are some examples of this potential “book” object? Can you name a few? The Alchemist, Ready Player One, Everybody Poops… OK, check!

    Purpose: why is this object important to the users and business? Well, “book” is what our library client is providing to people and books are why people come to the library… Check, check, check!

    As you are noun foraging, focus on capturing the nouns that have SIP. Avoid capturing components like dropdowns, checkboxes, and calendar pickers—your UX system is not your design system! Components are just the packaging for objects—they are a means to an end. No one is coming to your digital place to play with your dropdown! They are coming for the VALUABLE THINGS and what they can do with them. Those things, or objects, are what we are trying to identify.

    Let’s say we work for a startup disrupting the email experience. This is how I’d start my noun foraging.

    First I’d look at my own email client, which happens to be Gmail. I’d then look at Outlook and the new HEY email. I’d look at Yahoo, Hotmail…I’d even look at Slack and Basecamp and other so-called “email replacers.” I’d read some articles, reviews, and forum threads where people are complaining about email. While doing all this, I would look for and write down the nouns.

    (Before moving on, feel free to go noun foraging for this hypothetical product, too, and then scroll down to see how much our lists match up. Just don’t get lost in your own emails! Come back to me!)

    Drumroll, please…

    Here are a few nouns I came up with during my noun foraging:

    • email message
    • thread
    • contact
    • client
    • rule/automation
    • email address that is not a contact?
    • contact groups
    • attachment
    • Google doc file / other integrated file
    • newsletter? (HEY treats this differently)
    • saved responses and templates

    Scan your list of nouns and pick out words that you are completely clueless about. In our email example, it might be client or automation. Do as much homework as you can before your session with stakeholders: google what’s googleable. But other terms might be so specific to the product or domain that you need to have a conversation about them.

    Aside: here are some real nouns foraged during my own past project work that I needed my stakeholders to help me understand:

    • Record Locator
    • Incentive Home
    • Augmented Line Item
    • Curriculum-Based Measurement Probe

    This is really all you need to prepare for the workshop session: a list of nouns that represent potential objects and a short list of nouns that need to be defined further.

    Facilitate an Object Definition Workshop

    You could actually start your workshop with noun foraging—this activity can be done collaboratively. If you have five people in the room, pick five sources, assign one to every person, and give everyone ten minutes to find the objects within their source. When the time’s up, come together and find the overlap. Affinity mapping is your friend here!

    If your team is short on time and might be reluctant to do this kind of grunt work (which is usually the case) do your own noun foraging beforehand, but be prepared to show your work. I love presenting screenshots of documents and screens with all the nouns already highlighted. Bring the artifacts of your process, and start the workshop with a five-minute overview of your noun foraging journey.

    HOT TIP: before jumping into the workshop, frame the conversation as a requirements-gathering session to help you better understand the scope and details of the system. You don’t need to let them know that you’re looking for gaps in the team’s understanding so that you can prove the need for more user research—that will be our little secret. Instead, go into the session optimistically, as if your knowledgeable stakeholders and PMs and biz folks already have all the answers. 

    Then, let the question whack-a-mole commence.

    1. What is this thing?

    Want to have some real fun? At the beginning of your session, ask stakeholders to privately write definitions for the handful of obscure nouns you might be uncertain about. Then, have everyone show their cards at the same time and see if you get different definitions (you will). This is gold for exposing misalignment and starting great conversations.

    As your discussion unfolds, capture any agreed-upon definitions. And when uncertainty emerges, quietly (but visibly) start an “open questions” parking lot. 😉

    After definitions solidify, here’s a great follow-up:

    2. Do our users know what these things are? What do users call this thing?

    Stakeholder 1: They probably call email clients “apps.” But I’m not sure.

    Stakeholder 2: Automations are often called “workflows,” I think. Or, maybe users think workflows are something different.

    If a more user-friendly term emerges, ask the group if they can agree to use only that term moving forward. This way, the team can better align to the users’ language and mindset.

    OK, moving on. 

    If you have two or more objects that seem to overlap in purpose, ask one of these questions:

    3. Are these the same thing? Or are these different? If they are not the same, how are they different?

    You: Is a saved response the same as a template?

    Stakeholder 1: Yes! Definitely.

    Stakeholder 2: I don’t think so… A saved response is text with links and variables, but a template is more about the look and feel, like default fonts, colors, and placeholder images. 

    Continue to build out your growing glossary of objects. And continue to capture areas of uncertainty in your “open questions” parking lot.

    If you successfully determine that two similar things are, in fact, different, here’s your next follow-up question:

    4. What’s the relationship between these objects?

    You: Are saved responses and templates related in any way?

    Stakeholder 3:  Yeah, a template can be applied to a saved response.

    You, always with the follow-ups: When is the template applied to a saved response? Does that happen when the user is constructing the saved response? Or when they apply the saved response to an email? How does that actually work?

    Listen. Capture uncertainty. Once the list of “open questions” grows to a critical mass, pause to start assigning questions to groups or individuals. Some questions might be for the dev team (hopefully at least one developer is in the room with you). One question might be specifically for someone who couldn’t make it to the workshop. And many questions will need to be labeled “user.” 

    Do you see how we are building up to our UXR sales pitch?

    5. Is this object in scope?

    Your next question narrows the team’s focus toward what’s most important to your users. You can simply ask, “Are saved responses in scope for our first release?,” but I’ve got a better, more devious strategy.

    By now, you should have a list of clearly defined objects. Ask participants to sort these objects from most to least important, either in small breakout groups or individually. Then, like you did with the definitions, have everyone reveal their sort order at once. Surprisingly—or not so surprisingly—it’s not unusual for the VP to rank something like “saved responses” as #2 while everyone else puts it at the bottom of the list. Try not to look too smug as you inevitably expose more misalignment.

    I did this for a startup a few years ago. We posted the three groups’ wildly different sort orders on the whiteboard.

    The CEO stood back, looked at it, and said, “This is why we haven’t been able to move forward in two years.”

    Admittedly, it’s tragic to hear that, but as a professional, it feels pretty awesome to be the one who facilitated a watershed realization.

    Once you have a good idea of in-scope, clearly defined things, this is when you move on to doing more relationship mapping.

    6. Create a visual representation of the objects’ relationships

    We’ve already done a bit of this while trying to determine if two things are different, but this time, ask the team about every potential relationship. For each object, ask how it relates to all the other objects. In what ways are the objects connected? To visualize all the connections, pull out your trusty boxes-and-arrows technique. Here, we are connecting our objects with verbs. I like to keep my verbs to simple “has a” and “has many” statements.

    This system modeling activity brings up all sorts of new questions:

    • Can a saved response have attachments?
    • Can a saved response use a template? If so, if an email uses a saved response with a template, can the user override that template?
    • Do users want to see all the emails they sent that included a particular attachment? For example, “show me all the emails I sent with ProfessionalImage.jpg attached. I’ve changed my professional photo and I want to alert everyone to update it.” 

    Solid answers might emerge directly from the workshop participants. Great! Capture that new shared understanding. But when uncertainty surfaces, continue to add questions to your growing parking lot.

    Light the fuse

    You’ve positioned the explosives all along the floodgates. Now you simply have to light the fuse and BOOM. Watch the buy-in for user research flooooow.

    Before your workshop wraps up, have the group reflect on the list of open questions. Make plans for getting answers internally, then focus on the questions that need to be brought before users.

    Here’s your final step. Take those questions you’ve compiled for user research and discuss the level of risk associated with NOT answering them. Ask, “if we design without an answer to this question, if we make up our own answer and we are wrong, how bad might that turn out?” 

    With this methodology, we are cornering our decision-makers into advocating for user research as they themselves label questions as high-risk. Sorry, not sorry. 

    Now is your moment of truth. With everyone in the room, ask for a reasonable budget of time and money to conduct 6–8 user interviews focused specifically on these questions. 

    HOT TIP: if you are new to UX research, please note that you’ll likely need to rephrase the questions that came up during the workshop before you present them to users. Make sure your questions are open-ended and don’t lead the user into any default answers.

    Final words: Hold the screen design!

    Seriously, if at all possible, do not ever design screens again without first answering these fundamental questions: what are the objects and how do they relate?

    I promise you this: if you can secure a shared understanding between the business, design, and development teams before you start designing screens, you will have less heartache and save more time and money, and (it almost feels like a bonus at this point!) users will be more receptive to what you put out into the world. 

    I sincerely hope this helps you win time and budget to go talk to your users and gain clarity on what you are designing before you start building screens. If you find success using noun foraging and the Object Definition Workshop, there’s more where that came from in the rest of the ORCA process, which will help prevent even more late-in-the-game scope tugs-of-war and strategy pivots. 

    All the best of luck! Now go sell research!

  • Personalization Pyramid: A Framework for Designing with User Data

    Personalization Pyramid: A Framework for Designing with User Data

    As a UX skilled in today’s data-driven landscape, it’s extremely likely that you’ve been asked to design a personal digital experience, whether it’s a common website, user portal, or local application. Although there is still a lot of advertising hype surrounding personalization websites, there are still very some standardized methods for implementing personalized UX.

    That’s where we come in. We set ourselves the challenge of developing a systematic personalization construction tailored to UX practitioners after finishing dozens of personalization tasks over the past few years. The Personalization Pyramid is a designer-centric model for standing up human-centered customisation programs, spanning information, classification, content delivery, and general goals. By using this strategy, you will be able to understand the core elements of a modern, UX-driven personalization system ( or at the very least understand enough to get started ).

    Getting Started

    For the sake of this article, we’ll suppose you’re already familiar with the basics of online personalization. A nice guide can be found these: Website Personalization Planning. Although Graphic projects in this field can take a variety of forms, they frequently begin with similar starting points.

    Popular circumstances for launching a personalization task:

    • Your business or client made a purchase to personalize their content management system ( CMS ), marketing automation platform ( MAP ), or other related technology.
    • The CMO, CDO, or CIO has identified personalisation as a target
    • User data is disjointed or confusing
    • You are conducting some sporadic targeting strategies or A/B tests.
    • On the personalisation method, stakeholders disagree.
    • Mandate of customer privacy rules ( e. g. GDPR ) requires revisiting existing user targeting practices

    A powerful personalization plan will need the same fundamental building blocks regardless of where you begin. We’ve captured these as the “levels” on the tower. Whether you are a UX artist, scholar, or planner, understanding the core components may help make your contribution effective.

    From top to bottom, the amounts include:

      North Star: What larger geopolitical goal is the personalisation initiative pursuing?
    1. Objectives: What are the specific, tangible benefits of the system?
    2. Touchpoints: Where will the personalized experience become served?
    3. Contexts and Campaigns: What personalization information does the person view?
    4. User Sections: What constitutes a special, suitable market?
    5. What trustworthy and credible information does our professional platform collect to enable personalization?
    6. Natural Data: What wider set of data is potentially available ( now in our environment ) allowing you to optimize?

    We’ll go through each of these amounts sequentially. An associated deck of cards was created to highlight specific examples from each level to make this more practical. We’ve included examples for you here because we think they’re useful for customisation brainstorming sessions.

    Beginning at the Top

    The elements of the pyramids are as follows:

    North Star

    With your personalisation plan, whether large or small, you aim for a general north star. The personalisation program’s overall goal is described in The North Star. What do you wish to perform? North Stars cast a ghost. The bigger the sun, the bigger the dark. Example of North Starts may contain:

      Function: Personalize based on basic customer input. Examples:” Raw” messages, basic search effects, system user settings and settings options, general flexibility, basic improvements
    1. Feature: Self-contained customisation componentry. Examples:” Cooked” notifications, advanced optimizations ( geolocation ), basic dynamic messaging, customized modules, automations, recommenders
    2. Experience: Personal user experiences across several interactions and consumer flows. Examples: Email campaigns, landing pages, advanced messaging ( i. e. C2C chat ) or conversational interfaces, larger user flows and content-intensive optimizations ( localization ).
    3. Solution: Highly differentiating customized product experiences. Example: Standalone, branded encounters with personalization at their base, like the “algotorial” songs by Spotify quite as Discover Weekly.

    Goals

    As in any great UX layout, personalization may help promote designing with client intentions. The goals are the military and tangible indicators that will support the success of the entire program. Start with your existing analytics and assessment system, as well as metrics that you can benchmark against. In some cases, new targets may be ideal. The most important thing to keep in mind is that personalisation is never a desired outcome. It is a means to an end. Common targets include:

    • Conversion
    • Time on work
    • Net promoter score ( NPS)
    • Consumer pleasure

    Touchpoints

    Touchpoints are where customisation takes place. As a UX artist, this will be one of your largest areas of responsibility. The touchpoints you have will depend on how your personalization and the related technology are implemented, and they should be based on enhancing a person’s encounter at a specific point in the journey. Touchpoints can be multi-device ( mobile, in-store, website ) but also more granular ( web banner, web pop-up etc. ). Here are some examples:

    Channel-level Touchpoints

    • Email: Role
    • Email: Period of empty
    • In-store display ( JSON endpoint )
    • Native game
    • Search

    Wireframe-level Touchpoints

    • Web overlay
    • Web call club
    • Web symbol
    • Web content stop
    • Web list

    If you’re designing for web interface, for instance, you will likely need to include personal “zones” in your wireframes. Based on our next action, context, and campaigns, the articles for these can be presented dynamically in touchpoints.

    Contexts and Campaigns

    After you’ve outlined some touchpoints, you may consider the actual personal information a user may acquire. Many personalization tools will refer to these as” campaigns” ( so, for example, a campaign on a web banner for new visitors to the website ). These will be displayed to specific customer segments automatically, as defined by consumer data. At this stage, we find it helpful to contemplate two distinct concepts: a framework design and a willing design. The framework helps you acquire the user’s level of engagement at the personalization moment, such as when they are lightly browsing information or deep-dive. Think of it in conditions of activities for data recovery. The content model can then guide you in deciding which personalization to use in terms of the context ( for instance, an” Enrich” campaign that features related articles might be a good substitute for extant content ).

    Personalization Context Model:

    1. Browse
    2. Skim
    3. Nudge
    4. Feast

    Personalization Content Model:

    1. Alert
    2. Create Easier
    3. Cross-Sell
    4. Enrich

    If you’d like to learn more about each of these designs, check out Colin’s Personalization Content Model and Jeff’s Personalization Context Model.

    User Sections

    User segments can be created based on user research, either prescriptively or adaptively ( e .g., through rules and logic tied to set user behaviors or through A/B testing ). You will need to think about how to treat the logged-in visitor, the guest or returning visitor for whom you may have a stateful cookie ( or another post-cookie identifier ), or the authenticated visitor who is logged in at the very least. Using the personalisation pyramids, here are some examples:

    • Unknown
    • Guest
    • Authenticated
    • Default
    • Referred
    • Role
    • Cohort
    • Unique ID

    Actionable Data

    Every business with a modern existence has information. It’s important to inquire about how to use the data you can ethically collect on users, its inherent reliability and value, and how to use it ( sometimes referred to as “data activation” ). Fortunately, the tide is turning to first-party information: a recent study by Twilio estimates some 80 % of firms are using at least some type of first-party information to personalize the customer experience.

    First-party information represents multiple benefits on the UX before, including being relatively simple to acquire, more likely to be accurate, and less susceptible to the” creep issue” of third-party information. Therefore, determining which method of data collection is best for your audiences should be a crucial component of your UX strategy. Here are some examples:

    When it comes to recognizing and making decisions about various audiences and their signals, profiling has evolved. As time and confidence and data volume increase, it varies to more granular constructs about smaller and smaller cohorts of users.

    Although having some combination of implicit and explicit data is typically required for any implementation ( more commonly known as first-party and third-party data ), ML efforts are typically not cost-effective right away. This is because optimization requires a strong data backbone and content repository. These approaches, however, should be taken into account as part of the overall plan and may in fact help to speed up the organization’s progress overall. At this point, you will typically work with key stakeholders and product owners to create a profiling model. The profiling model includes a defined process for setting up profiles, profile keys, profile cards, and pattern cards. A multi-faceted approach to profiling which makes it scalable.

    Pulling it Together

    The cards serve as a starting point for an inventory of sorts ( we offer blanks for you to customize your own ), a set of potential levers and motivations for the personalization activities you aspire to deliver, but they are more valuable when grouped together.

    One can begin to chart the entire course of a card’s “hand” from leadership focus to tactical and tactical execution. It serves as the foundation for the workshops that both co-authors have conducted to build a program backlog, which would make a good article topic.

    In the meantime, it is important to note that each colored class of cards is helpful in understanding the range of options that you might have, as well as making informed choices about who, where, when, and how, will be made these choices.

    Lay Down Your Cards

    Any sustainable personalization strategy must consider near, mid and long-term goals. There is simply no “easy button” where a personalization program can be installed and run without waiting for any meaningful results, even with the market leader CMS platforms like Sitecore and Adobe or the most innovative composable CMS DXP available today. That said, there is a common grammar to all personalization activities, just like every sentence has nouns and verbs. These cards attempt to map that territory.

  • Mobile-First CSS: Is It Time for a Rethink?

    Mobile-First CSS: Is It Time for a Rethink?

    The mobile-first style approach is great—it focuses on what really matters to the consumer, it’s well-practiced, and it’s been a popular style design for years. But developing your CSS mobile-first should also be wonderful, too…right?

    Well, not necessarily. Classic mobile-first CSS development is based on the principle of overwriting style declarations: you begin your CSS with default style declarations, and overwrite and/or add new styles as you add breakpoints with min-width media queries for larger viewports (for a good overview see “What is Mobile First CSS and Why Does It Rock?”). But all those exceptions create complexity and inefficiency, which in turn can lead to an increased testing effort and a code base that’s harder to maintain. Admit it—how many of us willingly want that?

    Mobile-first CSS may yet be the best option for your own projects, but you need to first determine how acceptable it is in light of the physical design and user interactions you’re working on. To help you get started, here’s how I go about tackling the elements you need to watch for, and I’ll discuss some alternative remedies if mobile-first doesn’t seem to fit your job.

    Benefits of mobile-first

    Some of the points to enjoy with mobile-first CSS growth —and why it’s been the de facto growth strategy for thus long—make a lot of feeling:

    Development pyramid. One thing you definitely get from mobile-first is a great development hierarchy—you only focus on the cellular view and get developing.

    Tried and tested. It’s a tried-and-true method that has worked for years because it solves a problem actually well.

    Prioritizes the smart see. The smart see is the simplest and arguably the most significant because it covers all of the crucial consumer journeys and frequently accounts for more user visits ( depending on the project ) in terms of complexity.

    Stops desktop-centric growth. It can be tempting to first focus on the desktop perspective because desktop computers are used for growth. No one wants to spend their day retrofitting a desktop-centric website to work on mobile devices, but thinking about smart from the beginning prevents us from getting stuck in the future!

    Drawbacks of mobile-first

    Model declarations can be set at higher breakpoints and therefore overwritten at higher breakpoints:

    More difficulty. The more pointless script you inherit from lower baselines the higher you go in the hierarchy.

    Higher CSS precision. A school name declaration with a restored default value for a style has a higher specificity today. When trying to keep the CSS candidates as simple as possible, this can cause trouble on complex tasks.

    Requires more analysis tests. All higher thresholds must be regression tested if CSS changes at lower views ( such as adding a new fashion ).

    The browser can’t prioritize CSS downloads. At wider breakpoints, classic mobile-first min-width media queries don’t leverage the browser’s capability to download CSS files in priority order.

    The issue of home value surpasses

    Overwriting values is not necessarily essentially bad; CSS was created to do that. However, sharing incorrect values is counterproductive and can be burdensome and inadequate. When you need to replace styles to restore them to their defaults, which may cause issues after, especially if you’re using a combination of bespoke CSS and energy classes, does this also lead to more style specificity. We won’t be able to use a utility class on a style that has been increased in specificity when it was reset.

    With this in mind, I’m developing CSS with a focus on the default values much more these days. Since there’s no specific order, and no chains of specific values to keep track of, this frees me to develop breakpoints simultaneously. I concentrate on finding common styles and isolating the specific exceptions in closed media query ranges (that is, any range with a max-width set). 

    This approach opens up some opportunities, as you can look at each breakpoint as a clean slate. If a component’s layout looks like it should be based on Flexbox at all breakpoints, it’s fine and can be coded in the default style sheet. When CSS is placed into closed media query ranges, it can be done both Grid and Flexbox completely independently. Additionally, having a thorough understanding of any given component in all breakpoints upfront is necessary for developing simultaneously. This can help identify issues in the design more quickly during the development process. We don’t want to travel down the rabbit hole while creating complex mobile components, only to discover that the desktop designs are just as complex and incompatible with the HTML we created for the mobile view!

    Though this approach isn’t going to suit everyone, I encourage you to give it a try. There are plenty of tools out there to help with concurrent development, such as Responsively App, Blisk, and many others.

    Having said that, I don’t feel the order itself is particularly relevant. If you like to work on one device at a time, are comfortable with focusing on the mobile view, and are familiar with the requirements for other breakpoints, then you should definitely follow the classic development order. The key is to find common styles and exceptions so that you can include them in the appropriate stylesheet, which is a manual tree-shaking procedure! Personally, I find this a little easier when working on a component across breakpoints, but that’s by no means a requirement.

    Closed media query ranges in practice

    In classic mobile-first CSS we overwrite the styles, but we can avoid this by using media query ranges. To illustrate the difference ( I’m using SCSS for brevity ), let’s assume there are three visual designs:

    • smaller than 768
    • from 768 to below 1024
    • 1024 and anything larger

    Take a simple example where a block-level element has a default padding of “20px,” which is overwritten at tablet to be “40px” and set back to “20px” on desktop.

    Classic min-width mobile-first

    .my-block { padding: 20px; @media (min-width: 768px) { padding: 40px; } @media (min-width: 1024px) { padding: 20px; }}

    Closed media query range

    .my-block { padding: 20px; @media (min-width: 768px) and (max-width: 1023.98px) { padding: 40px; }}

    The subtle difference is that the mobile-first example sets the default padding to “20px” and then overwrites it at each breakpoint, setting it three times in total. In contrast, the second example sets the default padding to “20px” and only overrides it at the relevant breakpoint where it isn’t the default value (in this instance, tablet is the exception).

    The goal is to: 

    • Only set styles when needed. 
    • Not set them with the expectation of overwriting them later on, again and again. 

    To this end, closed media query ranges are our best friend. If we need to make a change to any given view, we make it in the CSS media query range that applies to the specific breakpoint. We’ll be much less likely to introduce unwanted alterations, and our regression testing only needs to focus on the breakpoint we have actually edited. 

    Taking the above example, if we find that .my-block spacing on desktop is already accounted for by the margin at that breakpoint, and since we want to remove the padding altogether, we could do this by setting the mobile padding in a closed media query range.

    .my-block {  @media (max-width: 767.98px) {    padding: 20px;  }  @media (min-width: 768px) and (max-width: 1023.98px) {    padding: 40px;  }}

    The browser default padding for our block is “0,” so instead of adding a desktop media query and using unset or “0” for the padding value (which we would need with mobile-first), we can wrap the mobile padding in a closed media query (since it is now also an exception) so it won’t get picked up at wider breakpoints. At the desktop breakpoint, we won’t need to set any padding style, as we want the browser default value.

    separating the CSS versus combining it

    Back in the day, keeping the number of requests to a minimum was very important because the browser's concurrent requests limit (typically around six ) was high. As a consequence, the use of image sprites and CSS bundling was the norm, with all the CSS being downloaded in one go, as one stylesheet with highest priority.

    With HTTP/2 and HTTP/3 now on the scene, the number of requests is no longer the big deal it used to be. By using a media query, we can break CSS into several files. The obvious benefit of this is that the browser can now request the CSS it currently requires with a higher priority than the CSS it doesn't. This is more effective and can shorten the amount of time a page is blocked overall.

    Which HTTP version are you using?

    To determine which version of HTTP you're using, go to your website and open your browser's dev tools. Next, go to the Network tab and check whether the Protocol column is visible. If "h2" is listed under Protocol, it means HTTP/2 is being used.

    Note: to view the Protocol in your browser's dev tools, go to the Network tab, reload your page, right-click any column header ( e. g., Name ), and check the Protocol column.

    Also, if your site is still using HTTP/1... WHY?!! What are you anticipating? Excellent user support exists for HTTP/2.

    Splitting the CSS

    Separating the CSS into individual files is a worthwhile task. Linking the separate CSS files using the relevant media attribute allows the browser to identify which files are needed immediately (because they’re render-blocking) and which can be deferred. Based on this, it allocates each file an appropriate priority.

    We can see that the mobile and default CSS are loaded with" Highest" priority in the following example of a website that is visited on a mobile breakpoint, since they are currently required to render the page. The remaining CSS files ( print, tablet, and desktop ) are still downloaded in case they'll be needed later, but with" Lowest" priority.

    Before rendering can begin, the browser will need to download and parse the CSS file when using bundled CSS.

    While, as noted, with the CSS separated into different files linked and marked up with the relevant media attribute, the browser can prioritize the files it currently needs. Using closed media query ranges allows the browser to do this at all widths, as opposed to classic mobile-first min-width queries, where the desktop browser would have to download all the CSS with Highest priority. We can’t assume that desktop users always have a fast connection. For instance, in many rural areas, internet connection speeds are still slow. 

    Depending on project requirements, the media queries and the number of separate CSS files will vary from project to project, but the example below might look similar.

    Bundled CSS



    This single file contains all the CSS, including all media queries, and it will be downloaded with Highest priority.

    Separated CSS



    Separating the CSS and specifying a media attribute value on each link tag allows the browser to prioritize what it currently needs. Out of the five files listed above, two will be downloaded with Highest priority: the default file, and the file that matches the current media query. The others will be downloaded with Lowest priority.

    Depending on the project’s deployment strategy, a change to one file (mobile.css, for example) would only require the QA team to regression test on devices in that specific media query range. Compare that to the prospect of deploying the single bundled site.css file, an approach that would normally trigger a full regression test.

    Moving on

    The adoption of mobile-first CSS was a significant development milestone because it allowed front-end developers to concentrate on mobile web applications rather than creating websites for desktop use and attempting to convert them to work on other devices.

    I don't think anyone wants to return to that development model again, but it's important we don't lose sight of the issue it highlighted: that things can easily get convoluted and less efficient if we prioritize one particular device—any device—over others. For this reason, focusing on the CSS in its own right, always mindful of what is the default setting and what's an exception, seems like the natural next step. I've started to notice subtle simplifications in both the CSS of my own and that of other developers, and that testing and maintenance work is also a little more effective and streamlined.

    In general, making CSS rule creation as simple as possible is ultimately a more effective strategy than moving around in circles of overrides. But whichever methodology you choose, it needs to suit the project. Mobile-first may—or may not—turn out to be the best choice for what's involved, but first you need to solidly understand the trade-offs you're stepping into.

  • Designers, (Re)define Success First

    Designers, (Re)define Success First

    About two and a half years before, I introduced the concept of normal social style. It was born out of my disappointment with the many obstacles to achieving style that’s accessible and equal, protects people’s protection, firm, and target, benefits society, and restores nature. I argued that we must address the difficulties that prevent us from acting morally and that we must functionally integrate design ethics into our normal routines, procedures, and tools to achieve this goal.

    However, we’re still very far from this best.

    At the time, I didn’t realize yet how to functionally incorporate morality. Yes, I had found some tools that had worked for me in past projects, such as using checklists, notion monitoring, and “dark truth” sessions, but I didn’t manage to use those in every task. I was still battling for time and support, and I only managed to get a good deal of a higher ( moral ) design quality, which is not what I would consider to be structurally integrated.

    I made a deeper investigation into the main causes of business that prevent us from practicing regular moral style. Today, after much research and experimentation, I believe that I’ve found the code that will let us functionally combine ethics. And it’s remarkably easy! However, we must first move out to understand what we’re going through.

    Control the system

    Unfortunately, we’re trapped in a capitalist structure that reinforces materialism and inequality, and it’s obsessed with the dream of infinite growth. Sea levels, temperature, and our demand for energy continue to rise unquestioned, while the divide between rich and poor continues to increase. Owners expect ever-higher returns on their investments, and firms feel forced to set short-term goals that reflect this. Over the last years, those goals have twisted our well-intended human-centered mentality into a powerful system that promotes ever-higher levels of consumption. When we’re working for an organization that pursues “double-digit growth” or “aggressive sales targets” ( which is 99 percent of us ), that’s very hard to resist while remaining human friendly. Yet with our best intentions, and even though we like to suggest that we create solutions for people, we’re a part of the problem.

    How can this be changed, exactly?

    We may begin by acting appropriately throughout the program. Donella H. Meadows, a system scholar, previously listed ways to influence a system in order of success. When you apply these to architecture, you get:

      At the lowest level of effectiveness, you can change numbers such as accessibility results or the number of layout views. However, none of that will alter a company’s manner.
    • Similarly, affecting buffers ( such as team budgets ), stocks ( such as the number of designers ), flows ( such as the number of new hires ), and delays ( such as the time that it takes to hear about the effect of design ) won’t significantly affect a company.
    • Focusing rather on feedback rings such as management power, staff identification, or design-system purchases can help a business become better at achieving its objectives. But that doesn’t change the objectives themselves, which means that the organization will still work against your ethical-design ideals.
    • The next level, information flows, is what most ethical-design initiatives focus on now: the exchange of ethical methods, toolkits, articles, conferences, workshops, and so on. Ethics design has largely remained theoretical in this area. We’ve been focusing on the wrong system level all this time.
    • Take rules, for example—they beat knowledge every time. There can be widely accepted rules, such as how finance works, or a scrum team’s definition of done. However, unofficial rules intended to maintain profits can also smother ethical design, which are frequently revealed through statements like” the client didn’t ask for it” or “don’t make it too big.”
    • It is difficult to change the laws without exercising official authority. That’s why the next level is so influential: self-organization. Experimentation, bottom-up initiatives, passion projects, self-steering teams—all of these are examples of self-organization that improve the resilience and creativity of a company. It’s exactly this diversity of viewpoints that’s needed to structurally tackle big systemic issues like consumerism, wealth inequality, and climate change.
    • Yet even stronger than self-organization are objectives and metrics. Every employee of our businesses works hard to increase their profits, which is why everything we do is done. And once I realized that profit is merely a measure, I realized how crucial a very specific, defined metric can be in the direction of a company.

    The takeaway? We must first change the measurable goals of the company we work for from the bottom up if we truly want to incorporate ethics into our daily design practice.

    Redefine success

    Traditionally, we consider a product or service successful if it’s desirable to humans, technologically feasible, and financially viable. You tend to see these represented as equals, if you type the three words in a search engine, you’ll find diagrams of three equally sized, evenly arranged circles.

    But in our hearts, we all know that the three dimensions aren’t equally weighted: it’s viability that ultimately controls whether a product will go live. Therefore, a more accurate representation might look like this:

    Viability is the aim, while feasibility and desire are the means. Companies—outside of nonprofits and charities—exist to make money.

    A genuinely purpose-driven company would try to reverse this dynamic: it would recognize finance for what it was intended for: a means. Therefore, both feasibility and viability are important factors in the company’s efforts to accomplish what they stated. It makes intuitive sense: to achieve most anything, you need resources, people, and money. ( Fun fact: the Italian language knows no difference between feasibility and viability, both are simply fattibilità. )

    However, it is not enough to substitute viable for desirable for achieve an ethical result. Consumption is still associated with desirability because the associated activities aim to determine what people want, regardless of whether or not it benefits them. Desirability objectives, such as user satisfaction or conversion, don’t consider whether a product is healthy for people. They don’t stop us from developing products that deceive or deceive people, or do they prevent us from reducing society’s wealth inequality. They are ineffective for maintaining a healthy relationship with nature.

    There’s a fourth dimension of success that’s missing: our designs also need to be ethical in the effect that they have on the world.

    This is hardly a new idea. Many similar models exist, some calling the fourth dimension accountability, integrity, or responsibility. What I’ve never seen before, however, is the necessary step that comes after: to influence the system as designers and to make ethical design more practical, we must create objectives for ethical design that are achievable and inspirational. There’s no one way to do this because it highly depends on your culture, values, and industry. However, I’ll share the version I created with a group of design agency coworkers. Consider it a template to get started.

    Pursue well-being, equity, and sustainability

    We created objectives that address design’s effect on three levels: individual, societal, and global.

    An objective on the individual level teaches us that success transcends the typical area of focus on usability and satisfaction, taking into account factors like how much time and effort are required from users. We pursued well-being:

    We create products and services that allow for people’s health and happiness. Our solutions are calm, transparent, nonaddictive, and nonmisleading. We respect our users ‘ time, attention, and privacy, and help them make healthy and respectful choices.

    An objective on the societal level forces us to consider our impact beyond just the user, widening our attention to the economy, communities, and other indirect stakeholders. We called this objective equity:

    We develop goods and services that benefit society. We consider economic equality, racial justice, and the inclusivity and diversity of people as teams, users, and customer segments. We listen to local culture, communities, and those we affect.

    Finally, the global goal of maintaining harmony with humanity’s sole home is the ultimate goal. Referring to it simply as sustainability, our definition was:

    We develop goods and services that reward reuse and sufficiency. Our solutions support the circular economy: we create value from waste, repurpose products, and prioritize sustainable choices. We deliver functionality instead of ownership, and we limit energy use.

    In essence, ethical design ( to us ) meant achieving well-being for each user and an equitable value distribution within society through a design that can sustain our living planet. When we introduced these objectives in the company, for many colleagues, design ethics and responsible design suddenly became tangible and achievable through practical—and even familiar—actions.

    Measure impact

    But defining these objectives still isn’t enough. What truly caught the attention of senior management was the fact that we created a way to measure every design project’s well-being, equity, and sustainability.

    This overview lists example metrics that you can use as you pursue well-being, equity, and sustainability:

    There’s a lot of power in measurement. As the saying goes, what gets measured gets done. This example was once provided by Donella Meadows:

    The system will produce military spending if the desired system state is national security, which is defined as the amount of money spent on the military. It may or may not produce national security”.

    This phenomenon explains why desirability is a poor indicator of success: it’s typically defined as the increase in customer satisfaction, session length, frequency of use, conversion rate, churn rate, download rate, and so on. But none of these metrics increase the health of people, communities, or ecosystems. What if instead we measured success through metrics for ( digital ) well-being, such as ( reduced ) screen time or software energy consumption?

    There’s another important message here. Even if we set an objective to build a calm interface, if we were to choose the wrong metric for calmness—say, the number of interface elements—we could still end up with a screen that induces anxiety. The wrong metric can completely destroy good intentions.

    Additionally, choosing the right metric is enormously helpful in focusing the design team. You are forced to consider what success looks like in real life and how you can demonstrate that you have met your ethical goals once you have chosen the metrics to use. It also makes you think about what we as designers have control over: what can I add or change in my design process to achieve the desired level of success? The response to this query provides a lot of insight and clarity.

    And finally, it’s good to remember that traditional businesses run on measurements, and managers love to spend much time discussing charts ( ideally hockey-stick shaped ) —especially if they concern profit, the one-above-all of metrics. For good or ill, to improve the system, to have a serious discussion about ethical design with managers, we’ll need to speak that business language.

    Practice daily ethical design

    Only then do you have a chance to structurally practice ethical design once you have defined your objectives and have a reasonable idea of the potential metrics for your design project. Making the decision to” simply” use your imagination and pick one of the many resources and knowledge resources at your disposal.

    I think this is quite exciting! It introduces a whole new set of difficulties and considerations to the design process. Should you stick to that time-consuming video or would a brief illustration suffice? Which typeface is the most calm and inclusive? What brand-new equipment and techniques do you employ? When is the website’s end of life? How can you offer the same service while giving users less time to think about it? How can you ensure that those who are affected by decisions are present when they are made? How can you measure our effects?

    The definition of success will fundamentally alter what it means to do good design.

    There is, however, a final piece of the puzzle that’s missing: convincing your client, product owner, or manager to be mindful of well-being, equity, and sustainability. For this, it’s essential to engage stakeholders in a dedicated kickoff session.

    Kick it off or return to the pre-existing

    The most crucial meeting that it is so easy to forget to include is the kickoff. It consists of two major phases: 1 ) the alignment of expectations, and 2 ) the definition of success.

    In the first phase, the entire ( design ) team goes over the project brief and meets with all the relevant stakeholders. Everyone gets to know one another, shares their hopes for the outcome and their contributions to it. Assumptions are raised and discussed. The goal is to reach the same level of understanding, which will help to prevent mistakes and surprises later on in the project.

    For example, for a recent freelance project that aimed to design a digital platform that facilitates US student advisors ‘ documentation and communication, we conducted an online kickoff with the client, a subject-matter expert, and two other designers. We used a combination of canvases on Miro: one with questions from” Manual of Me” ( to get to know each other ), a Team Canvas ( to express expectations ), and a version of the Project Canvas to align on scope, timeline, and other practical matters.

    The kickoff’s primary goal is the stated above. But just as important as expressing expectations is agreeing on what success means for the project—in terms of desirability, viability, feasibility, and ethics. What are the objectives in each dimension?

    It is crucial to reach an understanding of what success means at this early stage because you can rely on it for the duration of the project. The design team can use diversity as a specific success factor during the kickoff if they want to create an inclusive app for a diverse user base, for instance. If the client consents, the team will be able to recite that promise throughout the project. As we agreed in our first meeting, having a diverse user group that includes A and B is essential to creating a successful product. Therefore, we conduct activity X and follow the research procedure Y. Compare those odds to a scenario where the team had to request permission halfway through the project and didn’t agree to it in advance. The client might argue that that was in excess of the agreed scope, and she would be correct.

    To define success, I created a round canvas that I call the Wheel of Success in the case of this freelance project. It consists of an inner ring, meant to capture ideas for objectives, and a set of outer rings, meant to capture ideas on how to measure those objectives. The rings are divided into five dimensions of successful design: healthy, equitable, sustainable, desirable, feasible, and viable.

    We went through each dimension, writing down ideas on digital sticky notes. Then we exchanged ideas and verbally agreed on the most crucial ones. Our client, for instance, agreed that sustainability and progressive enhancement are crucial success factors for the platform. Additionally, the subject-matter expert stressed the value of involving students from underprivileged and low-income groups in the design process.

    In a project brief that adequately described these elements, we consolidated our ideas and agreed on them after the kickoff.

      the project’s origin and purpose: why are we doing this project?
    • the problem definition: what do we want to solve?
    • the concrete goals and metrics for each success dimension: what do we want to achieve?
    • the scope, process, and role descriptions: how will we achieve it?

    With such a brief in place, you can use the agreed-upon objectives and concrete metrics as a checklist of success, and your design team will be ready to pursue the right objective—using the tools, methods, and metrics at their disposal to achieve ethical outcomes.

    Conclusion

    Over the past year, quite a few colleagues have asked me,” Where do I start with ethical design”? My response has always been the same: hold a meeting with your stakeholders to ( re)define success. Even though you might not always be entirely successful in coming to terms with goals that address all responsibility objectives, that consistently beats the status quo. If you want to be an ethical, responsible designer, there’s no skipping this step.

    To be even more specific: if you consider yourself a strategic designer, your challenge is to define ethical objectives, set the right metrics, and conduct those kick-off sessions. If you think of yourself as a system designer, you need to understand how your industry influences consumerism and inequality, how finance drives business, and how to think creatively about how to use the most powerful tools to influence the system. Then redefine success to give people the ability to use those tools.

    And for those who identify as service designers, UX designers, or UI designers, steer clear of the toolkits, meetups, and conferences for a while if you truly want to have a positive, meaningful impact. Instead, gather your colleagues and define goals for well-being, equity, and sustainability through design. Engage your stakeholders in a workshop and challenge them to think about ways to accomplish and evaluate those ethical objectives. Take their input, make it concrete and visible, ask for their agreement, and hold them to it.

    Otherwise, I’m genuinely sorry to say, you’re wasting your precious time and creative energy.

    Of course, engaging your stakeholders in this way can be uncomfortable. Many of my colleagues expressed doubts such as” What will the client think of this”?,” Will they take me seriously”?, and “Can’t we just do it within the design team instead”? In fact, a product manager once questioned why ethics couldn’t just be a set process in design; to simply do it without making the effort to define ethical goals. It’s a tempting idea, right? We wouldn’t need to engage in contentious discussions with stakeholders about what values or which key-performance indicators to use. It would let us focus on what we like and do best: designing.

    But as systems theory tells us, that’s not enough. For those of us who aren’t from marginalized groups and have the privilege of speaking up and being heard, that uncomfortable space is where we need to be if we truly want to make a difference. We can’t remain within the design-for-designers bubble, enjoying our privileged working-from-home situation, disconnected from the real world out there. If we only keep talking about ethical design and it continues to be contained within articles and toolkits, for those of us who have the opportunity to speak up and be heard, we are not designing ethically. It’s just theory. By challenging them to redefine success in business, we must actively engage with our coworkers and clients.

    With a bit of courage, determination, and focus, we can break out of this cage that finance and business-as-usual have built around us and become facilitators of a new type of business that can see beyond financial value. We simply need to come to terms with the right goals when starting each design project, identify the appropriate metrics, and acknowledge that we already have everything in place. That’s what it means to do daily ethical design.

    For their inspiration and support over the years, I would like to thank Emanuela Cozzi Schettini, José Gallegos, Annegret Bönemann, Ian Dorr, Vera Rademaker, Virginia Rispoli, Cecilia Scolaro, Rouzbeh Amini, and many others.

  • User Research Is Storytelling

    User Research Is Storytelling

    Ever since I was a boy, I’ve been fascinated with movies. I loved the characters and the excitement—but most of all the stories. I wanted to be an actor. And I believed that I’d get to do the things that Indiana Jones did and go on exciting adventures. I even dreamed up ideas for movies that my friends and I could make and star in. But they never went any further. I did, however, end up working in user experience (UX). Now, I realize that there’s an element of theater to UX—I hadn’t really considered it before, but user research is storytelling. And to get the most out of user research, you need to tell a good story where you bring stakeholders—the product team and decision makers—along and get them interested in learning more.

    Think of your favorite movie. More than likely it follows a three-act structure that’s commonly seen in storytelling: the setup, the conflict, and the resolution. The first act shows what exists today, and it helps you get to know the characters and the challenges and problems that they face. Act two introduces the conflict, where the action is. Here, problems grow or get worse. And the third and final act is the resolution. This is where the issues are resolved and the characters learn and change. I believe that this structure is also a great way to think about user research, and I think that it can be especially helpful in explaining user research to others.

    Use storytelling as a structure to do research

    It’s sad to say, but many have come to see research as being expendable. If budgets or timelines are tight, research tends to be one of the first things to go. Instead of investing in research, some product managers rely on designers or—worse—their own opinion to make the “right” choices for users based on their experience or accepted best practices. That may get teams some of the way, but that approach can so easily miss out on solving users’ real problems. To remain user-centered, this is something we should avoid. User research elevates design. It keeps it on track, pointing to problems and opportunities. Being aware of the issues with your product and reacting to them can help you stay ahead of your competitors.

    In the three-act structure, each act corresponds to a part of the process, and each part is critical to telling the whole story. Let’s look at the different acts and how they align with user research.

    Act one: setup

    The setup is all about understanding the background, and that’s where foundational research comes in. Foundational research (also called generative, discovery, or initial research) helps you understand users and identify their problems. You’re learning about what exists today, the challenges users have, and how the challenges affect them—just like in the movies. To do foundational research, you can conduct contextual inquiries or diary studies (or both!), which can help you start to identify problems as well as opportunities. It doesn’t need to be a huge investment in time or money.

    Erika Hall writes about minimum viable ethnography, which can be as simple as spending 15 minutes with a user and asking them one thing: “‘Walk me through your day yesterday.’ That’s it. Present that one request. Shut up and listen to them for 15 minutes. Do your damndest to keep yourself and your interests out of it. Bam, you’re doing ethnography.” According to Hall, [This] will probably prove quite illuminating. In the highly unlikely case that you didn’t learn anything new or useful, carry on with enhanced confidence in your direction.”  

    This makes total sense to me. And I love that this makes user research so accessible. You don’t need to prepare a lot of documentation; you can just recruit participants and do it! This can yield a wealth of information about your users, and it’ll help you better understand them and what’s going on in their lives. That’s really what act one is all about: understanding where users are coming from. 

    Jared Spool talks about the importance of foundational research and how it should form the bulk of your research. If you can draw from any additional user data that you can get your hands on, such as surveys or analytics, that can supplement what you’ve heard in the foundational studies or even point to areas that need further investigation. Together, all this data paints a clearer picture of the state of things and all its shortcomings. And that’s the beginning of a compelling story. It’s the point in the plot where you realize that the main characters—or the users in this case—are facing challenges that they need to overcome. Like in the movies, this is where you start to build empathy for the characters and root for them to succeed. And hopefully stakeholders are now doing the same. Their sympathy may be with their business, which could be losing money because users can’t complete certain tasks. Or maybe they do empathize with users’ struggles. Either way, act one is your initial hook to get the stakeholders interested and invested.

    Once stakeholders begin to understand the value of foundational research, that can open doors to more opportunities that involve users in the decision-making process. And that can guide product teams toward being more user-centered. This benefits everyone—users, the product, and stakeholders. It’s like winning an Oscar in movie terms—it often leads to your product being well received and successful. And this can be an incentive for stakeholders to repeat this process with other products. Storytelling is the key to this process, and knowing how to tell a good story is the only way to get stakeholders to really care about doing more research. 

    This brings us to act two, where you iteratively evaluate a design or concept to see whether it addresses the issues.

    Act two: conflict

    Act two is all about digging deeper into the problems that you identified in act one. This usually involves directional research, such as usability tests, where you assess a potential solution (such as a design) to see whether it addresses the issues that you found. The issues could include unmet needs or problems with a flow or process that’s tripping users up. Like act two in a movie, more issues will crop up along the way. It’s here that you learn more about the characters as they grow and develop through this act. 

    Usability tests should typically include around five participants according to Jakob Nielsen, who found that that number of users can usually identify most of the problems: “As you add more and more users, you learn less and less because you will keep seeing the same things again and again… After the fifth user, you are wasting your time by observing the same findings repeatedly but not learning much new.” 

    There are parallels with storytelling here too; if you try to tell a story with too many characters, the plot may get lost. Having fewer participants means that each user’s struggles will be more memorable and easier to relay to other stakeholders when talking about the research. This can help convey the issues that need to be addressed while also highlighting the value of doing the research in the first place.

    Researchers have run usability tests in person for decades, but you can also conduct usability tests remotely using tools like Microsoft Teams, Zoom, or other teleconferencing software. This approach has become increasingly popular since the beginning of the pandemic, and it works well. You can think of in-person usability tests like going to a play and remote sessions as more like watching a movie. There are advantages and disadvantages to each. In-person usability research is a much richer experience. Stakeholders can experience the sessions with other stakeholders. You also get real-time reactions—including surprise, agreement, disagreement, and discussions about what they’re seeing. Much like going to a play, where audiences get to take in the stage, the costumes, the lighting, and the actors’ interactions, in-person research lets you see users up close, including their body language, how they interact with the moderator, and how the scene is set up.

    If in-person usability testing is like watching a play—staged and controlled—then conducting usability testing in the field is like immersive theater where any two sessions might be very different from one another. You can take usability testing into the field by creating a replica of the space where users interact with the product and then conduct your research there. Or you can go out to meet users at their location to do your research. With either option, you get to see how things work in context, things come up that wouldn’t have in a lab environment—and conversion can shift in entirely different directions. As researchers, you have less control over how these sessions go, but this can sometimes help you understand users even better. Meeting users where they are can provide clues to the external forces that could be affecting how they use your product. In-person usability tests provide another level of detail that’s often missing from remote usability tests. 

    That’s not to say that the “movies”—remote sessions—aren’t a good option. Remote sessions can reach a wider audience. They allow a lot more stakeholders to be involved in the research and to see what’s going on. And they open the doors to a much wider geographical pool of users. But with any remote session there is the potential of time wasted if participants can’t log in or get their microphone working. 

    The benefit of usability testing, whether remote or in person, is that you get to see real users interact with the designs in real time, and you can ask them questions to understand their thought processes and grasp of the solution. This can help you not only identify problems but also glean why they’re problems in the first place. Furthermore, you can test hypotheses and gauge whether your thinking is correct. By the end of the sessions, you’ll have a much clearer picture of how usable the designs are and whether they work for their intended purposes. Act two is the heart of the story—where the excitement is—but there can be surprises too. This is equally true of usability tests. Often, participants will say unexpected things, which change the way that you look at things—and these twists in the story can move things in new directions. 

    Unfortunately, user research is sometimes seen as expendable. And too often usability testing is the only research process that some stakeholders think that they ever need. In fact, if the designs that you’re evaluating in the usability test aren’t grounded in a solid understanding of your users (foundational research), there’s not much to be gained by doing usability testing in the first place. That’s because you’re narrowing the focus of what you’re getting feedback on, without understanding the users’ needs. As a result, there’s no way of knowing whether the designs might solve a problem that users have. It’s only feedback on a particular design in the context of a usability test.  

    On the other hand, if you only do foundational research, while you might have set out to solve the right problem, you won’t know whether the thing that you’re building will actually solve that. This illustrates the importance of doing both foundational and directional research. 

    In act two, stakeholders will—hopefully—get to watch the story unfold in the user sessions, which creates the conflict and tension in the current design by surfacing their highs and lows. And in turn, this can help motivate stakeholders to address the issues that come up.

    Act three: resolution

    While the first two acts are about understanding the background and the tensions that can propel stakeholders into action, the third part is about resolving the problems from the first two acts. While it’s important to have an audience for the first two acts, it’s crucial that they stick around for the final act. That means the whole product team, including developers, UX practitioners, business analysts, delivery managers, product managers, and any other stakeholders that have a say in the next steps. It allows the whole team to hear users’ feedback together, ask questions, and discuss what’s possible within the project’s constraints. And it lets the UX research and design teams clarify, suggest alternatives, or give more context behind their decisions. So you can get everyone on the same page and get agreement on the way forward.

    This act is mostly told in voiceover with some audience participation. The researcher is the narrator, who paints a picture of the issues and what the future of the product could look like given the things that the team has learned. They give the stakeholders their recommendations and their guidance on creating this vision.

    Nancy Duarte in the Harvard Business Review offers an approach to structuring presentations that follow a persuasive story. “The most effective presenters use the same techniques as great storytellers: By reminding people of the status quo and then revealing the path to a better way, they set up a conflict that needs to be resolved,” writes Duarte. “That tension helps them persuade the audience to adopt a new mindset or behave differently.”

    This type of structure aligns well with research results, and particularly results from usability tests. It provides evidence for “what is”—the problems that you’ve identified. And “what could be”—your recommendations on how to address them. And so on and so forth.

    You can reinforce your recommendations with examples of things that competitors are doing that could address these issues or with examples where competitors are gaining an edge. Or they can be visual, like quick mockups of how a new design could look that solves a problem. These can help generate conversation and momentum. And this continues until the end of the session when you’ve wrapped everything up in the conclusion by summarizing the main issues and suggesting a way forward. This is the part where you reiterate the main themes or problems and what they mean for the product—the denouement of the story. This stage gives stakeholders the next steps and hopefully the momentum to take those steps!

    While we are nearly at the end of this story, let’s reflect on the idea that user research is storytelling. All the elements of a good story are there in the three-act structure of user research: 

    • Act one: You meet the protagonists (the users) and the antagonists (the problems affecting users). This is the beginning of the plot. In act one, researchers might use methods including contextual inquiry, ethnography, diary studies, surveys, and analytics. The output of these methods can include personas, empathy maps, user journeys, and analytics dashboards.
    • Act two: Next, there’s character development. There’s conflict and tension as the protagonists encounter problems and challenges, which they must overcome. In act two, researchers might use methods including usability testing, competitive benchmarking, and heuristics evaluation. The output of these can include usability findings reports, UX strategy documents, usability guidelines, and best practices.
    • Act three: The protagonists triumph and you see what a better future looks like. In act three, researchers may use methods including presentation decks, storytelling, and digital media. The output of these can be: presentation decks, video clips, audio clips, and pictures. 

    The researcher has multiple roles: they’re the storyteller, the director, and the producer. The participants have a small role, but they are significant characters (in the research). And the stakeholders are the audience. But the most important thing is to get the story right and to use storytelling to tell users’ stories through research. By the end, the stakeholders should walk away with a purpose and an eagerness to resolve the product’s ills. 

    So the next time that you’re planning research with clients or you’re speaking to stakeholders about research that you’ve done, think about how you can weave in some storytelling. Ultimately, user research is a win-win for everyone, and you just need to get stakeholders interested in how the story ends.