Ngày 5: Mô Hình Agile/Scrum Trong Quản Lý Dự Án
Chinh Phục Mô Hình Agile/Scrum
Chào mừng bạn đến với Ngày 5 của hành trình “30 Ngày Nhập Môn Quản lý Dự án”! Hôm nay, chúng ta sẽ khám phá mô hình Agile/Scrum, phương pháp quản lý dự án hiện đại và linh hoạt, giúp bạn đối mặt và thích nghi với những thay đổi nhanh chóng trong dự án.
Mô Hình Agile/Scrum Có Gì Đặc Biệt?
- Linh Hoạt Cao : Mô hình Agile/Scrum cho phép các nhóm dự án linh hoạt và nhanh chóng thích ứng với các thay đổi, nhờ vào việc chia nhỏ công việc thành các Sprint ngắn, thường kéo dài từ 1 đến 4 tuần.
- Tập Trung Vào Người Dùng: Agile/Scrum đặt người dùng và khách hàng làm trung tâm, đảm bảo rằng sản phẩm cuối cùng đáp ứng nhu cầu thực tế của họ. Phản hồi từ người dùng được thu thập liên tục và tích hợp vào các giai đoạn phát triển sau.
- Cải Tiến Liên Tục: Nhóm dự án thường xuyên họp đánh giá và rút kinh nghiệm sau mỗi Sprint, giúp cải thiện quy trình và sản phẩm một cách liên tục. Điều này đảm bảo chất lượng và sự hài lòng của khách hàng ngày càng tăng.
Lộ Trình Chinh Phục
- Giải Mã Mô Hình Agile/Scrum: Khám phá bản chất, đặc điểm và cách thức hoạt động của mô hình Agile/Scrum. Hiểu rõ về các vai trò quan trọng như Scrum Master, Product Owner và Development Team, cũng như các sự kiện chính như Sprint Planning, Daily Stand-up, Sprint Review và Sprint Retrospective.
- Ưu Điểm Vượt Trội : Tìm hiểu các lợi ích mà Agile/Scrum mang lại cho dự án của bạn, như khả năng thích ứng nhanh, cải thiện giao tiếp và hợp tác trong nhóm, cũng như nâng cao chất lượng sản phẩm.
- Hạn Chế Tiềm Ẩn: Nhận diện những thách thức và lưu ý khi áp dụng Agile/Scrum, như yêu cầu sự cam kết cao từ tất cả thành viên, khó khăn trong việc duy trì sự kỷ luật và rủi ro khi nhóm không có kinh nghiệm.
- Hành Trình Thực Chiế: Áp dụng Agile/Scrum vào các dự án thực tế, từng bước chinh phục thành công. Thực hành lập kế hoạch Sprint, tổ chức các cuộc họp Daily Stand-up, và thực hiện các Sprint Review và Retrospective để cải tiến liên tục.
- Bí Kíp Nâng Cao: Chia sẻ mẹo và thủ thuật để sử dụng Agile/Scrum hiệu quả trong các dự án phức tạp. Tìm hiểu cách tối ưu hóa từng vai trò và sự kiện, cũng như sử dụng các công cụ hỗ trợ quản lý Agile/Scrum.
Kết Quả Thu Hoạch
- Nắm vững kiến thức về Phương pháp Agile/Scrum.
- Nâng cao kỹ năng quản lý dự án linh hoạt và hiệu quả.
- Sẵn sàng chinh phục mọi dự án, bất kể thử thách.
Hãy cùng bắt đầu hành trình chinh phục Agile/Scrum ngay hôm nay với PM4U nhé.
Giải Mã Mô Hình Agile/Scrum
Mô hình Agile/Scrum là gì?
Agile là một phương pháp quản lý dự án và phát triển phần mềm nhấn mạnh tính linh hoạt, sự hợp tác giữa các nhóm, và khả năng phản hồi nhanh chóng với các thay đổi. Lịch sử hình thành Agile có thể được tóm tắt như sau:
Trước Agile: Trước khi Agile ra đời, phương pháp phát triển phần mềm phổ biến là phương pháp Waterfall, một phương pháp tuyến tính với các giai đoạn phát triển được thực hiện tuần tự từ đầu đến cuối. Tuy nhiên, phương pháp này gặp nhiều hạn chế khi phải đối mặt với những yêu cầu thay đổi và môi trường kinh doanh biến động.
Xuất hiện Agile Manifesto (2001):
Vào tháng 2 năm 2001, 17 nhà lãnh đạo trong lĩnh vực phát triển phần mềm đã tập trung tại Snowbird, Utah, Hoa Kỳ. Họ đã thảo luận về những vấn đề của các phương pháp truyền thống và tìm cách để cải thiện quá trình phát triển phần mềm.
Kết quả của cuộc họp này là việc hình thành Agile Manifesto (Tuyên ngôn Agile), một tập hợp các nguyên tắc và giá trị cơ bản định hướng cho việc phát triển phần mềm linh hoạt và phản hồi nhanh chóng với các thay đổi. Agile Manifesto bao gồm 4 giá trị và 12 nguyên tắc:
- 4 Giá Trị Cốt Lỗi:
- Cá nhân và sự tương tác hơn quy trình và công cụ.
- Phần mềm hoạt động được hơn tài liệu đầy đủ.
- Hợp tác với khách hàng hơn đàm phán hợp đồng.
- Phản hồi với sự thay đổi hơn là tuân theo kế hoạch.
- 12 Nguyên Tắc: Những nguyên tắc này tập trung vào việc cung cấp giá trị sớm và liên tục cho khách hàng, khuyến khích thay đổi yêu cầu, và tạo ra một môi trường làm việc hiệu quả.
4 Giá trị cốt lõi của Agile – Agile Manifesto
Agile Manifesto là một tài liệu quan trọng định hình triết lý và các giá trị cốt lõi của phương pháp Agile. Được công bố lần đầu vào năm 2001 bởi một nhóm các chuyên gia phát triển phần mềm, Agile Manifesto định rõ sự ưu tiên của các nhà phát triển về một số giá trị cốt lõi:
- Individuals and Interactions over Processes and Tools (Cá nhân và Tương tác hơn là Quy trình và Công cụ): Agile ưu tiên con người và sự tương tác giữa các thành viên dự án hơn là việc tuân thủ quy trình và sử dụng công cụ. Điều này nhấn mạnh vai trò quan trọng của sự giao tiếp và cộng tác trong việc phát triển sản phẩm.
- Working Software over Comprehensive Documentation (Phần Mềm Hoạt Động Hơn là Tài Liệu Chi Tiết): Agile đặt sự ưu tiên vào việc sản xuất phần mềm hoạt động và sẵn sàng sử dụng hơn là việc tạo ra tài liệu chi tiết. Điều này thể hiện sự chú trọng vào giá trị thực tế và khả năng phản hồi nhanh chóng từ phía khách hàng.
- Customer Collaboration over Contract Negotiation (Hợp Tác với Khách Hàng Hơn là Đàm Phán Hợp Đồng): Agile khuyến khích sự hợp tác chặt chẽ với khách hàng và sự linh hoạt trong việc đáp ứng các yêu cầu thay đổi của họ thay vì đàm phán và tuân thủ các điều khoản hợp đồng.
- Responding to Change over Following a Plan (Phản Ứng với Thay Đổi Hơn là Theo Đuổi Kế Hoạch): Agile đặt sự ưu tiên vào khả năng thích ứng và phản ứng nhanh chóng với sự thay đổi trong yêu cầu hoặc môi trường thay đổi thay vì tuân thủ một kế hoạch cứng nhắc.
Bằng cách tôn trọng và thúc đẩy các giá trị này, Agile Manifesto giúp định hình cách làm việc trong các dự án phần mềm, thúc đẩy sự linh hoạt, tương tác và phản hồi trong quá trình phát triển sản phẩm.
12 Nguyên Tắc Trong Agile
- Sự hài lòng khách hàng qua việc cung cấp phần mềm có giá trị sớm và liên tục: Agile ưu tiên việc cung cấp phần mềm hoạt động theo các phần nhỏ và thường xuyên để đảm bảo rằng nhu cầu của khách hàng được đáp ứng và họ nhận được giá trị liên tục trong suốt dự án.
- Chào đón thay đổi yêu cầu, ngay cả muộn trong quá trình phát triển: Agile nhận ra rằng yêu cầu có thể thay đổi trong suốt dự án do nhu cầu của khách hàng hoặc điều kiện thị trường thay đổi. Việc chấp nhận thay đổi giúp nhóm duy trì tính linh hoạt và thích ứng, cung cấp các giải pháp phù hợp nhất.
- Cung cấp phần mềm hoạt động thường xuyên, ưu tiên cho chu kỳ thời gian ngắn hơn: Agile nhấn mạnh việc cung cấp kết quả cụ thể thường xuyên, thường trong các chu kỳ kéo dài từ vài tuần đến một tháng. Chu kỳ thời gian ngắn hơn cho phép phản hồi, lặp lại và thích ứng nhanh chóng hơn.
- Các nhà kinh doanh và nhà phát triển phải làm việc cùng nhau hàng ngày suốt dự án: Agile khuyến khích sự hợp tác chặt chẽ giữa các bên liên quan kinh doanh và nhóm phát triển để đảm bảo rằng sản phẩm đáp ứng nhu cầu của khách hàng và mục tiêu kinh doanh. Giao tiếp thường xuyên giúp điều chỉnh ưu tiên và kỳ vọng.
- Xây dựng dự án xung quanh những người được động viên, cung cấp cho họ môi trường và hỗ trợ cần thiết, và tin tưởng rằng họ sẽ hoàn thành công việc: Agile tạo điều kiện cho việc tự tổ chức và trao quyền cho các nhóm để ra quyết định. Cung cấp môi trường hỗ trợ khuyến khích sáng tạo, đổi mới và mức độ động lực và năng suất cao.
- Phương pháp hiệu quả và hiệu quả nhất để truyền thông thông tin đến và trong một nhóm phát triển là trò chuyện trực tiếp: Agile đánh giá cao giao tiếp trực tiếp và khuyến khích giao tiếp thường xuyên giữa các thành viên nhóm để đảm bảo sự rõ ràng, hiểu biết và sự thống nhất.
- Phần mềm hoạt động là tiêu chí chính để đo lường tiến độ: Agile nhấn mạnh việc cung cấp phần mềm hoạt động định kỳ. Tiến độ được đo dựa trên các kết quả cụ thể thay vì tài liệu hoặc kế hoạch, đảm bảo rằng giá trị được cung cấp liên tục cho khách hàng.
- Các quy trình Agile khuyến khích phát triển bền vững. Các nhà tài trợ, nhà phát triển và người dùng nên có thể duy trì một tốc độ không đổi vĩnh viễn: Agile khuyến khích một tốc độ làm việc bền vững để ngăn chặn việc cháy nổ và đảm bảo sự thành công lâu dài của dự án. Phát triển bền vững giúp nhóm duy trì mức độ sản xuất và chất lượng cao trong thời gian dài.
- Sự chú trọng liên tục đến chất lượng kỹ thuật và thiết kế tốt cải thiện tính linh hoạt: Agile nhấn mạnh sự quan trọng của chất lượng và kỹ năng kỹ thuật xuất sắc để cung cấp kết quả thành công. Bằng cách ưu tiên các nguyên tắc thiết kế cơ bản và các phương pháp kỹ thuật, nhóm có thể duy trì sự linh hoạt và sự phản ứng đối với thay đổi.
- Sự đơn giản – nghệ thuật tối đa hóa lượng công việc không được thực hiện – là điều cần thiết: Agile ủng hộ sự đơn giản cả trong quy trình và giải pháp. Bằng cách tập trung vào việc cung cấp những tính năng có giá trị nhất với ít phức tạp nhất, nhóm có thể tối ưu hóa hiệu quả và giảm thiểu lãng phí.
- Các kiến trúc, yêu cầu và thiết kế tốt nhất xuất hiện từ những nhóm tự tổ chức: Agile khuyến khích sự hợp tác, thử nghiệm và thích ứng để tìm ra những giải pháp hiệu quả nhất. Thúc đẩy nhóm tự tổ chức giúp tạo ra sự sáng tạo và đổi mới, dẫn đến kết quả tốt hơn.
- Theo định kỳ, nhóm phản ánh về cách trở nên hiệu quả hơn, sau đó điều chỉnh hành vi của mình tương ứng: Agile khuyến khích sự cải thiện liên tục thông qua việc phản ánh định kỳ và thích ứng. Bằng cách đánh giá định kỳ các quy trình, phương pháp và kết quả, nhóm có thể xác định các lĩnh vực cần cải thiện và thực hiện điều chỉnh để tối ưu hóa hiệu suất của họ theo thời gian.
Những nguyên tắc này tạo nên nền tảng cho việc áp dụng phương pháp Agile, giúp các nhóm phát triển phần mềm làm việc linh hoạt, hiệu quả và đáp ứng tốt hơn các nhu cầu của khách hàng.
Scrum: Cụ Thể Hóa Agile
Scrum là một framework quản lý dự án theo phương pháp Agile, được sử dụng rộng rãi trong việc phát triển sản phẩm và dự án công nghệ thông tin. Scrum tập trung vào việc tổ chức công việc thành các đợt ngắn gọi là “sprints”, trong đó các nhiệm vụ được thực hiện và sản phẩm có thể được cung cấp cho khách hàng trong một khoảng thời gian ngắn.
3 Nguyên Tắc Cơ Bản (Transparency, Inspection, and Adaptation)
Scrum là một phương pháp quản lý dự án linh hoạt và hiệu quả, đặc biệt phổ biến trong lĩnh vực phát triển phần mềm và công nghệ thông tin. Tại căn cứ của Scrum là một tập hợp các nguyên tắc cơ bản, định hình cách mà nhóm làm việc và tiếp cận với dự án của họ. Những nguyên tắc này không chỉ giúp xây dựng một môi trường làm việc tích cực mà còn định hình cách thức tổ chức, làm việc và tiến hành đánh giá trong quá trình phát triển sản phẩm.
Trong phần này, chúng ta sẽ tìm hiểu và phân tích sâu hơn về ba nguyên tắc cơ bản của Scrum: minh bạch, kiểm tra và thích ứng. Mỗi nguyên tắc này đóng vai trò quan trọng trong việc tạo ra một quá trình làm việc linh hoạt, đáp ứng và đảm bảo chất lượng sản phẩm.
Transparency (Minh bạch): Mọi thông tin liên quan đến quy trình phát triển và sản phẩm phải được minh bạch và dễ tiếp cận cho tất cả các thành viên trong nhóm.
Transparency (Minh bạch) là một trong ba nguyên tắc cơ bản của Scrum, đóng vai trò quan trọng trong việc tạo ra một môi trường làm việc trung thực và hiệu quả. Minh bạch đòi hỏi rằng mọi thông tin liên quan đến quy trình phát triển và sản phẩm phải được tiết lộ và dễ tiếp cận cho tất cả các thành viên trong nhóm, không chỉ giữa các thành viên trong nhóm mà còn với các bên liên quan khác như khách hàng, bên mua hoặc các bên liên quan đến dự án.
Minh bạch trong Scrum giúp xây dựng một môi trường làm việc tin cậy và đồng tình, nơi mọi người có thể chia sẻ thông tin, ý kiến và phản hồi một cách tự do. Điều này tạo ra một cơ hội cho sự hợp tác chặt chẽ giữa các thành viên trong nhóm, từ đó tăng cường khả năng giải quyết vấn đề và đưa ra quyết định thông suốt.
Ngoài ra, minh bạch cũng giúp tăng cường sự hiểu biết và cam kết từ phía khách hàng. Bằng cách cung cấp thông tin minh bạch về tiến độ và sản phẩm, khách hàng có thể theo dõi và đánh giá tiến trình của dự án một cách chính xác, từ đó giúp họ cảm thấy hài lòng và tin tưởng hơn vào quy trình phát triển.
Tuy nhiên, đôi khi việc đảm bảo minh bạch có thể đối mặt với một số thách thức. Đặc biệt là trong các tổ chức hoặc dự án lớn, việc quản lý và chia sẻ thông tin một cách hiệu quả có thể trở nên phức tạp. Cần phải có sự chú ý đặc biệt đến việc bảo vệ thông tin nhạy cảm và giữ cho thông tin được truyền đạt một cách rõ ràng và đúng đắn.
Tóm lại, Transparency (Minh bạch) là một nguyên tắc quan trọng trong Scrum, đóng vai trò quan trọng trong việc xây dựng một môi trường làm việc đồng thuận và tin cậy, đồng thời tạo điều kiện thuận lợi cho sự hợp tác, hiểu biết và cam kết từ tất cả các bên liên quan đến dự án.
Inspection (Kiểm tra): Các thành viên trong nhóm Scrum kiểm tra tiến độ công việc và sản phẩm ở cuối mỗi sprint để đảm bảo rằng chất lượng đang được duy trì và các tiến bộ đang được đánh giá.
Inspection (Kiểm tra) là một trong ba nguyên tắc cơ bản của Scrum, đóng vai trò quan trọng trong việc đảm bảo chất lượng và tiến triển của sản phẩm trong mỗi Sprint.
Quá trình kiểm tra được thực hiện ở cuối mỗi Sprint, khi các thành viên trong nhóm Scrum đánh giá tiến độ công việc và sản phẩm đã hoàn thành. Mục tiêu của quá trình kiểm tra là đảm bảo rằng sản phẩm đáp ứng được các yêu cầu và tiêu chuẩn chất lượng đã đề ra, đồng thời cung cấp cơ hội để phát hiện và sửa chữa các vấn đề hoặc lỗi trước khi sản phẩm được giao cho khách hàng.
Quá trình kiểm tra không chỉ dừng lại ở việc kiểm tra chất lượng của sản phẩm mà còn bao gồm việc đánh giá tiến độ và hiệu suất của nhóm làm việc. Các thành viên trong nhóm đánh giá xem họ đã hoàn thành được công việc theo kế hoạch đã đặt ra hay không, đồng thời phân tích và đánh giá các vấn đề phát sinh trong quá trình làm việc.
Việc thực hiện quá trình kiểm tra định kỳ và liên tục trong mỗi Sprint giúp đảm bảo rằng sản phẩm được phát triển đúng cách và đáp ứng được yêu cầu của khách hàng. Nó cũng giúp tạo ra một quá trình học tập liên tục, trong đó nhóm Scrum có cơ hội cải thiện và tối ưu hóa quy trình làm việc của họ dựa trên các kinh nghiệm thu được từ mỗi Sprint.
Tuy nhiên, quá trình kiểm tra cũng đôi khi đối mặt với một số thách thức. Việc thực hiện kiểm tra định kỳ có thể tốn kém thời gian và tài nguyên, đặc biệt đối với các dự án có quy mô lớn. Ngoài ra, việc xác định và sửa chữa các vấn đề trong quá trình kiểm tra cũng đòi hỏi sự tỉ mỉ và kiên nhẫn từ các thành viên trong nhóm.
Adaptation (Thích ứng): Dựa trên kết quả kiểm tra, nhóm Scrum sẽ điều chỉnh quy trình và kế hoạch của mình cho các sprint tiếp theo để cải thiện hiệu suất và đáp ứng yêu cầu thay đổi.
Adaptation (Thích ứng) là một trong ba nguyên tắc cơ bản của Scrum, đóng vai trò quan trọng trong việc đảm bảo linh hoạt và sự phản ứng nhanh chóng của nhóm Scrum trước các thay đổi và phát triển của dự án.
Nguyên tắc này nhấn mạnh việc sử dụng thông tin thu được từ quá trình kiểm tra để điều chỉnh và cải thiện quy trình làm việc của nhóm trong mỗi Sprint tiếp theo. Cụ thể, sau khi hoàn thành quá trình kiểm tra ở cuối mỗi Sprint, nhóm Scrum sẽ tổng kết và đánh giá kết quả, từ đó xác định các điểm mạnh, điểm yếu và cơ hội cải thiện. Dựa trên những phản hồi này, nhóm sẽ thích ứng bằng cách điều chỉnh kế hoạch và quy trình làm việc của mình cho Sprint tiếp theo.
Thích ứng không chỉ dừng lại ở việc điều chỉnh quy trình và kế hoạch, mà còn bao gồm việc thích ứng với các yêu cầu và điều kiện mới từ khách hàng hoặc môi trường làm việc. Nhóm Scrum cần linh hoạt và sẵn lòng thay đổi chiến lược và phương pháp làm việc của họ để đáp ứng được các thách thức và cơ hội mới.
Việc thích ứng định kỳ và liên tục trong quá trình phát triển sản phẩm giúp nhóm Scrum duy trì sự linh hoạt và đảm bảo rằng họ có thể phản ứng nhanh chóng trước các thay đổi và yêu cầu từ môi trường làm việc. Điều này giúp tăng cường sự hiệu quả và hiệu suất của quy trình làm việc, đồng thời đảm bảo rằng sản phẩm cuối cùng đáp ứng được các yêu cầu và mong muốn của khách hàng.
Tuy nhiên, thách thức của nguyên tắc này là việc thích ứng đôi khi đòi hỏi sự linh hoạt cao và khả năng làm việc hiệu quả trong môi trường không chắc chắn. Để thích ứng một cách hiệu quả, nhóm Scrum cần phải có sự đồng thuận và sự phối hợp chặt chẽ giữa các thành viên, cũng như khả năng đưa ra quyết định nhanh chóng và đúng đắn.
5 Giá Trị Cốt Lõi Của Scrum (Courage, Focus, Commitment, Openness, Respect)
- Dũng cảm (Courage): Nhóm cần dũng cảm đối mặt với thách thức, đưa ra quyết định khó khăn và thẳng thắn trao đổi về các vấn đề. Dũng cảm cho phép nhóm vượt qua khó khăn và tìm ra các giải pháp sáng tạo để giải quyết vấn đề.
- Tập trung (Focus): Nhóm Scrum tập trung vào mục tiêu của sprint và không để các yếu tố bên ngoài làm phân tâm. Tập trung giúp đảm bảo rằng nhóm hoàn thành công việc một cách hiệu quả và đúng thời hạn.
- Cam kết (Commitment): Các thành viên trong nhóm Scrum cam kết hoàn thành công việc và đóng góp vào mục tiêu chung của nhóm. Cam kết giúp đảm bảo rằng mọi người đều tận tâm và nỗ lực hết mình để đạt được các kết quả mong muốn.
- Cởi mở (Openness): Mỗi thành viên trong nhóm cần cởi mở chia sẻ thông tin, ý kiến và phản hồi. Sự cởi mở giúp nhóm phát hiện và giải quyết vấn đề kịp thời, xây dựng một môi trường làm việc tin tưởng và hợp tác.
- Tôn trọng (Respect): Các thành viên trong nhóm cần tôn trọng lẫn nhau, đánh giá cao những đóng góp và ý kiến của đồng nghiệp. Tôn trọng giúp xây dựng môi trường làm việc tích cực, khuyến khích sự hợp tác và sự đa dạng trong nhóm.
Những giá trị này giúp nhóm Scrum hoạt động hiệu quả, tạo ra sản phẩm chất lượng và đạt được mục tiêu đề ra.
Mối quan hệ giữa Scrum và Agile
- Scrum là một phần của Agile: Scrum là một trong những phương pháp quản lý dự án theo phương pháp Agile. Nó thực hiện các nguyên tắc và giá trị cốt lõi của Agile để tạo ra các sản phẩm có giá trị và linh hoạt đáp ứng yêu cầu thay đổi của khách hàng.
- Scrum là một framework Agile cụ thể: Agile là một triết lý hoặc phong cách phát triển sản phẩm, trong khi Scrum là một framework cụ thể được sử dụng để triển khai các nguyên tắc Agile vào dự án cụ thể.
- Scrum giúp thực hiện các nguyên tắc Agile: Scrum cung cấp một cách cụ thể để tổ chức và quản lý công việc trong một dự án theo cách linh hoạt và tập trung vào việc tạo ra giá trị cho khách hàng. Bằng cách dùng Scrum, các nhóm có thể thực hiện các nguyên tắc Agile như phân chia công việc thành các phần nhỏ hơn, lặp lại và tối ưu hóa liên tục.
- Scrum hỗ trợ trong việc thực hiện Agile tốt hơn: Với các hướng dẫn cụ thể về cách tổ chức các cuộc họp, quản lý product backlog và triển khai các sprint, Scrum giúp nhóm làm việc áp dụng nguyên tắc Agile một cách hiệu quả hơn và đạt được kết quả tốt hơn.
Cách thức hoạt động của Mô Hình Agile/Scrum
Phương pháp Agile/Scrum là một trong những phương pháp linh hoạt và hiệu quả nhất để quản lý và thực hiện dự án, đặc biệt là trong lĩnh vực phát triển phần mềm. Dưới đây là các bước cơ bản để thực hiện một dự án bằng phương pháp Agile/Scrum:
Bước 1: Lập Kế Hoạch và Chuẩn Bị
- Thành lập Đội Ngũ Scrum: Bao gồm Product Owner, Scrum Master, và Đội Phát Triển.
- Xác định Tầm Nhìn và Mục Tiêu của Dự Án: Cùng với Product Owner để xác định mục tiêu và yêu cầu của dự án.
- Lập Product Backlog: Tạo danh sách công việc (backlog) dựa trên yêu cầu và mục tiêu đã xác định.
Bước 2: Lập Kế Hoạch Sprint
- Sprint Planning Meeting: Đội ngũ cùng nhau lên kế hoạch cho Sprint tiếp theo, xác định công việc cần hoàn thành.
- Chia Nhỏ Công Việc: Phân chia công việc trong Product Backlog thành các công việc nhỏ hơn để dễ dàng quản lý và thực hiện trong Sprint.
Bước 3: Thực Hiện Sprint
- Daily Scrum (Daily Stand-up): Cuộc họp hàng ngày để cập nhật tiến độ công việc và giải quyết vấn đề.
- Thực Hiện Công Việc: Đội Phát Triển làm việc trên các nhiệm vụ đã được ưu tiên trong Sprint Backlog.
- Review và Tối Ưu: Liên tục review tiến độ và chất lượng công việc, điều chỉnh kế hoạch nếu cần.
Bước 4: Sprint Review
- Đánh Giá Sản Phẩm: Cuối mỗi Sprint, tổ chức cuộc họp để trình bày những gì đã hoàn thành và nhận phản hồi từ Product Owner và các bên liên quan.
Bước 5: Sprint Retrospective
- Phản Tư và Cải Thiện: Sau Sprint Review, tổ chức cuộc họp nội bộ trong đội Scrum để đánh giá về quy trình làm việc, tìm cách cải thiện hiệu suất làm việc cho Sprint tiếp theo.
Bước 6: Lặp Lại
- Bắt Đầu Sprint Mới: Với các kết quả từ Sprint Review và Sprint Retrospective, bắt đầu lập kế hoạch và thực hiện Sprint mới.
Phương pháp Agile/Scrum nhấn mạnh vào việc làm việc nhóm, sự linh hoạt, và liên tục cải thiện. Quy trình không ngừng lặp lại từ việc lập kế hoạch đến thực hiện và đánh giá, cho phép đội ngũ thích ứng với thay đổi và cải thiện sản phẩm một cách liên tục.
3 Vai trò trong Scrum
Scrum Team là nhóm các cá nhân chịu trách nhiệm phát triển các phiên bản sản phẩm trong dự án Agile theo framework Scrum. Nhóm này thường gồm ba vai trò chính:
1. Chủ Sản Phẩm (Product Owner): Chủ Sản Phẩm đại diện cho tiếng nói của khách hàng hoặc các bên liên quan và chịu trách nhiệm tối đa hóa giá trị của sản phẩm bằng cách quản lý và ưu tiên hóa Backlog Sản Phẩm. Họ đảm bảo rằng nhóm làm việc vào các tính năng và chức năng có giá trị nhất trước tiên.
Product Owner là người duy nhất chịu trách nhiệm quản lý Product Backlog. Quản lý Product Backlog bao gồm:
- Rõ ràng diễn đạt các mục trong Product Backlog;
- Sắp xếp các mục trong Product Backlog để đạt được mục tiêu và sứ mệnh tốt nhất;
- Tối ưu hóa giá trị của công việc mà Nhóm Phát Triển thực hiện;
- Đảm bảo rằng Product Backlog là minh bạch, rõ ràng và dễ hiểu cho tất cả mọi người, và hiển thị những gì Nhóm Scrum sẽ làm tiếp theo; và,
- Đảm bảo rằng Nhóm Phát Triển hiểu các mục trong Product Backlog đến mức cần thiết.
Product Owner có thể tự làm các công việc trên, hoặc có thể nhờ Nhóm Phát Triển làm. Tuy nhiên, Product Owner vẫn phải chịu trách nhiệm.
Product Owner là một người, không phải là một ủy ban. Product Owner có thể đại diện cho mong muốn của một ủy ban trong Product Backlog, nhưng những người muốn thay đổi ưu tiên của một mục trong Product Backlog phải đề cập đến Product Owner.
Để Product Owner thành công, toàn bộ tổ chức phải tôn trọng quyết định của họ. Quyết định của Product Owner được thể hiện rõ trong nội dung và thứ tự của Product Backlog. Không ai được phép yêu cầu Nhóm Phát Triển làm việc dựa trên một tập hợp yêu cầu khác, và Nhóm Phát Triển không được phép hành động dựa trên những gì bất kỳ ai khác nói.
2. Scrum Master là người lãnh đạo phục vụ cho Nhóm Scrum, giúp mọi người hiểu và tuân thủ lý thuyết, thực hành, quy tắc và giá trị của Scrum. Họ tạo điều kiện cho các sự kiện Scrum, loại bỏ các rào cản và tạo môi trường thuận lợi cho sự thành công của nhóm.
Scrum Master giúp những người bên ngoài Nhóm Scrum hiểu rõ rằng các tương tác của họ với Nhóm Scrum có ích và không có ích như thế nào. Scrum Master giúp mọi người thay đổi các tương tác này để tối đa hóa giá trị tạo ra bởi Nhóm Scrum.
Dịch vụ của Scrum Master cho Product Owner bao gồm:
- Tìm kiếm các kỹ thuật quản lý Product Backlog hiệu quả;
- Giúp Nhóm Scrum hiểu rõ nhu cầu về các mục Product Backlog rõ ràng và ngắn gọn;
- Hiểu về lập kế hoạch sản phẩm trong một môi trường nghiên cứu;
- Đảm bảo rằng Product Owner biết cách sắp xếp Product Backlog để tối đa hóa giá trị;
- Hiểu và thực hành tính linh hoạt;
- Hỗ trợ các sự kiện Scrum theo yêu cầu hoặc cần thiết.
Dịch vụ của Scrum Master cho Nhóm Phát Triển bao gồm:
- Huấn luyện Nhóm Phát Triển tự tổ chức và chức năng chéo;
- Giúp Nhóm Phát Triển tạo ra các sản phẩm có giá trị cao;
- Loại bỏ các trở ngại đối với tiến triển của Nhóm Phát Triển;
- Hỗ trợ các sự kiện Scrum theo yêu cầu hoặc cần thiết;
- Huấn luyện Nhóm Phát Triển trong môi trường tổ chức mà Scrum chưa hoàn toàn được áp dụng và hiểu biết.
Dịch vụ của Scrum Master cho Tổ Chức bao gồm:
- Lãnh đạo và huấn luyện tổ chức trong việc áp dụng Scrum;
- Lập kế hoạch triển khai Scrum trong tổ chức;
- Giúp nhân viên và các bên liên quan hiểu và thực hiện Scrum và phát triển sản phẩm nghiên cứu;
- Gây ra sự thay đổi tăng năng suất của Nhóm Scrum;
- Làm việc với các Scrum Master khác để tăng cường hiệu quả của việc áp dụng Scrum trong tổ chức.
3. Nhóm Phát Triển (Development Team): Nhóm Phát Triển bao gồm các chuyên gia thực hiện công việc phát triển một phiên bản sản phẩm có thể phát hành được vào cuối mỗi Sprint. Họ là đa chức năng và tự tổ chức, có nghĩa là họ cùng nhau có tất cả các kỹ năng cần thiết để phát triển phiên bản sản phẩm.
Nhóm Phát Triển có các đặc điểm sau:
- Họ tự tổ chức. Không ai (kể cả Scrum Master) nói với Nhóm Phát Triển làm thế nào để biến Product Backlog thành các Phiên bản của chức năng có thể phát hành được;
- Nhóm Phát Triển là chức năng chéo, có tất cả các kỹ năng như một nhóm cần thiết để tạo ra một Phiên bản sản phẩm;
- Scrum không công nhận bất kỳ chức danh nào cho các thành viên của Nhóm Phát Triển ngoại trừ Nhà Phát Triển, bất kể công việc được thực hiện bởi người đó; không có ngoại lệ cho quy tắc này;
- Scrum không công nhận các nhóm phụ trong Nhóm Phát Triển, bất kể các lĩnh vực cụ thể cần được xử lý như kiểm thử hoặc phân tích kinh doanh; không có ngoại lệ cho quy tắc này;
- Các thành viên của Nhóm Phát triển tuy các cá nhân có thể có các kỹ năng chuyên môn và lĩnh vực trọng tâm, nhưng trách nhiệm giải trình thuộc về toàn bộ Nhóm Phát triển.
Cùng nhau, Nhóm Scrum hợp tác chặt chẽ để đạt được mục tiêu được đặt ra cho mỗi Sprint và cuối cùng là giao các phiên bản sản phẩm có giá trị cho khách hàng hoặc các bên liên quan. Họ làm việc theo một cách minh bạch, kiểm tra và điều chỉnh liên tục để cải thiện quy trình và kết quả của mình.
3 Tạo tác trong Scrum
Trong phương pháp Scrum, có ba “artifacts” chính được sử dụng để giúp quản lý công việc và theo dõi tiến độ của dự án. Đây là các công cụ quan trọng giúp đội ngũ làm việc một cách minh bạch và hiệu quả. Các Scrum Artifacts bao gồm:
- Product Backlog: Là danh sách động tất cả những gì cần được làm trong sản phẩm. Product Backlog được ưu tiên bởi Product Owner, và nó bao gồm tất cả các tính năng, chức năng, yêu cầu, cải tiến và sửa lỗi cần được thực hiện để sản phẩm có thể phát triển và cải thiện.
- Sprint Backlog: Là tập hợp các công việc mà đội ngũ chọn từ Product Backlog để làm trong Sprint hiện tại. Sprint Backlog là kế hoạch cụ thể cho Sprint, bao gồm mục tiêu Sprint (một mục tiêu cao cấp mà đội ngũ muốn đạt được thông qua việc thực hiện công việc trong Sprint) và danh sách các công việc cần thực hiện để đạt được mục tiêu đó.
- Increment (Sản phẩm tăng thêm): Là tổng hợp của tất cả các sản phẩm Backlog Items hoàn thành trong các Sprint trước đó cộng với các Items hoàn thành trong Sprint hiện tại, đáp ứng các tiêu chuẩn chất lượng đã được đội ngũ đặt ra. Increment là phiên bản mới nhất của sản phẩm và phải ở trong trạng thái có thể phát hành, dù đội ngũ có quyết định phát hành hay không.
Các artifacts này giúp tạo ra sự minh bạch và cho phép tất cả các bên liên quan hiểu rõ được công việc đang được thực hiện và công việc sắp tới. Chúng cũng giúp đội ngũ tự quản lý công việc của mình một cách hiệu quả hơn.
4 Sự kiện trong Scrum
Trong Scrum, có bốn loại cuộc họp (còn được gọi là sự kiện Scrum) chính được thiết kế để tạo điều kiện cho giao tiếp, quyết định, và đánh giá tiến độ công việc. Các cuộc họp này giúp đảm bảo rằng mọi người trong đội ngũ đều đồng lòng và tập trung vào các mục tiêu chung. Dưới đây là bốn cuộc họp chính trong Scrum:
- Sprint Planning (Lập Kế Hoạch Sprint):
- Mục tiêu: Xác định công việc sẽ được thực hiện trong Sprint tiếp theo.
- Thành phần tham gia: Scrum Master, Product Owner, và Đội ngũ Phát triển.
- Trong cuộc họp này, đội ngũ sẽ xác định mục tiêu của Sprint và lựa chọn các công việc từ Product Backlog để đưa vào Sprint Backlog.
- Daily Scrum (Scrum Hàng Ngày):
- Mục tiêu: Tổng kết tiến độ và kế hoạch cho 24 giờ tiếp theo.
- Thành phần tham gia: Đội ngũ Phát triển (Scrum Master và Product Owner có thể tham gia nhưng không bắt buộc).
- Đây là cuộc họp ngắn, thường kéo dài khoảng 15 phút, để đội ngũ cập nhật tiến độ và xác định có bất kỳ trở ngại nào cần được giải quyết không.
- Sprint Review (Đánh Giá Sprint):
- Mục tiêu: Trình bày và đánh giá công việc đã hoàn thành trong Sprint.
- Thành phần tham gia: Scrum Master, Product Owner, Đội ngũ Phát triển, và có thể mời khách hàng cùng các bên liên quan khác.
- Cuộc họp này là cơ hội để đội ngũ trình bày công việc đã hoàn thành và nhận phản hồi từ khách hàng hoặc các bên liên quan để điều chỉnh Product Backlog nếu cần.
- Sprint Retrospective (Tổng Kết Sprint):
- Mục tiêu: Kiểm điểm và tìm cách cải thiện quy trình làm việc trong các Sprint tiếp theo.
- Thành phần tham gia: Scrum Master, Product Owner, và Đội ngũ Phát triển.
- Cuộc họp này diễn ra sau Sprint Review và trước Sprint Planning tiếp theo. Đây là cơ hội để đội ngũ phản ánh về quy trình làm việc trong Sprint vừa qua và đề ra các biện pháp cải thiện.
Các cuộc họp này giúp duy trì tính linh hoạt, tối ưu hóa quy trình làm việc, và cải thiện liên tục, đồng thời đảm bảo rằng mọi người trong dự án đều hướng tới cùng một mục tiêu
Khi nào nên sử dụng mô hình Agile/Scrum
- Yêu cầu thay đổi thường xuyên: Agile/Scrum là lựa chọn lý tưởng khi các yêu cầu dự án có khả năng thay đổi thường xuyên trong suốt quá trình phát triển. Nếu bạn dự đoán rằng yêu cầu và mục tiêu sẽ phát triển và thay đổi theo thời gian, Agile/Scrum cho phép nhóm dễ dàng điều chỉnh và đáp ứng các thay đổi này một cách linh hoạt.
- Dự án phức tạp và không rõ ràng: Trong các dự án có độ phức tạp cao và các yêu cầu không rõ ràng hoặc liên tục thay đổi, Agile/Scrum giúp nhóm quản lý rủi ro, phát hiện và giải quyết vấn đề sớm. Nó giúp bạn chia nhỏ dự án thành các phần nhỏ hơn, dễ quản lý hơn và kiểm soát tốt hơn.
- Phản hồi liên tục từ khách hàng: Agile/Scrum phù hợp khi dự án cần phản hồi thường xuyên từ khách hàng hoặc người dùng cuối. Điều này giúp đảm bảo rằng sản phẩm phát triển đáp ứng đúng nhu cầu và mong muốn của khách hàng thông qua các vòng lặp phát triển ngắn (sprints).
- Phát triển nhanh và ra mắt sản phẩm sớm: Khi thời gian ra mắt sản phẩm là yếu tố quan trọng, Agile/Scrum cho phép nhóm phát triển và triển khai các phần của sản phẩm nhanh chóng. Điều này giúp khách hàng thấy được giá trị sớm và liên tục, đồng thời dễ dàng điều chỉnh hướng đi dựa trên phản hồi.
- Nhóm có khả năng tự quản lý và giao tiếp tốt: Agile/Scrum yêu cầu các nhóm làm việc phải có khả năng tự quản lý và giao tiếp hiệu quả. Nếu nhóm có khả năng này, Scrum sẽ giúp tối ưu hóa sự hợp tác và tăng hiệu quả làm việc.
- Môi trường phát triển năng động: Agile/Scrum rất hiệu quả trong môi trường phát triển có nhiều thay đổi và biến động. Nó cho phép nhóm nhanh chóng phản ứng và điều chỉnh kế hoạch dựa trên tình hình thực tế, giúp duy trì tính cạnh tranh và sự linh hoạt trong phát triển sản phẩm.
- Cải tiến liên tục: Nếu dự án cần cải tiến liên tục và phát triển dựa trên những học hỏi từ các sprint trước, Agile/Scrum là một lựa chọn phù hợp để đảm bảo rằng nhóm luôn tiến bộ và nâng cao chất lượng sản phẩm.
- Dự án có sự tham gia của nhiều bên liên quan: Khi dự án cần sự tương tác và phản hồi thường xuyên từ nhiều bên liên quan, Agile/Scrum giúp đảm bảo rằng tất cả các bên đều có cái nhìn chung và cập nhật về tiến độ và mục tiêu của dự án.
Mô hình Agile khắc phục các điểm hạn chế của Waterfall
- Tính linh hoạt cao
- Khắc phục hạn chế của Waterfall: Waterfall có cấu trúc cứng nhắc, khó thay đổi sau khi một giai đoạn đã hoàn thành. Agile cho phép dễ dàng điều chỉnh và phản ứng nhanh chóng với những thay đổi trong yêu cầu và điều kiện dự án, giúp duy trì tính cập nhật và phù hợp với thực tế.
- Phát triển lặp lại và gia tăng
- Khắc phục hạn chế của Waterfall: Waterfall triển khai sản phẩm chỉ sau khi tất cả các giai đoạn đã hoàn thành, dẫn đến rủi ro cao nếu phát hiện lỗi. Agile chia nhỏ quá trình phát triển thành các vòng lặp ngắn, mỗi vòng đều tạo ra một phần sản phẩm hoàn chỉnh và có thể sử dụng được. Điều này giúp kiểm tra và cải tiến sản phẩm liên tục.
- Phản hồi liên tục từ khách hàng
- Khắc phục hạn chế của Waterfall: Waterfall thường chỉ nhận phản hồi từ khách hàng sau khi sản phẩm hoàn tất, dễ dẫn đến việc sản phẩm không đáp ứng nhu cầu. Agile khuyến khích sự tham gia và phản hồi liên tục từ khách hàng qua các cuộc họp định kỳ, đảm bảo sản phẩm phát triển đúng yêu cầu.
- Tăng cường hợp tác và giao tiếp
- Khắc phục hạn chế của Waterfall: Waterfall thiếu sự giao tiếp thường xuyên giữa các thành viên trong nhóm và các bên liên quan. Agile tạo điều kiện cho sự giao tiếp minh bạch và liên tục thông qua các cuộc họp hàng ngày và các cuộc họp lập kế hoạch và đánh giá, giúp mọi người luôn cập nhật và phối hợp hiệu quả.
- Giảm rủi ro
- Khắc phục hạn chế của Waterfall: Waterfall dễ gặp rủi ro do phát hiện vấn đề muộn. Agile giúp phát hiện và giải quyết các vấn đề kịp thời thông qua việc phát triển và kiểm tra từng phần nhỏ, giảm thiểu rủi ro và tránh các lỗi nghiêm trọng tích tụ.
- Tăng cường sự sáng tạo và đổi mới
- Khắc phục hạn chế của Waterfall: Waterfall không khuyến khích sự sáng tạo do cấu trúc cứng nhắc. Agile khuyến khích các nhóm tự tổ chức và đưa ra quyết định, tạo điều kiện cho sự sáng tạo và thử nghiệm các giải pháp mới.
- Nâng cao chất lượng sản phẩm
- Khắc phục hạn chế của Waterfall: Waterfall kiểm tra chất lượng sau khi hoàn thành sản phẩm, dễ dẫn đến lỗi lớn. Agile đặt trọng tâm vào việc kiểm thử liên tục và cải tiến chất lượng trong suốt quá trình phát triển, đảm bảo sản phẩm cuối cùng đạt tiêu chuẩn cao.
- Động lực và tinh thần làm việc cao
- Khắc phục hạn chế của Waterfall: Waterfall có thể dẫn đến tinh thần làm việc thấp do thiếu sự tham gia và đóng góp của thành viên nhóm. Agile khuyến khích sự tham gia và đóng góp của tất cả các thành viên, tạo ra một môi trường làm việc tích cực và có động lực cao.
- Tối ưu hóa việc sử dụng tài nguyên
- Khắc phục hạn chế của Waterfall: Waterfall có thể lãng phí tài nguyên do không ưu tiên và điều chỉnh công việc hiệu quả. Agile tập trung vào các yêu cầu ưu tiên cao nhất và điều chỉnh liên tục dựa trên phản hồi, giúp tối ưu hóa việc sử dụng tài nguyên.
- Cải thiện sự minh bạch và theo dõi tiến độ
- Khắc phục hạn chế của Waterfall: Waterfall thiếu sự minh bạch và khó theo dõi tiến độ trong suốt quá trình phát triển. Agile cung cấp các công cụ và thực hành giúp theo dõi tiến độ dự án một cách minh bạch và chi tiết, giúp các bên liên quan dễ dàng đánh giá và đưa ra quyết định.
Những ưu điểm này giúp Agile khắc phục được các hạn chế của Waterfall, trở thành một phương pháp quản lý dự án hiệu quả và phù hợp hơn với môi trường phát triển hiện đại, đặc biệt là trong các dự án có yêu cầu thay đổi thường xuyên và phức tạp.
Ưu Và Nhược Điểm Của Mô Hình Agile/Scrum
Agile Manifesto mang lại một loạt các ưu điểm và cũng đồng thời gặp phải một số giới hạn. Dưới đây là tổng quan về các điểm mạnh và hạn chế của Agile Manifesto:
Ưu điểm của Agile Manifesto:
- Tập trung vào giá trị khách hàng: Agile Manifesto đặt sự hài lòng của khách hàng lên hàng đầu bằng cách liên tục cung cấp các sản phẩm và dịch vụ có giá trị cho khách hàng.
- Linh hoạt và thích ứng: Agile Manifesto thúc đẩy sự linh hoạt và thích ứng nhanh chóng với thay đổi, giúp đội ngũ phản ứng linh hoạt với yêu cầu mới.
- Sự tham gia của khách hàng: Khách hàng được khuyến khích tham gia vào quá trình phát triển sản phẩm, từ việc đưa ra phản hồi cho đến việc tham gia vào lập kế hoạch và ưu tiên.
- Tạo động lực cho đội ngũ: Agile Manifesto tạo điều kiện cho việc tự tổ chức và trách nhiệm cá nhân trong đội ngũ, giúp tăng cường hiệu suất làm việc và sự cam kết đến mục tiêu chung.
- Tăng cường hiệu quả: Qua việc chia nhỏ dự án thành các phần nhỏ và thực hiện kiểm tra thường xuyên, Agile giúp giảm thiểu rủi ro và tăng cường hiệu quả trong quá trình triển khai.
- Phản hồi định kỳ: Agile thúc đẩy việc có phản hồi định kỳ giữa các sprint, giúp đội ngũ điều chỉnh và cải thiện liên tục quá trình làm việc.
- Tính sáng tạo: Agile khuyến khích việc tìm kiếm và thử nghiệm các giải pháp sáng tạo, giúp nâng cao chất lượng và hiệu suất sản phẩm.
- Tập trung vào sản phẩm hoạt động: Agile Manifesto đặt sự chú ý chính vào việc cung cấp sản phẩm hoạt động thay vì tập trung quá nhiều vào tài liệu và kế hoạch.
- Sự thay đổi là bình thường: Agile chấp nhận rằng yêu cầu có thể thay đổi, và đặt sự linh hoạt cao hơn việc tuân theo kế hoạch ban đầu.
- Tăng cường sự sẵn sàng đối mặt với rủi ro: Agile khuyến khích việc đối mặt với rủi ro và đề xuất giải pháp một cách chủ động, giúp tăng cường sự sẵn sàng của tổ chức.
- Tăng cường sự chủ động: Agile tạo điều kiện cho sự tự quản lý và sự đề xuất sáng tạo từ đội ngũ, giúp nâng cao sự cam kết và hiệu suất làm việc.
- Định hướng vào sản phẩm và giá trị: Agile Manifesto nhấn mạnh vào việc cung cấp giá trị thực sự cho khách hàng thông qua việc tạo ra các sản phẩm hoạt động và có giá trị cao.
Giới hạn của Agile Manifesto:
- Khó khăn trong triển khai ở quy mô lớn: Agile có thể gặp khó khăn khi triển khai trong các tổ chức lớn với cấu trúc phức tạp và quy trình công nghiệp cứng nhắc.
- Yêu cầu sự cam kết cao: Agile đòi hỏi sự cam kết mạnh mẽ từ tất cả các thành viên trong đội ngũ, và việc này không phải lúc nào cũng dễ dàng đạt được.
- Khả năng quản lý yêu cầu thay đổi: Agile đòi hỏi khả năng linh hoạt và thích ứng cao để xử lý các yêu cầu thay đổi liên tục từ khách hàng.
- Đòi hỏi kỹ năng giao tiếp và hợp tác: Agile đòi hỏi sự giao tiếp và hợp tác tốt giữa các thành viên trong đội ngũ để đảm bảo rằng mọi người đều đồng thuận và hướng tới mục tiêu chung.
- Khó khăn trong việc đo lường hiệu suất: Agile tập trung vào việc cung cấp giá trị cho khách hàng, nhưng đo lường hiệu suất có thể trở nên phức tạp do sự thay đổi liên tục và ưu tiên khách hàng.
- Yêu cầu sự tự quản lý cao: Agile đòi hỏi sự tự quản lý và tự chủ từ các thành viên trong đội ngũ, điều này có thể không phù hợp với mọi người hoặc môi trường làm việc.