1. A method of operating a non-volatile memory device, comprising: calculating a number of expected data bits from program data to be programmed into a non-volatile memory array in a program operation; calculating a number of failed data bits that failed to program in the program operation; and increasing a programming voltage in response to comparison of the number of expected data bits and the number of failed data bits.