Category Archives: design

A Bad Mobile Experience is Bad Customer Service

As a travelling consultant, I get insight into a lot of organizations. One theme that I see over and over is a lack of understanding about mobile experiences among decision makers and technical teams. When it comes to interpersonal or written communication, companies have sensible rules and practices about making that exchange great. You’ll hear or read slogans about treating the customer right, or to go beyond and satisfy and impress them. Most organizations have great alignment on that message, and when I walk into an office, I am greeted by friendly security and front office staff who smile, are pleasant and help me get to where I need to go. They want all of us to have a great first impression, so they invest in human-friendly lobbies with art, comfortable furniture, and great lighting. This extends to email and voice communications as well. People try to be professional, pleasant, and make me feel welcome as a customer or consultant. However, that is rarely my first impression of that organization. For me, and millions like me, I get my first impression of that organization through their mobile experience.

In many cases, that mobile experience is the opposite of their interpersonal customer service. They fail to realize that a bad digital experience is just plain old bad customer service. It is the virtual equivalent of a rude call center employee, or an office administrator who tells me to go f— myself when I walk through the door. Instead of feeling valued by the organization, my mobile experience feels like they don’t care. They make me feel confused (what does this company do?), they make me feel frustrated (I can’t solve the problem I need to sort out!) and that they don’t value my time (why do I have to gesture so many times and spend so much time to do a simple task?)

These organizations would be horrified if I was flipped off when I walked in the door, but they have no problem making me feel just like that when I try to interact with them virtually on my mobile device. And they don’t seem to have a problem with it. On the other hand, organizations that realize great customer service extends to digital experiences have alignment on their customer-first values. Instead of worrying about mobile frameworks and handsets and technology development, they seek the solutions that provide a great customer service on virtual mediums. Thankfully, that means we have a lot of examples on how to do it well.

Here is an example of contrasts: airline mobile experiences. I won’t name names, but I will describe 3 different mobile experiences and the technology they are using to either create great customer service, or do the digital equivalent of flipping us off.

I travel a lot, and when I am travelling, I need the following at a minimum:

  1. Ease of use (so I can get my information quickly when under pressure on a trip)
  2. My booking details stored: confirmation number, flight numbers, seating details (this eliminates printing out paper that often gets out of date)
  3. Access to my booking details when I don’t have network connectivity (when you travel, you are frequently without wifi or cellular data, particularly if you don’t want to purchase an expensive data plan during a short trip)
  4. Up to date flight information when I am connected to a network (so I can get out of jams when there are delays or cancellations)
  5. Ability to book or modify or cancel flights
  6. Simple contact to customer service if all else fails on my own

Let’s look at three different mobile experiences from three different airlines:

  • App 1: a native mobile application
  • App 2: a hybrid mobile application
  • Web 1: mobile optimized web-only access

How do they stack up?

App 1 (native):

  1. Ease of use: incredibly easy to use, and it takes 2 gestures to get my current flight information. It takes about 15 seconds to tap the app and get all the info I need to fly
  2. Flight details stored: all my flight information is stored so I don’t need to search elsewhere
  3. Offline access: this app not only displays all my information when I don’t have networking or wireless access, but if I am not connected, it provides a warning message and tells me the data may be out of date. This is useful in cabs, in areas of an airport without connectivity (such as in security) or in an aircraft while in airplane mode so I can check my next flight if I have a connection
  4. Information updates: this app lets me know of gate changes, delays, and even lets me check on in-bound aircraft status and other dependencies. When there are problems, I and others with the app know before official announcements are made, which gives us a jump on the competition for rebooking or making alternative arrangements. This app has helped me get to a client site or get home on time on a number of occasions.
  5. Flight bookings: this isn’t easy to do on mobile devices, but with a few taps and gestures, you can get the job done without feeling frustrated
  6. Easy contact to a real person for help: one or two taps and I am speaking to a customer service rep who can help with a problem I can’t sort out with the app

App 1 overall customer experience: great!

This app has really improved my flying experience and I am growing to like this airline more over time.

App 2 (hybrid – combo of web and native technologies):

  1. Ease of use: not bad, but it is a bit clunky and doesn’t respond as smoothly to input gestures as the native app. I can’t zoom in on some screens, and on others, it takes me out of the app to the website, which is irritating. It feels quite slow, but I don’t have to do a lot of inputs, I just feel like I am waiting
  2. Flight details stored: This is a thin-client app (not taking advantage of local storage that hybrid apps provide), so I have to store my booking reference in a note, leave the app, copy it from a note, paste it in, and then wait for it to load my details. This is frustrating and takes a lot of time. There is no excuse for overlooking this with a hybrid app.
  3. Offline access: The app will not function without a good wireless connection. That means it is useless in many areas of an airport. If I want to check my flight number for a connection while the app is in airplane mode, it crashes. I have to take screenshots of details when they are available as a workaround.
  4. Information updates: The app does not provide updates. I have to navigate to the airline website or airport website and search for details on the flight. This is too time consuming and is frustrating. I get no information advantages and have to get in line with everyone else if there is a delay or cancellation
  5. Flight bookings: Not bad. Nice interface, and few gestures to get the job done. It just feels slow compared to a native app.
  6. Easy contact to a real person for help: I have to do a lot of navigating, and then I get redirected to their corp web site which is slow, cumbersome and frustrating

App 2 overall customer experience: poor.

Every time I use the app I get frustrated and I project that frustration on the airline. In one case, I was having trouble checking in at a kiosk, so I opened up the app. It gave me a cryptic error message that made me feel like my flight had been cancelled. I had to stand in a line up for a half hour to find out from a human to look into the problem and sort things out. This app requires workarounds (save my booking reference in a note or search for an email confirmation and screen shots of up to date data) to be even useful when I fly. They chose hybrid to get cross platform support, yet they don’t even take advantage of the affordances of a hybrid app.

Web 1 (mobile web site):

  1. Ease of use: horrible. I have to open a web browser, and to just enter in their URL is over 20 taps! I probably don’t have 20 taps in a month of using the other apps in total. Once I enter in their URL in my device and fix typos, 30 seconds has passed. I am then redirected to a mobile optimized web site. I can’t get both my flight status and my booking information in the same place, so to get the same information I get with 2 taps from a native app takes me over 50 taps and gestures and can take 2-3 minutes, under ideal conditions. Their image carousel on each page takes forever to load, and gets in the way of my interaction.
  2. Flight details stored: As a web app, there is no local storage, so again I have to store my booking reference in a note, leave the web browser, copy it from a note, paste it in, and then wait for it to load my details. This is frustrating and takes a lot of time.
  3. Offline access: None. I can’t do anything without a good wireless connection.
  4. Information updates: No updates. I have to go to a different website for that, and tap away on the URL, and experience the same pain.
  5. Flight bookings: Not bad. Nice interface, and few gestures to get the job done. Again, it feels slow compared to a native app and there are some inconsistencies from screen to screen.
  6. Easy contact to a real person for help: I have to go to their corp web site, which means I usually have to find the option to go to their full web site (a tiny URL at the bottom of some of the mobile screens.

App 2 overall customer experience: Rage inducing.

When this app lets me down in an airport because it takes too long to get anything done, I look longingly at the competition counters across the hall. This experience is beyond useless and it causes me to lose faith in the organization as a whole. If this is so painful, how is the flight? Also, I found that staff members have very little faith in the mobile experience. Even though I had a PassBook ticket that was valid, they reprint a hard copy when I try to board the aircraft because they “don’t trust the mobile app”. PassBook integration is one thing they do well, but people get so frustrated with an experience that doesn’t fit the needs of customers and staff on the front lines hear about it and try to adjust.

So whose app do I use the most? App 1 of course, and I also fly with them the most. I get a great customer experience with their mobile app, and they also do a decent to please us in their interpersonal interactions. The airlines that supply App 2 and Web 1 actually have better interpersonal interactions – they are friendlier and more helpful, but the mobile digital experiences are not convenient, so I don’t fly with them as often. This has less to do with the technology they have each chosen, but in how they have chosen to implement it and whether they are making technical decisions or customer-serving decisions in how they create mobile experiences.

A great customer experience that enhances convenience goes a long way. In fact, I will put up with less than ideal interpersonal interactions with a company if their mobile experience is convenient and makes my life easier. Next time you are looking at your mobile experience, no matter what the technology, ask the question: are we creating a great customer experience with our technology as well as with our people? The extent to which you use mobile technology to address that means much more to your customers than just “going mobile” and putting something out there. In some cases, no mobile access is better than one that makes people hate your company.

In an upcoming post, I’ll talk about ways our hybrid and web-only airline friends can improve their mobile customer service.

It’s Not About Mobile App Download Numbers, It’s About User Engagement

Peggy Anne Salz has blogged about using SMS to help encourage user engagement with mobile apps, based on research by her firm and Tyntec. The white paper she links to is an interesting read, but the message that sticks out for me is when Peggy says:

“The bottom line: app developers need to work out a strategy to increase engagement, not just downloads.”

How many apps do you have on your smartphone or tablet currenty? I want you to check right now, and get a rough number in your mind. (Humour me, it’s worth it to see.)

Now, how many of those apps do you use regularly? Conversely, how many are just sitting there on your device, but you rarely if ever use them?

I have close to 100 apps, and some of my colleagues think I am conservative – they have far more on their devices.  I probably use about a dozen of them regularly. As mobile consumers, we have a lot of choice for content, entertainment and productivity applications, all competing for our attention on mobile devices. We can’t use them all regularly, so we optimize our time and focus on the ones that we like, the ones we find engaging and return to again and again.

While getting people to download and install an app that you have worked so hard to build  is important, Peggy points out that an app’s success is part of a long-term relationship:

“Smart developers understand that selling apps is a serious business. But a raft of research suggests a singular focus on driving downloads is patently flawed. It’s really how well app developers can persuade us to make their app part of our regular routine that will make or break their app business. Winning is all about making the right choices to delight us again and again.”


If people merely download and install our apps and then forget about them, we lose out in the long term. Sure, we might get some initial sales, but customers will forget about our brand. They won’t come back to us when they need to have a product or service solve a problem for them, and we as suppliers are lost in the great sea of available apps and service providers. We might lose many of our initial customers for good, and that hurts. When I worked in sales, I worked very hard to have repeat customers – that’s what got me through the slow times – people coming back and asking specifically for me, Jonathan, and spending their time and hard earned cash in my direction.

In her blog post, Peggy points out that using SMS (Short Message Service) is one way app developers can use mobile technology to enhance engagement and app use. With SMS integration, customers are reminded of the app, get notices on new features, and are encouraged to use it in different ways. As consumers, we may have forgotten about a great app, and a reminder once in a while might be what we need to go back. She  provides some examples of how app developers can use SMS: “…to deliver valuable content, drive traffic to the community website, and reactivate users who haven’t interacted with the app in while.”

The lesson for app developers is that app downloads are well and good, but we need to strive for user engagement even more. Peggy makes a good case for using SMS, but what other ways can you use technology and app design to drive continued use? Another area to look at is in your app design. Is it usable and user friendly? Does it solve problems that your customers have in mobile contexts? Is it reliable under different conditions in weather, temperature, lighting, and with different network connections, latency and speed?

I have some ideas on design: Three Keys to Mobile Application Design (and soon there will be much more in my upcoming book: Tap Into Mobile Application Design), and a lot of ideas on app reliability in my e-book: Tap Into Mobile Application Testing. There are others.

In fact, the sky is the limit in mobile app development to explore engagement models. We just need to set our sights on user engagement and be creative with our use of the technology. It is not enough to just build a mobile app or mobile web presence. Long term engagement trumps downloads and installs because that means people will actually use your app more than once, and hopefully engage with your brand, and buy more products and services from you later on. Take the long view, even though we are in a pressure cooker of short term wins on many of our mobile projects.

Three Keys to Mobile Application Design – Part 4 Conclusion

In Part 1 of this series, we looked at mobility and app design. In Part 2, we looked at social aspects. In Part 3, we looked at gaming and entertainment features to consider with mobile app design. In Part 4, I conclude with some final thoughts, a simple example, and three people who inspire me.


What is it about some mobile applications that we use over and over, to the point of addiction? What is it about others that we seldom use? I’ve found that a mix of mobility features (and usability!), social features, and gaming/entertainment are some of the reasons why we keep coming back. We enjoy the experience of the application. It is easy to use and helps us solve problems or reach goals while we’re on the move. It helps us feel connected to our friends, family and coworkers, so we never feel alone. The app helps us quickly access information we need. It is entertaining, so we enjoy spending time in the application, and feel drawn to it when we’re away from it.

Our mobile devices have a lot of applications on them, so we have a huge amount of choice on where to spend out time. To keep people coming back to use your application, consider using the mix I’ve recommended above. To figure out that mix, make sure you observe people (but don’t creep them out!), ask questions, and spend time away from your desk in different contexts. As I mentioned in an earlier post, when I ride public transit, I feel like I’m surrounded by people using tablets with e-readers, people texting on mobile phones, or using social networking services and commenting about their trip. Others are watching TV shows or movies, or simply listening to music. When I’m in an airport, I jostle with others flocking to power stations prior to boarding the aircraft. In a restaurant or coffee shop, the people around me are staring into their screens. I observe what they are doing, but I take it a step further. If the moment is right, I strike up a conversation. Many people are happy to demonstrate their device and the programs they use, and tell you what they enjoy about them, and where they use them. As a designer (and tester), this kind of information is gold.

I also look for apps that demonstrate good mobile design, and look at what they have done well. One that has caught my eye in the enterprise space is Rypple, now owned by Salesforce. It’s a talent management app that has a mix of the three keys: mobility, social interactions and gaming/entertainment. It is easy to use anywhere, and has features to keep drawing you in. In the mass market, I look at popular games like Angry Birds, and social networking apps. What motivations to people have to use these apps? What do they do well? Conversely, what are people complaining about? Do they crash too much, or are they too slow?

Putting it All Together

Let’s try applying this thinking to a simple app. Imagine you are designing an app that provides a listing and related information for local coffee shops. Here is a brief listing of features that can help tie together a good user experience that will keep people coming back for more:

1. Mobility:

  • map integration
  • information: ratings, etc

2. Social:

  • camera and photo integration
  • social media support
  • people need to take pictures of their food and drinks so they can post them and chat about the experience with their friends!

3. Gamification:

  • unlock premium content after usage – ie. after visiting all the shops listed in the app, or for multiple visits
  • look at coupon or other deals to integrate with after app usage, or other ways to co-ordinate with local businesses for cross-promotion

A word of caution: be sure to implement these features in a way that will resonate with your user community. Make sure your mobility features work well, don’t mislead your user, and don’t have irritating defaults, such as always defaulting to their home address, even when they are traveling. With social, don’t just copy what is out there and popular and think people will like it. Take time to model the existing social connections your app users will have, and make sure your app plugs into and enhances that. With gamification and entertainment, don’t put in childish rewards for an enterprise app, or app aimed for adults, or people will just think it is lame. Again, model the space and find out intrinsic motivations, and take the context and users into account.

Good Design References

These are some abstract ideas to help you model and create your app. For implementation ideas, I look to people who specialize in mobility and are pushing the technology. Here are some people I look to for help, innovation and inspiration:

Luke Wroblewski
Brad Frost
Josh Clark

The always excellent Smashing Magazine has a fabulous piece on gamification: Gamification and UX: Where Users Win or Lose with tips on where to use gamification, and where not to use it. Smashing Mag also has a lot of great mobile design information here: The Elements Of The Mobile User Experience .

I hope you find these ideas useful as you design your own mobile apps, or work to help others. Happy app designing!

Three Keys to Mobile Application Design – Part 3 Gaming and Entertainment

In Part 1 of this series, we looked at mobility and app design. In Part 2, we looked at social aspects. In Part 3, we will look at gaming and entertainment features to consider with mobile app design.

Gaming and Entertainment

We spend an enormous amount of time playing games or using entertainment apps and services on our mobile devices. When I ride my local commuter train, I see people using e-readers on tablets all around me. I also notice people playing games on their smartphones. When I am on an airplane, there are people all around me with tablets or smartphones reading, playing games, watching TV shows or movies, or simply listening to music.

Entertainment and games tap into a different part of our brains than other activities. We enjoy them, and we find them addictive. They appeal to our emotions: a TV show or movie give us a brief respite from stresses in life. A book requires our imagination, but it too helps provide a break and triggers creative thoughts as our brains fill in the visuals of the story for us.

With games, we feel challenged and a sense of accomplishment when we complete a level or finish a quest. We will spend hours doing repetitive actions in a game so we can get small rewards within it. In a social application, we tolerate repetitive tasks, such as uploading all of our vacation photos, because the intrinsic value overcomes our feelings of boredom or frustration. We know that our friends and family will enjoy seeing them (as will we) and that they will spark comments and conversations.

Contrast this with tasks that we encounter at work. We often procrastinate over repetitive or tasks we find boring, because there is little motivation for us, or the reward won’t be realized in the short term. Application designers and process wonks have noticed this contrast, and have begun to apply game-like processes to applications. There is enormous productivity in gaming and entertainment applications, so how do we tap into that for our corporate apps?

One movement that has become popular lately is called Gamification. Gamification involves imposing game-like structures on work tasks to help make work more entertaining, and help workers become more productive. Another concept is game theory which uses mathematical models to study decision making. Understanding both concepts can help us as we design apps.

Here are a couple of concepts to think about when designing your mobile app:

  • Gamification (provide incentives to use the app, or to take some of the tedium out of repetitive tasks)
  • Interactivity, media, other features of entertainment (tap into emotions)

Gamification can be as simple as providing rewards in an application after you complete a certain number of repetitive tasks. It might be a visual representation, such as note that says: “good job” or a graphic equivalent of a gold star. More sophisticated implementations may unlock new features or content in the application for you, or provide a media break, such as a short video that is entertaining, but provides information that users will find useful. When thinking of a game in this context, think of games that have quests and achievements, where players repeat tasks to score points, or acquire goods or credibility within the game. Some app developers are even looking at enormously popular social games and modeling their entire workflow in a similar manner.

Interactivity, media, and other forms of entertainment are features that allow us to tap into people’s emotions. We like nice colors, sounds and things that move. Features that stimulate our senses (see, hear, touch, smell, taste) tend to evoke emotions. (I haven’t figured out how to appeal to taste and smell with apps, at least not yet. 🙂 ) A clean design with great graphics and appealing colors will evoke an emotion. An app that provides tactile feedback to help train you to work with it in certain ways helps us understand concepts more quickly, and reinforces emotional responses. A bit of video or sound can go a long way. On one app I worked on, we replaced long paragraphs of text with short videos where a professional speaker provided the same content in an entertaining way. They were easier to consume and understand, and fit the devices better since they reduced scrolling and eye fatigue that we experienced with the wall of text effect.

The devices themselves provide a lot of affordances for gaming and entertainment:

  • Game-specific animation and graphics libraries
  • Media: camera, video and sound recording and playback
  • Rich graphics support with high resolution screens
  • Networking to connect to information and different people
  • Natural User Interfaces to support touching and gesturing
  • Movement sensors to support different kinds of inputs or control

Gamification of tasks, and adding entertainment features can help with serious applications as well. One aspect is to reward the completion mentality. When I do chores around the house, or work on my car, I sit back and admire my work when I’m finished, and bask in the sense of satisfaction for a job well done. This is more difficult with knowledge work. It is virtual, so I can’t sit there and look at the job I completed. We can put these affordances in our apps. Furthermore, if there is a sense of reaching a level and getting some sort of completion notification, I may stick with a task and finish it, rather than procrastinate or engage in distracting activities. A user might just spend a few more minutes with your app if they feel they can get some sort of reward for completing a level or a task.

I also like gamification and entertainment features to help inject some variation to keep people interested. lately, I’ve been advising a startup that is developing a mission-critical app. Gamification is incredibly important here because the information and activities in the app are very important, and the people using the app need to be brain-engaged and paying careful attention, or learning something important. If the same old same old pops up in the app all the time, people will just tune it out and click to dismiss, much like we do with terms of service or end user license agreements. We do what we can to dismiss it and do something else. (I remember a popular personal firewall program that popped up with so many messages, people would just turn it off.) Variation and interaction is important to hold our attention, and so that people with different learning styles can synthesize and retain information.

Gamification and entertainment also entice people to use our apps. Many people have over 100 apps on their smartphones or tablets. The difference between them using our app or a competitor’s app can come down to how well we entice them to use our app. If there is little to entertain them, there are no rewards, or no sense of completion when working through the app, why would they swipe three screens over to start our app, when they can use a similar app that is on their home screen?

Charge Extra for Cheating

There are also revenue opportunities to upsell premium content. One app that I designed unlocked premium content at various levels of completion. As a user worked their way through a workflow, premium subject matter expert content was made available to them. After so many steps of activities or completion, consider providing something to reward the users. However, I advise allowing people to cheat. Let them unlock the premium content without going through all the steps, but for a premium price. That appeals to our laziness, and instant gratification culture, and you can charge a lot more money for these sorts of features than you can with apps themselves. Just look at popular game platforms. They have enormous markets related to buying things that are unrelated to the game or quest. You can buy a shield, or different armor for your character, or pets, and other status items just like in real life. A user might only be willing to pay $0.99 for a game (or get a free version), but they might spend $20.00 accessorizing, or for getting other premium content. Look at how popular gaming platforms have their own marketplaces, and the kinds of things they sell. These items appeal to status (I can brag socially about it, or have status over other players because I am unique), and to intrinsic motivations that users may put more of a dollar value on than our actual app. There are even eBay and online classified services that allow you to purchase virtual currency, or a player that is at a higher level of game play that already has worked through many levels within the game. Some people will pay a premium for shortcuts, so tap into that.

The key point here is that we have a lot of choices in the apps we use, so we need to put in mechanisms into our apps that draw people back into them. If we don’t provide incentives to use the app, they may go to an app that is more entertaining and rewards them for repetitive tasks, or is simply more enjoyable to use. Furthermore, if app usage and the information in the app is important, you don’t want them to tune it out. If you want people to keep going back and using your app more and more, you will need to figure out how to tap into gaming and entertainment.

Stay tuned for the conclusion of this series next week.

Three Keys to Mobile Application Design Part 2 – Social Connections

In Part 1 of this series, we looked at mobility and app design. In Part 2, we look at some social aspects to consider with mobile app design.

Social Connections

Mobile devices provide an interface to the internet, but more specifically, to our relationships. Coworkers can contact us when we’re on the move, and we can stay in near-constant contact with friends and family. Social connections help us keep in touch, and often provide the quickest, most up-to-date information on current events or developments in our communities.

Social connections are important, and can be powerful tools, even in enterprise or business apps. We’ve all heard about the massive growth of social applications in the consumer market, but social connections are important for productivity as well. Our professional social circles provide quick access to information to help solive problems, discover important news, or for recommendations on products and services. Social connections also create cohesion and improve our relationships at work in ways that dress up days and team building activities fail to do.

Here is an example: a few years ago, I was working with my friend Ken March. We were getting tired of our individual music libraries that we were listening to, so we decided to share our music with each other. We discovered others who had also shared music in the office, and we expanded our listening. We started chatting about music when we ran into each other in the office, and teasing each other about guilty pleasure tastes. Ken decided to set up DJ software so we could create playlists, and he also set up an IRC (internet relay chat) channel so we could instant message each other about the music we were listening to. With IRC, you can type in short text messages either to the entire group who subscribe to the channel, to one other person, or a sub-group, depending on how private or public your communication needs to be.

Ken expanded the application so we could create playlists and control the DJ software using commands in IRC. We could also use the Unix “say” command to broadcast messages using Text To Speech. Ken also added in extra hidden commands that allowed you to temporarily block a certain genre of music if you thought it was getting over played. If someone made a request and someone else had blocked it, the system would block it and provide humorous messages. We had a lot of fun with the system but soon learned it was a great channel for work or technical questions.

It turned out that the IRC chats were rarely about music – we found it to be a great channel to talk about work. We could ask for help, or keep people apprised of what we were doing on other projects. Instead of walking over and interrupting someone who was busy, the messages could be ignored and then read after a period of focused concentration. Once you were no longer busy, you’d catch up and answer the questions, and set up any follow-up meetings or face-to-face meetings.

The group expanded from the IRC server to getting together for lunches. We shared ideas about work, and learned about each other’s families and backgrounds. When one team member’s wife became ill, we were able to offer them support and help them when they were telecommuting. One team member and I found out we were both interested in game theory and estimation with uncertainty factors, so we spent some time on our own collaborating. We all ended up contributing to each other’s work in various ways, and we all enjoyed a boost in productivity.

Something appealed to us in that relationship that we developed. It touched an intrinsic sense of belonging, of collaborating and building something worthwhile. If one of us worked over time, it could feel incredibly lonely without our work buddies there with us virtually. Even worse, you lost contact to quick and easy information that could help you solve problems more quickly. Eventually, most of us moved on to other projects and other companies, but we all remained friends. We all miss that simple social program that helped us communicate, keep in contact and help each other out.

What were the keys for this simple application’s success?
1. It was entertaining
We could listen to an interesting variety music which helped make our day more enjoyable. The group input into the music selections kept them interesting for us. Some people had a great sense of humour and it was enjoyable to read their posts to the group.
2. It was social
We felt like we were part of a group, and we got to know each other better, which helped us work better. We were also able to share information at a much deeper and richer level than the brief daily standups we saw each other in.
3. It was fun
Once in a while over the course of the day, would also share funny cartoons, or youtube videos once in a while to add some levity. Once we got to know each other better, we would tease each other a bit, or send a silly broadcast message to try to cheer up someone who was feeling down that day.
4. It helped us solve problems
Each person using the program had a different background and expertise, and they had different experiences and access to information within the company. Many problems could be quickly solved with a message on our music channel.

Easy access to social relationships are an integral aspect of mobile devices and apps. When we’re on the move, we’re often alone, and these devices provide access to people so we have company. If we’re alone in a strange city, we can connect to our friends and loved ones and feel a sense of belonging, safety and calm.
My wife Elizabeth says that social networks seem to be full of the following:

  • Sharing our current thoughts and location with our network
  • Bragging and complaining

I’d also throw in pictures of cats and food to the mix. But it isn’t all frivolous; I enjoy finding out where my friends are at, and seeing pictures of their holidays. If a friend complains about a company that did shoddy work on their vehicle, I stay away from it. If another friend recommends a home handiman service, I contact them when I need work done on my place. This mitigates the risk of getting ripped off, or shoddy work.

In the work place, sharing ideas can be powerful, especially with knowledge workers. I have been working on a new product design, and I’ve been struggling with one aspect of the technical implementation. A quick message on a social networking channel resulted in 4 possible solutions from a programmer friend. We also brag about accomplishments, giving shout-outs or kudos to other team members who we think have done a good job, or have simply shipped something after a long release cycle. We also complain about vapor-ware technology, vendor relationships that have gone wrong, or tools that don’t provide value. This is valuable information to utilize as we work on and lead our own projects.

Social connections help us feel motivated when we are on the move, and they can be a tremendous support when we need motivation, or a quick answer to a question or a problem. They are a great fit with mobile technology, since they help us connect to people, knowledge and allow us to share experiences from virtually anywhere.

Stay tuned for Part 3 of 4 of this series.

Three Keys to Mobile Application Design Part 1 – Mobility

While many of you know me for my testing work, I also do product management work, including business analysis and technical design for applications. I help clarify a vague product idea into something with a clear vision that is concrete enough for programmers and designers to help implement, with the right mix of features to satisfy and delight our end users. Here are some lessons I’ve learned doing this work in the mobile space.

When you start designing a new mobile application, you are probably like me, and refer to applications that are familiar. You look at past projects, at programs you enjoy using, or have impressed you. If you are new to designing mobile applications, that often means you will look at web apps and PC apps first, because that is what you are most familiar with. Then you pull out your smartphone, and look at the apps you like and use the most there. That’s exactly what I did when I started out, and while I felt like I had adjusted to a new paradigm (smaller screens, less powerful devices, different network technology, etc.) I felt like something was missing. I couldn’t quite put my finger on what was different, but the apps I use on my mobile devices, and the apps I helped create demonstrated it to me. We are going through a major shift in technology, and the software we use is moving toward a combination of mobility, social connections, and gaming and entertainment.

In this four part blog series, we will look at each of these areas of consideration when designing mobile applications.

Mobility Features

If you are new to mobile app development and use web and PC apps as your guide, you might overlook something important. Worse still, if you are used to an enterprise application development, stakeholders often just direct us create a subset of an existing web or PC app for mobile devices. While that is an aspect to consider with mobile apps due to less screen real-estate, and their one screen at a time focus, we often overlook the most obvious, and one of the most compelling characteristics of mobile devices: mobility itself.

When we are out and about, away from our desks, we don’t have the luxury of comfort and time. Think about it for a moment: these devices are used in all weather, in different locations (outdoors, in buildings) with different network strengths, while people are moving (walking, jogging, cycling, in a vehicle, flying, on public transportaion.) Imagine the difference between needing access to information or using an app on a warm sunny day in a beautiful park, vs. using it in a severe rain storm, outside and you forgot your umbrella. What effect might the different lighting conditions have on your screen design colors? Will their wireless services work better in good weather or poor? What impact might the weather have on the emotions of the user, and how much of that will be projected on how well our application performs? I’d wager that the user who is miserable in the rain will have much less patience with usability issues, or anything that slows them down with our app than the one who is relaxing in the park.

Context, and how the devices and applications are used on the move are important to take into account. Mobile devices represent a blurring of physical (hardware) and the virtual (software and services). When I’m designing an app for the web, or for PCs, I don’t think of the hardware that much other than to consider things like processing and memory. With mobile devices, we can tap into physical features of the devices to help create a different user experience that fits mobility better.

Here are some areas to think about when designing for mobility:

  1. Take advantage of mobile features
  2. Ensure your app is mobile-friendly

Mobile Features

When I’m on the move, I need my mobile device and apps to provide the following:

  • Access to information on the web (look something up, settle a friendly dispute)
  • Search for services nearby (for something to do)
  • Map and location services (so I can figure out where I am, and how to get to my destination)
  • Contact with others who aren’t with me (to communicate, co-ordinate and keep in touch)
  • Entertainment apps (play a game, watch a video or listen to music to help pass the time when I’m stuck somewhere or waiting)
  • Productivity (I’m here, I may as well see what work I can get done)
  • Utilize movement sensors (to help with most of the above)

Mobile-Friendly Design Considerations

Using a mobile device when you’re on the move has special challenges. It’s harder to see the screens, more difficult to type and enter information, and people often need to do something quickly. While you’re designing an app, here are some considerations to make your app more user-friendly for people on the move. Make sure you test your app out under different conditions while on the move, in different lighting, different weather, with different levels of urgency.

  • short workflows (don’t force people to spend a lot of time trying to reach a goal or get something done)
  • easy inputs and interaction (make things easy to see, and simple to interact with)
  • reduce typing (it can be painful to enter in too much text, so look for ways to reduce inputs)
  • colors that work in different lighting (watch out for very bright or very dark colors that could get washed out)
  • a clean, focused design (avoid bloat – keep it simple so people can work with the app easily) See: iOS Human Interface Guidelines for more.
  • great network performance on wifi and wireless broadband, with different network speeds, strengths (when I am away from home or the office, I have to depend on different networks, and I will move between them)

An app that takes advantage of mobility features will fit into the contexts that the devices are used in. An app that is just a stripped down web or PC app probably won’t. Remember: if the app isn’t easy to use on the move, it won’t get used.

Still puzzled? Spend time observing people around you, and if you can, spend time with your target users. You’ll be surprised at when and where they depend on mobile devices, and at what they enjoy, and what makes them frustrated.

(Thanks to my friend and mobile developer Jeremy Gale for helping me brainstorm mobile features for this post.)

Note: I first introduced some of these ideas in an interview with Heather Shanholtzer for Techwell in 2011: The Future is Mobile Technology.

Software Design & Testability

I recently attended a talk by Ralph Johnson which I enjoyed.

One theme that Ralph talked about was simplicity. He was talking about security patterns, and how simplicity of design implies knowledge. If a design is knowable, it can be made secure. That led to a thought for me on testability. This is also true of a testable design; if a design is simple, it is knowable and therefore testable.

For example, as a tester one is often asked to look at requirements or user stories to determine if they are testable. If you as a tester can understand them, that’s a good indication that they are testable. If you can’t, how can you (or others) test? In my experience, when no one person understands or knows the project, it is difficult to test. If I need to go around to seven different people to understand the design of a project and none of them understand it in its entirety, chances are the project will be equally as difficult to test. Legacy systems suffer from this, but poorly designed new software projects are also difficult to test.

As a tester, if you don’t understand the design, don’t automatically think that you lack the necessary technical skills to understand. The architectural designs should be understandable to any stakeholder involved with the project (once the convention is explained to them). If the design isn’t understandable at a high level by the entire team, this is probably a bad design smell.

Ralph also mentioned that tools such as UML or DFDs serve to express program design to other people. (The opposing view is that these tools are used to generate code.) I agree with Ralph that these tools express design to be communicated to other people. If the architectural diagrams are easily understood, they will not only be testable, but more easily developed and communicated to the business. Tool generated code is extremely difficult to know and to test. People design software, people develop software, people test software, and people use software. The tools are there to help express each of those roles.

Discovering Interfaces Continued

James Bach responds:

Testing is an exercise in discovering a lot of things, including interfaces. But it is more than just discovery, it is inquiry. Inquiry is action; discovery is an event. Inquiry is within my control; not so with discovery. But certainly, good testing involves a lot of discovery and a lot of interfacing.

James raises a good point, and helps clarify the “Discovering Interfaces” test technique. Discovery would follow inquiry, and action would follow discovery. Through inquiry, testers can discover testable interfaces, and look at the feasibility of testing through them. The tester can collaborate with developers and other stakeholders to decide if the project warrants testing at the level of a particular interface, or at another layer in the application. If it looks feasible, testers can begin developing test cases against that testable interface.

This is a technique that I would encourage testers to look at when they are working on test automation strategies. Merely looking at the GUI (the most obvious interface to test against), only shows a thin layer of the application. There are other testable interfaces that in many cases may be better test automation candidates.

For more on test interfaces, check out Bret Pettichord’s article: Design for Testability, and Brian Marick’s article: Bypassing the GUI.