

It's Insanely Hard to Make a Kick-Ass iPhone App - gsaines
http://www.georgesaines.com/?p=513

======
ryanwaggoner
Are there many examples of iPhone apps that are simultaneously (and somewhat
objectively): (1) beautiful, (2) easy to use, and (3) useful, that still don't
go anywhere?

I've been trolling around the app store for awhile trying to understand the
market and what I see are _tons_ of novelty apps, fugly apps (by anyone's
standards), buggy apps, and apps that break usability in all kinds of ways.
And judging by the lack of any reviews for these apps, it's hard to imagine
they spent much time on marketing, even just sending some free copies to
bloggers to get their feedback and see if they might review it.

I'm not saying it's easy to hit points 1-3 above; it's not. But I wonder if a
lot of indie app developers threw together something crappy in a few weekends
of work because of all the stories out there about the big money being made,
and then when it failed to materialize for them, they just gave up.

The App Store has gotten millions of people to collectively pay billions for
software made by indie developers, which is amazing. But it's still a
_marketplace_ and the normal rules of any marketplace apply.

I would love for an experienced iOS developer making money to tell me if I'm
wrong, and why.

~~~
forrestthewoods
I have $420 revenue from 285 sales (started $3, dropped to $1) in 6 months
from my side project.
<http://itunes.apple.com/us/app/alcohology/id437180278?mt=8>.

Getting attention is hard. Ridiculously hard. Insanely, impossibly hard. I
couldn't get a review from a single website. I submitted the app to dozens of
review sites, food/drink blogs, and tech blogs and didn't get a single
response. Actually, that's not true. I got responses from app review sites
that wanted me to give them money in exchange for a review.

I made a trailer that has gotten 2,700 views
(<http://www.youtube.com/watch?v=Ctsk1QVs8OI>). Almost all hits came from a
video a friend and minor internet celebrity made for me. His video has 14,000
views. <http://www.youtube.com/watch?v=rFn6eW2Kb0g>

I fully admit my app is a niche app, but I think it's worth more than $420.
Sites like Gizmodo have run "Best Cocktail Apps" and Apple regularly lists
"Martha Stewart Cocktails" in Staff Favorites for iPad. It has approximately
12 total recipes but lots of high quality, high res images.

~~~
ovi256
This may sound harsh, but, from the screenshots, your app would fall in the
fugly category. On the cocktail screen, you use a bunch of fonts and clashing
colors. At first look, I thought the "Tall" text thingy is a slider for glass
size. It isn't.

Compare with the Martha Stewart app. It is extremely polished and the photos
look gorgeous.

~~~
forrestthewoods
Harshness is fair and appreciated. It's not particularly beautiful and it has
some usability issues. It's lack of success isn't a total shock, but it is
certainly disappointing. The minimum bar for entry right now on iOS is pretty
damned high.

------
xenophanes
> the reason why developers are shackled to Objective C is to make sure
> processes finish in human time, and this is fundamentally a performance
> bottleneck in mobile hardware.

This is completely false. You can get good performance with high level
languages like lisp. It doesn't have to look like C to be fast and to be
possible to optimize it well.

The whole "writing low level code is faster" mentality is WRONG for 99% of
apps.

The software game industry is wrong too.

Abstraction is a good thing, not a bad thing. Abstraction helps us write
better code, and can help improve performance. Abstraction is not something to
sacrifice for performance; in general sacrificing abstraction _hurts_
performance because the bottlenecks are things like humans understanding
what's going on, being able to write good algorithms which is harder with
lower level code, and how long it takes them (so how much time is left over to
analyze and fix code bottlenecks).

Low level languages _waste time_ while making things harder on programmers.
And they do this to no particular benefit.

None of this is to say that Objective C is terrible. It's certainly a lot
better than C or C++. It has some good abstraction capabilities. But there is
absolutely no reason we couldn't use a higher level language on mobile devices
and get better performance for less developer time.

(The biggest real obstacles are things like the unpopularity of lisp -- it
would, sadly and irrationally, mean less iOS devs and hurt Apple -- and the
lack of high quality programmers who understand these things available to hire
to make it.)

~~~
davedx
How is Objective-C a lot better than C++?

What do you mean by "the software game industry is wrong too"?

~~~
dextorious
1) Objective-C is a very dynamic (think Smalltalk), less cluttered and more
nicely designed language than C++, that can just as easy fall back to plain
fast C.

2) For writing applications, desktop or mobile, nothing in the C++ libs
ecosystem comes close to Cocoa/Touch.

3) For the task under discussion (iOS apps), it's the standard that get's 100%
of official support from Apple, C++ is not.

~~~
davedx
DirectX is a pretty nice lib in the C++ ecosystem. OpenGL is comparable but
I'd argue DX usually leads the cutting edge of graphics capabilities.

~~~
dextorious
Yes, it is. But on mobile at least, I don't think there is much difference, is
it?

I mean, if Windows Phone 7 uses DirectX, that is, compare to OpenGL ES.

------
quesera
I disagree with two of your three points:

(paraphrasing, fairly I hope)

> Objective-C is too much work/too low-level for your app/required because the
> hardware is limited.

Disagree. I wouldn't be disappointed to see solid Cocoa bindings in another
approved language, but any programmer can learn C, and should. ObjC is a
superset of C, and Cocoa is a beautifully consistent framework. The brackets
might take a day or two to get used to, but they pretty much disappear after
that. The much talked-about memory management model is not nearly as daunting
as bloggers make it sound.

> Designing hugely complex monolithic apps is difficult on the iPhone.

Well, OK. I don't disagree with that entirely. But design is always serious
work, information architecture is an art and science, especially for highly
complex applications. That said, your app is not Photoshop and a good designer
can solve your problems. Photoshop on an iPhone would be Difficult. So would
XCode.

> App store discoverability is poor, marketing around launches is
> unpredictable, betas and limited releases are complicated or unworkable,
> audience feedback is a big problem.

Agreed 100%...! :)

Good luck with your dev!

~~~
glimcat
Photoshop is modular, not monolithic.

Designing a large monolithic anything is insanely hard. It's often best to
design around it.

------
sumukh1
"It's insanely hard to make a kick ass _____"

One of the reasons mobile design is so hard is because you have to use 100% of
the screen. Not only do you need to make it look good, but you also need to
squeeze the resources of the phone. You have to worry about battery life,
network usage, and storage space. It's a challenge, but it makes the end
result a lot better.

The same rules really should apply to development on any platforms. Keep it
light, simple, and focus on one thing.

~~~
masonhensley
>>"because you have to use 100% of the screen"

I think the that kind of restrain on the user would make work on native mobile
development side easier. All you would have to deal with is 2x views (portrait
& landscape) vs all the possible combinations of web screen sizes.

~~~
sumukh1
>> 2x views Yeah, your right. Even if you consider Android, it becomes just a
bit more complicated.

Your point is very true for development (It's what I love about iOS) but for
design it's a challenge.

It really makes you focus on the one thing. Take gmail for example. On the
web, I can do 20 different things, but in iOS the choices are limited to 3-4.
It's really hard to make things simple, so where you make the compromises is
the challenge.

~~~
masonhensley
I was trying to make the comparison to iOS (theoretically iphone/itouch) vs
web. Whether you focus on a single native mobile environment or multiple, I
kinda think the scales at least from the UX design perspective if not also the
development side.

------
davedx
"For a generation of coders accustomed to limitless managed memory, high-level
programming abstractions, and thousands of deeply functional opensource
libraries, mobile is a step back to the Byzantine world of Commodore 64s."

This made me chuckle. Maybe if you define "generation" as "this year's college
output" then you might be right, but if we're talking "generation" as in the
past lifetime of software development then it's nowhere close.

Only in the last 5-10 years have we seen the rise of the well put together
framework.

Also, I have no experience with iOS, but the Android framework is pretty damn
nice from the perspective of somebody who actually lived through the C64 days!

~~~
potatolicious
I don't think it's a lamentation over framework per se, but rather a step back
from the web-hysteria of a few years ago, where you can pretty much, with a
lot of elbow grease (aka Perl) tie together component A with component B and
feed it into component C to do something cool/wicked/useful, where they're all
giant open source projects.

Think of all the crazy things we did pluggin ImageMagick into PHP backed by
giant MySQL instances.

This is no longer really possible with mobile. I recently pulled in some image
recognition libs to my app, and it's an _extreme_ struggle keeping a large,
legacy, C++ lib from exploding all over a mobile device. We really are
stepping far, far, back from the previous trend of writing code as if the
metal they run on is but a detail.

~~~
dextorious
"""Think of all the crazy things we did pluggin ImageMagick into PHP backed by
giant MySQL instances."""

While I agree those were easy to use, I can't think of any crazy/cool things
from that era websites.

Most of the cool/useful/nice web stuff is from the Ajax/fast JS/jQuery etc era
of late.

"""I recently pulled in some image recognition libs to my app, and it's an
extreme struggle keeping a large, legacy, C++ lib from exploding all over a
mobile device. We really are stepping far, far, back from the previous trend
of writing code as if the metal they run on is but a detail."""

It was never "but a detail", it was just that web development is seldom
CPU/Memory-bound. Mobile development in the main is.

Also, if you were trying to do a competent 3D game engine, back in the same
era you did PHP/MySQL stuff, you'd see that the PC metal was not "but a
detail" at all.

It's also a little contradictory to lament about how easy it was to "plug
ImageMagick into PHP backed by giant MySQL instances" and then compare it to
the difficulty of not only programming for a mobile device, but also "pulling
in some image recognition libs to my app".

Not only you're attempting something much more cpu intensive and difficult
than using ImageMagick/PHP for web development, something that could have been
just as difficult if not more so back in your web days, but you also try it in
a device with less memory/cpu. Something's gotta give, right?

That said, nothing stops you writing plain apps for mobile that just do the
same stuff you did on the web. There are plenty of frameworks that basically
provide you with a browser view and let you do stuff (Platinum, etc).

~~~
bad_user

        Most of the cool/useful/nice web stuff is from 
        the Ajax/fast JS/jQuery etc era of late
    

Wikipedia, Blogger, Flickr, a bazillion forums on which I spent countless
hours. Ajax/JS/jQuery are cool, however when it comes to usefulness many times
they are superfluous. The old Twitter interface was a lot more usable.

    
    
        web development is seldom CPU/Memory-bound
    

This is only an impression because the hard work gets done by the database or
other external processes that are outside of your web server. Business logic
is cheap if you can delegate the actual data processing and when you delegate,
of course it's going to be I/O bound. On the whole if you count every
component, web applications are the biggest consumers of these resources.

    
    
        nothing stops you writing plain apps for mobile that 
        just do the same stuff you did on the web
    

I agree, you can also have a native mobile interface, while the whole logic is
done on server. Like in the case of a chess game, you could have the minimax
algorithm (or whatever) on the server, with a push mechanism to notify the
client when the move is ready.

------
buff-a
_But the reason why developers are shackled to Objective C is to make sure
processes finish in human time, and this is fundamentally a performance
bottleneck in mobile hardware._

I use monotouch. Compiles to ARM assembly. Not seeing any problems.

 _For a generation of coders accustomed to limitless managed memory, high-
level programming abstractions, and thousands of deeply functional opensource
libraries, mobile is a step back to the Byzantine world of Commodore 64s._

Really? An 8bit 1Mhz processor with 64Kb? Or is it a 600Mhz 32bit processor
with 262,144kb. Sure it doesn't match up to my i7, but when java first came
out we had Pentium 90s. The lack of ObjC library support is changing as more
developers pile on, and if you go with C# then that's pretty much solved.

(As a kid in the UK, you had a ZX Spectrum, a C64 or a BBC Micro. The next gen
Commodore was the Amiga. The next gen BBC was the Archimedes. The Archimedes
had the ARM2. Same instruction set as an iPhone... in 1988. I shipped a game
on it. 100% Assembly. Much prefer C# to hand-rolled assembly, so its not just
the new kids.)

~~~
bad_user
Yes but Moore's law is applied to phones differently, because battery life is
as important as processing power, or even more so.

This is the reason the 600Mhz processor in your phone will have worse
performance than a normal 600Mhz processor. Mhz is useless as a measure for
performance and it became popular only because of marketing campaigns by
Intel, when they had an edge in the Mhz race. A more useful measure (other
than running unbiased benchmarks) would be MIPS (millions of instructions per
second) and MFLOPS (millions of floating-point instructions per second).

For example an ARM11 from 2002 at 412 MHz was able of 515 MIPS (millions
instructions per second), while a Pentium Pro from 1996 was capable of 541
MIPS at 200 MHz. Also an Intel Core i7 EE is capable of 177,730 MIPS at 3.33
GHz, while an AMD Phenom 2 X6 from 2010 is capable of 78,440 MIPS at 3.3 GHz.

Basically your 600Mhz mobile processor is not the same processor you had when
playing Counter-Strike a couple of years ago. That's because it is optimized
for consumption rather than performance.

~~~
caw
While I agree with you that the instructions matter, are your numbers x86 (or
arm) instructions, or are they micro-instructions that your high level
instruction set is translated in to? If so, the other factor is how many
micro-instructions your instruction is broken down in to.

------
rdouble
I've found it far less insanely hard than what you need to know to make a kick
ass web app.

------
tel
Is it just me or does anyone who seriously thinks any app that resembles
"photoshop, but on your phone" is going to be successful really have a strange
perspective on what people use their phones for?

------
mhansen

      Photoshop’s submenus, window management, and setting 
      screens afford that software package a level of feature 
      depth I don’t believe can be achieved in a mobile 
      environment no matter how sophisticated and intuitive UI 
      conventions become.
    

I wonder if the author is aware of Photoshop for Android tablets -
<https://market.android.com/details?id=air.com.adobe.pstouch>

Granted, it doesn't have all the features of desktop Photoshop, but it looks
like it has a lot of the features, and it has great ratings.

~~~
Tossrock
A tablet only app isn't the same beast as a smartphone app. You can throw a
large number of menus onto a 10 inch tablet and gain functionality rather than
lose it; try the same thing on a 3.whatever iPhone and you'd have an extremely
cluttered, useless app.

~~~
nevster
There's also Photoshop Express for the iPhone. It's worth looking at to see
what kind of design decisions they've made.
[http://itunes.apple.com/us/app/adobe-photoshop-
express/id331...](http://itunes.apple.com/us/app/adobe-photoshop-
express/id331975235?mt=8)

------
alexbell
> But it won’t run on anything less than an iPhone 3GS.

This is a general problem with mobile given how fast the hardware is moving
along. And given that the 3GS is what, ~2.5 year old hardware? I don't think
that it's crazy that an app won't run on anything less (I do think it's crazy
that Apple still sells the 3GS). And I think consumers also kind of expect
that if they do have older (pre 3GS) hardware, things are going to be slow.
Also, despite the overall evilness of American cell carriers, it is kind of
helpful to us mobile developers that they do their best to enforce a 2 year
upgrade cycle with hardware.

------
mgrouchy
I think making anything "kick ass" is insanely hard. The depth of
knowledge/creativity/intuition/etc. required to make incredible products in
general is certainly non-trivial.

------
Florin_Andrei
Well, the number one reason why my iPhone is a much less useful device than it
could be is that many apps are insanely slow to launch.

Dictionary.com - what do I use it for? As a non-native English speaker,
sometimes I do a quick check on a word I'm not sure of. But the app takes so
long to launch. It activates GPS, it connects via the Internet to download
some obscure data that I don't care about, it does so many things that leave
me completely indifferent... and it fails to do the one most important thing
that I DO care about: find out the meaning of a word really quick. Like, right
now, please.

Sure you can turn off some of the extra features (but not all), sure you can
reboot iOS to make it a bit more snappy, but the app still feels sluggish. And
this is on an iPhone 4.

Folks, sometimes an app is just an app. All those features that you think make
the app more appealing to the customers - are just dead weight that pull it
down. Please, keep the apps lean and quick.

------
namsral
Marketing is even harder!

Although not an iPhone app, we've spent a lot of time in both developing and
marketing our iPad game. But the revenue doesn't justify building another game
which we would've loved to do. Developing an app is only half the battle, the
other half is marketing it and as developers we are very bad at marketing.

Our criteria for a success was: Polished Graphics, Engaging Gameplay, Sense of
Humor and a Cool Trailer.

Paddle Battle for iPad:

<http://paddle-battle.com/>

<http://www.youtube.com/watch?v=xP2gnq6z3Fc>

[http://itunes.apple.com/us/app/paddle-
battle/id415463249?mt=...](http://itunes.apple.com/us/app/paddle-
battle/id415463249?mt=8)

------
Macsenour
Discovery is not the issue. The issue is keeping the app on the device. With
so MANY apps new every day, the average person loses track of the new apps
they downloaded, and they stop using the older ones unless they really are
kick ass.

Spend less on marketing, more in making your app indispensable.

------
alapshah
The only major problem I see here is the app store itself. Discoverability is
a huge problem... It is the one that I am most shocked that Apple has done
nothing about. I routinely have trouble finding apps that have been released,
and it is easy to get lost in the crowd. My company has released a few apps
(we contract for other guys) and it is almost pure luck which ones end up
picking up steam (certainly not our best work).

I don't know the android market well... it seems to be better, but only on the
margins. I am surprised that noone has come up with a better way.

------
AznHisoka
There's no worthwhile "Dip" when it comes to making an iPhone app since it's
become commoditized, and crowded. There's a lot of effort, luck, sweat, etc,
don't get me wrong, but the cost/benefit ratio just sucks. You're better off
putting that sweat to creating an enterprise app for Fortune 500 clients, or
creating the next big social network.

Also, remember.. there's a lot of commotion over mobile, but in terms of
monetization, it still lags behind web display, and search ads.. it's not even
close.

------
dasil003
Making an iPhone app is relatively easy compared to most app development for
the history of computing. Doing it well is significantly harder, but then
again so is any craft. I dare say it's quite a bit easier than writing your
program on a stack of punch cards and waiting 24 hours for the output. Or for
that matter, making a chair that will last 100 years.

------
instakill
I.T.O monetization, you can also take the route of not developing iOS apps for
yourself and trying to sell them for $0.99. You can instead offer your
services to mid-sized companies' marketing departments and build iOS apps for
them. You won't make millions if it explodes in popularity, but what are the
chances of that anyway?

------
persona
As he talks about the marketing problem for small players, I've just posted an
Ask HN survey for Mobile Game Developers to get some feedback on something
I've been working on to help small players.
<http://news.ycombinator.com/item?id=3334832>

------
wallflower
For some excellent examples of apps in the vaunted league that he mentions,
check out Beautiful Pixels.

<http://beautifulpixels.com>

The user interface is everything if you want to compete in the major leagues
(e.g. top 100).

~~~
ANH
May get downvoted for pedantry, but the spelling error in the first paragraph
on that page drives home the OP's point. There are so many ways to undermine
yourself as an indie dev.

------
pankajdoharey
If your product is that good , Apple does your free promotion on its
sites,partners sites and Apple ad network sites for free, App store is just as
beneficial to small players as large. You just have to create something
remarkable and worthwhile to catch there attention.

------
TechNewb
I think one if the most beautifully designed app loaded with desktop level
functionality, yet optimized for mobile, is Intua's Beatmaker II. Amazing. One
of the best apps.

------
rudiger
The fart app guy (his app was the _#2_ fart app in the app store) is retired
with a $4-7 million bank account.

------
brianobush
do android developers have many of the same issues?

~~~
jgw
What I've found difficult to navigate is that while it feels a little like the
joy of programming your old C64 (or in my case, Osborne 1), the truth is
you're putting your work out there and it suddenly becomes open to both harsh
criticism and support expectations - even if you're giving it away for free,
without advertising.

My app is for film-makers, and it's called Acacia
([https://market.android.com/details?id=com.ephemerald.cameraa...](https://market.android.com/details?id=com.ephemerald.cameraassistant)),
and I'll fix the bugs when I have time :)

