1. A method of programming One-Time Programmable (OTP) memory, comprising: providing a plurality of OTP cells, at least one of the OTP cells including at least: an OTP element including at least one electrical fuse having a first terminal coupled to a first supply voltage line, the at least one OTP element having a resistance; and a selector coupled to the OTP element with an enable signal coupled to a second supply voltage line, one-time programming the at least one OTP cell into a different logic state by applying a plurality of voltage or current pulses to at least one OTP cell via the first and the second supply voltage lines to turn on the selector and to thereby progressively change the resistance so as to change the OTP logic state, wherein the one-time programming of the at least one OTP cell comprises: obtaining a critical program current that would cause the at least one OTP cell to undergo a drastic resistance change; and limiting the program current below the critical program current.