We show how a series of transformations can be applied to a sequential program to obtain programs that represent successive steps in exploiting parallelism in the original algorithm. Our Navigational Programming (NavP) methodology is based on the principle of self-migrating computations. Our methodology for achieving parallelism is truly incremental, in the sense that each step represents a functioning program and every intermediate program is an improvement over its predecessor. The transformations are mechanical and straightforward to apply. We illustrate our methodology in the context of matrix multiplication. Our final step is similar to the classical Gentleman’s Algorithm, but there are some important differences. We present a detailed performance comparison. The NavP methodology is conducive to new ways of thinking that lead to ease of programming and high performance. A closer look at our NavP algorithm suggests some ways in which messagepassing implementations could be impr...