junior developer: uses pair programming to learn new technologies & best practices
senior developer: uses pair programming to exchange knowledge and get her code reviewed earlier
principal engineer: uses pair programming because after working on that codebase for 5 years she's too traumatized to venture into it alone without getting a severe hit to wellbeing & needs a companion to be productive