Stress

Developing an app can be like baking a cake. You find the right ingredients, mix them together, and presto: tasty, tasty mobile applications. Except that in this cake, one misplaced granule of sugar can have you sifting through the batter for a week straight before it can go in the oven. 

And once it's out of the oven, someone who knows absolutely nothing about cakes decides that it should now have lemon meringue in the middle. ("That should be easy, right? Just, uh, put it in there.") And then, in all likelihood, no one even eats it.

If you're looking to work on (or make) the next Snapchat or Angry Birds, you'd better be prepared for a lot of pressure coming from both inside the code and outside of your office.

No one outside of development will understand what you actually do. This means that few people will understand problems you're facing, and even fewer will understand what a big deal it is when you overcome a hurdle. Pair that with what can be 24-hour on-call duties for a live product and deadlines that don't care about compiler errors, and this profession can be a Faustian nightmare for the wrong candidate.

But if you like problem solving in harsh conditions (and love the feeling of a defined, in your hands, working product when the work is done), then nothing else matters. This job rocks.