• You Might Build Your Next App This Way: Cross-Platform With Google's Flutter

    Google invests heavily in Flutter, a cross-platform framework for building native iOS and Android apps from a single codebase.

    Building an app for both iOS and Android

    If your business wants to create a mobile app, you likely want it to appear on both iOS and Android. Simply speaking, there are two ways to do this:

    1. Native development — develop a native iOS app and a native Android app, separately
    2. Cross-platform development — use a framework to develop both apps from the same codebase

    Native development

    Each platform holder provides a means for software developers to build native apps on their platform. Apple’s iOS SDK (Software Development Kit) enables developers to build iOS apps using Objective-C or Swift. Google’s Android SDK similarly allows devs to write Android apps in Java or Kotlin.

    Cross-platform solutions

    There are also third-party frameworks that allow developers to build apps for both iOS and Android (and sometimes other platforms as well) from one codebase. There might be some platform-specific code you have to (or want to) write, but the idea is that that the vast majority of the code is shared across all platforms. Building with these frameworks allow devs to produce real apps that can be released and sold on the iOS App Store and the Google Play app store.

    Pros and Cons

    The big-headline advantage of cross-platform development is producing your iOS / Android app faster and more cheaply than building two separate native apps. A single codebase for both apps is a benefit throughout the product lifecycle, as every new feature and change needs only be developed once, instead of once for each platform.

    Other advantages include having a single development team for both apps. iOS and Android native development often require a separate development team for each platform, if not because of the separate knowledge bases, then because parallel development is required if you want apps or features to be available on both platforms simultaneously.

    There are disadvantages, of course, and they vary depending on the framework. I won’t go too deeply into those here. Suffice it to say that some frameworks result in slower-performing apps (particularly if they don’t actually get compiled into native code), display non-native look and feel, provide limited or delayed access to device features, and/or  require specific expertise that your team may not have.

    Enter Flutter

    Remember how I said each platform holder provides an SDK for creating apps? Well Google has introduced another SDK for building mobile apps, in parallel with its existing SDK.

    It is called Flutter, and it’s a framework that allows developers to create native mobile apps for both Android and iOS.

    Relatively new, but maturing fast

    Google introduced Flutter a year ago, providing an alpha release and inviting developers to try it out. In February of 2018 Google announced the beta release of the Flutter. While still in beta, developers and companies have produced real applications with the framework. The most famous of these is the app for Hamilton the musical.

    Google is putting serious effort into Flutter. As stated in their beta 3 release announcement earlier this month, Google has “invested tens of thousands of engineering hours preparing Flutter for production use” over the past year. In addition, Google touted Flutter at their Google I/O 2018 conference, devoting several hours of livestream sessions to the framework.

    Google has labeled beta 3 as “ready for production apps,” and counts hundreds of Flutter apps already released through app stores.

    A promising option

    Flutter outputs compiled native apps on both platforms, which should largely eliminate the performance issues other cross-platform solutions exhibit. Flutter provides native UI controls for Android and iOS, so while you’re free to design a single branded look and feel for both platforms, you can also use native widgets that iOS and Android users would expect to see in their apps.

    With Flutter, Google has also prioritized ease and speed of development, from how widgets are used to lay out screens, to how you can see code changes reflected almost instantly while developing.

    It’s worth noting that Google chose Dart as the programming language for Flutter. Dart is a programming language few developers have experience with, but is said to be relatively easy to learn.

    The upshot

    A year after Flutter’s introduction, Google has put a lot of muscle behind the framework.

    The desire for rapid cost-effective cross-platform mobile development is not waning. Flutter is a promising framework for building iOS and Android apps in a way that maximizes development speed and minimizes the common drawbacks of non-native development.

    Flutter will definitely tempt many developers and product teams to at least try it out over the coming year. It’ll be interesting to see how much traction Flutter has gained by next May.

    Additional resources:

    What’s Revolutionary about Flutter

    Flutter.io

    Video sessions from the I/O 2018 conference

    Flutter Codelabs tutorials

    Dart programming language

    Learn about how BetaTesting can help your company launch better products with our beta testing platform and huge community of global testers.

  • Google Fixes Some Problems with Material Design

    Google moves Material Design from a design language to a flexible design system and address some longstanding issues.

    It was not a surprise that Google had announcements about Material Design at the Google I/O 2018 developer conference. Hints, clues, and evidence pointed to a mild “refresh” of the four-year-old design language. And the internet talks about that stuff.

    What was surprising about the conference was how little talk there was about the expected stuff, and how much talk there was about additions and changes that attempt to mitigate some of the problems of actually dealing with Material Design.

    Common problems with Material Design

    As Rich Fulcher (the Google guy, not the comedian) noted at the Developer Keynote, Google has heard two main complaints from product teams and developers over the years:

    1. Material isn’t visually flexible enough; different brands’ apps look too similar
    2. Engineering support is lacking

    These were familiar sentiments.

    Visual monotony certainly cuts both ways. While designers on Material UI projects feel hamstrung, users have to live in a world of same-y looking apps and websites.

    “Engineering” support affects both designers and developers. Lack of official support for design tools and development libraries has made dealing with Material Design more difficult.

    As a designer I was not too surprised when I had to rummage for Material symbol libraries, or roll my own in a particular design tool. But I was surprised when one of the developers on my project informed me that implementing one of the standard Material components would actually require a bunch of custom control development. Not fun for him, nor for me, who had to provide a bunch of extra specs to support that custom development.

    Changes to the Material Design ecosystem

    Design refresh

    Yes, there was a refresh of the Material Design standards. The differences are not very significant in appearance or approach. If you hated Material Design before, you still will.

    There are new components like the Bottom App Bar (maybe that’s the only new component?), and tweaks and variations on existing components, like the addition of outlined text fields, and the banishment of plain non-filled text fields.

    For all the speculation ahead of the conference, Google did not actually take much time to talk through their changes to the Material Design standards. That is, except in context of the other things that Google was clearly more excited to talk about, like…

    Material Theming

    Material Theming is based on the notion that teams should make apps that display a more distinctive style… without straying too far from the core principles of Material Design.

    Google seems eager for app makers to lean toward their own look and brand, and away from Google’s. Resources and case-study examples on Material.io offer implicit guidance and encouragement about which aspects designers should feel free to change, and which should remain standard.

    Material Theming attempts to make it easier to create visual themes for your apps that deviate from Google’s standard theme. Changes you make to color, typography, shape, etc. are automatically (or more easily) spread across the entire app design. Importantly, Material Theming is made real via tools and source code Google recently released for designers and devs.

    In addition, Google now provides 5 icon style sets: Filled, Outlined, Rounded, Two-Tone, and Sharp. They are not wildly different from one another—it’s just about how the icons are filled in and what their corners look like.

    Material Theming is an attempt to solve a design-monotony problem while still encouraging us to color inside the lines, as it were. We’ll see what actual teams do with it.

    Material Components

    Material Components (or MDC, for Material Design Components) is a code library to help developers implement web and mobile applications using Material Design UI. MDC is a replacement for previous Material support libraries from Google, but it can be imported into existing codebases without having to start your app from scratch.

    MDC supports Material Theming. For example, on a web project, a developer can modify a few MDC-provided Sass variables to intelligently affect the visual theme across the entire application, while still being able to override individual components as desired.

    Google says MDC is what they use in-house for development.

    Material Components are available for:

    • Web
    • iOS (Objective-C, Swift)
    • Android (Java, Kotlin)
    • Flutter, Google’s cross-platform development framework to build native iOS and Android apps

    Tools

    This part is bittersweet for those of us who can’t/don’t use Sketch.

    Google has released Material Theme Editor:

    The Material Theme Editor helps you make your own branded symbol library and apply global style changes to color, shape, and typography. Currently available for Sketch, you can access the Material Theme Editor by downloading the Material Plugin.

    It looks pretty cool. But whatever.

    Google has also updated Gallery, their tool to help teams share and collaborate UI design work. The big deal is the new Inspect mode. Material elements in artboards uploaded from Sketch are inspectable. Team members can click on individual components and view its width, positioning, font size, etc.

    Seems like that might be useful.

    *sigh*

    Learn about how BetaTesting can help your company launch better products with our beta testing platform and huge community of global testers.

  • When a Failed A/B Test is Still a Success

    If the current design beats the new design in an A/B test (a.k.a “split test”), the experiment is called a failure. But it’s the best kind of failure there is.

    Let’s say you have an idea that you think will work. You try that idea out… and find out that no, it doesn’t work. In regular life, we tend to call that failure. In a scientific context, however, it’s not failure at all.

    A/B tests are little science experiments we run to improve our products and increase revenue. But we tend to use regular-life terms when discussing the outcomes: if the new design doesn’t beat the current one, we call it a “failure”.

    That’s okay, as long as we remember that in A/B testing, failures can still be successes.

    Success, and two kinds of failure

    In A/B tests (a.k.a. split tests), you try out a prospective design (B) concurrently against your existing design (A), resulting in one of these four basic outcomes:

    1. Positive result (Success) – B performed better than A (by enough to meet your threshold for success).

    Going into a test, your philosophy may simply be “better is better.” Or you might have predetermined a performance delta value that design B must exceed in order to be worth using.

    2. Neutral result (“Failure”) – B performed effectively the same as A (or insignificantly better for your purposes).

    3. Negative result (“Failure”) – B performed worse than A.

    4. Invalid test (Actual failure) – The test was compromised in some fashion such that the data is useless.

    Perhaps design B had software bugs that design A did not. Or mechanisms were not put in place at the start of the test to collect the data needed for evaluation.

    Whatever the reason, if you determine the test was compromised then you should toss the results, fix the test infrastructure problem, and run another test to determine the real outcome of B vs A.

    When B performs way better than A, it’s an obvious win. But actually, all three outcomes of a valid A/B test—positive, neutral, and negative results—should be considered successes.

    Here’s why.

    How A/B test “failures” can be successes

    You learn something from each A/B test

    At the very least, you learned that your design didn’t work as well as you thought it would.

    It sounds silly, but if you hadn’t tested that, you wouldn’t know. Seriously. You might’ve been arguing about the theoretical benefits of that design change in meetings for years to come. Now you can move on and argue about something else.

    If you go further than that simple lesson, there is…

    An opportunity to learn even more

    Okay, so your design didn’t perform as expected. Think about the results, make connections, capture conclusions, and figure out what to do next.

    Is the underlying idea still sound?

    Perhaps you should try a variation on the design and see if that works better. If that doesn’t work, maybe the idea could be expressed in a completely different way.

    Did your new design fail because you don’t understand your users as well as you should?

    Only you can figure this out. If you think you have a knowledge gap, you can plan some research to fill it.

    But if you honestly think your user research game is solid, you might be right; an A/B test failure doesn’t prove you didn’t do enough user research.

    Did you just learn something about your users that could only come from A/B testing?

    All the interviews, surveys, ethnography, and usability sessions in the world are not going to tell you whether your users are 12% more likely to click a button labeled “Free to Try!” over “Try for Free!”. That’s the kind of thing you can only learn about your users from A/B testing.

    A springboard for better ideas

    A/B test failures answer a question, pose new questions, and inspire new thinking. The more you learn about what works and what doesn’t work, the less scattershot your future design changes will be.

    It was probably cheaper than blindly rolling out the design

    If an A/B test has a negative outcome, the impact on your user base is minimal: only the “B” participants saw the change, over a limited period of time.

    If you had instead pushed that design directly out to all your users, it could’ve meant significant lost revenue. And because you couldn’t compare results to a concurrent control group, it would have taken longer to notice and would have been harder to determine the cause.

    For a neutral-outcome design, a direct roll-out might be a bit less expensive than testing it first—but you’d never really know if it was or not.

    As

    Conclusion

    A/B tests allow you to:

    • measure the relative success of a new design;
    • keep failures from annoying your users and negatively impacting revenue; and
    • gain valuable understanding about your users.

    You’ll have more failures than big wins. That’s fine. Resist the temptation to bury the failures. By examining them, you can turn each one into a success worth sharing.

    Want to get more insight into how other companies conduct A/B testing? Check out our article: How Netflix Does A/B Testing (And You Can, Too)

    Learn about how BetaTesting can help your company launch better products with our beta testing platform and huge community of global testers.

  • How GDPR Might Not Affect Your Small Business

    The EU’s General Data Protection Regulation (GDPR) impacts businesses worldwide, but here’s how your startup or small business might avoid being part of its scope.

    The European Union’s General Data Protection Regulation (GDPR) is an overhaul of Europe’s data security rules. It gives EU citizens more transparency and control regarding personal data collected and processed by companies and other entities.

    After a two-year transition period, GDPR goes into effect May 25, 2018. And while many EU companies are working hard to be compliant with the law ahead of the deadline, many U.S. and other non-EU companies are surprised to learn that they are subject to the regulations as well.

    Read on to find out if your small business or organization should be freaked out by GDPR, or if you will be relieved to find you may be exempt.

    Look, seriously: I’m not a lawyer, do your own research, all that. But I think this information will be helpful to you. GDPR applies to thousands of businesses that don’t even realize what it is, but there is also an important exception case that not being addressed much in the news.

    The worldwide impact of GDPR

    GDPR lays down a sweeping set of rules regarding the collection and handling of EU citizens’ personal data. Among other things, GDPR requires that EU citizens very explicitly consent to the collection and use of their personal data, and provides them an array of new powers over that personal data after it is collected.

    For example, businesses must be ready and able to provide any user a digital copy of all their personal data. Businesses must also delete all of a user’s personal data upon request (formerly known as “the right to be forgotten”).

    The costs of complying and not complying

    GDPR is good for consumers in the EU, and consumers outside of the EU will incidentally reap some of the benefits as well. By and large, GDPR forces organizations to prioritize doing right by their users when it comes to their personal data.

    However, as you can imagine, complying with these rules is not simple. Implementing new systems and processes, coordinating compliance with vendors, etc. in order to be compliance takes a lot of work.

    But there is strong motivation to comply. If you are discovered to be in violation, you are subject to legal warnings and then hefty fines: potentially over $20 million dollars or 4% of the business you did in the previous year, whichever is greater.

    Which is why businesses—particularly those that are late to realize that GDPR applies to them—are scrambling to comply.

    Surprise, this EU law might apply to you, too

    It’s an EU regulation, but it affects the whole world.

    GDPR doesn’t apply only to EU-based organizations, or multinational corporations that happen to have a presence in the EU. GDPR applies to people and organizations anywhere in the world that collect, store, or process the personal data of anyone in the EU.

    It doesn’t matter if you are a free service or a paid service. It doesn’t matter if you don’t share data with other organizations or not. It doesn’t matter if you are a huge corporation or a tiny entity. It doesn’t matter if you only collect a little bit of personal data—like email addresses for your marketing mail list.

    You might be surprised to find out that YOU collect personal data

    You may think, “I don’t collect, store, or process personal data. GDPR couldn’t possibly apply to me!”

    But under GDPR, “personal data” has a broad definition. It’s not just things like usernames and email addresses and social security numbers. It also includes things like IP addresses and cookie data that could be used to indirectly identify an individual.

    So, if you’re doing something as normal as using Google Analytics on your humble website, then in the eyes of GDPR you’re a “data controller”, and Google is your “data processor”. Both data controllers and data processors have responsibility under GDPR.

    And if your humble site can be visited by people in the EU (it can), you’re subject to GDPR.

    Maybe.

    Why GDPR might not apply to you

    In a Dec. 2017 Forbes.com article, guest author Yaki Faitelson points out an exception to GDPR’s extended scope. This exception is very important to small companies who don’t have a physical presence in any EU country and don’t intentionally market goods or services to the EU:

    The organization would have to target a data subject in an EU country. Generic marketing doesn’t count. For example, a Dutch user who Googles and finds an English-language webpage written for U.S. consumers or B2B customers would not be covered under the GDPR. However, if the marketing is in the language of that country and there are references to EU users and customers, then the webpage would be considered targeted marketing and the GDPR will apply.

    This is an important but not-often-repeated exception. Almost every article I read on the subject of GDPR simply pointed out that you must comply with GDPR if you have collected personal data from even one person in the EU.

    In fact, after finding essentially zero corroboration, I began to doubt Mr. Faitelson’s interpretation of GDPR’s coverage, and started to wonder if it was dangerous advice that should that I should warn readers to ignore.

    But after relentless digging on your behalf, I did eventually locate the GDPR language and interpretation that backs this up.

    About this exception…

    In short, in the official text of the regulation:

    • Article 3 indicates that GDPR applies to entities outside of the EU using personal data of persons inside the EU when related to: “a) the offering of goods or services, irrespective of whether a payment of the data subject is required, to such data subjects in the Union; or b) the monitoring of their behaviour as far as their behaviour takes place within the Union.”
    • Recital 23 (at the top of the regulation document) elaborates that there needs to be some intent of offering goods or services to people or businesses in the EU for GDPR to apply. Some attributes and actions do not indicate intent, and some attributes and actions would be sufficient to conclude intent.

    If your business is completely outside the EU, and you’re not in the business of collecting data to track, predict, or monitor users’ behavior, then that just leaves the part about “offering of goods or services”.

    In that case, if you’re not actually marketing your goods or services to people in the EU, then you’re not subject to GDPR, even if people in the EU might come across and engage with your website or application or mailing list.

    From the “Who Must Comply” page at GDPREU.org:

    [Recital 23] therefore provides a safe harbor to firms that do not market goods or services to the EU, by calling out that they do not need to undertake potentially expensive processes to block EU IP addresses from accessing their websites or reject emails sent by EU mail servers.

    Of course, whether or not you’re intending to market to EU citizens is open to legal interpretation. The GDPR text itself offers some ideas as to what would cross the line and what wouldn’t. GDPREU.org offers some additional insight and interpretation.

    (Note, it looks to me like the GDPREU.org information was the source for the aforementioned Forbes article’s conclusion.)

    DOs and DON’Ts for NOT marketing to the EU

    Let’s say you’re not planning on complying with GDPR at this time, because you are legitimately not targeting the EU for your business. It needs to be apparent that you’re not actually marketing to the EU.

    Here are some examples where you’d be in the clear and where you could get into trouble:

    Okay: You are an American company with just one “.com” website written in English. This is okay, even though English is spoken in the EU, and even though EU residents might happen upon your site or wind up in your mailing list.

    Not okay: Your company has one or more specialized sites related to an EU country, e.g. a website with an “.fr” extension with text in French.

    Not okay: Your company has marketing materials that mention the EU as actual or potential customers.

    Not okay: Your company has marketing materials in a language that is particular an EU member state, e.g. Bulgarian.

    Not okay: Your service lists prices in a currency specific to EU countries, e.g. Euros or British pounds (the U.K. is still in the EU for now).

    Not okay: Your company actually has a physical presence in the EU.

    When it comes to mobile apps, I strongly suspect that limiting the display language is not enough to avoid being subject to GDPR. Both the iOS and Google Play app stores let you modify the countries where your app will be available. I presume you’d need to remove all of the EU member states (and also the EFTA States of Iceland, Lichtenstein, and Norway) from the list.

    Learn about how BetaTesting can help your company launch better products with our beta testing platform and huge community of global testers.

  • User Experience Article Roundup – Better Personas and Fast Research

    Read our User Experience Article Roundup: UX rules, bold design, perspective on personas, and other articles and resources from the user experience world.

    The 15 Rules Every UX Designer Should Know

    An easy-to-read mix of rules, principles, and suggestions for anyone who makes products for users. #2 is “Know your audience” and #3 is “You are not the user”, but it gets more interesting from there.

    Even if you’re already familiar with 90% of this, you might find revisiting the ideas helpful and energizing.

    Along similar lines, but from another direction, there’s also…

    Good Designer, Bad Designer

    One man’s list of good morals and bad behaviors for the designers he manages, presented as a charming didactic comic.

    Predictive Personas

    It’s surprisingly easy to lose your way when creating personas. In trying to craft a realistic person, you stuff them full of attributes that don’t matter, instead of attributes that define whether or not they’d actually want to be your customer or use your feature to begin with. Laura Klein will set you straight.

    Note: the meaningful user attributes you uncover when developing personas will help you later when you are defining participant pools for beta testing and user testing.

    How to improve your design process with data-based personas

    A good companion piece to “Predictive Personas”. Tim Noetzel goes deeper into a process you can perform to create demonstrably useful personas, in part by making hypotheses and talking to people.

    He also references Laura Klein’s article. You’ll feel smart when you get to that part, because you already read it. (You read all of these articles in order, right?)

    Rapid UX Research at Google

    An interesting look at how Google’s “Rapid Research” teams do actionable user research with just a one-week turnaround. Heidi Sales details the rapid research process she built at Google, and includes some of the tools her team uses to keep things running smoothly.

    Brutalist Design is the Bad Influence We All Need

    Google’s Material Design and Apple’s Human Interface Guidelines are great, but they are certainly helping to make our web and mobile designs look safe and samey. Boldly breaking out of the monotony is tempting and inevitable. Here is the call to arms.

    Also, this

    Museum of Websites

    See how the designs of some well-known websites have changed over the years. SPOILERS: The old web was jam-packed with blue links and black text, with a seemingly hostile regard for margins. Today we can afford pretty pictures and more whitespace.

    By the way, my award for least-changed website goes to Reddit, which barely changed its visual design over its 12-year lifespan. Until this month’s new big redesign, that is. (Reddit did not follow UX Designer “Rule” #15.)

    20 cognitive biases that screw up your decisions

    Revisit this infographic of cognitive biases and think about how they may affect decisions you make about your product. Look for moments to question the limits of your own knowledge and perspective.

    Learn about how BetaTesting can help your company launch better products with our beta testing platform and huge community of global testers.

  • 6 Reasons Why The Chrome Link Underline Change is Not So Hot

    Google embraced a new CSS text property and made it the default Chrome link underline style in its Chrome browsers. This may not have been the right move.

    A few months ago, I was looking at a web page (minding my own business) when I noticed that the links looked odd to me. They were just simple blue text links with underlines… but the underline style was different than it had been the day before.

    Instead of one continuous line, the underline stopped and restarted to avoid crossing over the descenders of lowercase letters like g and y, as in this example:

    Depending on text size, font, etc., the broken underlines were sometimes innocuous, but sometimes really snagged my eyes while reading across the page.

    What was up?

    text-decoration-skip-ink

    It turned out that, starting with Chrome 64 (on desktop and mobile), the browser supports a new CSS text property called text-decoration-skip-ink. This property allows for the underline style that “skips” letter descenders, punctuation, etc. that cross below the text baseline.

    Chrome not only supports the new style (let’s call it “skip-ink”) but made it the default for all text underlines.

    I’m not convinced that Google’s change is a good one. I’ll explain why.

    But first, a few qualifications:

    • To be clear, the Chrome link underline style change not a big huge deal. It’s just a deal.
    • Skip-ink not a new visual approach. Some website implementations that have accomplished the same or similar effect for several years.
    • Chrome is not even the first browser to do this. Safari and iOS made this visual style the default by the end of 2014.

    Still: it’s a design change, it’s new to many, and its benefits are murky. This is worth thinking about, both for what it is and as an example of how we don’t want browser changes handled in the future.

    6 reasons to question the Chrome link underline change

    1. Additional visual distraction

    When it comes to cognitive load, a solid line is less information than a broken line. Irregular breaks in a line garner more attention around the locality of the breaks. In some cases, bits of underline may look out of place, or resemble other symbols.

    The level of additional cognitive load will vary based on user, font choice, text size, browser implementation, etc.

    Of course, not all web designs use underlined links. If your website’s links don’t use underline at all, skip-ink does not affect you. If your links only display underline on mouseover, then I’d wager the effects of skip-ink are minimized (just as the negative impact of the traditional underline is minimized in the same circumstance).

    2. An unproven approach

    Use of the link underline on the web has always been a compromise. From a typography point of view, underlining is considered a scourge that arose from the age of typewriters and must be stamped out. On the other hand, underlined hyperlinks have been helpful and even necessary for web page usability since the beginning of the world wide web.

    Underlined text is not as clean non-underlined text, and is somewhat more difficult to read. Research indicates that old-school underlined links decrease readability by a small but statistically significant amount. We have, however, been addressing these concerns over the years with different approaches to link styling (see below).

    An underline crossing a descender (the bottom of a “y” for example) does make the character less recognizable to some degree. But it’s also worth remembering that we don’t read individual characters, we read words as chunks, and mentally correct in context as we go.

    So, compared to traditional underlining, skip-ink certainly makes certain individual letters and symbols easier to make out when inspecting them. But does the skip-ink approach help or hinder readability overall? It’s unclear. And without data on the suspected pros and cons, I am unconvinced that skip-ink is a great solution, let alone so clearly superior that it should be our default.

    3. There are other approaches

    Here are a handful of the possible visual treatments for links:

    Possibilities include things like: removing the underline, styling it separately from the text, and using alternatives like border-bottom, which the CSS standards team happens to do for links on their own website.

    Skip-ink, which is included in the figure for comparison, is not obviously better than any of the other approaches for all applications.

    4. Defaulting to this approach may discourage others

    Making skip-ink the default Chrome link underline style may signal to designers that the problems of link underlines have been empirically solved in a one-size-fits-all fashion. This may discourage the continuation and exploration of better approaches.

    5. It causes new problems (aside from visual distraction)

    Users should be able to determine at a glance what is part of a link and what isn’t, and whether it’s a single link, or more than one.

    By breaking up the Chrome link underline, skip-ink can insert ambiguity into those rapid assessments. The user can stop to inspect a link more closely for clues—e.g., adjacent underlined space characters—to determine the answer, but users can’t be and shouldn’t be expected to do that.

    6. An external entity changed your site design instead of giving you an option

    Google, as did Apple a few years back, effectively changed your design on you. Whether this is a significant change or a minor change is up to you to decide. But Google did change an aspect of your web design without asking or warning, and without having your users opt in.

    Google could have instead provided you with a new tool to use (skip-ink), and let you apply it as you see fit. Or Google could have given their browser users skip-ink as an accessibility option to use if they wish.

    Google did neither. They provided users no option to opt in or opt out of their new link decoration effect. As a designer or developer, you are able to override their design choice, but you must modify the code of your current and old websites to do so.

    Learn about how BetaTesting can help your company launch better products with our beta testing platform and huge community of global testers.

  • What is a Longitudinal Study in Software User Testing?

    If a regular user test gives you a snapshot, then a longitudinal study provides you with a time-lapse video.

    If you want a not-clever mnemonic for remembering what makes a test “longitudinal”, just focus on the word “long”.

    A longitudinal study (or longitudinal testing) is a type of research that collects data from the same set of users on multiple occasions over an extended period of time.

    The term “longitudinal study” is commonly used in psychology and sociology contexts, where tests might run for many years or even decades. But here we’re talking about software user testing, where longitudinal tests don’t run so crazy-long. After all, you’re not aiming to uncover new universal truths about the human condition to publish in a scientific journal.

    You just want to validate and improve your software product. And the longitudinal study is a tool that can help you do that, in some ways that regular user testing cannot.

    Longitudinal study vs. regular user test

    User testing—whether it’s directed toward usability or user feedback more broadly—tends to occur over a very limited period for each participant. It’s often a single session. For the purposes of this article, we’ll call this “regular” user testing, and we’ll assume you are already familiar with the concept.

    Regular user tests provide data about the user’s experience with your product during the test. Feedback focuses on the initial learnability of a product or feature, and the user’s reactions to it, typically while performing set tasks in a limited timeframe. These types of tests and the feedback they yield are extremely valuable. There are, of course, limitations on what these tests tell you.

    Longitudinal studies, by contrast, last well beyond a single session, and collect a multitude of data sets from each participant over time. These two fundamental features of the longitudinal study —1) abundant time, and 2) multiple data sets—provide us the ability to discover more about our product and our users than we can with regular user testing.

    Some advantages of longitudinal testing

    A regular user test shows you a single “snapshot” of the user’s experience with your product. A snapshot can tell you what’s happening in the moment, but isn’t very good at indicating where things are headed. And if there are any twists and turns over the horizon? Forget it. You just can’t see them.

    Longitudinal tests collect a series of snapshots to create a time-lapse video of a user’s experience (so to speak). The two fundamental features of the longitudinal study —1) abundant time, and 2) multiple data sets—provide us the ability to discover additional things about our product and our users.

    Longitudinal studies can help you to find out things like:

    • How users’ attitudes toward your product change over time
    • Users’ usage patterns, and how they may change over time
    • Long-term learnability and forgettability issues in your product
    • How users handle the same tasks as they become more experienced with the product
    • How users naturally use infrequently-used features
    • How users handle long-term tasks that would not naturally occur in a single session
    • How users’ preferences and activity changes after they add a critical mass of their own data
    • Etc.

    Flexibility

    A wide variety of insights are possible due to an abundance of time and data sets, but also because the longitudinal study is a pretty flexible tool. You can get creative and design your longitudinal test however you want to get the data you’re after.

    Your longitudinal study may use specific test procedures and/or general usage directives. You might periodically interview the participants, or observe test sessions, or neither. You may collect data on-site or remotely. You might instruct your participants to use the product only on a defined periodic schedule, or you might encourage them use the product as much as they want. You might have testers perform the same tasks at every interval, or you may plan out a progression of different test procedures over time. Data collected may include surveys, or maybe you have each participant keep a usage diary.

    And so on.

    Some disadvantages of longitudinal testing

    Longitudinal studies take longer to produce conclusions than regular user studies do. Not a shocker. A longitudinal study is also, not surprisingly, more difficult and more expensive to execute—but not just because it requires more planning and data collection. Longitudinal studies also require additional work in selecting participants (particularly if you are recruiting participants yourself) and are sensitive to participant attrition.

    Participant selection and participant attrition are two sides of the same coin when it comes to a longitudinal study. Getting a long-term commitment from potential participants is always going to be more difficult than securing limited, one-time participation. In a regular user test, you can make up for a no-show participant by adding another relatively quickly (if you decide it’s even necessary). For a longitudinal study you’ll need to recruit more participants than your ideal minimum right at the outset—enough to account for drop-outs. The longer the study, the more participants you’ll lose by the end. And it’s not just a quality-of-participants issue; there are innumerable reasons why good people may drop out of your study somewhere in the middle. Life just gets in the way sometimes.

    It is also worth noting that participation in a longitudinal study may itself influence the behavior or attitudes of a user. This is not a concern that is particular to longitudinal studies. But keep in mind that your participants, intentionally or unintentionally, might act as they believe they are expected or obligated to act. And that may include continuing to use your product well beyond the point they would have stopped, or other aspects you may be trying to measure.

    Learn about how BetaTesting can help your company launch better products with our beta testing platform and huge community of global testers.

  • A Harrowing Tale of User Acceptance Testing

    My first encounter with user acceptance testing will scare you straight.

    Recently, I wrote an article about user acceptance testing (UAT) and was reminded of my very first encounter with validation testing on a software project. Here is that story as I remember it.

    WARNING: You may want to skip this story if the thought of wasted money makes you feel faint, or if you are severely allergic to anecdotes that sort-of fizzle out at the end.

    A story of high-stakes validation

    Long ago, as a fresh-faced college graduate, I was assigned to a software project for a big international company that built engines. The company was developing a new Windows application to replace the text-only PC tool they were currently using to calibrate and test their truck engines.

    I joined the project relatively late in their long software development cycle. Most of my teammates had been on the project a little over a year, others much longer. We were mere months away from release, and I had been added to the project to help the team close out development on time.

    In one of our weekly team meetings, the project manager detailed what the final stages of development and testing would look like: we would finish the development scope, support functional testing, and fix bugs as needed. Then the application would go to validation testing. After that, a decision would come: release the application, or shelve it.

    Over the next few minutes, it became clear to me what “shelve it” actually meant. It did NOT mean “set it on a shelf for a while and then we’ll release it when the time is right.”

    No, this was “shelve it” in the Raiders of the Lost Ark sense: box it up and shove it in a warehouse, never to be seen again.

    Wait, what?

    So… after several years of effort and tons of money spent (I didn’t know if it was millions, but it was at least hundreds of thousands) we’re going to finish the software… and then maybe just toss it out?

    I remained astounded and baffled for the remainder of the meeting, as contingency plans were begun about how to responsibly document, package up, and store project materials if the decision was indeed to “shelve it”. Budget was set aside for a skeleton crew to handle the arrangements if the time came. (All of these plans were discussed with a calmness I could barely fathom at the time, but would later recognize as soul-crushed resignation.)

    After the meeting, I asked a manager what he thought the chances were that the product would be shelved. I expected him to say something like 15 or 20 percent—a sort-of low, but still-disturbing number.

    He shrugged and said, “like 50-50.”

    Noticing my reaction to this, he told me it would be fine. All we could do is finish the project, just like we planned, and then see how it fares. He then explained to me why our new application may or may not be “shelved”.

    Why we might throw away functioning software we just spent several years building

    The answer was validation testing.

    After the application was complete and it passed functional testing (verification) with flying colors, it would then be given to a sub-set of real users in the company to use. You may know this phase as beta testing, or user acceptance testing.

    If validation testing didn’t produce positive enough results, it would mean that the product wasn’t doing a good enough job fulfilling its purpose and meeting the needs of the actual users for whom it was created. This would indicate one or more fundamental flaws in the application, and the company had already decided it would pull the plug if that were the case. And for good reasons:

    1. The cost of rolling out and maintaining a new tool was significant. Rolling out a fundamentally flawed tool, however, would be even more expensive and could negatively affect production.
    2. The new application was replacing an existing application that, while clunky and out of style, still got the job done.
    3. The software project was already overdue and over budget, at least compared to executives’ original expectations. Patience was pretty low. Pulling the plug on a failed expensive project would be unpleasant but relatively low-profile. On the other hand, a troubled product roll-out would be more expensive, highly visible, and might just cost somebody their job.
    4. Fixing one or more fundamental flaws in the application would be another long development effort, which would have roughly the same likelihood of success. (This was the era of classic waterfall development.)

    So, did the product get released, or what?

    Don’t hurt me, but the answer is: I’m not sure.

    By the time validation testing started, I had already been assigned to a different project for a different client, so that part of my memory is haziest. The indelible effect the experience had on me, however, wouldn’t have been increased or lessened by either result.

    But, if I’d heard that the application was killed, I’d remember it… right?

    So, it very likely was released.

    Probably.

    50-50.

    Is User Acceptance Testing always that terrifying?

    Is validation testing always such a high-stakes all-or-nothing venture? Not really.

    The particular circumstances of the company, the project, and the software development practices of the day all conspired to make the validation phase a tightrope walk in which the fate of the product teetered on the edge of oblivion.

    I have to hope that was more common back then than it is today.

    We certainly have more knowledge, tools, and best-practices today to help us remove and mitigate a lot of the risk from user acceptance testing. In retrospect, it was a bit forward-thinking of the company in my story to incorporate a validation phase as part of their process, and to have a rational willingness to stop throwing good money after bad. Today we are also, hopefully, better at initial research and goals analysis, iterative development and testing, periodic usability testing, etc.

    But let my eye-opening experience from nearly 20 years ago serve as a reminder to you: user acceptance testing is worthy of your respect, and maybe a little healthy fear. You’re testing to see whether your product or feature actually fulfills its reason for being. If it performs badly, you may not have to throw everything in the trash, but there’s going to be some discomfort. You may need to postpone a launch, insert a development sprint to fix a flawed deployment, or, yes, maybe even go back to the drawing board.

    Learn about how BetaTesting can help your company launch better products with our beta testing platform and huge community of global testers.

  • User Acceptance Testing (UAT): What It Is, and What It Shouldn’t Be.

    If you read one article describing User Acceptance Testing (UAT), you’ll walk away with a solid understanding of what it’s all about. If you read 5 or more articles, you might just wind up confused. That’s because “User Acceptance Testing” is one of those annoyingly overloaded terms that means different things to different organizations.

    Now, I’m not “that guy” who insists upon specific definitions for cloudy terms and tells everyone they’re wrong if they disagree. However, there are at least three different ideas out there about what UAT is, and one of them is the more useful concept to embrace, especially for you fine folks reading this. So, for the purposes of this article, I’ll present UAT by its most useful definition. But I’ll also address the other two definitions and explain where they are coming from.

    What UAT Is:

    User Acceptance Testing is a software testing activity in which actual users test the product to confirm that it works in real-life situations to fulfill its original intent.

    UAT is often the last phase of testing, following developer testing and QA testing. (Your organization may use different activity names in place of these, e.g. Unit Testing, Functional Testing, Integration Testing, System Testing, etc.)

    Actual users

    Here, actual users are:

    • the users already using a previous iteration of the product; or
    • users who will use the product once it is released; or
    • potential users of the kind you wish to attract to your product; or
    • sample users who are reasonable approximations of the above.

    The key is to realize that software developers, software testers, project managers, product owners, etc. are NOT the actual users of the software, and not who you should be targeting for UAT.

    Real-life situations

    UAT is planned testing, so it may not capture literal real-life use. Users may be instructed to perform certain tasks, but those tasks should reflect real-life scenarios in real-life user conditions as much as possible.

    Original intent

    There was, presumably, a reason why the product or feature came to be in the first place. Usually, some combination of user needs and business goals were deemed good enough reason to greenlight a software development effort. Software specs—requirements, designs, etc.—soon followed.

    Most software testing activities focus on whether a product or feature matches the software specs. UAT instead focuses on whether the whether the product or feature sufficiently meets the original user needs and business goals. It’s the difference between verification and validation.

    Key concept: Verification vs. Validation

    In software testing, validation and verification are not interchangeable terms. Definitions of these two terms don’t get much pithier than these frequently referenced quotes

    from Barry Boehm:

    Verification is: “Are we building the product right?”

    Validation is: “Are we building the right product?”

    These definitions are memorable and strike at the heart of the difference between validation and verification. They are also a little too concise and clever for their own good—because, you know, what does that actually mean in practical terms?  So, let’s elaborate a little further…

    Verification is the act of determining how well something matches agreed-upon specifications.

    When you think of “software testing”, you’re probably thinking about verification activities. Verification confirms that software sufficiently meets its predefined software requirements, specs, and designs.

    Success or failure in a verification process is determined by the software’s behavior. Non-conformities (bugs) are found and captured. If a bug is considered important enough to fix as a software change, the specific desired software behavior is clear—it’s already been defined.

    Verification could be performed by actual users, but rarely is, as it is usually inefficient to do so. So, verification is performed by technical professionals using all sorts of methods, from automated testing to manual test scripts to ad-hoc testing.

    Validation is the act of determining we how well something serves its intended purpose.

    When you think of “usability testing”, you’re probably thinking of validation activities, but that is not the only kind of validation. When it comes to usability testing, the focus is on how well the user deals with the interface against reasonable expectations. When it comes to UAT, the focus is on how well the product fulfills its stated purpose when in the hands of the user. That stated purpose was likely documented as user requirements and business requirements at the start of the project.

    Validation activities such as UAT may be planned and facilitated by experts, but need to be performed by actual users of the software in order to be effective. Success or failure in a validation process is determined by user behavior. Users’ issues and negative reactions (whether directly stated by the user, or observed by another party) are captured. If an issue is considered important enough to address in a software change, the desired software behavior is not immediately clear—thought and redesign are needed.

    Takeaways:

    • Project success runs on verification.
    • Product success is enhanced by validation.
    • UAT at its finest is predominantly a validation activity.

    What UAT Also Is (But Probably Shouldn’t Be)

    While many good sources on the subject of UAT are in line with the definition presented above, many others have a different idea about what UAT is about. This isn’t a huge problem, but it’s unfortunate for, let’s say, three reasons: 1) confusion; 2) there are other terms readily available that already mean what they use UAT to mean; and 3) Using UAT in these other ways pushes aside an important concept that UAT embodies.

    This article wouldn’t be as helpful to you if I simply ignored the fact that individuals and organizations often use the term User Acceptance Testing to mean something different. So here goes.

    UAT as Client Acceptance Testing

    Many organizations treat UAT as equivalent to plain ol’ Acceptance Testing or Client Acceptance Testing. Acceptance testing of this sort is a process hurdle, where a software delivery is evaluated, and a sign-off is required in order to proceed. The agreed-upon acceptance process may consist of any kind of testing or no testing at all, and frequently has nothing to do with validation.

    Aside from the words they have in common, the reason for conflating acceptance testing and UAT is a matter of perspective—and sometimes a looser definition of “user” than is desirable.

    Let’s say you’re a software vendor for hire. Client acceptance of your software releases is how you close out projects and get paid. Business requirements and user requirements are the client’s responsibility, and may not even by fully shared with you. Your responsibility is to come to an agreement with the client on what it to be built, and to do a good job building it. You may have little or no access to the product’s actual end-users; indeed, you may even think of the client and the user as equivalent. For you, the goal of client acceptance is to confirm the client is satisfied enough to move forward: go, or no-go. There is often motivation on both sides to check that box as quickly as possible.

    When this is your perspective, it makes sense that your definition of UAT doesn’t include validation, and might not even include actual users. The activity takes place at the same points in the software lifecycle, but it has a different purpose for you.

    However, if your perspective is that of a savvy client, or if your company is building its own product, then your attention should be not only on how software milestones are approved, but on determining if the software product is actually a valid solution.

    UAT as Usability Testing

    If you scan the landscape, it’s not uncommon to see User Acceptance Testing defined effectively (or exactly) the same as Usability Testing—also referred to as User Testing.

    This is understandable. UAT and usability testing have a lot in common: both are validation activities performed by real users, and the practical feedback you’d get from Usability Testing and UAT might overlap quite a bit.

    The problem, however, is the focus and the goal of the testing. Usability testing is validation that a given UI design is intuitive and pleasant for the user; UAT is validation that the product as a whole is meeting the user’s needs. Again, there is some overlap here. But the point is, focusing on one risks sacrificing the other, especially if you institutionally view UAT and usability testing as equivalent concepts.

    Why UAT Matters

    A software product or feature could pass comprehensive verification tests with flying colors, please the client, show little-to-no issues in usability testing, and still fail validation during UAT. To me, that may be reason enough to keep the term “User Acceptance Testing” separate from “Acceptance Testing” and “User Testing”. But there’s another reason, too.

    If you convince yourself that UAT is something else, it’s easy to simply not perform that kind of validation at all. On real-life projects where money and jobs are involved, there is a ton of motivation to keep things in the “success” column and keep moving forward.

    Validation can be a scary prospect. It’s common for UAT to occur very late in the game, and it’s natural to not want validation testing to actually find problems.

    There are lots of reasons why serious issues could arise, seemingly out of nowhere, on a project that had been a glowing success right up until User Acceptance Testing. Maybe reasonable assumptions made early on about what to build were off the mark. Maybe users were wrong about what they wanted in the first place. Maybe other software applications negatively interact with yours in real-life situations. Etc.

    The issues uncovered in UAT can be fundamental and serious. It can be unclear how to correct the issues, and—for those organizations that think this way—it can be unclear who was “at fault”. It’s a big can of worms no one is eager to open.

    The choice not to perform validation-based UAT may not even be a conscious one. If your organization doesn’t institutionalize validation testing in its processes, then it may not even occur to people running software projects to do it.

    Final Thing

    Failing to discover validation-level issues in your product during testing might make your software development project run more smoothly, but it’s at the expense of the released product. The problems are still there—they’ve simply been deferred to the future, where they’ll be more expensive to deal with.

    Learn about how BetaTesting can help your company launch better products with our beta testing platform and huge community of global testers.

  • Bad UI or Bad UX? The Real Story Behind the Hawaii Missile False Alarm.

    The Hawaii missile false alarm was blamed on a moron operator and bad UI design. But what’s the real story?

    One Saturday morning in the state of Hawaii, everyone’s phone beeped and buzzed and displayed this official emergency message: “BALLISTIC MISSILE THREAT INBOUND TO HAWAII. SEEK IMMEDIATE SHELTER. THIS IS NOT A DRILL.” A similar Emergency Alert System warning also interrupted television programming.

    There was statewide confusion, alarm, and panic. Families ducked into their bathtubs. Hotel guests were ushered into basements. 911 dispatch systems were overwhelmed. Hundreds of thousands of people wondered if they were going to die that morning.

    It turned out to be a false alarm.

    Within fifteen minutes, word had begun to get out from various official sources that there was no threat. Thirty-eight minutes after the initial alert was issued, an official false alarm notice went out to everyone’s cellphones.

    The Big Question

    Once the panic subsided and everyone caught their breath, the big question was: how did this happen?

    The Governor of Hawaii issued a statement, reporting that the false alarm was not the result of hacking or other malicious intent. The story was, simply: during a routine drill at the Hawaii Emergency Management Agency (HI-EMA), a false alarm was caused by “human error” and that an employee “hit the wrong button.”

    The dots were connected, and a narrative immediately formed.

    Bad UI as the Culprit

    In the days that followed the missile scare, the blame was largely pinned on bad user interface. Something like a cottage industry of content popped up on the subject of HI-EMA’s bad UI: from snide comments and gifs to vague think pieces and thoughtful analyses on the importance of usability.

    This in itself was a reminder of how the zeitgeist has changed over the past few decades: the public at large now seems to recognize that “human error” tends to mean “bad interface”. Humans make mistakes, but the computer applications we use at home and at work—even when we have been “trained” on how to use them—often invite our mistakes or exacerbate them.

    Of course, there were still people who declared the guy who issued the false alert to be a “moron”—it is the internet, after all. And there was plenty of mocking and scorn rightly and wrongly directed at officials who floundered in the 38 minutes after the alert went out.

    On the whole, however, the narrative around the cause of the false alarm was bad UI. Much was written about it, fueled in part by “screenshots” of the UI in question that showed up days later. Confusingly, each of the two UI snips released publicly were quickly determined to not be the actual interface, however the version that depicted a dropdown menu was declared to be “similar” to the real thing. (The actual interface would not be distributed for security reasons.)

    Despite the confusion, the pretty-close-to-actual UI samples depicted a UI that was easy to criticize, and rightly evaluated as problematic and error-prone. The event was a teachable moment for bad UI.

    Then we learned that the missile alert wasn’t triggered by accident.

    It Wasn’t the Bad UI After All

    By the end of January 2018, state and federal investigations revealed the reason why an operator at the Hawaii Emergency Management Agency triggered the infamous alarm: he thought there was a real threat.

    It wasn’t a mistake due to an error-prone UI, it was an intentional action made by a confused man who thought he was warning his fellow citizens of impending danger and doing his job as he was trained.

    But, as we know, there was no actual threat; it was a drill.

    So, what the heck?

    A Different Kind of Human Error

    Initially, the world assumed—and not without reason—that the missile alert mishap was caused by one kind of user error, where the user’s action doesn’t match their intention. But—surprise!—the actual cause was a different kind of user error, where the user’s intention is incorrect.

    The employee’s intention was set incorrectly by something that happened just a couple minutes before he sent out the alert.

    This is where our story of human error winds up containing more old-fashioned human error than originally thought:

    The guy in question was sitting with a room full of people who all heard the same test exercise recording, played to them over a speakerphone. Everyone else in the room understood it to be a drill; this guy did not. (As investigators reported, it wasn’t the first time he’d confused exercises with reality.)

    There were errors up the chain that probably helped cause this man’s confusion. While the speakerphone message correctly included “EXCERSISE, EXCERSISE, EXCERSISE,” at the outset, the body of the message incorrectly included live missile alert language, including, “THIS IS NOT A DRILL.”

    Once this guy mistook the drill for a live threat (and didn’t talk to his coworkers about it), there was no process in place to stop his misconception from becoming the alert that went out to the masses. He went back to his workstation, intentionally selected the live alert option from the menu, and selected “Yes” at the confirmation prompt. Done.

    It did not matter that the UI was stodgy, or that confirmation prompts aren’t the best safeguard against mistaken actions. The degree to which one particular UI screen “sucked” was not the issue that morning.

    The user error wasn’t the kind the world had assumed it was. But either way, the systems in place—both people-powered systems and computer-driven systems—were not built to handle the outcome swiftly or gracefully.

    What Can We Learn from All This?

    Even though we were collectively wrong about the exact cause, many of the lessons we learned and conclusions we drew along the way are still applicable… except that we need to look deeper. Perhaps we should start associating “human error” with “bad system” instead of “bad interface”.

    In the end, a general lesson to draw is that robust scenario design and task analysis are important when we create and improve our software and processes. We should look broadly at whole systems—not narrowly at one software application—and appreciate the complexity of all the human-human, human-computer, and computer-computer interactions in that system.

    We should look for ways to minimize errors where we can, but we should always design with the assumption that errors will happen (of both kinds!), and then ensure that processes and functionality for dealing with those errors are an inherent part of the design.

    Learn about how BetaTesting can help your company launch better products with our beta testing platform and huge community of global testers.