1. A method for data storage, comprising: receiving a plurality of data bits to be stored in a memory device that includes multiple memory cells; based upon a desired page read time, selecting a particular end-to-end mapping; mapping the plurality of data bits into a plurality of mapped bits using the particular end-to-end mapping, wherein a number of the plurality of mapped bits is less than a number of the plurality of data bits; storing the plurality of data bits in the memory device by programming each memory cell of a subset of the multiple memory cells to a respective one of a plurality of programming levels using the plurality of mapped bits in the memory cells and a programming scheme that guarantees the particular end-to-end mapping; after storing the plurality of data bits, reading the plurality of data bits from the memory device in accordance with the particular end-to-end mapping; and selecting the particular end-to-end mapping based on a level of programming interference experienced by the memory device, which includes selecting a 1:2:4 end-to-end mapping that uses one, two and four reading thresholds to read each of a LSB, CSB, and MSB pages at a start of life of the memory device, and switching to a 2:3:2 end-to-end mapping that uses two reading thresholds for reading each of the LSB and MSB pages and three reading thresholds for reading the CSB page when the level of programming interference exceeds a particular interference level.