Anh em lập trình viên, Product Owner, BA, QC nếu đã tham gia một số dự án apply mô hình phát triển phần mềm Agile chắc không còn lạ gì về khái niệm Agile cũng như những thuật ngữ liên quan tới nó.
Bài viết này ngoài việc giải thích lại về Agile, còn cung cấp cái nhìn thực tế trong quá trình làm việc với mô hình này.
Mong sẽ giúp đỡ được nhiều hơn các anh em mới bắt đầu hoặc đang tìm hiểu mô hình Agile.
Thôi thì biết hay chưa biết ta đều nhắc lại cái định nghĩa cho nó máu. Làm nhiều chứ đôi khi hỏi định nghĩa lại nói không ra. Coi lại cho chắc.
1. Agile là gì?
Theo như định nghĩa tới từ ông Atlassian thì Agile được nghĩa như sau:
“Agile is an iterative approach to project management and software development that helps teams deliver value to their customers faster and with fewer headaches. Instead of betting everything on a “big bang” launch, an agile team delivers work in small, but consumable, increments. Requirements, plans, and results are evaluated continuously so teams have a natural mechanism for responding to change quickly.”
Agile là cách tiếp cận lặp đi lặp lại để quản lý dự án và phát triển phần mềm giúp các teams (teams này là team bao gồm đầy đủ thành phần nha) đem tới cho khách hàng giá trị nhanh hơn, ít bị đau đầu hơn. Thay vì đặt được vào “big bang” kiểu như demo fail, thì agile giúp cho các nhóm thực hiện các công việc nhỏ, có thể xử lý được. Các yêu cầu, kế hoạch và kết quả được đánh giá một cách liên tục giúp các nhóm thích ứng nhanh hơn với các yêu cầu thay đổi liên tục
Tạm cho cái định nghĩa từ ông Atlassian (công ty sản xuất phần mềm ở Úc, chuyên cung cấp phần mềm cho phát triển phần mềm, quản lý dự án,… Cũng coi như là một bên uy tín khi nói về Agile.
1.1 Túm gọn ý chính
Túm cái váy lại, có mấy ý chính anh em cần chú ý về Agile:
- Agile là các tiếp cận và lặp đi lặp lại (cứ hết 2 tuần, 1 tuần tuỳ theo quy định lại cứ quay lại từ đầu). Từ đầu là từ đầu cách thức làm việc, chứ không phải từ đầu của kết quả, xoá code đi viết lại thì toang.
- Agile giúp cả team và khách hàng (customer) bớt đau đầu. Ok, thay vì làm 3 tháng rồi demo cái bùm fail, không đúng ý khách hàng. Sai requirement.
- Agile chia nhỏ khối lượng công việc giúp phù hợp với team, giúp team có thể hoàn thành trong thời gian ngắn
Cái nữa do khối lượng công việc nhỏ và nghiệm thu đánh giá trong từng giai đoạn ngắn, nên có gì thay đổi cái là anh em quay xe ngay. Xe nhỏ dễ quay đầu hay bẻ lái
2. Thuật ngữ Agile
Sau khi đã hiểu rõ agile là gì, kế tiếp là các thuật ngữ liên quan tới Agile. Thuật ngữ Agile ở đây được hiểu là các từ khoá thường được sử dụng trong mô hình này.
Không phải chém gió nhưng theo số liệu thống kê thì hiện nay có tới 86% lập trình viên làm việc với mô hình Agile. Mô hình này có nhiều điểm ưu việt, apply từ công ty á tới âu. Trong nhiều loại hình dự án.
Tuy nhiên, nếu mới bắt đầu, anh em đôi khi còn lạ lẫm với một vài thuật ngữ. Thôi thì ta đi từ từ từng bước, từng bước.
Xem thêm việc làm Agile lương cao trên TopDev
3. Thuật ngữ Agile thường dùng
3.1 A-E: Acceptance Criteria to Epic
Định nghĩa về AC, AC ở đây dịch là tiêu chí chấp nhận nha anh em.
“Acceptance criteria are a set of conditions that software must meet in order to be accepted by a customer or stakeholder.” Tiêu chí chấp nhận (AC) là tập các điều kiện mà phần mềm phải đáp ứng để được khách hàng hoặc các bên liên quan chấp nhận.
Rồi, anh em được đưa cho cái task A, ấn vào nút B sẽ đi tới vào màn hình C. Vậy AC sẽ là
- “ấn vào B sẽ đi được tới C”
- “nút B xuất hiện ở màn hình A”
- “nút A ấn được”
Nếu có logic gì thêm anh em có thể viết vào, tuy nhiên lưu ý rằng “accepted by a customer or stakeholder). Viết cho ông nào có quyền chấp nhận thì chú ý viết cho các ông đó hiểu nha. Cái AC viết ra cho ai thì phải xem người đó sẽ hiểu ở mức độ nào. Đừng đem logic code hay thứ gì đó quá sâu về kĩ thuật vào trong AC.
AC gần như là bắt buộc phải có, để cả PO, cả BA cà QC và Dev đều biết cái đó như thế nào sẽ gọi là xong.
3.2 Backlog Refinement
Okie cứ định nghĩa trước mà quất nha. Backlog Refinement là thuật ngữ Agile khá quan trọng.
“It’s a Scrum meeting where the Scrum team organizes the backlog to make sure it’s ready for the next sprint or iteration. In other words, it’s like spring cleaning… but for Scrum teams!”
Đầu tiên thì nó là một buổi meeting. Thành phần tham dự bao gồm cả Scrum team. Ở buổi meeting đó cả nhóm sắp xếp lại công việc tồn đọng. Hiểu và chuẩn bị để đảm bảo rằng nó hoạt động cho lần chạy tiếp theo (Sprint tiếp theo). Nói cách khác nó giống như dọn Sprint nhưng cho Scrum teams.
Anh em chú ý một khúc quan trọng ‘make sure it’s ready for the next sprint or iteration’. Đảm bảo sẵn sàng cho Sprint tiếp theo. Các yếu tố cần cân nhắc bao gồm:
- Team development đã hiểu đúng requirement và cần làm gì chưa?
- Team BA, PO đã hiểu đúng những gì khách hàng expect trong Sprint này?
- Effort của team, velocity của team có đủ hay chưa?
- Có ai nghỉ không?. Nếu thiếu effort thì cần bao nhiêu là đủ?
Thường những meeting như Backlog Refinement rất dài. Dài nhưng mà bổ ích, thà là hiểu với nhau tất cả để bắt đầu còn hơn tới cuối cùng miss understand.
3.3 Daily Scrum
Daily Scrum là thuật ngữ Agile phổ biến nhất. Theo như định nghĩa:
“It’s a daily meeting usually hosted by the Scrum master. Every morning, the Scrum team gets together for 15 minutes to discuss their day ahead.”
Daily Scrum là buổi gặp mặt hằng ngày, trưởng tổ chức là ông Scrum master. Vào mỗi buổi sáng, scrum teams gặp mắt trong 15 phút, xem nay sẽ làm gì, qua đã làm được gì.
Chính vì Agile chia nhỏ công việc nên việc thực hiện meeting hàng ngày là yếu tố cần thiết. Để nắm được xem có gì khó khăn, đã làm gì. Anh em mới bắt đầu với Agile không nên quá stress vì tinh thần của Agile không quá stress. Vì tinh thần Agile sẽ nói tiếp ở mục sau.
- What they plan to do today (hôm nay anh em dự định sẽ làm gì)
- What they did yesterday (hôm qua anh em đã làm gì)
- Issues they have encountered (những vấn đề nào anh em đang gặp phải)
Về cơ bản daily mọi người chỉ chia sẻ với nhau từng đó. Nếu có khó khăn gì thì raise lên để biết. Anh em cứ mạnh dạn nói vì Sprint rất ngắn. Nếu có khó khăn hoặc bất cứ vấn đề gì trong quá trình làm thì phải raise lên.
3.4 Epics
Epics là thuật ngữ Agile thường biết tới nhiều hơn ở vị trí BA và PO. Nhưng anh em lập trình viên, QA, QC nếu muốn biết bức tranh lớn. Tức là nhóm chức năng lớn cũng có thể tìm hiểu về Epics.
“An epic is a big idea or feature that can be broken down into smaller user stories. Much like how large ‘epics’ like Lord of the Rings are split into 3 books.
Epic là ý tưởng lớn hoặc tính năng lớn có thể bẻ nhỏ ra thành các user stories. Giống như chúa tể những chiếc nhẫn chia thành 3 phần.”
Ví dụ rõ hơn: Nếu Epics là improve UI (cải thiện UI) thì nó là nhóm tính năng lớn, nhiều việc cần làm. Chia nhỏ thành 3 users stories là “Thêm giỏ hàng”, “Cải thiện tốc độ load”, “Thay font chữ”, …
Thông thường nhìn vào Epics, hoặc danh sách các Epics sẽ biết định hướng tương lai của phần mềm. Đôi khi làm Agile Sprint quá ngắn, cái nhìn xa trông rộng để liệu cơm gắp mắm nó mất đi. Lúc đó ta có Epics.
3.5 Scrum of Scrums
Scrum of scrums là thuật ngữ Agile sử dụng khi có nhiều scrum team hoạt động. Nhiều team nhưng chung product. Về khái niệm thì cũng đơn giản thôi.
It’s a special Scrum meeting for large Scrum teams.
Là scrum meeting đặc biệt cho team scrum lớn.
Thông thường khi team scrum đã lớn hơn 12 người, thường được chia nhỏ thành các scrum team nhỏ hơn (từ 5 tới 10 người). Mỗi nhóm sẽ bốc một ông ra làm đại sứ, họp hành với các scrum team khác.
Cũng có daily nhưng không phải trong team. Các ông đại sứ gặp nhau để report tiến độ, nêu ra các vấn đề. Việc họp này đảm bảo product lớn chạy êm, chạy xuôi.
4. Tổng kết
Bài viết này mình đã nêu ra 5 thuật ngữ Agile phổ biến. Tuy nhiên còn nhiều nữa các thuật ngữ khác, nếu có thời gian sẽ viết tất cả cho anh em. Agile là mô hình tốt, hiểu thêm về nó giúp anh em làm việc năng suất cao hơn, không quá stress và tự tin lựa chọn mô hình này khi phát triển phần mềm.
Chắc phải ra series 2 cho anh em, cứ ăn dần 5 từ khoá một cho nó dễ nhai. Không quá ngộp.
5. Tham khảo
Tham khảo thêm về Agile.
- What is Agile?
- Have We Taken Agile Too Far? – Harvard Business Review
- Bộ câu hỏi phỏng vấn fullstack developer hay và khó
Cảm ơn anh em đã đọc bài – Thank you for your time – Happy coding!
Tác giả: Kiên Nguyễn
Xem thêm:
- Agile là gì? Scrum là gì? Các công cụ quản lý dự án theo Agile mà bạn nên biết
- Quy trình phát triển phần mềm
- Quản lý dự án theo Agile và Scrum cho người mới
Xem thêm tuyển dụng CNTT hấp dẫn trên TopDev