When I started writing mobile apps, I figured, how hard can it be? Apps look dinky on the small screen, so it must be easy to create them.
But holy shit is it hard.
It's hard on Android, on iOS, on WP7. And from what I hear, it's even harder on Blackberry.
It's almost like the MS-DOS days when you had to figure out how to squeeze every last ounce out of the machine to get your stuff to work. Except now you also have to make your app look good.
But you know what? I'm loving the challenge. I've been developing desktop apps for so long that I just assumed I could keep adding feature after feature and option after option without worrying that I'd tax the system.
Now that I'm a mobile developer, I'm finding it strangely wonderful to have to consider things like battery life, reduced screen real estate and limited storage space. I'm forced to make sure that anything I add to my app is important, because if it's not important then it's not worth the trade-offs.
Regardless of whether I stick with mobile development, the lessons I've learned from it are ones I'll apply to everything I create in the future. Keep it simple, keep it uncluttered, and keep it focused. That's how you create great apps for any platform.
I've heard this a lot from mobile devs, and to be honest it's one of the things that attracted me to give it a go :)
It sounds silly to enjoy "development is hard again" but it's hard in a lot of non-code-related ways as well as the languages being more restricted than when developing for desktops :)
Posted by: Andrew Herron | Wednesday, October 12, 2011 at 05:55 PM
"I've been developing desktop apps for so long that I just assumed I could keep adding feature after feature and option after option without worrying that I'd tax the system." - This is one of the things developers do that consumers don't understand.
People buy a computer and install SuperCoolApp 2010 and it runs great. Then in a few years they upgrade to SuperCoolApp 2014 and the machine slows to a crawl. The consumer has no idea why, they just assume the machine is getting old. What they don't understand is that many developers get lazy and assume the target machine is relatively new so they don't worry about taxing the system. But when someone isn't using the newest hardware the system can't handle it and it creates a really bad experience for the user.
More developers should work on creating tight, streamlined code that will run well on all systems, not just the latest stuff. As you say "Keep it simple, keep it uncluttered, and keep it focused." Words to live by.
Posted by: Peter | Wednesday, October 12, 2011 at 08:59 PM
Wow, I guess PowerGREP won't be getting an iPhone port :)
But, seriously, I think you can see the same things at work with Windows 8, where they are going back to things like performance, memory consumption, etc. that they had not taken as seriously for about a decade or so... simply because they now have to get it to run on mobile devices that can't afford to run extra CPU cycles or put extra memory on board that they don't need if they're going to have good performance and battery life.
There is all kinds of academic research going on around software optimizations that can reduce power consumption... very interesting, and the desktop will see benefits from all of this, too, in the form of smaller, faster, and quieter machines.
Posted by: mattbg | Thursday, October 13, 2011 at 08:42 AM
It would be helpful if you write about your experience or lessons you have learnt while creating the mobile apps. Hopefully the lessons which you have learned will be helpful for other mobile developers like me who can learn it from your blog post.
Posted by: Srivathsan G.K | Friday, October 14, 2011 at 04:19 AM
To be honest, I've recommended this since my first project before Windows CE shipped in 1995. You had to deal with limited memory, three different CPU types that handled memory differently, and since it was all native... well, it made me a much better engineer.
And continues to pay off in WP, iOS, and Android. Even where memory can be handled for you, you have to be very, VERY conscious of the device.
Oh, and if you don't already have hardware for each platform, grab some off eBay: I've found that what screams fast on the emulator doesn't really hold up on the actual device... while they aren't the cheapest devices to buy, it can save a ton of bug reports.
Of course, you'll be fine in the wild - your code always has been!
Posted by: Randy | Friday, October 14, 2011 at 01:31 PM