In his Choosing Which Mobile Experience to Build talk at the UXIM conference in Denver CO 2014, Nate Schutta walked through deciding to design a native app, a mobile web app, or something in between. Here are my notes from his talk:
- Software engineering requires a number of trade-offs. How can you understand when to make native applications, Web-based apps, or a combination?
- Mobile devices are quickly surpassing laptops in terms of global share. By the end of 2015, global PC use will be at 30% of Internet usage.
- What happens when everyone has a smartphone? In the US, we've come very close to that point.
- How do you decide what to build for this reality?
- A lot of developers think they need to build a native application for mobile, but there's a lot you can do with HTML5 technologies.
- In many cases, your audience has a better web browser in their pocket than on their computer.
- You can build a Web site to run on most devices. Responsive design allows you to adapt to multiple screen sizes.
- If you need to reach lots of devices, Web technology helps your reach the most. You will miss out on some device capabilities.
- If you need access to native capabilities, you'll need a native or hybrid app.
- Discoverability is hard on both native app stores and the Web. If you have an established brand, some of this is easier.
- With Web sites, your audience needs to take action to put you on the home screen of their device.
- There is no magic shrink way for Web sites. You can't just take your Website and port it over to mobile.
- Getting a grid to render on an iPad is not enough. There's more constraints to consider.
- Designing for mobile requires a rethinking of the experience.
- If you are a major company, you likely need a native application to fill basic customer expectations.
- Building a native experience requires different skills than the Web. Each operating system uses different development technologies.
- There is no code reuse between operating systems.
- Different operating systems provide different levels of technical capabilities.
- If you are trying to target many different devices, native app development can quickly become painful to build and maintain.
- What phone capabilities do you need in your app? There's always more that native applications will be able to do. If you need those capabilities, you need a native app.
- If you don't need device capabilities, you may not need native apps.
- It's not just a question of iOS vs. Android, you also have to consider different operating system versions. iOS tends to get updated quickly. But many Android devices still run on old operating systems. Fragmentation is a real issue.
- Half of your development budget will be spent on testing. The quantity of devices make testing very expensive.
- Are you trying to sell the application? If so, a Web site won't work. App store ecosystems make it very easy to pay for your products.
- Who is your audience? Are we coming after "captive" employees or customers. Customers are much less likely to have a consistent set of devices.
- Hybrid apps allow you to integrate Web code into native applications that can connect to some of the advanced technologies in operating systems.
- Historically, cross-platform apps have not been widely adopted.
- With hybrid apps, you are putting a layer between you and the operating system. That has performance implications and a dependency on changes from the the framework vendor.
- If you are trying to create the richest experience possible, a hybrid app won't get you there.
- Hybrid apps are not going to make things like testing easier. You'll still have the same amount of device issues.
- Uncanny valley: there's a line where things look almost right but aren't.
- Don't try to act like a native app IF you aren't a native app.
- In the end there are pros and cons to all these approaches.
- Most apps are technically "web apps" as they connect to servers and use data in formats like JSON
- The real issue may not be the technology you're using to build mobile experiences but instead how you reach your audience across devices and manage issues like home screen access.
- What do our customers need and what is the experience we have to deliver?