Sorry but when you endorse pair programming it is simply not possible for me to take you seriously. We could quibble about agile and scrum and we could argue that most people doing TDD aren’t doing it according to Hoyle but I’m not really interested in that conversation. I’ve coded for over 30 years without all that garbage, and, no, I don’t need any “process.” I usually Own the components I work on, I do collaborate of course but at a high level of division e.g. I do the servers and database and someone else does the browser. No “teams,” please, I do software, not football.
However when you recommend pair programming, nope, TILT, the switch is in the off position. You can’t concentrate while sitting closer to a coworker than most spouses in the same bed, and talking the whole time.
Programming takes concentration and focus. That condition is unachievable in pair programming. You may as well code while being strip searched in front of a crowd.
You’ve never know a real development environment if you believe in PP, and that’s too bad.
As for those perfect requirements docs, we don’t code to requirements, we code to functional specifications. Requirements are relatively nonvolatile, functionals more volatile. and implementation specs are too volatile and we don’t do them much anymore.
And I usually write them myself because most developers can’t write clearly or thoroughly, and all customers’ notions of what they want are a lot more vague than they realize.