LeadershipTechnical ManagerCommunication and Influence
Session 04 - Cross-team Collaboration
5 min read4 lessons in this module
Dependency Management Between Teams
Dependencies giữa teams là nguồn gốc lớn nhất của delays trong software organizations. Senior dev cần biết identify, track, và mitigate chúng.
Dependency Types
Type
Mô tả
Ví dụ
Risk Level
Code
Team A cần code change từ Team B
Shared library update
Medium
API
Team A consume API mà Team B own
New endpoint needed
High
Data
Team A cần data mà Team B manage
Schema change
High
Infrastructure
Team A cần infra mà Platform team provide
New Kubernetes namespace
Medium
Knowledge
Team A cần expertise mà Team B có
Security review
Low
Dependency Tracking Template
markdown
## Cross-team Dependencies - [Sprint/Quarter]
| ID | Description | Our Team | Depends On | Owner | Due Date | Status | Risk |
|----|------------|----------|-----------|-------|----------|--------|------|
| D-01 | Payment API v2 endpoint | Order Team | Payment Team | @tuan | Mar 15 | In Progress | Medium |
| D-02 | Auth service migration | All teams | Platform Team | @linh | Apr 1 | Blocked | High |
| D-03 | Product schema change | Search Team | Product Team | @minh | Mar 20 | Done | - |
Mitigation Strategies
Strategy
Khi nào dùng
Ví dụ
Mock / Stub
API chưa ready
Contract-first development, mock server
Feature flags
Không chắc timeline team kia
Deploy code nhưng disable cho đến dependency ready
Abstraction layer
Reduce coupling
Anti-corruption layer, adapter pattern
Parallel workstreams
Cả hai team cùng develop
Agree interface upfront, implement parallel
Escalation
Blocked > 3 ngày
Escalate lên management
API Contract-First Development
Workflow
1. Both teams agree on API contract (OpenAPI/Swagger)
2. Contract committed vào shared repo
3. Consumer team generates mock từ contract
4. Provider team implements API theo contract
5. Contract tests verify both sides
6. Integration test trước go-live
Consumer-driven contract tests (Pact hoặc similar)
Provider verification tests
Contract review process (PR approval từ cả 2 teams)
Backward compatibility policy documented
Shared Libraries & Platform Teams
Khi nào tạo Shared Library
Tạo shared library
KHÔNG tạo shared library
3+ teams dùng cùng logic
Chỉ 2 teams, logic đơn giản
Logic stable, ít thay đổi
Logic đang evolve nhanh
Clear ownership và versioning
Không ai muốn maintain
Breaking changes manageable
Tight coupling risk cao
Shared Library Best Practices
DO:
✓ Semantic versioning (major.minor.patch)
✓ Clear CHANGELOG
✓ Published qua NuGet (internal feed)
✓ Backward compatible - deprecate trước khi remove
✓ Có dedicated owner/team
✓ Comprehensive tests và docs
DON'T:
✗ Force mọi team update cùng lúc
✗ Put business logic vào shared library
✗ Shared library phụ thuộc specific infrastructure
✗ "Common" library chứa everything
Platform Team Responsibilities
Responsibility
Deliverable
Consumer Teams Benefit
CI/CD Pipeline
Template pipelines, shared agents
Teams focus vào code, không setup pipeline
Observability
Centralized logging, monitoring stack
Consistent monitoring across services
Service Mesh
Shared infrastructure (Istio, Consul)
Built-in retry, circuit breaker, mTLS
Developer Portal
Self-service tools, documentation
Onboarding nhanh, reduce dependency
Security Scanning
Automated SAST/DAST in pipeline
Security by default
Cross-team Sync Meetings
Meeting Types
Meeting
Frequency
Duration
Attendees
Purpose
Scrum of Scrums
2-3x/week
15 phút
1 rep per team
Sync dependencies, blockers
Tech Lead Sync
Weekly
30 phút
Tech leads
Architecture alignment, shared decisions
Cross-team Retro
Quarterly
60 phút
Team members
Improve collaboration process
Demo Day
Bi-weekly
60 phút
All teams
Share progress, celebrate wins
Scrum of Scrums Format
Mỗi team rep trả lời 3 câu hỏi (2 phút):
1. "Team chúng tôi đã complete gì ảnh hưởng teams khác?"
2. "Team chúng tôi sẽ làm gì cần teams khác?"
3. "Blockers nào cần cross-team help?"
→ Action items assign ngay, follow up trong ngày
→ KHÔNG deep dive - book separate meeting cho complex topics
Escalation Paths
Escalation Framework
Level 0: Direct communication giữa engineers (Slack, PR comments)
→ Timeline: resolve trong 24h
Level 1: Tech Lead to Tech Lead
→ Timeline: resolve trong 48h
→ Khi: L0 không resolve được
Level 2: Engineering Manager to Engineering Manager
→ Timeline: resolve trong 1 week
→ Khi: Resource conflict, priority disagreement
Level 3: VP/Director level
→ Timeline: resolve cùng ngày
→ Khi: Business-critical blocker, cross-org conflict
Escalation Best Practices
Do
Don't
Escalate sớm khi thấy stuck
Đợi deadline mới escalate
Document context trước khi escalate
Escalate bằng vague complaints
Propose solutions
Chỉ throw problem lên trên
CC relevant people
Bypass direct report
Follow up sau khi resolved
Escalate rồi forget
Conway's Law & Organizational Design
"Organizations which design systems are constrained to produce designs which are copies of the communication structures of these organizations." - Melvin Conway
Ví dụ thực tế
Org Structure
System Architecture Result
3 teams: Frontend, Backend, Database
3-tier monolith
Teams theo business domain
Microservices theo domain
Centralized platform team
Shared platform + dependent services
Cross-functional feature teams
End-to-end owned services
Inverse Conway Maneuver
Idea: Thay vì để org dictate architecture, organize teams theo desired architecture.
Muốn microservices? → Tạo teams theo bounded contexts
Muốn platform? → Tạo dedicated platform team
Muốn full-stack? → Tạo cross-functional teams
Team Topologies
4 Team Types (Matthew Skelton & Manuel Pais)
Type
Purpose
Ví dụ
Interaction Mode
Stream-aligned
Deliver business value liên tục
Order team, Payment team
Own end-to-end flow
Platform
Reduce cognitive load cho stream-aligned teams
DevOps platform, Data platform
Self-service
Enabling
Help teams adopt new capabilities
Architecture team, Security guild
Coaching, temporary
Complicated-subsystem
Manage complex domain cần specialist knowledge
ML engine, Payment gateway integration
API/service
Interaction Modes
Mode
Mô tả
Duration
Collaboration
2 teams work closely together
Temporary (weeks-months)
X-as-a-Service
Team cung cấp service, team khác consume
Ongoing
Facilitating
Team giúp team khác learn new skill
Temporary (weeks)
Applying Team Topologies Checklist
Mỗi stream-aligned team có thể ship feature end-to-end
Platform team cung cấp self-service (không phải ticket-based)
Enabling teams có exit strategy (không permanent dependency)
Cognitive load per team manageable (max 2-3 services own)
Team boundaries align với architecture boundaries
Communication overhead minimize qua clear interfaces
Interface Agreements
Inter-team Interface Agreement Template
markdown
## Interface Agreement - [Team A] ↔ [Team B]### Scope
[Mô tả interaction giữa 2 teams]
### API Contract- Contract location: [Git repo link]
- Versioning policy: Semantic versioning
- Breaking change notice: Minimum 2 sprints
### SLA Between Teams
| Metric | Target |
|--------|--------|
| API availability | 99.9% |
| Response time P95 | < 200ms |
| Support response time | < 4 business hours |
| Breaking change notice | 2 sprints (4 weeks) |
### Communication
| Channel | Purpose |
|---------|---------|
| #team-a-team-b-sync | Daily async communication |
| Weekly sync meeting | Wednesday 10am |
| Escalation | [Tech Lead A] ↔ [Tech Lead B] |
### Change Management- Contract changes require PR approval from BOTH teams
- Breaking changes announced trong weekly sync
- Migration support provided by provider team
### Review Schedule- Agreement reviewed quarterly
- Next review: [Date]