This question has actually been on my mind for a while now. I'm usually sitting at work trying to figure something out or scrolling through my code looking for where something went wrong. I definitely don't have as much experience as a lot of the coders here, but I'm rarely ever typing.
I need to think about the flow of the program/function, and what the essential pieces are. When I know what I want, I start typing it out, and it usually only takes me 2-3 minutes to type out what I'd been thinking about. Usually, I'll have spent far longer than 30 minutes thinking about how I want to structure and attack the problem at hand.
I'm not a dev, but I'd actually be afraid of releasing an app for ipod touch for something so reliant on internet access purely because of the low ratings it would probably get from clueless ipod touch owners...