Template Google Sheets Theo Dõi Dự Án IT Và Phần Mềm 2027: Agile Sprint Board Đơn Giản

Template Google Sheets Theo Dõi Dự Án IT Và Phần Mềm 2027: Agile Sprint Board Đơn Giản
Đội ngũ IT nhỏ thường phải đối mặt với thách thức lớn: cần quản lý dự án theo Agile nhưng chi phí công cụ như Jira, Linear hay Monday.com quá cao. Một team 3-5 người không thể bỏ ra 200-500 USD mỗi tháng chỉ để theo dõi task và bug. Google Sheets là giải pháp thực tế, miễn phí và đủ mạnh cho team IT có quy mô nhỏ.
Bài viết này hướng dẫn xây dựng Agile Sprint Board bằng Google Sheets, bao gồm backlog, sprint planning, task tracking, bug tracker, velocity chart và burndown chart đơn giản - tất cả trong một file, toàn đội có thể truy cập từ bất kỳ đâu.
Phần 1: Thách Thức Của Team IT Nhỏ Không Có Công Cụ Chuyên Dụng
1.1 Chi Phí Công Cụ Quá Cao So Với Quy Mô
Một team IT 5 người dùng Jira Software tốn khoảng $42.5/tháng (Premium), Linear tốn $40/tháng. Đối với startup hay team IT nội bộ của doanh nghiệp SME, đây là khoản chi phí khó biện minh. Trong khi đó Google Sheets:
- Hoàn toàn miễn phí với Google Workspace cá nhân
- Đã có sẵn trong Google Workspace Business mà nhiều công ty đang dùng
- Không cần cài đặt, chạy trên trình duyệt
- Collaboration realtime cho cả team
- API để tích hợp với các hệ thống khác
1.2 Tính Phức Tạp Khi Dùng Nhiều Công Cụ Rời Rạc
Nhiều team IT nhỏ dùng Trello cho task, email cho bug report, Excel cho release tracking và chat app cho communication. Thông tin bị phân mảnh, khó tổng hợp báo cáo, khó theo dõi tiến độ tổng thể. Google Sheets tích hợp tất cả vào một nơi.
1.3 Khó Đào Tạo Thành Viên Mới
Công cụ phức tạp như Jira có learning curve cao. Thành viên mới cần 1-2 tuần để quen. Với Google Sheets, hầu hết mọi người đã biết dùng, có thể bắt đầu ngay trong ngày đầu tiên.
Phần 2: Kiến Trúc Template Agile Sprint Board
2.1 Sheet 1: Product Backlog
Nơi chứa tất cả các tính năng, cải tiến và bug chưa được xử lý:
| Cột | Trường | Mô tả | Ví dụ |
|---|---|---|---|
| A | Story ID | Mã unique tự động | US-2027-001 |
| B | Loại | User Story/Bug/Task/Epic | User Story |
| C | Tiêu đề | Mô tả ngắn gọn | Thêm tính năng export PDF |
| D | Mô tả chi tiết | As a [user], I want [action], so that [benefit] | As a manager, I want to export reports as PDF... |
| E | Acceptance Criteria | Điều kiện hoàn thành | PDF được tạo trong 3 giây... |
| F | Story Points | Ước tính độ phức tạp (Fibonacci: 1,2,3,5,8,13) | 5 |
| G | Priority | Critical/High/Medium/Low | High |
| H | Epic | Nhóm tính năng lớn | Reporting Module |
| I | Trạng thái | Backlog/In Sprint/Done | Backlog |
| J | Sprint | Sprint được assign (nếu có) | Sprint 5 |
| K | Người tạo | Ai thêm vào backlog | Nguyễn Văn A |
| L | Ngày tạo | Ngày tạo item | 2027-02-01 |
Công thức tạo Story ID tự động:
=IF(C2="","",
"US-" & YEAR(L2) & "-" &
TEXT(COUNTIFS($L$2:L2,"<>"&""), "000")
)
Công thức tổng Story Points trong backlog:
=SUMIF(I:I, "Backlog", F:F)
Công thức lọc backlog theo Priority (ARRAYFORMULA):
=ARRAYFORMULA(
IF(G2:G="Critical", 1,
IF(G2:G="High", 2,
IF(G2:G="Medium", 3, 4)))
)
2.2 Sheet 2: Sprint Planning
Quản lý từng sprint: mục tiêu, capacity, các item được chọn:
Thông tin Sprint:
| Trường | Giá trị |
|--------|---------|
| Sprint Name | Sprint 5 |
| Start Date | 2027-03-03 |
| End Date | 2027-03-14 |
| Sprint Goal | Hoàn thiện Reporting Module |
| Team Capacity | 80 story points (4 người x 2 tuần x 10 điểm/người/tuần) |
| Committed Points | =SUMIF(Sprint!B:B, A2, Sprint!F:F) |
| Completed Points | =SUMIFS(Sprint!F:F, Sprint!B:B, A2, Sprint!M:M, "Done") |
| Velocity | =Completed Points / Total Points * 100 |
Tính Capacity theo từng thành viên:
| Thành viên | Số ngày làm việc | Ngày nghỉ | Hours/ngày | Total Hours | Story Points |
|-----------|-----------------|-----------|------------|-------------|-------------|
| Nguyễn A | 10 | 1 | 8 | 72 | 18 SP |
| Trần B | 10 | 0 | 8 | 80 | 20 SP |
Công thức Total Capacity:
=SUMPRODUCT(
(D$2:D$10 - E$2:E$10) * F$2:F$10
) / 4 -- chia 4 vì 4 hours = 1 SP
2.3 Sheet 3: Sprint Task Board (Kanban View)
Hình thức Kanban board trong Google Sheets, cho phép nhìn tổng quan trạng thái task trong sprint hiện tại:
Cấu trúc Task Board cho Sprint hiện tại:
Cột A: Story ID
Cột B: Tiêu đề task
Cột C: Người thực hiện (Assignee)
Cột D: Story Points
Cột E: Status (To Do / In Progress / In Review / Done)
Cột F: Ngày bắt đầu thực tế
Cột G: Ngày hoàn thành thực tế
Cột H: Blocked? (Yes/No)
Cột I: Lý do bị block (nếu có)
Cột J: Link code/PR
Conditional Formatting theo trạng thái:
To Do: Màu xám nhạt
In Progress: Màu xanh dương nhạt
In Review: Màu vàng nhạt
Done: Màu xanh lá nhạt
Blocked: Màu đỏ đậm - ưu tiên xử lý
Công thức tính % hoàn thành sprint:
=COUNTIF(E:E, "Done") / COUNTA(E2:E) * 100
Công thức tính Story Points đã hoàn thành:
=SUMIF(E:E, "Done", D:D)
Đếm task bị block:
=COUNTIF(H:H, "Yes")
2.4 Sheet 4: Bug Tracker
Theo dõi tất cả bug từ khi phát hiện đến khi fix xong:
| Cột | Trường | Mô tả |
|---|---|---|
| A | Bug ID | BUG-2027-001 |
| B | Tiêu đề | Mô tả ngắn gọn lỗi |
| C | Mô tả chi tiết | Steps to reproduce, expected vs actual |
| D | Severity | Critical/Major/Minor/Trivial |
| E | Priority | P1/P2/P3/P4 |
| F | Môi trường | Production/Staging/Dev |
| G | Version | Version bị ảnh hưởng |
| H | Người báo cáo | Ai phát hiện ra bug |
| I | Ngày báo cáo | Ngày phát hiện |
| J | Assignee | Dev được phân công fix |
| K | Trạng thái | New/In Progress/Fixed/Verified/Closed |
| L | Ngày fix | Ngày hoàn thành fix |
| M | Root Cause | Nguyên nhân gốc rễ của bug |
| N | Link commit | Link tới commit fix bug |
Công thức phân tích bug theo severity:
Điểm ưu tiên xử lý bug (Bug Severity Matrix):
=IFS(
AND(D2="Critical", F2="Production"), 1,
AND(D2="Major", F2="Production"), 2,
AND(D2="Critical", F2="Staging"), 3,
AND(D2="Major", F2="Staging"), 4,
TRUE, 5
)
Thời gian xử lý bug trung bình theo severity:
=AVERAGEIF($D$2:$D$100, "Critical",
$L$2:$L$100 - $I$2:$I$100
)
Bug count theo tháng (để phát hiện xu hướng):
=COUNTIFS(
$I:$I, ">="&DATE(YEAR(NOW()),MONTH(NOW()),1),
$I:$I, "<"&DATE(YEAR(NOW()),MONTH(NOW())+1,1)
)
Tỷ lệ bug được đóng trong SLA (Crit: 24h, Major: 72h):
=COUNTIFS(
D:D, "Critical",
L:L-I:I, "<=1"
) / COUNTIF(D:D, "Critical") * 100
2.5 Sheet 5: Velocity Tracking
Theo dõi velocity qua các sprint để dự báo khả năng delivering:
Cấu trúc Velocity Tracker:
| Sprint | Start | End | Committed SP | Completed SP | Velocity | Ghi chú |
|--------|-------|-----|-------------|-------------|---------|---------|
| Sprint 1 | 2027-01-06 | 2027-01-17 | 40 | 35 | 87.5% | |
| Sprint 2 | 2027-01-20 | 2027-01-31 | 45 | 42 | 93.3% | |
| Sprint 3 | 2027-02-03 | 2027-02-14 | 45 | 45 | 100% | |
| Sprint 4 | 2027-02-17 | 2027-02-28 | 50 | 38 | 76% | Tết nghỉ nhiều |
| Sprint 5 | 2027-03-03 | 2027-03-14 | 45 | ? | ? | Đang chạy |
Average Velocity (3 sprint gần nhất):
=AVERAGE(OFFSET(E2, COUNTA(E:E)-4, 0, 3, 1))
Dự báo số sprint cần để hoàn thành backlog:
=CEILING(
SUMIF('Product Backlog'!I:I, "Backlog", 'Product Backlog'!F:F)
/ F_Average_Velocity,
1
)
Velocity trend (tăng hay giảm):
=IF(E_Latest > E_Previous, "Tăng", IF(E_Latest < E_Previous, "Giảm", "Ổn Định"))
2.6 Sheet 6: Burndown Chart Data
Dữ liệu cho biểu đồ burndown đơn giản:
Burndown Chart Data - Sprint 5:
| Ngày | Dự kiến còn lại (Ideal) | Thực tế còn lại (Actual) |
|------|------------------------|------------------------|
| 03/03 | 45 | 45 |
| 04/03 | 40.9 | 43 |
| 05/03 | 36.8 | 38 |
| 06/03 | 32.7 | 36 |
| 07/03 | 28.6 | 30 |
| 10/03 | 24.5 | 28 |
| 11/03 | 20.5 | 22 |
| 12/03 | 16.4 | 18 |
| 13/03 | 12.3 | ? |
| 14/03 | 0 | ? |
Công thức Ideal Burndown (giảm tuyến tính theo ngày làm việc):
=C$2 - (C$2 / NETWORKDAYS(B$2, B$12)) * (NETWORKDAYS(B$2, A3))
Công thức Actual Remaining (tính từ Sprint Board):
=C$2 - SUMPRODUCT(
('Sprint Board'!E$2:E$100="Done")*
('Sprint Board'!G$2:G$100<=A3)*
'Sprint Board'!D$2:D$100
)
Tạo Sparkline Burndown đơn giản:
=SPARKLINE(
B3:C12,
{"charttype","line";
"linewidth",2;
"color1","#4CAF50";
"color2","#f44336"}
)
Phần 3: Hướng Dẫn Sử Dụng Agile Với Google Sheets
3.1 Sprint Planning Meeting (2 tuần/1 lần)
Quy trình Sprint Planning:
BƯỚC 1: Review Product Backlog (15 phút)
- Product Owner trình bày top backlog items
- Team hỏi về Acceptance Criteria
- Đảm bảo mọi người hiểu rõ yêu cầu
BƯỚC 2: Tính Sprint Capacity (5 phút)
- Mỗi thành viên báo ngày nghỉ/off trong sprint
- Tính tổng capacity theo công thức trong sheet
BƯỚC 3: Chọn Items Cho Sprint (30-45 phút)
- Bắt đầu từ items Priority cao nhất
- Vote Story Points theo Fibonacci (dùng Google Forms để vote kín)
- Nếu chênh lệch >2 mức: thảo luận và vote lại
- Dừng khi Committed SP = 90% Capacity
BƯỚC 4: Xác Định Sprint Goal (10 phút)
- Một câu mô tả kết quả chính của sprint
- Nên có thể đo lường được
- Liên quan đến giá trị business
GOOGLE FORMS STORY POINT VOTING:
Tạo form với các câu hỏi:
- Story nào đang vote?
- Story Points của bạn: 1/2/3/5/8/13/21
- Chia sẻ: Responses -> Sheet (Sheet Backlog)
3.2 Daily Standup (15 phút mỗi sáng)
Mỗi thành viên trả lời 3 câu hỏi (update trực tiếp vào Sprint Board):
1. Hôm qua làm gì? (update Status sang Done nếu xong)
2. Hôm nay làm gì? (update assignee/status các task mới)
3. Có gì cần hỗ trợ không? (đánh dấu Blocked nếu có)
Sprint Board Google Sheets - UPDATE HÀNG NGÀY:
- Kéo task từ "To Do" sang "In Progress" khi bắt đầu
- Kéo sang "In Review" khi gửi PR
- Kéo sang "Done" khi merge và deploy
- Đánh dấu "Blocked: Yes" + lý do khi bị chặn
Tạo Slack notification khi có thay đổi (Apps Script):
function onEdit(e) {
const range = e.range;
const sheet = range.getSheet();
if (sheet.getName() === 'Sprint Board' && range.getColumn() === 5) {
const taskName = sheet.getRange(range.getRow(), 2).getValue();
const newStatus = range.getValue();
const assignee = sheet.getRange(range.getRow(), 3).getValue();
// Gửi webhook tới Slack
const webhookUrl = 'YOUR_SLACK_WEBHOOK_URL';
const payload = {
text: assignee + ' đã chuyển task "' + taskName + '" sang ' + newStatus
};
UrlFetchApp.fetch(webhookUrl, {
method: 'post',
payload: JSON.stringify(payload)
});
}
}
3.3 Sprint Review Và Retrospective (cuối sprint)
Sprint Review Checklist:
[ ] Update Velocity Tracker với kết quả sprint
[ ] Review Burndown chart - sprint có smooth không?
[ ] Demo các tính năng hoàn thành cho stakeholder
[ ] Cập nhật trạng thái backlog items: Backlog -> Done
[ ] Review Bug Tracker: bug mới phát sinh trong sprint
Retrospective - 3 cột Google Sheets:
| Làm Tốt (Keep) | Cần Cải Thiện (Improve) | Thử Nghiệm (Try) |
|----------------|------------------------|-----------------|
| Code review nhanh | Mô tả task chưa rõ ràng | Pair programming |
| Daily standup đúng giờ | Bug report thiếu info | Mob testing |
Metrics Retrospective tự động:
- Velocity: Sprint này so với trung bình 3 sprint trước?
- Bug rate: Số bug phát sinh trong sprint / Story Points
- Cycle time: Thời gian trung bình từ "In Progress" đến "Done"
- Blocked rate: Số task bị block / Tổng task
Công thức Cycle Time trung bình:
=AVERAGEIFS(
G2:G100 - F2:F100,
E2:E100, "Done",
F2:F100, "<>"&""
)
Phần 4: Release Tracker Và Version Management
Sheet "Release Tracker":
| Version | Release Date | Status | Stories Included | Bug Fixes | Release Notes Link |
|---------|-------------|--------|-----------------|-----------|-------------------|
| v2.5.0 | 2027-03-14 | Planned | US-001, US-002 | BUG-011 | [Link] |
| v2.4.1 | 2027-02-28 | Released | - | BUG-008, BUG-009 | [Link] |
| v2.4.0 | 2027-02-14 | Released | US-011-US-015 | BUG-005 | [Link] |
Go-Live Checklist tự động (Conditional Formatting):
[ ] Unit tests passed
[ ] Integration tests passed
[ ] Staging deployment successful
[ ] Performance test: response time < 500ms
[ ] Security scan: 0 critical issues
[ ] Rollback plan ready
[ ] Monitoring alerts configured
Tổng số bug theo phiên bản (lịch sử chất lượng):
=COUNTIF('Bug Tracker'!G:G, A2)
Bug fix rate trong version:
=COUNTIFS(
'Bug Tracker'!G:G, A2,
'Bug Tracker'!K:K, "Closed"
) / COUNTIF('Bug Tracker'!G:G, A2)
Phần 5: Khi Nào Nên Upgrade Lên Jira
| Dấu hiệu | Google Sheets còn đáp ứng? | Giải pháp |
|---|---|---|
| Team <10 người | Hoàn toàn đủ | Dùng GS miễn phí |
| Team 10-20 người | Cần optimization | GS + Apps Script automation |
| Team >20 người | Bắt đầu khó khăn | Cân nhắc Jira/Linear |
| >200 task/sprint | GS chậm lại | Cần công cụ chuyên dụng |
| Cần workflow tự động phức tạp | Giới hạn | Jira Automation rules |
| Tích hợp CI/CD | Phải code nhiều | Jira + GitHub Actions |
| Audit trail pháp lý | Không đủ | Jira với audit logs |
| Multi-project portfolio | Khó quản lý | Jira Programs/Plans |
5.1 Chi Phí So Sánh: Google Sheets vs Công Cụ Chuyên Dụng
Team 5 người, 2 năm sử dụng:
- Google Sheets (đã có GWS): 0 đồng
- Jira Software (Standard): 3.79 USD x 5 x 24 = 454.8 USD
- Linear: 8 USD x 5 x 24 = 960 USD
- Monday.com (Basic): 9 USD x 5 x 24 = 1,080 USD
Tiết kiệm khi dùng Google Sheets: 454-1080 USD trong 2 năm
(Tương đương 11-27 triệu VND)
Phần 6: Mẹo Nâng Cao Hiệu Quả Sử Dụng
6.1 Dùng Data Validation Cho Trường Trạng Thái
Cài đặt dropdown cho Status trong Sprint Board:
Data > Data Validation > Dropdown from list:
To Do, In Progress, In Review, Done, Blocked
Cài đặt dropdown cho Priority:
Critical, High, Medium, Low
Cài đặt dropdown cho Story Points (Fibonacci):
1, 2, 3, 5, 8, 13, 21
Cài đặt dropdown cho Severity (Bug Tracker):
Critical, Major, Minor, Trivial
6.2 Sử Dụng Named Ranges
Định nghĩa Named Ranges để công thức dễ đọc hơn:
- "CurrentSprint": 'Sprint Planning'!A1 (tên sprint hiện tại)
- "BacklogItems": 'Product Backlog'!A2:L500
- "SprintItems": 'Sprint Board'!A2:J200
- "BugList": 'Bug Tracker'!A2:N500
Cách dùng:
=COUNTIFS(
INDEX(BacklogItems,0,9), "In Sprint",
INDEX(BacklogItems,0,7), "High"
)
6.3 Dashboard Tổng Hợp Trên Sheet "Overview"
Dashboard nhìn một nhìn biết mọi thứ:
Sprint hiện tại:
- Tên sprint: =INDIRECT("'Sprint Planning'!A2")
- Số ngày còn lại: =NETWORKDAYS(TODAY(), 'Sprint Planning'!C2)
- % hoàn thành: =COUNTIF('Sprint Board'!E:E,"Done")/COUNTA('Sprint Board'!E2:E)*100
- Story Points còn lại: =SUMIF('Sprint Board'!E:E,"<>Done",'Sprint Board'!D:D)
Bug metrics:
- Open bugs: =COUNTIF('Bug Tracker'!K:K,"New")+COUNTIF('Bug Tracker'!K:K,"In Progress")
- Critical bugs: =COUNTIFS('Bug Tracker'!D:D,"Critical",'Bug Tracker'!K:K,"<>Closed")
- Bug fix rate tháng này: =COUNTIFS(
'Bug Tracker'!L:L, ">="&DATE(YEAR(NOW()),MONTH(NOW()),1),
'Bug Tracker'!K:K, "Closed"
) / COUNTIF('Bug Tracker'!L:L, ">="&DATE(YEAR(NOW()),MONTH(NOW()),1))
Team workload:
- Task per person: =COUNTIF('Sprint Board'!C:C, B2)
- SP per person: =SUMIF('Sprint Board'!C:C, B2, 'Sprint Board'!D:D)
Phần 7: FAQ - Câu Hỏi Thường Gặp
Q: Template có hỗ trợ Scrum và Kanban không?
Template chính được thiết kế cho Scrum (sprint-based). Để dùng Kanban, bạn có thể bỏ các sheet Sprint Planning và Velocity, chỉ giữ Backlog và Sprint Board (đổi tên thành "Kanban Board"). Thay vì sprint, task chạy từ Backlog -> To Do -> In Progress -> Review -> Done theo flow liên tục.
Q: Làm sao để nhiều project dùng chung một file không bị lộn?
Có hai cách: (1) Thêm cột "Project" vào mỗi sheet và lọc bằng FILTER/QUERY. (2) Tạo file riêng cho mỗi project nhưng dùng IMPORTRANGE để tổng hợp dashboard trên file master. Cách 2 được khuyến nghị hơn cho trên 3 projects.
Q: Làm sao tracking bug từ khách hàng báo cáo (customer bug)?
Tạo Google Form "Báo Cáo Lỗi" cho khách hàng hoặc internal team. Responses tự động vào Bug Tracker. Thêm trường "Nguồn" (Customer/QA/Dev/Monitor) để phân loại nguồn gốc bug. Tích hợp Zapier hoặc Apps Script để tự động cập nhật trạng thái bug vào email cho người báo cáo.
Q: Template có theo dõi technical debt không?
Thêm loại "Tech Debt" vào Product Backlog (bên cạnh User Story, Bug, Task). Thêm tag "Tech Debt" và theo dõi tỷ lệ SP cho tech debt / tổng SP mỗi sprint. Best practice: dành 20% sprint capacity cho tech debt để tiến xử lý dần.
Kết Luận
Google Sheets là công cụ Agile project management miễn phí nhưng đầy đủ sức mạnh cho team IT nhỏ. Với template này, bạn có thể:
- Quản lý Product Backlog rõ ràng, có priority
- Chạy Agile Sprint từ planning đến retrospective
- Theo dõi bug từ phát hiện đến đóng với severity matrix
- Nhìn burndown chart và velocity để dự báo chính xác
- Tiết kiệm tối thiểu 454 USD mỗi 2 năm so với Jira
Tải template miễn phí tại SheetStore và bắt đầu sprint đầu tiên ngay hôm nay!
📚 Bài Viết Liên Quan
- tổng hợp 15 template Google Sheets miễn phí 2026
- Template Google Sheets Ngân Sách Marketing 2027: Lập Kế Hoạch và Theo Dõi ROI
- AI và Google Sheets 2027: Kết Hợp ChatGPT, Gemini Để Tự Động Hóa Công Việc
- Google Sheets Nâng Cao Bài 6: ARRAYFORMULA - Tự Động Hóa Công Thức Hàng Loạt
- Template Google Sheets Quản Lý Thu Chi Hội Nhóm và CLB 2027: Minh Bạch Tài Chính Cộng Đồng
Chia sẻ bài viết:
Tuân Hoang
Đội ngũ SheetStore
Google Workspace Certified, 5+ years experience
Bạn thấy bài viết hữu ích?
Đăng ký nhận thông báo khi có bài viết mới.


