EngineeringSolution ArchitectData and Decisions

Session 04 - Technology Radar

ThoughtWorks Technology Radar Concept

Technology Radar là framework do ThoughtWorks phát triển, giúp teams đánh giá và quản lý technology landscape một cách có hệ thống. Thay vì mỗi developer tự chọn stack theo sở thích, Technology Radar tạo ra shared vocabulary và governance nhẹ cho việc adopt technology.

Bốn Rings

RingÝ nghĩaAction
AdoptProven, team nên dùng cho projects mớiDefault choice, không cần approval
TrialĐáng thử trong project có risk thấpCần Tech Lead approval, giới hạn 1-2 projects
AssessĐáng tìm hiểu, chưa nên dùng productionResearch, POC, hackathon - không dùng production
HoldDừng adopt, chỉ maintain existingKhông dùng cho project mới, plan migration nếu cần

Bốn Quadrants

  • Languages & Frameworks - .NET, C#, Blazor, React...
  • Tools - IDE, CI/CD, monitoring, testing tools...
  • Platforms - Cloud services, databases, infrastructure...
  • Techniques - Patterns, practices, methodologies...

Xây Dựng Tech Radar Cho Team

Bước 1: Thu thập input

Gửi survey cho toàn team (2 tuần trước workshop):

1. Technology nào bạn đang dùng và recommend cho team?
   - Tên technology
   - Quadrant (Language/Tool/Platform/Technique)
   - Ring đề xuất (Adopt/Trial/Assess/Hold)
   - Lý do ngắn gọn (1-2 câu)

2. Technology nào bạn thấy team nên DỪNG sử dụng?
   - Tên technology
   - Lý do (pain points cụ thể)
   - Đề xuất thay thế

3. Technology mới nào bạn muốn team khám phá?
   - Tên technology
   - Problem nó giải quyết
   - Link tài liệu/article

Bước 2: Consolidate và categorize

Nhóm các technology theo quadrant, loại bỏ duplicates, chuẩn bị cho workshop.

Bước 3: Workshop (xem section bên dưới)

Bước 4: Publish và maintain

  • Publish trên team wiki/confluence
  • Review lại mỗi quarter
  • Mỗi thay đổi ring cần justification document

Evaluation Criteria Cho Technology Mới

Scoring Card

Đánh giá technology trên 8 criteria (thang 1-5):

markdown
## Technology Evaluation: [Technology Name]

| # | Criteria | Score (1-5) | Notes |
|---|----------|-------------|-------|
| 1 | **Problem-Solution Fit** | | Giải quyết real problem của team? |
| 2 | **Community & Ecosystem** | | GitHub stars, NuGet downloads, Stack Overflow activity |
| 3 | **Documentation Quality** | | Official docs, tutorials, examples |
| 4 | **Maturity & Stability** | | Version history, breaking changes frequency |
| 5 | **Team Learnability** | | Learning curve, similarity với stack hiện tại |
| 6 | **Performance** | | Benchmarks relevant cho use case |
| 7 | **Maintenance & Support** | | Active development, commercial support option |
| 8 | **Integration** | | Tương thích với existing stack |
| | **Average Score** | | ≥ 4: Adopt candidate, 3-4: Trial, 2-3: Assess, < 2: Hold |

Red Flags (tự động Hold)

  • Maintainer duy nhất là 1 người (bus factor = 1)
  • Không có release trong 12 tháng trở lên
  • Breaking changes mỗi minor version
  • License không compatible với project (GPL trong commercial software)
  • Không có test suite trong source code

Tech Radar Workshop

Chuẩn bị

  • Thời lượng: 2-3 giờ
  • Participants: Tất cả developers + DevOps + Tech Lead
  • Facilitator: Tech Lead hoặc senior dev khách quan
  • Materials: Survey results đã consolidate, projector/screen share

Agenda mẫu

00:00 - 00:10  Opening: giải thích rules và format
00:10 - 00:40  Quadrant 1: Languages & Frameworks
                - Present mỗi item 2 phút
                - Vote ring placement (Adopt/Trial/Assess/Hold)
                - Discuss nếu có disagreement (max 5 phút/item)
00:40 - 01:10  Quadrant 2: Tools
01:10 - 01:20  Break
01:20 - 01:50  Quadrant 3: Platforms
01:50 - 02:20  Quadrant 4: Techniques
02:20 - 02:40  Review và finalize toàn bộ radar
02:40 - 03:00  Action items: ai research gì, trial gì trong quarter tới

Quy tắc workshop

  1. Mỗi item tối đa 7 phút - nếu không consensus, facilitator quyết định hoặc defer sang offline
  2. Vote bằng fist-of-five - 1 (strong disagree) đến 5 (strong agree), < 3 average = discuss thêm
  3. Data over opinions - "Tôi đã dùng X trong project Y, kết quả Z" > "Tôi nghĩ X tốt"
  4. No HiPPO (Highest Paid Person's Opinion) - Tech Lead vote cuối cùng để không bias team

Example: .NET Ecosystem Radar

Adopt (dùng thoải mái)

TechnologyQuadrantLý do
.NET 8 LTSLanguageLTS, performance improvements, team đã migrate
EF Core 8FrameworkMature ORM, good enough cho 90% use cases
xUnit + FluentAssertionsToolTeam standard, rich assertion library
Serilog + SeqToolStructured logging standard, proven in production
MediatRFrameworkCQRS/Mediator pattern, giảm controller coupling
Docker + K8sPlatformProduction proven, team experienced
PostgreSQLPlatformCost effective, rich features, team expertise
GitHub ActionsToolCI/CD standard, good integration
Vertical Slice ArchitectureTechniqueTeam adopted, productivity tăng

Trial (thử trong 1-2 projects)

TechnologyQuadrantLý do
.NET AspireFrameworkPromising cho cloud-native dev experience, cần thêm production data
YARPFrameworkReverse proxy, đang evaluate thay Ocelot
Marten (Event Sourcing)FrameworkPostgreSQL-based event store, fit cho order domain
TestcontainersToolIntegration test với real database, promising
OpenTelemetry (.NET)ToolVendor-neutral observability, dần thay Serilog metrics

Assess (research, chưa production)

TechnologyQuadrantLý do
.NET 9 (non-LTS)LanguageMới release, chờ stabilize, evaluate features mới
Blazor UnitedFrameworkServer + WASM hybrid, interesting nhưng team chưa có SPA experience
WolverineFrameworkMediatR alternative + messaging, community nhỏ
DaprPlatformMicroservices building blocks, complex setup
AI/ML .NET (Semantic Kernel)FrameworkAI integration, cần evaluate use cases cụ thể

Hold (không dùng cho project mới)

TechnologyQuadrantLý doAlternative
.NET Framework 4.xLanguageEnd of innovation, chỉ security fixes.NET 8
WCFFrameworkLegacy, không cross-platformgRPC
OcelotFrameworkMaintenance chậm, thiếu featuresYARP
Swagger UI (Swashbuckle)ToolUnmaintained, .NET 9 đã remove defaultScalar, NSwag
N-Layer ArchitectureTechniqueOver-engineering cho hầu hết projectsVertical Slice
Repository Pattern (over EF Core)TechniqueUnnecessary abstraction, EF Core đã là Unit of WorkDirect DbContext

Quản Lý Technology Lifecycle

Quarterly Review Process

Q1: Full radar workshop (review toàn bộ)
Q2: Lightweight review (chỉ items thay đổi)
Q3: Full radar workshop
Q4: Lightweight review + annual retrospective

Technology Migration Playbook

Khi chuyển technology từ Adopt → Hold:

markdown
## Migration Plan: [Old Tech] → [New Tech]

### Timeline
- Announcement: [date] - team biết và chuẩn bị
- New projects: [date] - tất cả project mới dùng [New Tech]
- Migration start: [date] - bắt đầu migrate existing projects
- End of support: [date] - không support [Old Tech] nữa

### Migration Steps
1. Document migration guide với step-by-step instructions
2. Pilot migration trên 1 non-critical service
3. Tạo migration tickets cho remaining services (prioritize by risk)
4. Pair programming sessions cho team members chưa quen [New Tech]
5. Decommission [Old Tech] infrastructure sau khi migrate xong

### Success Criteria
- 100% new projects dùng [New Tech]
- ≥ 80% existing projects migrated trong 2 quarters
- Zero production incidents caused by migration

Cân Bằng Innovation vs Stability

Innovation Budget Rule

Phân bổ capacity cho innovation:

  • 70% Adopt - technology đã proven, deliver value ngay
  • 20% Trial - technology promising, giảm risk bằng giới hạn scope
  • 10% Assess - research, POC, hackathon

Decision Tree

Có real business problem cần giải quyết?
├── Không → Không adopt (technology vì technology ≠ giá trị)
└── Có → Technology hiện tại giải quyết được không?
    ├── Có → Dùng technology hiện tại (Adopt ring)
    └── Không → Technology mới mature đủ chưa?
        ├── Có (v1.0+, active community) → Trial
        └── Không → Assess (research, theo dõi tiếp)

Anti-patterns cần tránh

Anti-patternHậu quảGiải pháp
Resume-Driven DevelopmentTech stack phức tạp không cần thiếtYêu cầu justification cho mỗi technology mới
Shiny Object SyndromeChuyển stack liên tục, không project nào stableEnforce minimum 6 tháng trước khi evaluate lại
Cargo CultingCopy stack của Netflix/Google không phù hợp scaleEvaluate dựa trên team size và actual requirements
Technology MonocultureDùng 1 tool cho mọi thứ dù không fitDiverse radar, đúng tool cho đúng job
Paralysis by AnalysisEvaluate mãi không chọn đượcTimebox evaluation (max 2 tuần), default to Adopt ring