

FDD là gì? Giải thích dễ hiểu và so sánh FDD với Scrum trong Agile
Nếu bạn từng làm dự án phần mềm, chắc hẳn đã nghe tới Scrum. Nhưng trong gia đình Agile còn một cách làm ít người nhắc tới hơn mà rất đáng biết: FDD (Feature-Driven Development), tức "phát triển theo tính năng". Bài này giải thích FDD bằng lời thường và so sánh nó với Scrum, để bạn biết khi nào nên chọn cách nào.
Agile là gì, nói nhanh
Agile là tinh thần làm phần mềm theo từng phần nhỏ, giao sớm, giao thường xuyên và sửa dần theo phản hồi, thay vì lên kế hoạch cả năm rồi mới giao một lần. Scrum và FDD đều là những cách cụ thể để làm theo tinh thần đó.
FDD ra đời thế nào
FDD được Jeff De Luca và Peter Coad tạo ra năm 1997, trong một dự án cho một ngân hàng ở Singapore với 50 người làm trong 15 tháng. Sau đó nó tiếp tục được dùng cho một dự án lớn hơn: 250 người trong 18 tháng. Ngay từ đầu, FDD đã được sinh ra cho các dự án lớn, dài hơi và phức tạp.
Tinh thần của FDD: lấy khách hàng làm trung tâm, chia việc thành từng tính năng nhỏ có ích cho người dùng, và giao kết quả thấy được một cách đều đặn.
"Tính năng" trong FDD là gì
Một tính năng trong FDD phải:
- Có ích với khách hàng, chứ không chỉ là việc nội bộ của lập trình viên.
- Ra được sản phẩm cụ thể mà người khác nhìn thấy, dùng thử được.
- Làm xong trong khoảng hai tuần là tối đa. Việc nào lớn hơn thì chia nhỏ ra.
Ví dụ đơn giản: "tính tổng tiền giỏ hàng" là một tính năng, còn "làm hệ thống bán hàng" thì quá lớn, phải chia nhỏ.
5 bước của FDD
- Vẽ bức tranh tổng thể: cả nhóm mô tả hệ thống gồm những phần nào, liên quan với nhau ra sao.
- Lập danh sách tính năng: liệt kê những tính năng có ích cho khách hàng, mỗi cái làm được trong tối đa hai tuần.
- Lên kế hoạch theo tính năng: đánh giá cái nào khó, cái nào làm trước, giao cho ai.
- Thiết kế từng tính năng: người trưởng nhóm lập trình dẫn dắt việc thiết kế, cả nhóm cùng xem lại.
- Làm từng tính năng: viết, kiểm tra, rồi đưa vào sản phẩm chung.
Khoảng 75% công sức của FDD dồn vào hai bước cuối: thiết kế và làm từng tính năng.
Ai làm gì trong FDD
- Trưởng nhóm lập trình (chief programmer): dẫn dắt thiết kế tính năng và quyết định việc nào ưu tiên.
- Người phụ trách từng phần code (class owner): mỗi lập trình viên chịu trách nhiệm một phần cụ thể của hệ thống.
- Nhóm theo tính năng (feature team): gồm nhiều người với vai trò khác nhau, để mỗi tính năng được nhìn từ nhiều góc.
FDD và Scrum khác nhau ở đâu
| FDD | Scrum | |
|---|---|---|
| Trọng tâm | Từng tính năng | Nhịp giao hàng đều đặn |
| Ai đại diện người dùng | Người dùng thật | Product Owner (người quản lý sản phẩm) |
| Nhịp làm việc | Mỗi tính năng khoảng 2 đến 10 ngày | Mỗi vòng (sprint) 2 đến 4 tuần |
| Đơn vị công việc | Tính năng | User story (mô tả nhu cầu của người dùng) |
| Tài liệu | Coi trọng | Ít ưu tiên hơn |
| Họp | Ít họp hơn | Thường họp ngắn hằng ngày |
Nói gọn: Scrum chia thời gian thành các vòng cố định và cả nhóm họp mỗi ngày để giữ nhịp. FDD chia sản phẩm thành các tính năng nhỏ, ít họp hơn, và ghi chép tài liệu kỹ hơn.
Khi nào nên chọn FDD
Theo Planview, FDD giúp giảm nhầm lẫn và làm lại, giúp báo cáo tiến độ cho khách hàng thường xuyên, và giúp mọi cấp trong công ty theo dõi được tiến độ. FDD hợp nhất với:
- Dự án lớn, kéo dài, phức tạp, có nhiều người cùng làm.
- Dự án cần kết quả dễ đoán trước và tài liệu đầy đủ.
Liên hệ với việc "vibe code" bằng AI
Khi nhờ AI viết code, cách nghĩ của FDD rất có ích: đừng giao cho AI cả một hệ thống, hãy giao từng tính năng nhỏ, rõ ràng, có ích. Lập danh sách tính năng trước, làm xong và kiểm tra từng cái, rồi mới sang cái tiếp theo. Bạn sẽ ít phải sửa lại hơn rất nhiều.
Doanh nghiệp muốn giới thiệu sản phẩm AI tới bạn đọc Vibe AI Coder? Xem gói tài trợ


