This document discusses pair programming, where two programmers work together at one workstation on the same development task. One programmer acts as the "driver" who types code while the other, the "navigator", reviews each line of code as it is typed and assists in design and debugging. Regularly swapping driver and navigator roles improves collaboration, knowledge sharing and code quality. Studies have found that pair programming leads to higher quality code with fewer defects, while only increasing costs by around 15%. It works best for some personality types and teams, and allows for knowledge transfer between more and less experienced programmers.