Bài viết sẽ giúp anh chị trả lời được các câu hỏi sau:
1) Agile là gì?
2) Agile Software Development là gì?
3) Tuyên ngôn Agile là gì?
4) Agile có bao nhiêu nguyên lý?
5) Để triển khai Agile thì cần theo hướng dẫn thực hành nào?
6) Scrum là gì?
7) Scrum Framework là gì?
8) Các vai trò của dự án Scrum gồm những ai?
9) Giá trị mà Scrum có thể mang lại là gì?
Nào chúng ta bắt đầu nhé!
Agile đã và đang được ứng dụng vào chu trình phát triển phần mềm một cách rộng rãi ở các doanh nghiệp Việt. Điển hình nhất là các doanh nghiệp hoạt động trong lĩnh vực sản xuất phần mềm, gia công phần mềm (software outsourcing), các startup về công nghệ, các ngân hàng và công ty bảo hiểm. Agile đã giúp nhiều doanh nghiệp mang lại giá trị nhất định giúp cho đội dự án chuyển giao phần mềm nhanh hơn, sản phẩm phần mềm chất lượng hơn, đội ngũ trưởng thành nhanh hơn và ít rủi ro hơn so với cách quản trị dự án truyền thống. Điều mà các tập đoàn hàng đầu trên thế giới đã thực hành và khai thác tính nhanh nhẹn của Agile gần 20 năm qua.
Với những giá trị ấy mà nhiều doanh nghiệp phần mềm Việt, hoặc bộ phân CNTT của các doanh nghiệp đua nhau triển khai Agile. Các nhà tuyển dụng trên thị trường Việt và khu vực ưu tiên tuyển những ứng viên có kiến thức và kinh nghiệm về Agile Scrum.
Thú vị hơn là có nhiều bạn muốn chuyển công việc sang môi trường có ứng dụng Agile, muốn trang bị kiến thức Agile Scrum và có những câu hỏi gởi về cho đội ngũ tư vấn đào tạo của Apex Global. Đội tư vấn chúng tôi xin trích vài câu hỏi cơ bản nhất cho anh chị quan tâm về Agile.
1) Agile là gì?
“ The ability to create and respond to change in order to succeed in an uncertain and turbulent environment.” Nguồn từ agilealliance.org. Tạm dịch là “Là khả năng tạo ra và đáp ứng cho sự thay đổi để thành công trong một môi trường không chắc chắn và hỗn loạn.”
2) Agile Software Development là gì?
“Agile Software Development is an umbrella term for a set of methods and practices based on the values and principles expressed in the Agile Manifesto.
Solutions evolve through collaboration between self-organizing, cross-functional teams utilizing the appropriate practices for their context.” Nguồn từ agilealliance.org. Tạm dịch là:
Agile Software Develoopment là một thuật ngữ dùng để mô tả một tập hợp các phương thức và thực hành dựa trên các giá trị và các nguyên lý được nêu ra trong tuyên ngôn Agile.
Các phương pháp tiến triển thông qua sự kết hợp của team tự quản và team xuyên chức năng bằng cách sử dụng các phương pháp phù hợp cho bối cảnh của họ.
Agile Software Development nhấn mạnh:
- Sự làm việc chặt chẽ giữa đội kỹ thuật và những chuyên gia kinh doanh;
- Sự giao tiếp mặt-đối-mặt (như là một cách hiệu quản hơn viết tài liệu);
- Chuyển giao sản phẩm sử dụng được mang lại giá trị kinh doanh một cách định kỳ;
- Đội tự quản một cách chặt chẽ;
- Và là những cách để loại bỏ những đoạn mã dư thừa;
3) Tuyên ngôn Agile là gì?
“We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value”. Tạm dịch là: “Chúng tôi khám phá những cách tốt hơn để phát triển phần mềm bằng cách thực hiện chúng và giúp đỡ những người khác thực hiện chúng. Thông qua công việc này chúng tôi mang đến ra gía trị”
Mà ở đó chứa các giá trị:
- Individuals and interactions over processes and tools. Tạm dịch là nỗ lực của các cá nhân và sự tương trợ của team tốt hơn các quy trình và công cụ kiểm soát.
- Working software over comprehensive documentation. Tạm dịch là sản phẩm phần mềm sử dụng được tốt hơn là sự đầy đủ của tài liệu.
- Customer collaboration over contract negotiation. Tạm dịch là khách hàng tương tác sẽ tốt hơn là đàm phán hợp đồng.
- Responding to change over following a plan. Tạm dịch là đáp ứng cho sự thay đổi tốt hơn là thực hiện theo kế hoạch.
4) Agile có bao nhiêu nguyên lý?
Đằng sau tuyên ngôn Agile là 12 nguyên lý (Agile Principles) hướng dẫn thực hành:
- Our highest priority is to satisfy the customer through early and continuous delivery of valuable software. Có thể tạm hiểu là: Ưu tiên cao nhất của đội phát triển là thoả mãn khách hàng thông sự chuyển giao sớm và liên tục phần mềm có giá trị.
- Welcome changing requirements, even late in development. Agile processes leading the change for the customer’s competitive advantage. Có thể tạm hiểu là: Chào đón sự thay đổi yêu cầu, thậm chí giai đoạn cuối của chu trình phát triển. Các quy trình Agile dẫn dắt sự thay đổi nhằm nâng cao lợi thế cạnh tranh của khách hàng.
- Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale. Có thể tạm hiểu: Chuyển giao phần mềm sử dụng được định kỳ, từ một vài tuần đến một vài tháng, với một thời gian ngắn hơn.
- Business people and developers must work together daily throughout the project. Có thể tạm hiểu là: Người làm kinh doanh và người người làm kỹ thuật phải làm việc cùng nhau hàng ngày trong suốt dự án.
- Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done. Có thể tạm hiểu là: Xây dựng các dự án xoay quanh các cá nhân có động lực. Tạo cho họ một môi trường và hỗ trợ họ những thứ cần thiết và tin tưởng họ để công việc được hoàn thành.
- The most efficient and effective method of conveying information to and within a development team is face-to-face conversation. Có thể tạm hiểu là: Phương pháp hiệu quả nhất là truyền tải thông tin đến vào bên trong đội phát triển là hội thoại mặt-đối-mặt.
- Working software is the primary measure of progress. Có thể tạm hiểu là: Phần mềm làm việc là thước đo của quá trình.
- Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely. Có thể tạm hiểu là: Các quy trình Agile thúc đẩy sự phát triển bền vững. Các nhà tài trợ cho dự án, các nhà phát triển và người dùng cuối có thể duy trì một tốc độ vô hạn định.
- Continuous attention to technical excellence and good design enhances agility. Có thể tạm hiểu là: Sự chú ý liên tục đến kỹ thuật xuất sắc và sự thiết kế tốt giúp nâng cao tính linh hoạt.
- Simplicity-the art of maximizing the amount of work not done-is essential. Có thể tạm hiểu là: Tính đơn giản – nghệ thuật tối đa hoá khối lượng công vệc chưa hoàn thành – là điều thiết yếu.
- The best architectures, requirements, and designs emerge from self-organizing teams. Có thể tạm hiểu là: Kiến trúc tốt nhất, yêu cầu tốt nhất và thiết kế tốt nhất được tạo ra từ các đội tự quản.
- At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly. Có thể tạm hiểu là: Định kỳ ở thời điểm kết thúc đoạn lặp, đội xem lại làm thế nào để hiệu quả hơn, sau đó đồng thuận và điều chỉnh hành vi của mình sao cho phù hợp
5) Để triển khai Agile thì cần theo hướng dẫn thực hành nào?
Có nhiều hướng dẫn để thực hành Agile. Tuỳ vào đặc thù dự án mà ta chọn cách tiếp cận phù hợp. Theo tổ chức Chaotics thì có gần 50% dự án đang triển khai theo Scrum. Bên dưới là danh sách các hướng dẫn thực hành Agile trong dự án phần mềm.
- Scrum
- Extreme Programming (XP)
- Adaptive Software Development (ASD)
- Dynamic System Development Method (DSDM)
- Feature Driven Development (FDD)
- Lean Software Development
- Lean/Kanban
6) Scrum là gì?
Scrum là một hướng dẫn phát triển những sản phẩm và hệ thống phức tạp. Nó là căn cứ trên quy trình thực nghiệm và lý thuyết kiểm soát.
Scrum sử dụng một cách tiếp cận “iterative và incremental” để tối đa hoá khả năng dự báo và kiểm soát rủi ro.
Bạn có thể tham khảo hướng dẫn thực hành Scrum ở ScrumGuide.org (tốt nhất bạn đọc bản tiếng anh vì tiếng Việt chưa có những từ tương ứng để dịch, nhiều khi dịch gây ra sự hiểu sai).
7) Scrum Framework là gì?
Scrum là một bộ hướng dẫn quản lý để phát triển sản phẩm bằng việc sử dụng một hoặc nhiều team cross-functional, self-organizing khoảng 3 đến 9 thành viên. Bộ hướng dẫn này cung cấp một cấu trúc các vai trò, các sự kiện, các quy tắc và công cụ, dụng cụ để triển khai.
Các đội có trách nhiệm tạo ra các quy trình và thích ứng với các quy trình ấy trong hướng dẫn Scrum. Scrum sử dụng các đoạn lặp có độ dài cố định và gọi là Sprint. Mỗi Sprint thường diễn ra trong 2 tuần hoặc 30 ngày. Các đội Scrum cố gắng xây dựng một sản phẩm có khả năng đắp thêm sản phẩm có thể chuyển giao được ở mỗi đoạn lặp.
Scrum Framework được sử dụng nhiều bởi tính đơn giản trong khâu triển khai và chặt chẽ của nó trong hướng dẫn thực hành.
Scrum được thiết kế để bổ sung sức mạnh, tập trung và minh bạch để lập kế hoạch, phát triển sản phẩm và triển khai. Scrum sẽ là:
- Tăng tốc độ phát triển sản phẩm
- Cân chỉnh các mục tiêu cá nhân và các mục tiêu tổ chức
- Tạo ra một văn hoá làm việc tốt để điều hướng năng suất lao động
- Hỗ trợ những ai liên quan cùng tạo giá trị
- Đạt được sự giao tiếp nhất quán và ổn định ở mọi cấp độ (bao gồm quản lý)
- Nâng cao sự phát triển của các thành viên và chất lượng công việc
Scrum giống như cái kiềng 3 chân:
- Adaptation: Thích ứng với các thay đổi để tìm chiến thuật cho hướng đi
- Transparency: Minh bạch hoá thông tin cho mọi cấp độ
- Inspection: Kiểm tra công việc là một bước bắt buộc để hoàn thành
Bạn có thể xem thêm thông tin ở tổ chức Scrum.org, Apex Global là đối tác đào tạo của tổ chức này.
8) Các vai trò của dự án Scrum gồm những ai?
Scrum phân định rõ 3 vai trò chính là: Product Owner, Scrum Master, và Development Team.
Vai trò Scrum Master: Là một trong ba vai trò được định nghĩa trong Scrum framework. Trách nhiệm chính của Scrum Master là đảm bảo Product Owner và Development team hiểu Scrum framework, ứng dụng được lý thuyết Scrum, thực hành thành thạo, và tuân thủ các quy tắc Scrum. Chi tiết của vai trò này ở link
Vai trò Product Owner: Là một trong ba vai trò được định nghĩa trong Agile Scrum. Trách nhiệm chính của Product Owner là làm sao để tối ưu hoá giá trị của sản phẩm thông qua việc quản lý product backlog. Chi tiết của vai trò này ở link
Vai trò Development Team: Đội phát triển (Development team) là một trong ba vai trò trong dự án Agile Scrum. Đội phát triển bao gồm các thành viên chuyên nghiệp làm việc cùng nhau để tạo ra sản phẩm có khả năng phát hành ở cuối mỗi sprint. Và giúp khách hàng và người dùng đạt giá trị thông qua phần mềm sớm hơn. Chiết tiết của vai trò này ở link
(Hình ảnh ở lớp đào tạo Agile Project Management Professional của Apex Global)
9) Giá trị mà Scrum có thể mang lại là gì?
Với một số tổ chức triển khai thực hành Scrum một cách đúng đắn thì tổ chức ấy có thể đạt được một số giá trị mà Scrum mang lại như:
- Commitment – Sự cam kết: Scrum yêu cầu bạn đưa ra cam kết thực hiện mục tiêu và sau bạn có thẩm quyền để đáp ứng các cam kết đó.
- Focus – Tập trung: Scrum nhấn mạnh rằng bạn tập trung tất cả nỗs lực của bạn để hoàn thành cam kết và lờ đi những thứ khác
- Openness – Sự cởi mởi: Sự cởi mở được thúc đẩy bởi thực tế tất cả mọi thứ trong dự án Scrum đều có thể nhìn thấy bởi mọi người.
- Courage – Can đảm: Cuối cùng, Scrum yêu cầu bạn có sự can đảm để đưa ra cam kết, hành động, cởi mở và tôn trọng.
Sẽ khó mà nói cho bạn hết được sâu xa về Agile, Agile Project Management, Scrum. Nhưng đội tư vấn học thuật của chúng tôi tin đây là những thông tin cần thiết cho quản lý CNTT, quản lý phát triển phần mềm hiểu khái quát về Agile. Bên cạnh đó cũng giúp cho các anh chị muốn chuyển công việc đến môi trường có triển khai Agile biết khái quát mà trang bị kiến thức, kỹ năng cho nghề nghiệp của mình. Đội ngũ chuyên gia của Apex Global còn chia sẻ hơn 40 bài viết chuyên sâu khác về Agile. Anh chị xem ở Tag: Agile Project Management
By APEX Learning Consulting Team