Your expectations are to high. Majority of so called experience developers never used TDD and also, even a higher number, never did pair programming. Also majority of the companies are not applying those techniques. Personally in a single company I’ve managed to use pair programming, because as team we decide to do it as an experiment and we manage to increase our velocity with about 20% per sprint and also to reduce the number of bugs. To understand where I want to go I’ll list for you some memorable sentence that I’ve heard about pair programming, TDD and writing unit tests:
- “If you are doing pair programming this means that you are not good developers” — Team Leader of an other team
- “If we are doing pair why to not try to share the bed also” — a colleague in my current team when he hear my proposal for doing pair programming
- “If you have to choose between having unit test or monitoring in production what you will choose (this is something that I can’t choose, I need them both)?”- Interview at Groupon
- “You are too dogmatic” — a colleague to my previous job where I was trying hard to impose a minimum set of best practices (also now they are working in week-ends and they have minimum 3–4 priority 0 emergencies in production/week)
Also in my career as a technical interviewer, I found a single candidate that can fulfil your requirements, and I interviewed around 50 developers in the last 7 years. My suggestion is to start your research not from CV and from their github accounts, and if they don’t have much there, first give them a small programming exercise that they have to make it at home, in order to don’t waist time with the interview. But still, make the first selection from the ones that have their github accounts listed in the CV.
Now my preference is for freelancing, because I have the same problem as you have, but on the other side: to find a company that fulfil my requirements.