#1 — Do not criticize others while being blind to your own faults.
Do not seek fault in others while staying blissfully unaware of your own.
- When others code slowly, it’s because they’re inefficient and don’t manage their time well. When I code slowly, it’s because I’m being thorough and have to deal with a difficult system.
- When others hold their technical opinions strongly, it’s because they’re stubborn. When I hold my technical opinions strongly, it’s because I’ve done my homework and need to be resolute.
- When another engineer PRs into my codebase, they’re overstepping their bounds. When I PR into another codebase, I am exhibiting initiative.
#2 — Be flexible with others. Be strict with yourself.
This is the explicit reversal of the previous point.
Be flexible with others and offer them grace. Be strict with yourself and stay thoughtful in areas of self-improvement.
By default, examine your own weaknesses before looking for fault in others.
#3 — Do not presume you can teach others.
Do not presume you have a superior understanding. You have some amount of knowledge, wisdom, and experience. Be willing to share it.
This mindset helps avoid condescension and increases the overall effectiveness of criticism.
#4 – Follow through with your commitments.
Criticism and feedback is only heard when there is trust.
In any relationship, you contribute to trust by following through with your commitments.