Six months ago, I made a decision I was confident in: we would require pair programming for all AI-assisted code. The hypothesis was sound—it would improve knowledge transfer, code quality, and team collaboration.
The results? Compliance, yes. But also resentment, workarounds, and a palpable decrease in team morale.
Here’s the post-mortem on why mandating collaboration practices fails, and what we’re doing instead.
What We Tried (and Why It Failed)
The Policy: All code written with AI assistance must be pair-programmed. Single exception for exploratory prototypes.
What we expected:
- Better knowledge sharing
- Higher quality code
- Stronger team relationships
- More intentional AI use
What we got:
- Engineers gaming the system (claiming code wasn’t AI-assisted when it was)
- Resentment about “not being trusted” to work independently
- Productivity theater—people pairing because they had to, not because it helped
- The most senior engineers found ways to opt out, making it feel like a “junior developer” policy
Why it failed: You cannot mandate culture. You cannot force collaboration. You cannot policy your way to the behaviors you want.
The Shift: From Policy to Culture
After the failed experiment, we completely changed our approach. Instead of requiring specific behaviors, we focused on creating the conditions where those behaviors emerge naturally.
Three Core Strategies
1. Incentives: Career Advancement Tied to Teaching
We changed our promotion criteria to explicitly value knowledge sharing:
- Senior → Staff requires demonstrable mentorship impact (measured through 360 feedback and mentee survey)
- Staff → Principal requires building team capability, not just individual output
- IC performance reviews include “collaboration contributions” weighted at 25%
Result: Senior engineers started volunteering to pair because it directly advanced their careers.
2. Visibility: Showcasing Collaboration Wins
We created regular showcases in all-hands:
- “Collaboration win of the week” featuring teams who shipped complex work through effective pairing
- “AI lessons learned” segment where engineers share what they discovered through AI + human collaboration
- Leadership explicitly praising collaborative approaches, not just shipping speed
Result: Collaboration became high-status, not a chore.
3. Role Modeling: Leadership Pairing Publicly
I (CTO) and our VP Eng now do “public pairing” sessions:
- Monthly office hours where we pair with any engineer on interesting problems
- We explicitly use AI tools and talk through our decision-making
- We share our own “I got this wrong with AI” stories
- We demonstrate that pairing isn’t about skill level—experts benefit too
Result: Psychological safety around collaboration increased dramatically.
Measuring Cultural Change
We track cultural indicators, not just compliance:
- Helping behavior: How often do engineers voluntarily offer help? (Measured via Slack thread analysis)
- Question diversity: Are people asking questions beyond just implementation? (Measured via questions in code reviews, office hours, Slack)
- Collaboration patterns: Who’s working with whom? (Measured via Git co-authorship, PR reviewers, meeting patterns)
- Engagement surveys: Do people feel supported? Do they feel they’re learning?
Results After 4 Months
- 40% increase in voluntary pairing (no mandate)
- Code quality scores improved (fewer bugs, better test coverage)
- Engagement scores up 15 points
- Zero resentment (measured via anonymous feedback)
The Key Insight
Create conditions for collaboration, don’t force it.
When pairing helps people:
- Advance their careers
- Get recognized publicly
- Learn from leaders they respect
- Solve problems faster
- Feel less stuck
…they’ll do it without being told.
Questions for the Community
- What collaboration practices have you tried to mandate vs. cultivate?
- How do you measure whether collaborative culture is actually taking root?
- What incentives work in your organization?
- How do you balance structure (some policies needed) with autonomy?