- Define problems.
- Define common terms:
- What means by
x
? Even whenx
is a common terms?- For example in delivery platform: What means by refund? Turns out engineering team has different definition with product team 😅
- Save us precious time and make sure our discussion is valid
- What means by
- Define priorities (Tech Lead responsibility):
- Is it life or death?
- Is it up to common practice?
- Can we generalize this issue?
- Is it for problem prevention?
- What problem do you perceive it will happen if
x
approach is taken?
- What problem do you perceive it will happen if
- Explore solutions
- Leading conversation (Tech Lead responsibility)
- Encourage team members to contribute ideas
- Listen to team members solutions:
- Possible scenarios:
- Team members are on-track 😁
- Team members are off-track 😑
- Guide them to think about different angles 1. Performance? Code structure? Potential downtime? Non global solution?
- Still in disagreement 1. Table the discussion, bring it offline 2. (Trust me I am an Engineer)
- Possible scenarios:
- Time-boxing
- maximum 15-20 minutes per discussion
- Coming up with solutions:
- User experience?
- Business critical?
- Performance?
- Code structure?
- Impact?
- Possible pitfalls (especially platform)
- Follow up:
- Debrief on the discussion and decision, possibly with individual team members
- Document learnings