A method for programming data into a multi-plane flash memory device, comprising: receiving a first group of first data over a first channel and a first group of second data over a second channel different from the first channel; storing the first group of the first data in a first page buffer (402; 162a) and the first group of the second data in a second page buffer (404; 162b); programming the stored first group of the first data into a first page (410a; 148) associated with a first memory plane of a multi-plane memory device; programming the stored first group of the second data into a second page (412a; 156) associated with the first memory plane in parallel with programming the stored first data; while the program operation for the first memory plane of the multi-plane memory device is in progress: receiving a second group of the first data over the first channel and a second group of the second data over the second channel; storing the second group of the first data in the first page buffer (402; 162a) and the second group of the second data in the second page buffer (404; 162b); upon completing the program operation for the first memory plane of the multi-plane memory device: programming the stored second group of the second data into a second page (412b; 156) associated with a second memory plane of the multi-plane memory; programming the stored second group of the first data into a first page (410b; 148) associated with the second memory plane of the multi-plane memory; wherein the first page buffer has a size equivalent to one page of a memory plane, and the second page buffer has a size equivalent to one page of a memory plane. receiving a first group of first data over a first channel and a first group of second data over a second channel different from the first channel; storing the first group of the first data in a first page buffer (402; 162a) and the first group of the second data in a second page buffer (404; 162b); programming the stored first group of the first data into a first page (410a; 148) associated with a first memory plane of a multi-plane memory device; programming the stored first group of the second data into a second page (412a; 156) associated with the first memory plane in parallel with programming the stored first data; while the program operation for the first memory plane of the multi-plane memory device is in progress: receiving a second group of the first data over the first channel and a second group of the second data over the second channel; storing the second group of the first data in the first page buffer (402; 162a) and the second group of the second data in the second page buffer (404; 162b); upon completing the program operation for the first memory plane of the multi-plane memory device: programming the stored second group of the second data into a second page (412b; 156) associated with a second memory plane of the multi-plane memory; programming the stored second group of the first data into a first page (410b; 148) associated with the second memory plane of the multi-plane memory; wherein the first page buffer has a size equivalent to one page of a memory plane, and the second page buffer has a size equivalent to one page of a memory plane. receiving a second group of the first data over the first channel and a second group of the second data over the second channel; storing the second group of the first data in the first page buffer (402; 162a) and the second group of the second data in the second page buffer (404; 162b); upon completing the program operation for the first memory plane of the multi-plane memory device: programming the stored second group of the second data into a second page (412b; 156) associated with a second memory plane of the multi-plane memory; programming the stored second group of the first data into a first page (410b; 148) associated with the second memory plane of the multi-plane memory; wherein the first page buffer has a size equivalent to one page of a memory plane, and the second page buffer has a size equivalent to one page of a memory plane. programming the stored second group of the second data into a second page (412b; 156) associated with a second memory plane of the multi-plane memory; programming the stored second group of the first data into a first page (410b; 148) associated with the second memory plane of the multi-plane memory; wherein the first page buffer has a size equivalent to one page of a memory plane, and the second page buffer has a size equivalent to one page of a memory plane.