1. A method of programming a memory cell of a flash memory array, said method comprising: applying a first programming pulse, having a first pulse characteristic, to said memory cell; determining if said memory cell is programmed; and if said memory cell is not programmed, applying a second programming pulse, having a second pulse characteristic, to said memory cell, wherein said first and second pulse characteristics are different.