Copy from http://vietgamedev.net/blog/50/scrum-framework/
1. Mở đầu:
Mình được nghe khá là nhiều người nhắc đến Scrum và khả năng tuyệt vời đối với việc quản lý cho những dự án phức tạp, hoặc là có độ thay đổi cao.
Thoạt nghe cũng rất lôi cuốn, nhưng vấn đề cần lưu ý, có rất nhiều doanh nghiệp cố gắng áp dụng mô hình này, nhưng lại không hoàn toàn kiểm soát hay hiểu được những yếu tố cơ bản để theo đúng định nghĩa của Scrum, nên có rất nhiều người tự hỏi, tại sao tôi không áp dụng được mô hình này vào công ty tôi . Và theo như mình được biết: có rất nhiều doanh nghiệp cố gắng áp dụng mô hình này, nhưng có rất ít đơn vị ; thành công, mà phần lớn theo mình là không tuân theo những quy định của Scrum.
Qua bài viết này, mình hi vọng sẽ chuyển đến các bạn một số hiểu biết của mình về Scrum và thảo luận thêm để mở rộng ý tưởng.

- Scrum là gì ?
Định nghĩa đầu tiên trong đầu của bạn, nếu không tra trên Google thì Scrum là gì? Dành khoảng 5 phút để viết và tổng hợp lại ý kiến của mình trước khi nhìn vào câu trả lời phía bên dưới nhé.
Scrum(n): A framework within which people can address complex problems, and productively and creatively deliver products of the highest possible value.
Scrum: là một frame workd qua đó người sử dụng nó có thể giải quyết những vấn đề phức tạp, và chuyển giao tốt nhất sản phẩm một cách có hiệu quả và sáng tạo.
Dành một tí thời gian để đọc về scrum guide ở trang web chính thức:http://www.scrum.org/scrumguides/
Điều bạn nên lưu ý về Scrum:
- Scrum là một framework đơn giản và rất nhẹ ( lightweight )
- Rất đơn giản để hiểu
- Rất phức tạp để làm chủ nó
Theo những điều phía trên thì chúng ta cần phải lưu ý: Scrum là một framework, không phải là một phương pháp luận ( methodology), và nó áp dụng cho những dự án phức tạp ( complex ). Chi tiết cho việc định nghĩa framework và như thế nào là phức tạp sẽ được đề cập phía dưới.
Scrum bắt đầu từ đâu ?
Bạn biết về môn thể thao gọi là Rugby? Nếu không thì xem tại link này:http://vi.wikipedia.org/wiki/B%C3%B3ng_rugby
Trong môn thể thao này, khái niệm scrum được định nghĩa: là việc trái bóng được chuyền giữa những thành viên trong team khi tất cả mọi người cùng di chuyển trong sân đấu ( the ball gets passed within the team as it moves as a unit up the field ).Chi tiết hơn:http://en.wikipedia.org/wiki/Scrum_ (rugby)
Như vậy: scrum là mô hình làm việc nhóm, mà trong đó tất cả mọi người đều như một, mục tiêu chính là một team sẽ cùng di chuyển để đạt được mục tiêu chính là đưa bóng tới khung thành của đối phương.
Điều gì tạo nên Scrum ?
Scrum được tạo thành bởi những yếu tố sau:
- Cho việc phát triển sản phẩm mới, phát triển game
- Lean thinking
- Iterative, Incremental development practices
- Smalltalk Engineering Frameworks
Tổng hợp những yếu tố đó lại, bạn sẽ có được Scrum
Scrum được dùng trong ngữ cảnh nào?
Với những điều trên, Scrum được áp dụng khi nào? Câu trả lời là rất nhiều:
- Quản lý công việc của: team nhỏ, tổ chức lớn và tất cả những đơn vị khác với quy mô giữa nhỏ và lớn.
- Phát triển phần mềm
- Quản lý những dự án có giá cố định
- Hoàn thành những dự án theo chuẩn quy định theo từng ngành nghề
- Quản lý những nhóm phát triển khác ngoài phạm vi phần mềm
- Xây dựng website lớn
- Quản lý dự án game
- Nhằm đạt được và duy trì chuẩn CMMI level 3,4,5.
Như vậy, Scrum không chỉ dùng cho việc phát triển game nói riêng hay phần mềm nói chung, nó được áp dụng cho tất cả mọi ngành nghề với nhiều mục đích khác nhau.
Nói khác đi, đây là một framework và qua đó bạn sử dụng nó như thế nào tùy thuộc vào mục tiêu của mình. Sẽ không có những bước cụ thể như: Step 1 bạn phải làm gì, Step 2 bạn phải làm gì và với những document đầy chi tiết, vì đó là phương pháp luận chứ không phải framework.
Lưu ý: Scrum là framework
, do vậy bạn phải tuân theo những nguyên lý và những yếu tố cơ bản để có thể áp dụng đúng.

2. Nguyên lý và những yếu tố cần:
Đầu tiên, chúng ta có thể đến 1 ví dụ như sau:
Nếu với giả thiết là bạn đang điều hành 1 tòa nhà, và bạn phải giữ cho nhiệt độ của phòng server ở mức 20 độ trong suốt ngày, và mỗi buổi sang lúc 8h, bạn phải canh chỉnh nhiệt độ bao gồm máy điều hòa, hệ thống thông gió, rèm cửa… như vậy thì những yếu tố nào bạn phải cân nhắc để làm được điều này. Đối với giả thiết trên, dành 1 chút thời gian trước khi xem tiếp. Để làm được điều đó, bạn phải cân nhắc nhiều yếu tố như: nhiệt độ ngoài trời, số người trong phòng, vật liệu của bức tường và vân vân, nhưng mà sẽ có 1 giải pháp rất đơn giản hơn:
- Bạn inspect nhiệt độ phòng thường xuyên
- Bạn adapt nhiệt độ phòng sao cho đúng với yêu cầu phía trên
- Và bạn cung cấp transparency ( yêu cầu rõ ràng và tất cả mọi người đều hiểu nó như nhau) để nhiệt độ phòng được đo đúng – cứ hình dung nếu mọi người đem nhiệt kế và thay vì để chính giữa phòng, lại để gần lỗ thoát hơi của server, như vậy thì sẽ không thể nào đo được nhiệt độ chính xác. Vì vậy transparency rất quan trọng
Vì sao chúng ta lại nói về ví dụ trên, nó chính là nguyên lý của Scrum: inspect, adapt dựa trên transparency. Và vì sao lại như vậy, hãy nhìn vào biểu đồ sau của việc phát triển phần mềm:
Với định nghĩa đầu tiên về scrum phía trên, scrum là framework để giải quyết những vấn đề phức tạp ( complex ) và định nghĩa của phức tạp là như phía hình trên.
Qua đó ta thấy:
Simple: tất cả mọi thứ đều được biết ( về cả agreement và cả công nghệ làm sao để làm nó )
Complicated: điều chúng ta biết nhiều hơn điều chúng ta không biết
Complex: điều chúng ta không biết nhiều hơn điều chúng ta biết
Anarchy: hỗn loạn, chaos, chúng ta biết rất ít điều chúng ta đang làm
Như vậy, Scrum được apply vào trường hợp complex phía trên, và chúng ta phải apply nó với mô hình quản lý như thế nào? Chúng ta có 2 mô hình như sau
Defined ( định nghĩa sẵn )
|
Empirical ( kinh nghiệm)
|
Công việc và kết quả có thể biết được trước khi bắt đầu
|
Yêu cầu cần sự kiểm tra ( inspection) và chỉnh sửa ( adaptation ) khi công việc diễn ra
|
Những tập hợp về inputs và outputs trong quá trình phát triển được định nghĩa rõ ràng
|
Quy trình được chấp nhật là không được đình nghĩa hoàn hảo
|
Phát triển theo những bước được định nghĩa phía trên để đi đến được kết quả xác định
|
Kết quản thường khó dự đoán và không có tính chất lặp lại
|
Scrum là mô hình quản lý dựa trên kinh nghiệm ( empirical ), và chúng ta sử dụng mô hình này khi:
Chúng ta không biết chính xác kết quả của đầu ra của sản phẩm khi chúng ta bắt đầu
Chúng ta muốn giữ chất lượng của sản phẩm cao và luôn hướng theo kết quả chúng ta mong muốn
Các bước phát triển của sản phẩm không phải lúc nào cũng lặp lại
Scrum đem lại khả năng thành công với dự án có độ phức tạp cao dựa trên sự linh động thay đổi để thích ứng với những trường hợp không được dự đoán trước.
So sánh 2 phương pháp quản lý dự án đại diên cho 2 mô hình làm việc phía trên – defined và empirical, chúng ta có :
Waterfall
|
Scrum
|
Dự án được plan từ lúc bắt đầu, bao gồm tất cả các yêu cầu, ngay cả những yêu cầu không quan trọng
|
Là những bước lặp ( iteration) mà qua mỗi lần sẽ hoàn thành sản phẩm có giá trị và có khả năng sử dụng được cao.
|
Không có sản phẩm hoàn thành cho đến khi dự án kết thúc
|
Công việc được làm bởi những team tự quản lý nội bộ ( self-organizing ) và có những chuyên môn khác nhau ( cross-functional ) bao.
|
Qua đây ta có thể thấy, Scrum đưa lại sản phẩm nhanh hơn waterfall và khả năng thay đổi , giá trị sản phẩm và tình trạng của sản phẩm đều cao hơn waterfall với rủi ro ít hơn
Tổng kết lại, ta có các yếu tố cần của Scrum:
Tuy nhiên, chúng ta cần phải thận trọng khi chọn mô hình quản lý giữa defined hay empirical, có thể tham khảo bảng dưới đây:
Project Type | Characteristics | Leader’s Job |
Anarchic | High Turbulence No clear cause and effect Unknowables Many decisions and no time | Immediate action to re-establish order Prioritize and select actionable work Look for what works rather than perfection Act, sense, respond |
Complex | More unpredictability than predictability Emergent answers Many competing ideas | Create bounded environments for action Increase levels of interactions and communication Servant leadership Generate ideas Probe, sense, respond |
Complicated | More predictability than unpredictability Fact-based management Experts work out wrinkles | Utilize experts to gain insights Set metrics to gain control Sense, analyze, respond Command and control |
Simple | Repeating patterns and consistent events Clear cause and effect Well establish knowns Fact based management | Use best practices Extensive communication not necessary Establish patterns and optimize to them Command and control |
No comments:
Post a Comment