A method for programming a 3d non-volatile memory device, comprising: selecting a set of memory cells (SetD-23, SetD-0) in one word line layer (WLL23, WLL0) of a plurality of word line layers (WLLO-WLL23) to store data, the plurality of word line layers are arranged alternatingly with dielectric layers (DO-D24) in a stack, and memory cells (MCD23-0, MCD23-1, MCD23-3,..., MCD23-14; MCD0-0, MCD0-1, MCD0-3,..., MCDO-14) in the set of memory cells in the one word line layer are arranged in respective memory holes (MHO, MH0-1, MH0-2,..., MHO-14) which extend through the stack, the respective memory holes having respective widths (Dmh) which vary along the memory holes; and programming the set of memory cells in the one word line layer, the programming is adjusted based on a position of the one word line layer in the stack; and comprising: after the programming of the set of memory cells, sensing another set of memory cells (SetD-0, SetD-23) in another word line layer (WLL0, WLL23) of the plurality of word line layers, the sensing the another set of memory cells comprises applying a sense voltage (VrA, VrB, VrC) to the another word line layer while applying a read pass voltage (Vrp) to the one word line layer, the read pass voltage is set based on the position of the one word line layer in the stack, and characterized in that the read pass voltage is relatively lower when the position of the one word line layer in the stack is adjacent to relatively narrower portions of the memory holes. selecting a set of memory cells (SetD-23, SetD-0) in one word line layer (WLL23, WLL0) of a plurality of word line layers (WLLO-WLL23) to store data, the plurality of word line layers are arranged alternatingly with dielectric layers (DO-D24) in a stack, and memory cells (MCD23-0, MCD23-1, MCD23-3,..., MCD23-14; MCD0-0, MCD0-1, MCD0-3,..., MCDO-14) in the set of memory cells in the one word line layer are arranged in respective memory holes (MHO, MH0-1, MH0-2,..., MHO-14) which extend through the stack, the respective memory holes having respective widths (Dmh) which vary along the memory holes; and programming the set of memory cells in the one word line layer, the programming is adjusted based on a position of the one word line layer in the stack; and comprising: after the programming of the set of memory cells, sensing another set of memory cells (SetD-0, SetD-23) in another word line layer (WLL0, WLL23) of the plurality of word line layers, the sensing the another set of memory cells comprises applying a sense voltage (VrA, VrB, VrC) to the another word line layer while applying a read pass voltage (Vrp) to the one word line layer, the read pass voltage is set based on the position of the one word line layer in the stack, and characterized in that the read pass voltage is relatively lower when the position of the one word line layer in the stack is adjacent to relatively narrower portions of the memory holes. after the programming of the set of memory cells, sensing another set of memory cells (SetD-0, SetD-23) in another word line layer (WLL0, WLL23) of the plurality of word line layers, the sensing the another set of memory cells comprises applying a sense voltage (VrA, VrB, VrC) to the another word line layer while applying a read pass voltage (Vrp) to the one word line layer, the read pass voltage is set based on the position of the one word line layer in the stack, and characterized in that the read pass voltage is relatively lower when the position of the one word line layer in the stack is adjacent to relatively narrower portions of the memory holes.