When building software you always have to think about both the future and the past. You think about the future because you know your code will live for years and you want it to handle coming changes with minimal maintenance. You think about the past because you have an existing code base that still needs to work correctly and users that rely upon your code. Even if your app is new with no existing code or users you still have to think about the devices that have come in the past that it will run on and you’ll have to support. Devices used by tiny percentages of the population can be owned by millions. Supporting the past quickly becomes overwhelming.

You always have to consider the future but you have a choice about the past. Your choice will depend upon your app and market. For example, if you are targeting the education sector then you need to keep in mind how old their devices and operating systems are. In general, push things forward and cut out old code and devices after 2-3 years.