- Use mirroring and labelling to build rapport and extract information.
- Good negotiators want to hear “no” — it makes the other party feel in control.
- Use open-ended calibrated questions starting with “how” or “what” to shift positions.
- Follow the Ackerman model: start at 65% of your target and raise in decreasing increments.
- Keep emotions in check and always summarise until you hear “that’s right.”
- Programming is a craft; pragmatic programmers are inquisitive, realistic, and adaptable.
- Core principles include DRY, orthogonality, reversibility, and designing by contract.
- Invest regularly in your knowledge portfolio: learn new languages, read technical books.
- Test early, test often, test automatically — and refactor without hesitation when needed.
- Communicate effectively and always take pride in your work.