This position paper makes two separate, only tangentially related points: 1. A research program is necessary to produce tools and techniques that allow application developers to develop and tune applications for future exascale machines, well before the machines are deployed. 2. In order to cope with, or facilitate, segmentation of exascale architectures, it is necessary to carry out an extensive study characterizing the needs and behaviors of applications that are expected to run on exascale machines.