Agile và Scrum là gì? Hãy cùng fullbootcamp khám phá hướng dẫn toàn diện này về Quản lý Dự án Linh hoạt, nơi chúng ta sẽ giải thích chi tiết về Agile và Scrum, cách chúng thay đổi cách quản lý dự án.

Agile là gì?

Agile là một cách tiếp cận linh hoạt trong phát triển phần mềm, tập trung vào sự tương tác và tích hợp để nhanh chóng mang sản phẩm đến người dùng. Phương pháp truyền thống ngày càng bộc lộ nhiều vấn đề, dẫn đến tỷ lệ thất bại cao. Để giải quyết vấn đề này, nhiều cá nhân và công ty đã đưa ra các phương pháp hiện đại hơn, mặc dù cũng mang theo những thách thức về sự cộng tác, kỹ thuật, công cụ, và chia sẻ thông tin.

Năm 2001, bản tuyên ngôn Agile ra đời bởi một nhóm người uy tín trong ngành phát triển phần mềm. Bốn nguyên tắc cơ bản của Agile đặt sự ưu tiên vào:

  • Individuals and interactions over processes and tools: Ưu tiên con người và tương tác hơn là quy trình và công cụ.
  • Working software over comprehensive documentation: Giá trị phần mềm hoạt động hơn là tài liệu hoàn chỉnh.
  • Customer collaboration over contract negotiation: Hợp tác chặt chẽ với khách hàng hơn là đàm phán hợp đồng.
  • Responding to change over following a plan: Linh hoạt với thay đổi hơn là tuân theo kế hoạch cứng nhắc.

Ưu tiên Con người và Tương tác hơn là Quy trình và Công cụ

Trong môi trường này, sự tương hỗ giữa thành viên trong nhóm đóng vai trò quan trọng. Điều này đồng nghĩa với việc dự án thành công khi có đội ngũ làm việc đồng đội và tương tác tích cực.

Quy trình là bước thủ tục cần thiết để phát triển dự án, từ thiết kế, lập trình đến kiểm tra QA/QC. Mỗi công ty đều có quy trình riêng và đòi hỏi nhân viên phải tuân thủ nó khi tham gia dự án.

Công cụ đại diện cho phần mềm hỗ trợ trong dự án, như phần mềm quản lý công việc, quản lý mã nguồn, quản lý lỗi. Điều này giúp tổ chức vận hành một cách hiệu quả, tuy nhiên, Agile nhấn mạnh vào sự tương tác con người hơn là sự phụ thuộc quá mức vào quy trình và công cụ.

Giá trị Phần mềm Hoạt động hơn là Tài liệu Hoàn chỉnh

Trong một số quy trình phát triển phần mềm, việc tạo và cập nhật tài liệu sản phẩm là bắt buộc. Tuy nhiên, việc này thường được nhóm lập trình viên, nhóm kiểm thử, và nhóm QA coi là công việc nhàm chán và tốn thời gian. Agile hướng đến việc giảm bớt công đoạn viết tài liệu không cần thiết bằng cách tập trung vào giao tiếp và trao đổi thông tin trực tiếp giữa các thành viên nhóm. Ý tưởng là tại sao phải tốn nhiều thời gian viết tài liệu khi có thể trực tiếp trao đổi để hiểu rõ công việc và chỉ viết những gì thực sự cần thiết. Điều này giúp tối ưu hóa thời gian và tập trung vào việc phát triển sản phẩm một cách linh hoạt và hiệu quả.

Hợp tác chặt chẽ với Khách hàng hơn là Đàm phán Hợp đồng

Khách hàng được coi là "thượng đế" trong kinh doanh, nhưng đối diện với nhiều khách hàng, cách duy nhất để thành công là tương tác và cộng tác chặt chẽ. Thay vì tuân theo đơn thuần những điều đã được đặt trong hợp đồng, việc tư vấn và thảo luận với khách hàng về sự cần thiết của mỗi chức năng giúp quyết định xem nên thực hiện hay không. Số liệu nghiên cứu cụ thể có thể được sử dụng để thuyết phục khách hàng và đảm bảo rằng sản phẩm đáp ứng đúng nhu cầu của họ. Cộng tác chặt chẽ như vậy không chỉ giúp xây dựng mối quan hệ tích cực với khách hàng mà còn mang lại giá trị thực tế cho sản phẩm.

Linh hoạt với Thay đổi hơn là Tuân theo Kế hoạch cứng nhắc

Trong dự án phần mềm, thay đổi là điều không tránh khỏi và có thể xảy ra ở nhiều khía cạnh như yêu cầu, công nghệ, nhân sự, hoặc thậm chí là thời hạn. Agile không phải làm cho sự thay đổi trở nên khó khăn, mà ngược lại, nó khuyến khích sự thích nghi. Nguyên tắc cơ bản của agile là "phần mềm chạy tốt là thước đo của tiến độ," thúc đẩy nhóm dự án loại bỏ công việc không cần thiết và tập trung vào giá trị thực sự. Bằng cách làm việc trực tiếp và thường xuyên với khách hàng, agile giúp ưu tiên yêu cầu và mang lại giá trị sớm nhất cho dự án, giúp tối ưu hóa hài lòng của khách hàng.

Các Phương pháp Agile Phổ biến

1. Scrum

Scrum là một framework phổ biến trong phương pháp Agile, nhưng nhiều người vẫn lẫn lộn giữa hai khái niệm này.

2. Kanban

Kanban xuất phát từ Nhật Bản, mang ý nghĩa "sự đúng lúc." Phương pháp Kanban được thể hiện qua bảng Kanban, chia thành các cột hiển thị quá trình sản xuất phần mềm. Thông tin trên bảng liên tục thay đổi theo tiến trình phát triển, tạo "thẻ" mới khi có nhiệm vụ mới. Kanban thúc đẩy giao tiếp và minh bạch trong công việc, giúp nhóm theo dõi chính xác tiến độ và tình trạng của dự án mọi lúc.

3. Extreme Programming (XP)

Extreme Programming (XP), hay còn gọi là lập trình cực đoan, là một framework tiêu biểu của phương pháp Agile. Được Kent Beck phát triển, XP có thể điều chỉnh linh hoạt cho từng công ty. XP tập trung vào giá trị của giao tiếp, tính đơn giản, phản hồi, lòng dũng cảm, và sự tôn trọng. Làm việc nhóm là trọng tâm, giúp giải quyết vấn đề một cách toàn diện bằng sự hợp tác giữa quản lý, nhà phát triển, và khách hàng. XP đặt ưu tiên lên sự hài lòng của khách hàng và khuyến khích sự linh hoạt để chấp nhận thay đổi theo yêu cầu, ngay cả ở những giai đoạn trễ trong quá trình phát triển.

4. Lean Software Development (LSD)

Lean, xuất phát từ Lean Manufacturing của Toyota, được áp dụng vào phát triển phần mềm và là một framework chứa đựng giá trị và nguyên tắc của Agile. Tập trung vào tinh gọn, Lean nhấn mạnh việc loại bỏ lãng phí để tăng tốc độ phát triển. 7 nguyên tắc cơ bản của Lean bao gồm: việc xóa bỏ thứ không quan trọng, mở rộng việc học hỏi, quyết định càng trễ càng tốt, cung cấp càng sớm càng tốt, trao quyền cho nhóm, xây dựng toàn vẹn từ bên trong, và tối ưu hóa toàn bộ. Điều này giúp tối đa hóa giá trị sản phẩm và giảm thiểu sự lãng phí.

5. Các Kỹ thuật Agile Khác

  • Crystal
  • Scrumban
  • Feature-driven development (FDD)
  • Phương pháp phát triển hệ thống động (DSDM)
  • ….

Xem Thêm khóa học lập trình web

Scrum là gì?

Scrum là một bộ khung làm việc cơ bản để giải quyết công việc phức tạp. Được xem như một thành viên trong gia đình Agile, Scrum cung cấp cơ hội cho nhóm làm việc áp dụng các quy trình và kỹ thuật khác nhau để hoàn thành nhiệm vụ của họ.

Scrum chia quá trình phát triển thành các chu kỳ gọi là "sprint," mỗi sprint có thời gian thực hiện ngắn (thường là hai tuần). Nhóm Scrum tổ chức cuộc họp hàng ngày để theo dõi tiến độ trong khoảng 15 phút và cuối mỗi sprint, họ đánh giá và cải thiện công việc. Scrum thích hợp cho nhóm dưới mười thành viên và thường được sử dụng trong quản lý phát triển phần mềm, nhưng cũng có thể áp dụng trong bối cảnh kinh doanh khác.

Scrum là gì?

Tác động của Scrum đối với Phát triển Phần mềm Hiện đại

Scrum mang lại lợi ích cho phát triển phần mềm hiện đại bằng cách giúp loại bỏ các công đoạn phức tạp và tập trung chủ yếu vào những công đoạn quan trọng, nhằm đáp ứng nhanh chóng nhu cầu của khách hàng. Ba yếu tố quan trọng của Scrum là sự minh bạch, thanh tra và thích nghi, tạo nên một mô hình quản lý tiến trình linh hoạt và thực tế.

Ba Giá trị Cốt lõi của Scrum

1. Tính Minh bạch

  • Đảm bảo thông tin liên quan đến quá trình là minh bạch và rõ ràng.
  • Mọi thành viên đều có đầy đủ thông tin để đưa ra quyết định hiệu quả.

2. Quy trình Thanh tra

  • Thực hiện thanh tra đều đặn để phát hiện bất thường và điều chỉnh kịp thời.
  • Thanh tra được thực hiện tại các điểm quan trọng để cải tiến liên tục.

3. Khả năng Thích nghi

  • Tận dụng tính linh hoạt của Scrum để thích ứng với thay đổi.
  • Dựa vào thông tin và minh bạch, Scrum có khả năng thích nghi cao và linh hoạt trong quá trình phát triển dự án.

Những Lợi ích từ Scrum

Lợi ích với Khách hàng:

  • Nhà cung cấp phản hồi nhanh hơn với các yêu cầu phát triển.
  • Các tính năng có giá trị cao được phát triển và phân phối nhanh hơn.

Lợi ích với Nhà cung cấp:

  • Giảm lãng phí và tập trung vào tính năng có giá trị cao.
  • Giảm thời gian đưa sản phẩm ra thị trường.
  • Tăng hiệu quả và giảm chi phí.

Lợi ích với Đội ngũ phát triển:

  • Thích công việc phát triển và thấy sản phẩm được sử dụng và đánh giá cao.
  • Giảm công việc không năng suất, tạo thời gian làm công việc yêu thích.
  • Cảm thấy công việc được coi trọng và tối đa hóa giá trị cho khách hàng.

Lợi ích với Product manager:

  • Đảm bảo hoạt động phát triển phù hợp với nhu cầu của khách hàng.
  • Dễ dàng sắp xếp lại thứ tự ưu tiên công việc để mang lại giá trị tối đa.

Lợi ích đối với Project manager:

  • Lập kế hoạch và theo dõi dễ dàng và cụ thể hơn.
  • Có cái nhìn sâu sắc về trạng thái dự án vào mọi lúc.
  • Nắm bắt và giải quyết các vấn đề một cách nhanh chóng.

Lợi ích đối với PMO và Giám đốc cấp C:

  • Hiển thị trạng thái hàng ngày của dự án phát triển.
  • Hỗ trợ quyết định hiệu quả và điều chỉnh chiến lược dựa trên thông tin cụ thể.

loi-ich-tu-scrum

Các Khái niệm Chủ chốt trong Scrum

Đội Ngũ Scrum

Scrum team gồm 3 vai trò chính:

Product Owner:

  • Nhiệm vụ: Quản lý công việc còn tồn đọng (Product backlog) và cập nhật thông tin yêu cầu sản phẩm.
  • Tương tác liên tục với team để đảm bảo hiểu rõ về yêu cầu và tính năng cần phát triển.

Development Team:

  • Các lập trình viên tham gia vào phát triển từng tính năng cụ thể.
  • Yêu cầu khả năng làm việc linh hoạt, có thể thay thế lẫn nhau và chịu trách nhiệm phát triển nhiều khía cạnh của sản phẩm.

Scrum Master:

  • Trách nhiệm lên kế hoạch, phân công công việc, và sắp xếp ưu tiên giải quyết công việc từ Product backlog.
  • Tổ chức buổi họp, đảm bảo thông tin liên tục được cập nhật và tình hình dự án diễn ra suôn sẻ.

Khái niệm phải biết trong Scrum

Sprint

Sprint là một đợt làm việc lặp lại trong phát triển phần mềm, thường kéo dài từ 1 đến 4 tuần, kết thúc với việc release phiên bản mới. Scrum Master chuyển trạng thái của Sprint sang Done khi hoàn thành. Mục tiêu của mỗi Sprint được đặt ở đầu và không thay đổi. Tuy nhiên, Product Owner có quyền huỷ một Sprint trước thời hạn với sự đồng thuận của Development Team và Scrum Master. Kết quả của Sprint được sử dụng để lên kế hoạch cho Sprint tiếp theo.

Kế hoạch Sprint

Bước đầu tiên trước khi một Sprint bắt đầu là cuộc họp giữa Development Team và Product Owner để lên kế hoạch cho Sprint. Các công việc cần hoàn thành và cách thức thực hiện chúng được thống nhất trong cuộc họp này. Sau đó, Sprint có thể bắt đầu, và trong quá trình này, các buổi họp hàng ngày, gọi là Daily Sprint hoặc Daily Meeting, sẽ diễn ra để theo dõi tiến độ và thảo luận về các vấn đề phát sinh.

Họp hàng ngày trong Sprint

Các buổi họp Daily Sprint kéo dài khoảng 15 phút, mỗi thành viên lần lượt báo cáo về công việc đã làm ngày hôm trước, công việc cần thực hiện ngày hôm nay, và những khó khăn gặp phải. Buổi họp này giúp theo dõi tiến độ Sprint và có thể điều chỉnh kế hoạch nếu cần thiết, nhưng mục tiêu của Sprint vẫn giữ nguyên để đảm bảo phát hành một phiên bản mới.

Đánh giá Sprint

Sau mỗi Sprint, nhóm phát triển và Product Owner họp lại để đánh giá kết quả và thực hiện các điều chỉnh, thay đổi cần thiết cho Sprint tiếp theo.

Rút kinh nghiệm sau Sprint

Dưới sự hướng dẫn của Scrum Master, nhóm phát triển tổng hợp phản hồi từ Sprint Review để đề xuất cải tiến, nâng cao hiệu suất làm việc và chất lượng sản phẩm.

Công cụ (Artifacts) của Scrum

Scrum sử dụng các công cụ đơn giản và hiệu quả như Product Backlog (danh sách yêu cầu), Sprint Backlog (kế hoạch cho một Sprint), và Burndown Chart (biểu đồ theo dõi tiến độ). Product Backlog chứa danh sách ưu tiên các tính năng và yêu cầu dự án, được sắp xếp bởi Product Owner dựa trên giá trị kinh doanh. Sprint Backlog là kế hoạch chi tiết cho mỗi Sprint, được thực hiện bởi sự kết hợp giữa Product Owner và nhóm phát triển. Burndown Chart là biểu đồ theo dõi thời gian còn lại để hoàn thành công việc, giúp đánh giá tiến trình của dự án.

Các Câu hỏi Thường gặp về Agile và Scrum

Agile và Scrum có giống nhau không?

Agile và Scrum có mối liên kết chặt chẽ, nhưng không phải là một. Agile là một triết lý quản lý dự án, tập trung vào sự linh hoạt và tương tác liên tục với khách hàng. Trong khi đó, Scrum là một framework thuộc hệ thống Agile, cung cấp quy tắc và cấu trúc để triển khai triết lý Agile trong phát triển phần mềm. Thường khi nói về Agile and Scrum, người ta đề cập đến việc sử dụng Scrum để thực hiện nguyên tắc linh hoạt của Agile trong dự án.

Agile có chỉ áp dụng cho Phát triển Phần mềm?

Không, Agile không chỉ áp dụng cho phát triển phần mềm mà còn có thể được sử dụng trong nhiều lĩnh vực khác. Agile bắt nguồn từ triết lý quản lý dự án, tập trung vào sự linh hoạt, tương tác liên tục, và khả năng thích ứng. Do đó, nó có thể được áp dụng trong nhiều lĩnh vực, chẳng hạn như quản lý dự án, tiếp thị, sản xuất, hay bất kỳ ngành nghề nào muốn tối ưu hóa quá trình làm việc và tăng cường tương tác với khách hàng.

Quản lý Dự án Agile và Phân tích Kinh doanh Agile là gì?

Quản lý Dự án Agile và Phân tích Kinh doanh Agile là hai khía cạnh quan trọng trong việc triển khai phương pháp Agile:

1. Quản lý Dự án Agile

Định nghĩa: Là người chịu trách nhiệm quản lý và hướng dẫn quá trình phát triển dự án theo phương pháp Agile.

Nhiệm vụ:

  • Tổ chức các buổi lập kế hoạch và họp Scrum để theo dõi tiến độ.
  • Quản lý Product Backlog và Sprint Backlog để đảm bảo công việc được ưu tiên và thực hiện theo đúng chu kỳ Sprint.
  • Hỗ trợ đội phát triển, loại bỏ rủi ro, và đảm bảo rằng sản phẩm được phát triển đáp ứng yêu cầu của khách hàng.

2. Phân tích Kinh doanh Agile

Định nghĩa: Là người chịu trách nhiệm tìm hiểu, hiểu rõ, và diễn đạt yêu cầu kinh doanh cho dự án Agile.

Nhiệm vụ:

  • Xác định và ghi chép yêu cầu của khách hàng dưới dạng các User Story trong Product Backlog.
  • Liên tục tương tác với các bên liên quan để đảm bảo yêu cầu được hiểu đúng và thỏa mãn.
  • Tham gia các buổi họp lập kế hoạch Sprint để giải thích và làm rõ các yêu cầu cho đội phát triển.

Cả hai vai trò đều hợp tác chặt chẽ để đảm bảo quá trình phát triển diễn ra hiệu quả và sản phẩm đáp ứng đúng nhu cầu của khách hàng.

Nhìn chung, phương pháp Agile không chỉ giới hạn trong lĩnh vực lập trình mà còn được áp dụng rộng rãi trong quản lý dự án và phát triển sản phẩm. Nó khuyến khích sự hợp tác, giao tiếp mở cửa, và thích nghi với những thay đổi, giúp cho việc phát triển sản phẩm trở nên nhanh chóng và hiệu quả hơn.

image

Đăng ký get khoá học Udemy - Unica - Gitiho ngay!

Get khoá học giá rẻ ngay trước khi bị fix.