00:00:00 ◼ ► Welcome to Under the Radar, a show about independent iOS app development. I'm Marco Arment.
00:00:05 ◼ ► And I'm David Smith. Under the Radar is usually not longer than 30 minutes, so let's get started.
00:00:10 ◼ ► So for today's show, I wanted to talk through a concept that's been rattling around my head for a while.
00:00:20 ◼ ► And it's kind of funny, I used to do conference talks years ago, where I would have these sort of things that were rattling around in my brain that I kind of thought worked well as a talk rather than as an article.
00:00:29 ◼ ► And I would go and give conference talks. But for a variety of reasons, I really don't do that anymore.
00:00:35 ◼ ► I found it was very disruptive to my ability to work and my family life. And so instead I don't do that anymore. Right now I do videos, apparently.
00:00:42 ◼ ► But in this video, I'm talking through just a way that my design philosophy has evolved over the last few years.
00:00:50 ◼ ► And specifically how it relates to sort of things that we would often refer to as accessibility.
00:00:56 ◼ ► And we tend to think of accessibility in that sense of like, if you go to the iOS settings app and you open it, there'll be a section that says "Accessibility."
00:01:05 ◼ ► And these are the accessibility features. And these are typically things that are kind of compensations for a limitation perhaps of a user.
00:01:16 ◼ ► That they could have limited vision, or they have limited motor skills, or things like that. We tend to think of them in that way.
00:01:23 ◼ ► At least I did. And this was, I think, increasingly a reasonable place to start. And starting to think about these kind of problems in the first place is problem number one.
00:01:33 ◼ ► Once you're there, you're well ahead of a lot of developers. But I think increasingly what I found, though, is that that perspective was kind of limiting me in the way that I was finding ways to improve my user's experience.
00:01:46 ◼ ► And the key insight I had was that sort of every ability along every dimension of one of my users exists along a spectrum.
00:01:56 ◼ ► Exists in this wide range of abilities. In the simple case, you have something like full vision, perhaps, to something like it's limited vision.
00:02:08 ◼ ► You have that that exists as a spectrum. Between those two points, there's lots of different things. But it also could apply to a variety of other dimensions of a user.
00:02:16 ◼ ► It could be their experience with applications, like yours could be the first app they ever downloaded from the App Store. Or it could be their thousandth app that exists on the App Store.
00:02:24 ◼ ► That's a form of the user's experience that exists on a spectrum. Or you could have other kinds of things in terms of their life situation.
00:02:32 ◼ ► Where they are physically, that isn't necessarily their ability to use the app. But as someone who makes a step counting app, where they are physically.
00:02:39 ◼ ► Their physical health, their physical mobility, and those things. All of these things exist on this spectrum.
00:02:46 ◼ ► And I can make my user experience better. I can design my app better, if rather than focusing on the ends of that spectrum, I try and focus instead on the entire spectrum.
00:02:57 ◼ ► And this leads me to a place where I don't really talk about accessibility anymore. I talk about inclusiveness.
00:03:04 ◼ ► When I say talking about, in my own design mindset, when I'm thinking about design, when I'm thinking about what my app should do and how it should do it.
00:03:11 ◼ ► I think, how can I make this app as usable to as wide a possible audience and in the greatest possible contexts?
00:03:20 ◼ ► How can I make every little part of it more inclusive? And I found that this is just sort of, at this point, boils down to in general,
00:03:29 ◼ ► at the end of these places, well that's just good design. And it's like, yes, exactly. But it's a very useful way for me to get to a better design by asking myself that question.
00:03:39 ◼ ► How can I make this part of my app more inclusive? How could more users be made to feel comfortable using this app?
00:03:47 ◼ ► Because I think another version of this, in some ways, is to say it's about inclusiveness and comfort.
00:03:51 ◼ ► And I want so many more people, or as many people as I can, to feel comfortable in their use of my app.
00:03:57 ◼ ► And since I've sort of adopted this philosophy in the way that I'm doing my design work, it's been so helpful.
00:04:02 ◼ ► And I've found all these ways that I can make my apps better. And we'll go through some of those examples later, both in my apps as well as in Overcast.
00:04:09 ◼ ► But it's really just, for me, it's been this very helpful filter that I can apply to all of my design work.
00:04:18 ◼ ► Yeah, that's a great way to think about it, because like any other form of accessibility, you're not doing this for some kind of charity, feel-good reason.
00:04:30 ◼ ► This is just good design. This is just good business. This makes your app usable at all, and then also more pleasant for more people.
00:04:45 ◼ ► By ignoring or by not considering some of these broader factors, like what you're saying, I think people are missing a lot of potential.
00:04:55 ◼ ► And yeah, we'll get to the specifics in a little bit, but so many people only think of, "How will this work for people who I can think of who are basically like me?"
00:05:06 ◼ ► And there's a lot of different people out there in the world with a lot of different situations and abilities and preferences and needs.
00:05:14 ◼ ► Accessibility is, the way we think of it traditionally, in terms of things like accommodations for people who are hard of hearing or who have imperfect or missing vision or various other physical disabilities or different needs.
00:05:31 ◼ ► That is one side of it, and of course that's a huge side of it, but even just conceptual designs of how certain features work, what features even exist, how they look, how your app uses language and iconography.
00:05:45 ◼ ► All of those things can have such big impact on much, kind of much less obvious or much less in-your-face accessibility and inclusion needs.
00:05:56 ◼ ► Yeah, and I think within that, it's one of those funny things of how you often think about, at least this is the way that I used to do this, and I think this is where I learned that I was sort of limiting myself.
00:06:07 ◼ ► I would think of, what I would say, the average user, and I would try and build my app that was good for the average user, and then I would think of these very special cases off to the side of that and build features.
00:06:20 ◼ ► I would do my dynamic type or do my voiceover or do my localization, do these things that are very specific things to cater to little islands within the universe of different users.
00:06:33 ◼ ► But then I had in my mind, I had this average situation that I was catering for in the middle, and it's one of those things that's like, there's probably actually no average user.
00:06:42 ◼ ► If you're measuring a user in a hundred different dimensions, you may end up with, there's a mathematical average user, but there may not even physically even be a person who meets all of the criteria of that thing.
00:06:54 ◼ ► Most users are going to exist in all these very different clusters and these different islands of ability or experience.
00:07:01 ◼ ► And so building something that has tried to be optimal, that isn't flexible, that doesn't adjust, that doesn't have these affordances in it to be as inclusive means that no one user is ever getting the optimal experience.
00:07:15 ◼ ► And I think that was one of those things that was like, oh, right, I'm building this not just for a person who doesn't exist conceptually, but I'm practically building this for a person who doesn't even exist in reality, most likely.
00:07:26 ◼ ► That most likely there is no average user, that every user is somewhere off axis on some dimension in some way, and so that they're not in the middle at any one point.
00:07:37 ◼ ► Yeah, I mean, that's honestly, that's one that, first of all, I'm aware that there's some kind of like Air Force fighter jet design story that goes basically exactly like that.
00:07:44 ◼ ► I don't know if it's apocryphal or not, but setting that aside, this is also one of the great values of beta testing, in my opinion, because beta testing, one of the great things it does, especially for a brand new app,
00:07:55 ◼ ► is when you're developing your app, you kind of just use it the way you would use it, and then as soon as you get anybody else using it, the reason why betas are so valuable,
00:08:06 ◼ ► and you can think of things like user observation and things like that, is that you can see, oh, I didn't even consider that somebody might use it like this, or somebody might have this need, or somebody might react this way to this.
00:08:16 ◼ ► I remember back a thousand years ago for the Overcast 1.0 beta, I had so many changes between the beta and release because simple things, like people didn't understand what certain settings did,
00:08:27 ◼ ► or would misunderstand how certain features worked. I had to change so much as soon as I had contact with users, because I realized, oh, not everyone thinks the way I do, or not everyone uses their podcast app the way I do.
00:08:40 ◼ ► Yeah, no, and it's just one of those things, and maybe it's just maturity, that I think about the world in a slightly more inclusive way at this point,
00:08:49 ◼ ► that I've been exposed to more users who use my apps in fantastic, wonderful, beautiful ways that aren't in any way the version of the use case that I built initially,
00:09:00 ◼ ► and the more expansive I can have in my design philosophy, the better it goes. I think in some ways, maybe that's the theoretical aspect of the philosophy,
00:09:10 ◼ ► but I think really, hopefully, we can narrow this down by talking through some aspects of our apps that do this kind of philosophy, because I think that's where you really start to understand that it isn't just the checkbox you check.
00:09:26 ◼ ► Before we get to that, we are brought to you this episode by Indeed. We are driven by the search for better.
00:09:31 ◼ ► When it comes to hiring, the best way to search for a candidate isn't to search at all. Don't search. Match with Indeed.
00:09:38 ◼ ► If you need to hire, you need Indeed. Indeed is your matching and hiring platform with over 350 million global monthly visitors, according to Indeed data,
00:09:47 ◼ ► and a matching engine that helps you find quality candidates fast. So ditch the busy work. Use Indeed for scheduling, screening, and messaging,
00:09:54 ◼ ► so you can connect with candidates faster. And Indeed doesn't just help you hire faster.
00:09:58 ◼ ► 93% of employers agree Indeed delivers the highest quality matches compared to other job sites, according to a recent Indeed survey.
00:10:06 ◼ ► Leveraging over 140 million qualifications and preferences every day, Indeed's matching engine is constantly learning from your preferences,
00:10:13 ◼ ► so the more you use Indeed, the better it gets. So join more than 3.5 million businesses worldwide that use Indeed to hire great talent fast.
00:10:22 ◼ ► Listeners of our show will get a $75 sponsored job credit to get your jobs more visibility at Indeed.com/undertheradar.
00:10:30 ◼ ► Just go to Indeed. That's I-N-D-E-E-D dot com slash undertheradar right now and support our show by saying you heard about Indeed on this podcast.
00:10:48 ◼ ► So let's get into specifics. So talking about inclusive design, how does this look in your apps?
00:10:55 ◼ ► The first place that I think is one of these fascinating things is if you can really boil it down into something very simple.
00:11:00 ◼ ► One of the simplest features in Pedometer++, which is a step counting app, is setting a daily step goal.
00:11:07 ◼ ► How many steps are you trying to achieve in a goal in a day? And if you do that, there's so many things in the app that are designed around reinforcing that behavior.
00:11:16 ◼ ► If you've reached your goal, it celebrates, confetti comes down, you start your streak. The colors change. There's so many things that are about really reaching your goal.
00:11:25 ◼ ► But it's an area that I recently did, about a year ago, I did a massive redesign of Pedometer++.
00:11:31 ◼ ► I was working on the goal adjuster, which is just like a plus and a minus button to increase and decrease the goal.
00:11:38 ◼ ► And in the first design I built for this, the plus button was green and the minus button was red.
00:11:46 ◼ ► It just seemed sort of vaguely intuitive. And in the app, green is typically like you've met your goal and red is that you haven't.
00:11:53 ◼ ► And I built that feature and then I saw one of those things where I looked at it the next day and I was like, "What am I doing? That's weird."
00:12:00 ◼ ► What I'm implying in this design is that increasing your goal is good and decreasing your goal is bad.
00:12:08 ◼ ► Because just broadly, I think certainly in Western culture, there's that kind of a connotation with those kind of colors in that way.
00:12:14 ◼ ► And I looked at it and I was like, "Wait a minute. The app is just trying to encourage you to be however fit and have whatever kind of goal is appropriate for you in your current circumstances, whatever that is."
00:12:25 ◼ ► And if you just slipped the day before and hurt your ankle and can't walk very much now, lowering your goal is 100% the appropriate thing for your life and your situation.
00:12:36 ◼ ► Or if you have a cold or your life is just complicated and different. Whatever the goal is, it doesn't matter.
00:12:42 ◼ ► The fact that you chose it and then you're working towards it, that's the part that is actually important.
00:12:46 ◼ ► And so I completely redesigned that control so that now they're both green, they're just different shades of green so that there's nice contrast visually.
00:12:55 ◼ ► But I'm trying to design that feature in terms of the way it looks to mean that whatever your current physical situation, it's inclusive to that.
00:13:05 ◼ ► And similarly, in that same way, that feature, I remember when I first built Pedometer++, this was 10 years ago.
00:13:12 ◼ ► The step increment, when you hit the increase and decrease button, I think when I first built it, it was 500 steps.
00:13:18 ◼ ► So you could go from, say, your goal was 10,000 steps, you could lower it to 9,500, you could do 9,000.
00:13:25 ◼ ► And so when I was building it, I was like, "Oh, this is great. It'll be a nice quick way for users to make big changes."
00:13:31 ◼ ► Like they could quickly jump up and down, so I'm making it so they don't have to tap the button very often.
00:13:39 ◼ ► And one of the most impactful bits of feedback I ever got was from someone who worked in a rehabilitation center for veterans who had been injured.
00:13:47 ◼ ► And he was talking about how he loves the app as a way to encourage his patients to be more active and take more steps in a day.
00:13:56 ◼ ► But increasingly, their goal by 500 steps at a time was impractical, and it was too much for them.
00:14:03 ◼ ► What he really wanted for them is to be able to make these small increments to their goal, and by doing that, continue to have this gradient of motivation.
00:14:12 ◼ ► That maybe every week, they can make a small increase to their goal, and that builds over time in a way that helps them to walk again in a traditional way.
00:14:29 ◼ ► I'd never thought that this is part of the spectrum of use of my application, where this could be useful.
00:14:42 ◼ ► And so, as a result of that feedback, it was like, "Now you have much smaller increments, and the increments get smaller the smaller your goal gets."
00:14:49 ◼ ► So when you're down, if you're in the very, very low step counts, you can have very small increments in your goal.
00:14:56 ◼ ► And then as your goal gets a bit higher, they get a bit higher faster in terms of, like, it seems that there's a bit more of a reason to make it so that it isn't too many clicks per goal.
00:15:05 ◼ ► But it was just one of those things where it's like, these are little aspects of the app that in some ways are kind of small, non-core features.
00:15:13 ◼ ► But even there, I could find ways to cater to a variety of life situations in terms of not making you feel bad about lowering your goal,
00:15:22 ◼ ► because you lower your goal based on whatever your situation is, and then also making it so that whatever kind of increment to your goal would make sense in your circumstance,
00:15:31 ◼ ► whether that be, you know, you're wanting to take just tiny little extra steps each day or each week or each month or whatever that is,
00:15:42 ◼ ► And all of that is to make it feel like you're using the app in the way that it was intended,
00:15:46 ◼ ► that the user never feels that they're misusing the app or that they're kind of, you know, they're the odd one out here.
00:15:53 ◼ ► So it's like, no, no, they should feel like the app was made for them, even though the app was made for everyone,
00:16:02 ◼ ► Yeah, that's a great way to look at it, because, like, you mentioned, like, as you've gotten older, you know, you've seen more in life,
00:16:13 ◼ ► and I think that's one thing, like, you know, in our youth, we, again, I think we further assume that a lot more people are like us,
00:16:23 ◼ ► and there are just all sorts of different types of people, situations, conditions that we don't think of,
00:16:30 ◼ ► not because we're, you know, jerks, but just because we haven't been exposed to them yet.
00:16:39 ◼ ► Even if you're a hundred years old, there's going to be a lot of different kinds of people you've never met,
00:16:48 ◼ ► So it's important to constantly challenge your assumptions about your users and your designs,
00:16:56 ◼ ► and try to make as few assumptions as possible, especially around things like, you know, first of all, what people are able to do,
00:17:02 ◼ ► as you mentioned, like, that's a huge area. Part of that's accessibility, part of that is, you know,
00:17:07 ◼ ► just kind of like, you know, conceptual design of what the app does and how it does it.
00:17:15 ◼ ► Like, are they able to, you know, as you said, like, with StepKind, like, is 500 steps a reasonable increment for everybody?
00:17:22 ◼ ► Like, in my app, you know, with Overcast, I have to think about, like, what environment are people operating this in?
00:17:28 ◼ ► Like, I just got an email yesterday from somebody saying that he wishes the controls in certain areas were a little bit larger,
00:17:36 ◼ ► because he often operates it in a dock in his car, and he doesn't want to, like, be unsafe while driving.
00:17:41 ◼ ► I have, like, you know, certain things in Overcast that I frequently have to operate when I'm walking my dog,
00:17:48 ◼ ► and my phone might be in my hand as I am in motion, and as the leash that my dog is attached to is attached to the same hand.
00:17:55 ◼ ► And so that's a big motion environment there. There's a big risk of dropping my phone if I do it wrong.
00:18:06 ◼ ► Certain ones work better than others, and certain ones are very challenging or very risky.
00:18:31 ◼ ► Like, this isn't even getting into things that are less common that you might not even be aware exist.
00:18:37 ◼ ► And there's so many big and small decisions when you're designing your app that you can be like,
00:18:56 ◼ ► You know, that's probably not the case most of the time, but it will be the case some of the time.
00:19:08 ◼ ► You know, like, this word that we think most tech people will assume to mean the tech meaning,
00:19:19 ◼ ► There's so many opportunities for that, for your app to either be accidentally exclusive to people,
00:19:27 ◼ ► or accidentally user hostile, or if you think of these things, to actually be pleasantly useful,
00:19:38 ◼ ► Yeah, and I think in that there is something, too, this is the thing that was so, I think, very helpful for me,
00:19:57 ◼ ► This is one of those, like, this is the union of all of these ideas is the best philosophy.
00:20:05 ◼ ► but I think there are other aspects that I've increasingly started to wrap my head around,
00:20:11 ◼ ► where it's the thinking about, you know, I don't make assumptions, like you were saying,
00:20:24 ◼ ► I have tons of, like, almost every control in the application includes at least a sentence or two
00:20:34 ◼ ► And even there, like, the switches themselves, I try to make them unambiguous in terms of,
00:20:39 ◼ ► rather than having, like, the classic iOS on and off switch, which I think can be useful,
00:20:44 ◼ ► but also sometimes it's slightly confusing, where, like, you don't know which state is what,
00:21:09 ◼ ► I tend to have these segmented controls with clear labels on them for what states you're going to have.
00:21:20 ◼ ► There's an automatic version, and then there's a version that's based on your height and your stride length.
00:21:25 ◼ ► And so it's like, there's a, it just says manual and automatic, rather than, you know, automatic on/off,
00:21:32 ◼ ► And it's like, similar, similarly, I think about in Overcast, how the screen, when, after you've, you know,
00:21:38 ◼ ► you've got the app, you open it up, you've said whether you have an existing account or not,
00:21:51 ◼ ► here's some podcasts that you might be interested in, you can click on them, you can kind of explore,
00:21:55 ◼ ► and you're giving them a jumping off point because you're not assuming that these people know what a podcast are,
00:22:01 ◼ ► or what they, how, where they would get them, or that how, you know, that you're, like,
00:22:04 ◼ ► giving someone, you could imagine a version of that screen that was very much based on just, like, searching.
00:22:14 ◼ ► And maybe they don't. Maybe they just, like, heard the name podcast come up on some aspect of their life,
00:22:19 ◼ ► or they heard someone talking about it, and they just, like, oh, I wonder what that's like,
00:22:26 ◼ ► you might just immediately turn them off because you're not just making assumptions about,
00:22:30 ◼ ► and sort of catering and building affordances for physical characteristics of the user or their environment.
00:22:35 ◼ ► You're making assumptions about their sort of experience and their cognitive ability and those types of things,
00:22:41 ◼ ► which are other attributes of our user that we need to make sure we're taking into account.
00:22:50 ◼ ► and that's great for that person who's a new user to your application or to your type of application,
00:22:55 ◼ ► and now suddenly, they're new, you know, like, you've just converted them into a fan of your app.
00:22:59 ◼ ► They don't understand what it is. They can see the value that it's going to provide to them,
00:23:02 ◼ ► and, like, you're off to the races rather than just, like, bouncing off, and even worse in some ways there,
00:23:06 ◼ ► like, if you make someone feel foolish, if you make them feel like they, you know, sort of don't have a sense of competency,
00:23:12 ◼ ► like, that's a, you're giving them a very actively negative feeling. Like, that's not a, that's not like a neutral experience.
00:23:21 ◼ ► And it's, you know, we want to avoid those very bad experiences at all costs if we can.
00:23:25 ◼ ► I think, too, like, you might out there, you might be underestimating the competitive advantage this gives you over other apps.
00:23:33 ◼ ► There's a lot, especially, like, if you're designing for neurodivergence, that's a huge, a huge potential opportunity for indies like us,
00:23:42 ◼ ► because so much of modern app design and app culture is incredibly hostile to a lot of people.
00:23:58 ◼ ► And so, for instance, various ways that apps can cause stress or can cause irritation in certain ways.
00:24:11 ◼ ► There are so many needless sources of anxiety and stress in apps because either the app designer didn't consider it,
00:24:19 ◼ ► or more likely they are optimizing for different things, optimizing for certain types of engagement,
00:24:25 ◼ ► as we were kind of talking about a couple episodes ago, talking about how, like, you as an indie can optimize for making your app nice to your users,
00:24:38 ◼ ► That's a huge potential market. Like, the way Overcast is designed, my goal for its design is to basically make it a good, normal app.
00:24:52 ◼ ► What most apps are these days have thrown out the concept of what we use to consider normal app design.
00:24:57 ◼ ► When I say normal, I mean, like, basically follows the Apple Hig a lot of the time, kind of looks like a standard stock system app,
00:25:06 ◼ ► but done well with just a small dash of personality, but mostly looks like a stock app.
00:25:12 ◼ ► Like, my app inspiration for design is mail. It's not like a complicated, like, I'm not trying to make my app the next Snapchat or anything.
00:25:25 ◼ ► And as time goes on, that's getting more and more rare, to the point where even the built-in system apps oftentimes do not follow that design paradigm.
00:25:32 ◼ ► And so, I get an increasing number over time of compliments and five-star reviews from people saying, basically,
00:25:41 ◼ ► "Thank goodness I found a normal podcast app," or "I like this app so much because it is just a good, normal app."
00:25:48 ◼ ► And this is a shrinking market in terms of supply, but it will always be there in terms of demand.
00:26:00 ◼ ► You can get these customers and you can please them and you can improve their lives by doing what indies do best,
00:26:07 ◼ ► which is making apps that are not abusive or annoying or in your face to the users and just doing a good job of it.
00:26:17 ◼ ► And I think in that is like a good normal, and I think I would add to that thoughtful, is sort of the other aspect of this,
00:26:44 ◼ ► That it's like, did you really try? And did you try? And then have you been open to that your initial design is not the best design,
00:27:00 ◼ ► As things go on, you're open to new ideas in terms of, as you think of better ways to do it,
00:27:05 ◼ ► you're not lazy about implementing those ideas because, oh, maybe that's difficult or maybe they have to do some hard work.
00:27:30 ◼ ► And it's sort of in a very subtle way. It's not the kind of design that's super flashy and in your face,
00:27:42 ◼ ► But these are just the fundamental framing of a really thoughtfully designed experience
00:27:47 ◼ ► that leads your users into a place that they're just like, it's a joy to use. It's easy. I understand it.
00:27:53 ◼ ► They get where they're going. It feels like they're using the app in the way that it was intended,
00:28:03 ◼ ► the pantheon of all the different users you have, their use may be a slightly unusual one,
00:28:08 ◼ ► but they don't feel that way because you've designed it to accommodate all of these different aspects.
00:28:13 ◼ ► And it's like, if you do that, then it just feels nice. And it's good for you, me as a developer,
00:28:17 ◼ ► it's good for me as a user of other apps that approach this kind of design in an inclusive way.
00:28:22 ◼ ► And it's like, ultimately, I think it's good for your business. I think making an app that makes more people feel more included
00:28:27 ◼ ► is only going to do good things to their loyalty to the app, to their desire to become a subscriber
00:28:32 ◼ ► to the kinds of things in your application. And fundamentally, you're just making the world a better place.
00:28:37 ◼ ► What more could we want from our careers and the things that we spend so many hours each week doing?
00:28:42 ◼ ► Yeah, for a lot of people, navigating apps and their phones in their lives is basically just a series of paper cuts.
00:28:50 ◼ ► Or it's a minefield. And you don't necessarily know that if you're a tech enthusiast developer like you and I are, Dave.
00:28:58 ◼ ► You might not realize how many people, it really is like a minefield. And it's just constant, basically, paper cuts from their phone and from the software on it.