20 things every mobile developer should know

20 things every mobile developer should know

Developing for mobile requires specific design considerations. These can vary greatly from what you're used to and it's easy to trip up, so here are a few of the things developer Paulo Fierro would like to have been told long ago

So you want to develop for mobile? Maybe you want to chase those long foretold millions that await you in an app store or maybe you are just looking for a new challenge. Whatever the case may be there are specific things to consider when it comes to the design of your app and I'm not talking code-wise.

Before you get started you need to figure out what problem you're trying to solve. Who will be using your app? Where will they be? How will they be using it? If they are engaged in an activity at the same time how does this affect your app?

When you have the answers to these questions write them down. Stick them to a wall. If you face a tough decision come back to these notes and they will guide you in the right direction.

1. Choose your platform

Choosing what platform to target depends on what you're building and who your users are. The platform with the highest reach is the web. If you want to sell your app, then you probably want to get it on an app store. If you require access to the Camera or other device specific APIs, then you can go the native route or use a wrapper like AIR/PhoneGap/Titanium.

There is no correct answer. The platform you choose depends on many things so go back to those notes and see what they tell you.

2. You're not going to get rich

Many people compare the current App Store climate to the Californian gold rush in the late 1840s. Just as it was back then, it's hit and miss – mostly miss. I wouldn't recommend getting into the app game just to make money, you're more likely to strike it rich by heading over to your nearest casino and putting a few thousand quid down on black.

But we've all heard of the huge success stories that get blown up in the media. My favourite story is Canadian developer Matt Rix who spent months working in the evenings on a game that eventually surpassed Angry Birds on the top 10 list, no mean feat. That game is Trainyard and he writes about it here openly, even sharing numbers.

Two months ago Flurry, an analytics company, blogged that there are now over 500,000 apps in the Apple App Store and about 350,000 on the Android Market.

Getting noticed is not going to be easy.

3. Read the HIG

The Human Interface Guidelines or HIG is a document that exists for any platform you are developing for. It tells you how to create a User Interface that feels at home on the device you're targeting. Each platform is different and you should embrace these nuances.

For example, iOS users are used to having a back button at the top left corner. On Android, most models have a dedicated hardware back button so having another in the app is unnecessary clutter.

On the BlackBerry PlayBook, users expect settings and options to show up when you swipe down from the top bezel. Reusing these types of known behaviours are not necessarily things users will thank you for but they will scream at you if you don't.

So read the HIG and get to know the concepts but remember that these are simply guidelines, not rules, and definitely not some sort of checklist.

4. Put fun in functionality

Just because you're building a Utility app doesn't mean it has to be boring. For the Flash on the Beach conference guide we built in 2009 we used the standard set of iOS components but designed them to look and feel completely different. We wanted to give the app a certain character but at the same time not alienate users. This was less common back then and the result was an award at Gulltaggen.

My favourite camera app on the iPhone, Camera+ has buttons and titles that look like the generic ones but are styled with a lovely custom font.

Tweetbot, my favourite Twitter client mixes the subtle use of shadows and gradients to make custom alert boxes that fit with the rest of the app's design and make the whole thing look beautiful. That is attention to detail.

In his book Tapworthy, Josh Clark refers to this kind of thing as 'tap-worthiness'. I prefer the term 'lickability' and it's this attention that makes me want to lick my phone.

So we can follow the guidelines and still have some fun. And this kind of thing is much easier to do now using the new Appearance APIs available in iOS5.

5. Challenge convention

The most obvious example of this is 'pull to refresh'. You probably know exactly what I'm talking about. Introduced to the world in Tweetie 2 by Loren Brichter this design concept has since spread like wildfire and across to other mobile OS's.

The idea is simple. You pull a list to a certain point and when you release it something happens, eg reloading of data, like say your Twitter stream. Although not immediately obvious at first, once you get it, it's genius and is a perfect example of 'surprise and delight'.

Today we can find 'pull to refresh' in Gowalla, Facebook, Google+, Tweetbot, foursquare, oink, Fribi – and the list goes on and on.

Another popular paradigm is raising a button in the middle of the bottom toolbar. Oink, foursquare, Fribi and many others do this to bring attention to the main point of the app.

6. Behaviour is different

When developing for mobile, you have the attention of your users for approximately 30 seconds, maybe a minute. Your app should be designed in a way we can glance at it and go. Forget a complicated interface, just give us the details, right?

Well, yes. And no. Sometimes I'm on the couch, watching something on TV with my tablet on my lap and have all the time in the world. Or sat in the bathroom bored out of my mind. Stats say its not just me!

So where will your users be? What will they be doing? Design accordingly.

7. Content should be different

Simple is good and simple does not mean dumb – we need to focus on the core function of our app and write efficient copy. Relevant copy.

And micro-copy is really hard to write. Super hard.

8. My finger is fat

My finger has an addiction to bacon and as such it needs a hit area of minimum 44 pixels. Anything less and it's going to be really hard to tap. We made this mistake in the FOTB 2010 app.

The back button is 10 pixels tall but had a massive hit area to make it easy to tap. The problem? It was nearly impossible to see. Avoid!

9. Resolution independence

If you are going to build an app for various devices chances are your assets will need to scale. Scaling images up to fit on a tablet won't look great.

The easiest way to do this is ask your designer to create the artwork in vector format from the beginning. That way when you need an icon that's 512x512 for iTunes it's not going to be a problem.

10. Design a beautiful icon

That old adage holds true. You only have one chance to make a first impression and your icon sets the stage for your entire app.

We have a blank canvas on which to make something great. Use this opportunity to solve your problem in a functional and beautiful way.

When executed correctly, the idea that this device does anything else other than my specific application is lost. Forgotten.

Eric Carlson, Propelics

I love that.

So let's take the time and sweat the details. Last year, for Flash on the Beach, we built FOTB.me, our first attempt at building a web app targeting only mobile devices.

When the site is added to the home screen on iOS, you have the ability to set a custom icon and splash screen. So we took this opportunity to create a variety of them. One for older iPhones, one for retina displays, and one for each orientation on the iPad.

Granted, this will be seen by very few people. But if they notice, hopefully it will surprise them and possibly make them smile. And if so, then that's awesome.

11. My phone is my identity

The reason all this matters is because my phone tells you a lot about me.

You can see that I have way too many apps installed, but they are all neatly categorised in different folders yet my desk is a mess. And what does that say about me? I have no idea.

The bottom line is there's no way I'm going to infect my beautiful home screen with an ugly icon – because what would that say about me?

12. Don't make me RTFM

Please! Think of the children.

If you think people don't, read the manual for desktop software. This goes double, triple even for mobile apps.

When the iPad came out, there was a magazine app (not to be named here) that used tons of gestures for navigation. At first I thought, cool! This is some Minority Report type stuff, interesting.

A week later I had no idea how to use it. The help screen was also hidden away, so the only option was reinstalling it. Not a great experience.

If you are planning to use some crazy, gesture-based navigation we can't stop you. But if you must: please keep the help screen close by and most importantly make it worth our time.

13. Don't pretend

I'm not a fan of web apps that mimic the look and feel of native apps. There are several sets of UI frameworks out there that try their best to look like native controls. The problem occurs when they end up on the App Store.

These web apps inherently run slower, but the level of expectation is the same as other apps due to their look and feel and the fact that they were downloaded from a store. They are making an implicit promise and can't deliver.

I would avoid it.

14. Your idea is not original

Nas said it best back in 2001,

"No idea is original, there is nothing new under the sun. It's never what you do, but how it's done."
"No Idea's Original", Nas

The bitter truth is that ideas are a dime a dozen, execution is everything. A well-designed product at the right time and a little luck can go far.

15. Build for you

This way you're guaranteed at least one happy user. But more importantly if you're building for yourself, you know exactly what it is you want solved and how to best scratch that particular itch.

16. Listen to your users

If you're lucky, at some point your users will be paying your rent, so having a way to communicate with them is important. Using a service like GetSatisfaction allows users to have a conversation with you, whether it be reporting bugs or requesting features. The key here is that it's done in public and the communication is transparent.

Twitter works too but can be a lot more work and you may end up repeating yourself a good deal.

Now just because we're listening to users and they sometimes have great ideas, this is not design by committee. You don't have to do everything they tell you, trust your own instinct.

17. Stalk your users

Analytics is super important. They allow us to learn from user behaviour and can let you see how they flow through your app.

For FOTB.me we used Google Analytics and were primarily targeting Android, iPhone, iPad and PlayBook. I was using Twitter to track what people were saying and saw this:

At first I thought, crap! How many people does this affect? Checking Google Analytics I saw that there were only four people affected out of 4,241 unique visitors. As unfortunate as that is, it's 0.09 per cent – we can tolerate that. Of course you may not have that luxury.

A few hours later came this:

We saw that this affected 20 users - 0.5 per cent. Again, unfortunate, but we can live with that.

The point is, without stats we would have no idea how big or small the problem was. Having them there made sleeping at night a little bit easier.

18. Prototype!

It's a great tool for illustrating your idea for others and also to explore technical feasibility. We tend to write spikes, small sets of functionality to test possible techniques to solving a problem. Whatever you do, get your prototype on the device. Nothing beats testing on the device itself, even if it means a series of images you can swipe through.

There are many tools that will let you create tappable prototypes such as Prototypes, Balsamiq and FieldTest. You can even use Keynote.

Whatever you choose, get it on a device and show a friend over a beer to get their feedback. But once you're done, throw the prototype away.

I mean it, throw it away! This takes discipline, but know that any code you write – once it makes it into production – will never die.

You write prototypes fast, in whatever way works. Hack it up! But you do not want to spend the next few years supporting that code. Throw it away.

19. Get started

Move on your idea, because it's time to get it out there. It's hard but also exciting and ideas are no good stuck in your head. Get them into the world!

It's very easy to get paralysed about doing everything perfect from the start, and you're not going to do it perfect, but we owe it to ourselves to try.

20. We can make the world a better place

It's a lofty goal but bear with me. As designers and developers we have the power to create something that can affect not only our lives, but the lives of others.

And if we can make life just a little bit easier, a little bit simpler and at the same time fix a problem, then we've done something good.

Something we can be proud of.

14 comments

Comment: 1

Especially nr. 8 is a classic. Too many times we have tiny text links, pagination where your finger covers up 5 links at a time etc... (and I have small hands!)

Comment: 2

Great tips, Paulo. Tweetbot really is a great app and it's their attention to detail that makes their product stand out. Are there any other mobile apps/websites that you feel have done a good job of blending design, functionality and usability?

PS - Aside from being underwater, I can't think of any other location where I won't use my iPhone :-)

Comment: 3

Thanks David :) Lets see, after scanning the apps on my phone I'd add Path, Reeder, Flipboard and Scorekeeper. Clear (http://www.realmacsoftware.com/clear/) looks brilliant and I look forward to playing with it. Finally, Lanyrd has done a great job with their mobile friendly site (m.lanyrd.com)

There are a few sites out there that collect beautifully designed apps, like Well Placed Pixels (http://wellplacedpixels.com/), Landing Pad (http://landingpad.org/) and Beautiful Pixels (http://beautifulpixels.com/).

Of course a sexy design is only part of the equation, but its a good start :)

Comment: 4

Hi, thanks for the article. Just recently I'm trying to get my head round the design and development issues concering mobile. I would love to hear what you guys have to say on mobile content development.

In your article you say that the content on mobile should be different that this on desktop - but is it? Some people are expecting to find the same or at least similar user experience they are used to on desktop. You know, creating separate sites for mobile and desktop forces the users to learn new navigation, content distribution and so on. Second of all, do you think this approach is sustainable for majority of websites? I mean, how many of us would actually design different content for different platform? Isn't responsive design a better way?

Another unknown which I'm struggling to understand is the context on mobile. Since I do understand the obvious advantages and I see place for services like Yelp, Wikitude and LocalMind, I'm not sure whether these services are the future or just an episode, a interesting way to interact with content. The question is will they last? Second of all will the public accept the fact that to make the site/app better, it collects all this data about location, emotions and cognitive background of the user? (Look at Daniel Eizans slideshow on context)

So to cut things short - are we going towards one web or one website per device net?

Comment: 5

Hi Lucas, I'm not suggesting creating separate sites - my point is that the content needs to be more focused, and relevant to the mobile context. Responsive design is certainly a good approach, but the direction in which you scale the design is important.

If you start by designing the mobile experience first and then scale up you'll get a much better result. Luke Wroblewski's excellent article (http://www.netmagazine.com/features/mobile-first) and book (http://www.abookapart.com/products/mobile-first) cover this in depth.

As for the services you mention, as long as they keep providing useful information I don't see why not. Amazon probably knows more about me than my own mother but I don't mind because their recommendations are always spot on. I happily trade some privacy for a better experience but not everyone will. The recent Path fiasco is a good example of how it can go wrong (http://blog.path.com/post/17274932484/we-are-sorry).

I believe the goal is one web, and being future friendly today will help us tomorrow (http://futurefriend.ly/)

Comment: 6

#16 listen to your uses. #17 LOLJK everyone just use webkit.

Comment: 7

Sad, a typo in my snarky comment. s/uses/users/.

Comment: 8

Paulo, this is an excellent resource. Well researched, thoughtful and it hits the big points. Awesome stuff, thanks so much for putting it together.

I just wanted to dig into your point 16, as it's near and dear to my heart as one of the founders of Apptentive (http://apptentive.com). It really is impossible to overstate the importance of connecting with the people behind the downloads of your apps. ESPECIALLY in the early days, everything about the app you're building is a hypothesis and the faster you can test that and understand what's wrong about it, the better. There's really nothing like receiving a message from an app customer telling you that they love your app, BUT have no idea how to send you money. Establishing a channel to connect with them (something we've built for all app developers) helps you get better.

I would, however, argue that being in public and transparent actually turns out to not be the requirement. People like it when you talk just to them, as an individual. We are hearing regularly from developers that the people they converse with 1:1 become their strongest advocates. So, I would say that public and transparent is awesome, but it's not the only way to listen to the people using your app.

We wrote some more about giving your app customers a voice on our blog, would love your thoughts/feedback :-) (http://blog.apptentive.com/customer-communication/give-your-customers-a-...)

Thanks for sharing your experiences and helping us all get smarter about building apps!

Comment: 9

Its really sounds good I found your website perfect for my needs. It contains wonderful and helpful posts. I have read most of them and it was informative for all. please provide me your email address so that i can share my ideas

Recharge | Simple Mobile

Comment: 10

yea..the fat fingers always is a pain for developers..hehe

Comment: 11

Great tips Paulo. I have started working on Mobile application development. Your article has given me great inputs. Thanks

Comment: 12

@miketaylr: Listen to them, yes. Do everything they ask for, no. For that particular project, with a tiny set of users, 99.5% of them were using some kind of Webkit browser so it made sense, but I'm not saying this should be a general practice.

@rganguly: Thank you, and you are absolutely right. Transparent communication is not the only way, though it may sway new users when they see its being actively supported. Having said that, Apptentive looks very interesting and I'll try it out on a future project. Cheers :)

@gocreations: If only I could put them on a diet somehow...

@shivaprasad: Thank you!

Comment: 13

Awesome post.Here’s an all-in-one business application platform. It has everything you need to build custom business apps fasthttp://www.caspio.com/application-platform/
July issue on sale now!

The Week in Web Design

Sign up to our 'Week in Web Design' newsletter!

Hosting Directory
.net digital edition
Treat yourself to our geeky merchandise!
site stat collection