1. A memory device comprising: a non-volatile memory comprising a multiple level cell (MLC); a controller in communication with the non-volatile memory; and firmware comprising: multiple different programming techniques for establishing a charge configuration in the MLC that represents multiple data bits stored in the MLC; and write logic that when executed by the controller causes the controller to: obtain specified data to write to the MLC; select among the multiple different programming techniques to determine a selected programming technique; and write the specified data to the MLC using the selected programming technique.