Agile là gì? Scrum là gì? Tất tần tật những điều cần biết về Agile và Scrum bạn cần biết

0
26

Agile là gì? Scrum là gì? Nhắc đến Agile hay Scrum là nhắc đến phương thức phát triển phần mềm theo quy chuẩn. Bạn đang là một thành viên  trong dự án phát triển hay quản lý nào đó bạn đang rất muốn biết về Agile hay Scrum. Bạn đã từng nghe đến quản lý dự án theo nguyên tắc Agile vì nó đang được quan tâm và dường như nổi lên như một sự thay thế tối ưu cho các mô hình quản lý dự án truyền thống.

Tất cả những gì chúng tôi chia sẻ ở dưới đây sẽ cho bạn câu trả lời về những mối quan tâm của bạn về Agile hay Scrum.

Agile là gì?

Agile là gì?

Agile là viết tắt của Agile Software Development là phương thức phát triển phần mềm linh hoạt, được ứng dụng trong quy trình phát triển phần mềm với mục tiêu là đưa sản phẩm đến tay người dùng càng nhanh càng tốt.

Định nghĩa Agile như một phương pháp nhưng thực chất, Agile giống như một phương pháp luận, một triết lý dựa trên hơn nguyên tắc phân đoạn vòng lặp (iterative) và tăng trưởng (incremental).

Hiện tại triết lí Agile đã vượt khỏi khu vực truyền thống phát triển phần mềm để đóng góp sự thay đổi trong cách thức làm việc, quản lý, sản xuất ở các ngành như sản xuất, dịch vụ, sales, marketing, giáo dục… và trở thành một phương thức quản lý dự án phổ biến nhất hiện nay với nhiều đại diện được gọi là các phương pháp “họ Agile”.

Agile là một hướng tiếp cận cụ thể cho việc quản lý dự án phần mềm gồm một quá trình làm việc tương tác và tích hợp để có thể đưa sản phẩm đến tay người dùng càng nhanh càng tốt.

Có thể thấy những phương pháp phát triển phần mềm theo cách truyền thống ngày càng lộ ra nhiều nhược điểm, tỷ lệ các dự án thất bại nhiều hơn trong thời kỳ bùng phát của ngành công nghệ. Một số cá nhân và công ty riêng lẻ nhận ra vấn đề họ đã đưa ra các phương pháp phát triển phần mềm hiện đại hơn để thích ứng với tình hình mới phần nào giải quyết được một số vấn đề nhưng tiếp tục lại phát sinh vấn đề khác về sự cộng tác, kỹ thuật, công cụ, hướng phát triển, chia sẻ,…

04 tôn chỉ trong tuyên ngôn Agile

04 tôn chỉ cần nhớ của Agile là gì?

Năm 2001, bản tuyên ngôn Agile (Agile Manifesto) đã được thống nhất và ra đời bởi một nhóm người có uy tín trong phát triển phần mềm với 04 tôn chỉ cần thực hiện:

Cá nhân và sự tương tác hơn là quy trình và công cụ

Trọng tâm đặt lên con người, xây dựng sự tương tác và hỗ trợ giữa các thành viên trong nhóm. Những thành viên có năng lực, chịu làm việc và tương trợ nhau trong công việc sẽ mang đến thành công cho dự án

Quy trình ở đây là các thủ tục cần thiết để phát triển dự án như thiết kế, lập trình, rồi kiểm tra QA/QC. Hay việc để đưa ra một chức năng nào đó cần phải có sự đồng ý của bộ phận QA/QC. Quy trình này do mỗi công ty quy định và bắt  buộc các nhân viên khi tham gia vào dự án phải tuân thủ.

Công cụ là phần mềm được sử dụng trong dự án như: Phần mềm quản lý công việc, phần mềm quản lý source code, phần mềm quản lý lỗi,… 

Phần mềm chạy tốt hơn là tài liệu đầy đủ

Tập trung thời gian để làm ra phần mềm hoàn chỉnh đáp ứng hoàn hảo yêu cầu khách hàng. Trong một số quy trình phát triển phần mềm, việc tạo nên và cập nhật các tài liệu về sản phẩm là bắt buộc nên lập trình viên không thể hoặc không đồng ý tiến hành công việc nếu không có tài liệu đặc tả về yêu cầu, thiết kế hệ thống.

Nhóm kiểm thử yêu cầu tài liệu về sản phẩm để có thể viết trường hợp kiểm thử và kiểm thử được. Nhóm QA cần tài liệu phải được viết trước khi sản phẩm được giao cho khách hàng nếu không thì không đủ điều kiện, chuẩn để giao sản phẩm cho khách hàng. Trong khi việc viết tài liệu rất mất nhiều thời gian, rất chán. Ở đây là tại sao phải tập trung quá nhiều cho việc không cần thiết mà không dành thời gian đó để trao đổi để hiểu thêm về công việc phải làm để đúc kết và chỉ viết những gì thiết yếu mà mọi người cần đọc.

Cộng tác với khách hàng hơn là đàm phán hợp đồng

Hiểu được khách hàng cần gì để có thể tư vấn và điều chỉnh sản phẩm chứ không chỉ dựa vào các điều khoản trong hợp đồng

Cách duy nhất để có thể làm việc tốt là phải cộng tác với khách hàng để hiểu được khách hàng muốn gì và cần gì vì khách hàng có nhiều dạng khác nhau, không ai giống ai về nhu cầu.

Trao đổi và thảo luận với khách hàng về sự cần thiết có hay không có một chức năng trong sản phẩm, để tham khảo và quyết định là có nên làm hay không.

Phản hồi với sự thay đổi hơn là bám theo kế hoạch

Agile khuyến khích thích nghi với sự thay đổi có thể là thay đổi về công nghệ, nhân sự, deadline,… hầu hết các dự án đều có sự thay đổi điều chỉnh khi triển khai, mặc dù kế hoạch đã được định ra rõ ràng từ đầu.

Agile không khuyến khích cho sự thay đổi nhưng khuyến khích chúng ta tập thích nghi với thay đổi.

Các phương pháp Agile

Agile không định nghĩa ra một phương pháp cụ thể nhưng lại có nhiều phương pháp khác nhau thỏa mãn và hướng theo các tiêu chí của nó người ta gọi đó là “họ Agile”.

Thống kê có khoảng 13 phương pháp họ Agile, phần lớn các công ty hiện nay đã sử dụng Scrum như một cách tiếp cận cơ bản. Nhiều công ty thì đã kết hợp các phương pháp lại với nhau. Các công ty có thể vừa dùng Waterfall, vừa sử dụng Scrum trong hoạt động của mình.

13 phương pháp Agile hiện đang sử dụng

Áp dụng Agile trong mô hình quản lý dự án như thế nào?

Các phương pháp truyền thống như mô hình Waterfall thường yêu cầu các nhóm dự án phải đáp ứng và thảo luận các mục tiêu dự án đầy đủ trong suốt mỗi giai đoạn. Agile thì sử dụng các nhóm nhỏ hơn tập trung để đạt những mục tiêu cụ thể hơn, giúp dễ dàng thực hiện những thay đổi nhanh chóng theo yêu cầu, cho phép các nhóm hoạt động nhanh nhẹn, hiệu quả hơn và tăng khả năng đáp ứng thành công mục tiêu của khách hàng, đặc biệt khi nhu cầu của khách hàng thay đổi.

– Một quy trình Agile hoàn chỉnh sẽ bao gồm các giai đoạn phát triển của sản phẩm được chia nhỏ ra thành những phần tăng trưởng cụ thể mà người dùng có thể tương tác được. Nhờ đó sản phẩm sẽ có được phản hồi cần thiết để tránh khỏi những vấn đề nghiêm trọng và được cải tiến tốt hơn.

Quy trình quản lý sản phẩm có tính chất lặp lại giúp cho cả nhóm có thể chuyển sang một phần tăng trưởng khác trong khi những vấn đề của phần tăng trưởng hiện tại đang được giải quyết.

Thách thức khi áp dụng Agile là trên thực tế các đội dự án muốn áp dụng Agile để né tránh hệ thống quy trình phức tạp của doanh nghiệp hay khối lượng tài liệu (document) khổng lồ của dự án. Mặc dù Agile có vẻ đơn giản để hiểu, nhưng rất khó để thành thạo, đặc biệt trong một doanh nghiệp lớn. Agile tập trung nhiều vào yếu tố con người bao gồm văn hóa, giao tiếp, hợp tác phối hợp giữa các bên liên quan, khả năng làm việc nhóm mà thay đổi văn hóa, hành vi con người thì chưa bao giờ là dễ dàng.

Chỉ có người có tư duy tốt, hiểu sâu về Agile, có nhiều kinh nghiệm và kỹ năng huấn luyện thì mới giúp doanh nghiệp hay đội dự án tiếp cận nhanh nhất với Agile.

12 nguyên tắc quan trọng trong Agile

– Đáp ứng toàn diện nhu cầu khách hàng thông qua việc giao hàng sớm và sản phẩm có giá trị.

– Thay đổi yêu cầu được chào đón, thậm chí có thể là rất muộn trong quá trình phát triển.

– Giao phần mềm chạy được cho khách hàng một cách thường xuyên.

– Nhà kinh doanh và các kỹ sư phần mềm luôn cần làm việc, phối hợp cùng nhau trong suốt dự án.

– Xây dựng dự án xung quanh các cá nhân có động lực. Cung cấp sự hỗ trợ cần thiết, môi trường làm việc và niềm tin để hoàn thành công việc.

– Trao đổi trực tiếp là cách truyền đạt thông tin hiệu quả nhất.

– Thước đo của tiến độ là phần mềm chạy tốt.

– Phát triển liên tục và bền vững.

– Cải tiến sự linh hoạt bằng cách quan tâm đến kỹ thuật và thiết kế.

– Nghệ thuật tối đa hóa lượng công việc chưa xong – Sự đơn giản là cần thiết.

– Nhóm tự tổ chức

– Thích ứng thường xuyên với những thay đổi.

Đặc trưng của Agile

Đặc trưng của Agile là gì?

– Tính lặp (Iterative): Dự án sẽ được thực hiện trong các phân đoạn lặp đi lặp lại (Iteration hoặc Sprint), thường có khung thời gian ngắn từ 1 – 4 tuần. Trong mỗi phân đoạn, nhóm phát triển thực hiện đầy đủ các công việc cần thiết: lập kế hoạch, phân tích yêu cầu, thiết kế, triển khai, kiểm thử để cho ra các phần nhỏ của sản phẩm.

– Tính tăng trưởng và tiến hóa (Incremental and Evolutionary): Cuối các phân đoạn, nhóm cho ra các phần nhỏ của sản phẩm cuối cùng, thường là đầy đủ, có khả năng chạy tốt, được kiểm thử cẩn thận và có thể sử dụng. Tiếp theo thời gian sau đó, phân đoạn này tiếp nối phân đoạn kia, các phần chạy được này sẽ được tích lũy, lớn dần lên cho tới khi toàn bộ yêu cầu của khách hàng được thỏa mãn.

– Tính thích nghi (adaptive): Các phân đoạn chỉ kéo dài trong một khoảng thời gian ngắn, việc lập kế hoạch được điều chỉnh liên tục, vì vậy mà các thay đổi trong quá trình phát triển như yêu cầu thay đổi, thay đổi công nghệ, thay đổi định hướng về mục tiêu,… đều có thể được đáp ứng theo cách thích hợp.

– Nhóm tự tổ chức và liên chức năng: Các cấu trúc nhóm này tự phân công công việc mà không dựa trên các mô tả cứng về chức danh hay làm việc dựa trên một sự phân cấp rõ ràng trong tổ chức. Nhóm tự tổ chức đủ các kỹ năng cần thiết để có thể được trao quyền tự ra quyết định, tự quản lý và tổ chức công việc của mình để đạt được hiệu quả cao nhất.

– Quản lý tiến trình thực nghiệm (Empirical Process Control): Các nhóm Agile ra các quyết định dựa trên các dữ liệu thực tiễn, chứ không  tính toán lý thuyết hay các tiền giả định. Agile rút ngắn phản hồi để dễ dàng thích nghi và gia tăng tính linh hoạt nhờ đó có thể kiểm soát được tiến trình, và nâng cao năng suất lao động.

– Giao tiếp trực diện (face-to-face communication): Agile không phản đối việc tài liệu hóa, nhưng có đánh giá cao hơn việc giao tiếp trực diện thay vì thông qua giấy tờ. Agile khuyến khích nhóm phát triển trực tiếp nói chuyện để hiểu rõ hơn về cái khách hàng thực sự cần. Trong cuộc giao tiếp giữa nội bộ nhóm, Agile khuyến khích trực tiếp trao đổi và thống nhất với nhau về thiết kế của hệ thống và cùng nhau triển khai thành các chức năng theo yêu cầu.

– Phát triển dựa trên giá trị (value-based development): Một trong các nguyên tắc cơ bản của agile là “sản phẩm chạy tốt chính là thước đo của tiến độ”. Nhóm Agile cộng tác trực tiếp và thường xuyên với khách hàng để biết những yêu cầu nào có độ ưu tiên lớn hơn, mang lại giá trị sớm nhất có thể cho dự án. 

Ưu và nhược điểm nguyên tắc Agile đem lại trong quản lý dự án

Thực hiện nguyên tắc Agile sẽ có những ưu và nhược điểm gì?

Ưu điểm mà Agile vượt bậc hơn

Agile ban đầu được tạo nên dành cho ngành công nghiệp phát triển phần mềm giúp cho việc sắp xếp và cải tiến quá trình sản xuất, các nhà phát triển có thể nhận dạng, điều chỉnh các vấn đề và khiếm khuyết một cách nhanh chóng.

Và hiện tại nó là một phương pháp thay thế cho cách tiếp cận Waterfall truyền thống, Agile cung cấp phương pháp quản lý giúp các nhóm làm việc cho ra đời một sản phẩm tốt hơn, nhanh hơn thông qua các phiên ngắn và các phiên tương tác/các sprint. Những ưu điểm của Agile là:

– Thực hiện thay đổi dễ dàng: Dự án được chia thành các phần nhỏ, riêng biệt, không phụ thuộc lẫn nhau, nên thay đổi được thực hiện rất dễ dàng, ở bất kỳ giai đoạn nào của dự án.

– Không cần phải nắm mọi thông tin ngay từ đầu: Phù hợp với đa số những dự án chưa xác định được mục tiêu cuối cùng rõ ràng, việc này không đòi hỏi trong giai đoạn đầu. 

– Bàn giao nhanh hơn: Dự án được chia nhỏ cho phép đội ngũ có thể tiến hành kiểm tra theo từng phần, xác định và sửa chữa vấn đề nhanh hơn, việc bàn giao công việc sẽ nhất quán và thành công hơn.

– Chú ý đến phản hồi của khách hàng và người dùng: Cả khách hàng và người dùng cuối đều có cơ hội để đóng góp các ý kiến và phản hồi, nên họ sẽ có ảnh hưởng một cách mạnh mẽ và tích cực tới sản phẩm cuối cùng.

– Cải tiến liên tục: Agile khuyến khích thành viên trong đội ngũ làm việc và cả khách hàng cung cấp phản hồi của mình, các giai đoạn khác nhau của sản phẩm có thể được kiểm tra và cải thiện lại nhiều lần.

Nhược điểm

– Khó lên kế hoạch dự án: Dự án chia nhỏ thành các phần khác nhau và mỗi phần lại có thời gian bàn giao riêng biệt nên khó xác định rõ ràng thời gian bàn giao sản phẩm cuối cùng.

– Bắt buộc phải hướng dẫn và đào tạo chi tiết: Agile phức tạp hơn nhiều so với phương pháp truyền thống. Người thực hiện sẽ cần phải trải qua đào tạo, hướng dẫn thì mới có thể nắm được phương pháp một cách rõ ràng, nhất là thời gian đầu.

– Ít tài liệu hướng dẫn: Agile không ngừng thay đổi nên các tài liệu thích hợp cũng thường bị bỏ qua, vì nó không xác định rõ được kỳ vọng và thành phẩm ngay từ đầu.

– Bắt buộc phải hợp tác để dự án thành công: Điều này đòi hỏi sự cam kết về thời gian từ cả hai bên trong suốt thời gian của dự án mà các cấu trúc quản lý dự án khác không yêu cầu. Phải có sự tham gia tích cực của người dùng cộng tác để nó hoạt động.

– Chi phí cao: Chi phí thực hiện theo phương pháp Agile thường cao hơn một chút so với các phương pháp phát triển khác.

Agile phù hợp với dự án như thế nào?

– Agile phù hợp với các dự án đòi hỏi sự linh hoạt, có mức độ phức tạp hoặc không chắc chắn. Như một sản phẩm hoặc dịch vụ chưa từng được nhóm xây dựng.

– Agile được sinh ra trong lĩnh vực phát triển phần mềm, nên các giai đoạn trong mô hình Agile phù hợp với phát triển và kiểm thử phần mềm. Hiện nay triết lí Agile đã vượt khỏi khu vực truyền thống của mình và đóng góp sự thay đổi trong cách thức làm việc, quản lí, sản xuất ở bất kỳ ngành công nghiệp hoặc kinh doanh nào như sản xuất, dịch vụ, sales, marketing, giáo dục và đạt được hiệu quả cao.

– Để áp dụng thành công mô hình này cần một số điều kiện tiên quyết trong tổ chức:

+ Các thành viên phối hợp, giao tiếp hiệu quả trong nội bộ. Kỹ năng giao tiếp tốt giúp nhóm làm việc thấu hiểu khách hàng, hợp tác tốt với nhau đảm bảo chất lượng và tốc độ.

+ Tính tự chủ của mỗi thành viên phải được đảm bảo để các nhóm tự quản lý có thể vận hành một cách chủ động, trơn tru.

+ Các hoạt động được module hóa thông qua những nhóm liên chức năng. Những nhóm này có khả năng làm việc với tốc độ và chất lượng cao, với khách hàng là trung tâm

Scrum là gì?

Scrum là gì? Lợi ích của Scrum mang lại là gì?

Scrum là một quy trình phát triển phần mềm theo mô hình linh hoạt, nó tuân thủ các nguyên tắc của Agile Scrum rất linh hoạt như các phương pháp Agile khác.

Nó mang lại tính thích nghi rất cao dựa trên các thông tin minh bạch hóa từ các quá trình thanh tra và làm việc, Scrum có thể phản hồi lại các thay đổi một cách tích cực, nhờ đó mang lại thành công cho dự án.

Scrum phân thành 03 vai trò:

– Product Owner: Người chịu trách nhiệm về sự thành công dự án, người định nghĩa các yêu cầu cho sản phẩm và đánh giá đầu ra cuối cùng của các nhà phát triển phần mềm.

– Scrum Master: Người đảm bảo các sprint được hoàn thành theo đúng quy trình Scrum, giúp đỡ loại bỏ các trở ngại cho đội dự án.

– Development Team: Tập hợp từ 5 đến 9 thành viên chịu trách nhiệm trực tiếp tham gia sản xuất, tùy theo quy mô của dự án để bố trí số thành viên cho phù hợp.

Ưu và nhược điểm của Scrum

Phù hợp với các yêu cầu, nghiệp vụ hay thay đổi, hoặc hệ thống nghiên cứu do làm theo từng giai đoạn ngắn ngày, có thể nhìn thấy những rủi ro hay những điểm chưa phù hợp để thay đổi.

Nhược điểm của Scrum là:

+ Thiếu sự nhấn mạnh về thiết kế và tài liệu cần thiết

+ Quy mô nhân lực thường giới hạn, có trở ngại lớn nếu nguồn nhân lực yêu cầu vượt quá con số này ví dụ trong các cuộc họp trao đổi.

+ Yêu cầu nguồn nhân lực phải có kiến thức và am hiểu về Agile

Scrum có ích gì cho phát triển phần mềm hiện nay

Scrum là phương pháp phát triển với nguyên tắc là chia phần mềm cần sản xuất ra thành các phần nhỏ lấy ý kiến khách hàng và tiến hành thay đổi cho phù hợp ngay trong quá trình phát triển để đảm bảo sản phẩm đáp ứng những gì khách hàng mong muốn.

SCRUM là một nền tảng đơn giản để phát triển phần mềm, trong đó nó quy định một số quy luật cơ bản nhằm đảm bảo tạo ra cấu trúc của nhóm dự án, giữ cho nó phát triển, sáng tạo và tạo ra sự hấp dẫn đối với những người tham gia. 

Scrum được thực hiện dựa trên đặc tính tự nhiên của người phát triển nên rất dễ hiểu, dễ áp dụng, tạo nên tính tương tác cao giữa các lập trình viên trong nhóm. Giúp họ cùng nhau tạo ra những sản phẩm tốt thay vì chịu sự áp đặt, áp lực từ bên ngoài.

Có thể hình dung lợi ích của Scrum cụ thể như:

– Cải thiện chất lượng phần mềm, dễ học và dễ sử dụng.

– Rút ngắn thời gian phát hành phần mềm, cho phép khách hàng sử dụng sản phẩm sớm hơn.

– Nâng cao tinh thần đồng đội, tối ưu hóa hiệu quả và nỗ lực của đội phát triển.

– Gia tăng tỷ suất hoàn vốn đầu tư (ROI)

– Tăng mức độ hài lòng của khách hàng

– Kiểm soát dự án tốt, cải tiến liên tục

– Giảm thiểu rủi ro khi xây dựng sản phẩm

03 giá trị cốt lõi của Scrum

– Tính minh bạch

Tính minh bạch được đề cao là giá trị cốt lõi cơ bản nhất trong Scrum. Muốn thành công với Scrum, thông tin liên quan tới quá trình phát triển phải minh bạch và thông suốt.

Các thông tin: tầm nhìn về sản phẩm, yêu cầu khách hàng, tiến độ công việc, các khúc mắc và rào cản,…. Để từ đó mọi người ở các vai trò khác nhau có đủ thông tin cần thiết để tiến hành các quyết định có giá trị để nâng cao hiệu quả công việc. Các công cụ và cuộc họp trong Scrum luôn đảm bảo thông tin được minh bạch cho các bên.

– Thanh tra

Công tác thanh tra liên tục các hoạt động trong Scrum đảm bảo cho việc làm lộ các vấn đề cũng như giải pháp để thông tin đa dạng và hữu ích đến được với các bên tham gia dự án. Truy xét kỹ càng và liên tục là cơ chế khởi đầu cho việc thích nghi và các cải tiến liên tục trong Scrum.

– Thích nghi

Scrum rất linh hoạt như các phương pháp phát triển linh hoạt khác. Nhờ đó nó mang lại tính thích nghi rất cao. Dựa trên các thông tin minh bạch hóa từ các quá trình thanh tra và làm việc, Scrum có thể phản hồi lại các thay đổi một cách tích cực, nhờ đó mang lại thành công cho dự án.

Những thông tin về Agile và Scrum ở trên hy vọng đã có thể giúp bạn có sự hiểu biết nhất định và hữu ích đối với bạn trong công việc. Thực sự nói về lĩnh vực phần mềm có rất nhiều thứ bạn cần hiểu cơ bản để áp dụng tốt nhất cho công việc. Chỉ cần biết sử dụng nó lợi ích mà nó mang lại là rất lớn. Agile cũng vậy, tuy trông nó đơn giản nhưng thực sự áp dụng là điều rất khó.