I’ve been getting my hands dirty lately working on development for the iPhone. Development on this platform adds (and on others I am sure) considerations that are not there when developing for desktop computers
- Battery life (need to keep cpu/network or any hardware usage to a min to preserve battery life)
- Reducing Network traffic (most people pay by the amount of network traffic)
- Reducing memory foot print ( mobile phones don’t have GBs of RAM and GBs of swap space that we are used on the desktop)
- Fast load and quit time ( people who use mobile phone apps usually only have it running for a short time, so can’t afford to wait as long as they would on a desktop)
Since mobile computing is all the rave these days, does this mean designing and writing efficient software will once again become an indispensable skill a Software Developer must have as it was in the early days of personal computing?
Well, I’d crankily suggest it was, or should have been, important anyway, but yes, I think so. Memory discipline, and the fact that iPhone (and other mobile device) users don’t expect their phone to crash, hang, and otherwise misbehave should mean that people who produce fast, high-quality software that doesn’t consume massive resources will have a market advantage.
What should that tell us? Basically, there are three rules:
Trying to make a complicated desktop app fit in an iPhone is a mistake and will eventually hurt you.
Make budgets for the amount of time you want use cases to take, eg, application starts up in ≤ 10 seconds. Build up the software incrementally, and test these things as you go. It’s a kind of urban myth that you should save all optimization until the very end; by then you may have gone far down the wrong road. But by building incrementally and budgeting, you can effectively do development with performance in mind.