Android 4.0+ and iOS 7+ Only
On all new Android projects I set the minSdkLevel to 14; this means it will only work on (at time of writing) about 75% of devices: Google's figures. But I don't think this matters as these are the users most likely to download and in particular most likely to pay for Apps. It has made it much easier to develop Apps by cutting out support for Gingerbread for three main reasons:
- No need to use a bunch of extra libraries to use newer functionality
- Less version dependent code (I hate it when there are bunch of different things evaluated for different versions of Android).
- These devices are more powerful so you can do impressive things without worrying about performance.
I recommend this for all new projects. For my recent updates I've left the old version (using Google Play's multiple APK support) for older device owners while creating a 14+ fork.
I don't do as much iOS development, but what I do is iOS 7+ only.
Games are probably the one area where this advice doesn't (yet) make sense, they have custom UIs and are widely used by people with lower end hardware.
Of course all of this really only applies if you are a small independent developer. If you are Facebook or Google then you will have to do more.
Programming language selection
In no particular order, some of the key things I consider when selecting a programming language or technical tool.