Lập trình phần mềm là một trò game cộng tác

Bài viết được dịch từ blog Coding Horror

Alistair Cockburn bảo vệ quan điểm rằng phát triển phần mềm là một trò game cộng tác:

Nếu phát triển phần mềm là một ngành khoa học thực sự, thì bạn có thể áp dụng các phương pháp khoa học cho nó. Nếu nó thực sự là việc xây dựng, thì bạn có thể áp dụng các kỹ thuật xây dựng. Nếu phát triển phần mềm là một vấn đề liên quan đến các mô hình sản xuất, thì bạn có thể chi tiền để phát triển các mô hình.

Tuy nhiên, nó lại không phải là cái nào trong số đó cả. Phát triển phần mềm là một trò “game”, một game về tốc độ và sự cộng tác bên trong nhóm của bạn, và cạnh tranh với những nhóm khác. Nó là một trò game tương phản với thời gian, và một trò game chia sẻ. Bạn phải dùng tiền của bạn để chiến thắng trò game đó.

Việc xem phát triển phần mềm là một trò game mang lại cho bạn những ý tưởng tốt hơn về việc nên tiêu tiền của bạn vào đâu, làm thế nào để cấu trúc các nhóm của bạn, và họ nên phân bổ các nỗ lực của họ như thế nào là hợp lý.

Liệu có phải phát triển phần mềm cũng chỉ là một trò game?Liệu có phải phát triển phần mềm cũng chỉ là một trò game?


Đó là một bài viết rất hay và đáng để suy ngẫm về những bản chất tự nhiên của phát triển phần mềm. Tôi có thể biết lý do tại sao mà Bill de hra gọi Cockburn là kẻ “giữ bí mật tốt nhất trong thế giới agile”. Tôi sẽ trích dẫn lại phần kết luận; và đề xuất bạn nên đọc toàn bộ bài viết đó để có được một sự giải thích đầy đủ về lý do đằng sau những trò chơi tương tự của Cockburn.

Mô hình game của phát triển phần mềm đã củng cố quan điểm của tôi trong thời gian gần đây, khi tôi ước lượng các dự án phát triển phần mềm trong quân đội và các dự án mã nguồn mở. Trong một số dự án phần mềm quân đội, cái chúng tôi nhìn thấy là sự chiếm ưu thế của sự nghiệp và các trò chơi mở rộng tổ chức không có hồi kết. Một điều khá rõ ràng đó là việc hoàn thành phần mềm bị xem là mối quan tâm thứ yếu, và việc phát triển công ty, phát triển tầm ảnh hưởng cá nhân, hoặc phát triển sự nghiệp là điều thường trực nằm trong tâm trí mọi người. Tính logic trong hành vi của đối tác thật khó hiểu cho tới khi bạn nhận ra rằng họ đang chơi một trò game khác, trong mỗi bước đi của họ. Sau đó đột nhiên tất cả đều hiểu được – thậm chí nếu bạn không thích nó.

Phát triển phần mềm mã nguồn mở thì khác bởi vì nó không phải là một trò game bị giới hạn về tài nguyên nhân lực, hoặc có một định hướng hữu hạn nào đó. Linus Torvald đã không nói rằng, “Chúng tôi sẽ tạo ra một phiên bản Linux có thể sử dụng được, và sau đó tất cả chúng tôi có thể đi về nhà.” Không, Linus thì vẫn ở đó, và dự án vẫn còn phát triển tiếp. Trò game này vẫn thú vị miễn là nó vẫn còn hấp dẫn. Bất kỳ số lượng người tham gia có thể xuất hiện, và họ không cùng một time-line. Trò chơi sẽ kết thúc ngay khi nó không còn hấp dẫn những người tham gia nữa. Theo một ý nghĩa nào đó thì nó cũng giống như việc các nhạc sĩ đang chơi nhạc cùng với nhau, hoặc là đang đấu vật, hoặc là đang chơi trò xếp hình lego. Nó là một trò game cộng tác và không trực tiếp hướng đến việc “vươn tới một mục tiêu nào đó”, nó không được xây dựng dựa trên một số lượng tài nguyên nhân lực hạn chế. Vì vậy những bước đi có ý nghĩa trong phát triển phần mềm mã nguồn mở lại không có ý nghĩa trong dự án phát triển phần mềm theo tiêu chuẩn có giới hạn về nhân lực và có một mục tiêu xác định.

Cái ý tưởng rằng các trò game có thể cung cấp những vấn đề thiết kế trong thế giới thực thì không phải là một điều gì mới cả; trong bài thuyết trình của Damion Schubert có tên là What Vegas Can Teach MMO Designers có rất nhiều thông tin nói rõ thêm. Các sòng bạc Casino là các không gian MMORPG nguyên thủy, được phác họa trong slide của Damion (ppt)

Lý thuyết về casino trong lập trình.Khái niệm phát triển phần mềm là một trò game cộng tác hấp dẫn đối với tôi. Nó phát biểu một mức sâu hơn sự cam kết trong tiến trình “Tôi được trả tiền để làm điều này.” Chúng ta chơi game bởi vì chúng ta có được sự thỏa mãn cần thiết từ việc chơi chúng. Bạn có thể thậm chí nói rằng nó thì rất vui– dù theo cách này hay cách khác.

Niềm vui sẽ trở nên thích hợp hơn khi bạn nghĩ về dự án của mình. Raph Koster là một nhà lập trình và thiết kế game có danh tiếng đã viết hẳn một cuốn sách về lý thuyết của niềm vui.

Lý thuyết về niềm vui trong lập trình.Bạn hãy dành ra một phút để đọc bản thuyết trình kinh điển về lý thuyết niềm vui của Raph (pdf). Cái mà bạn cuối cùng sẽ nhận ra đó là việc thiết kế cho vui không chỉ quan trọng đối với các game developer. Mà nó cũng quan trọng đối với tất cả các nhà phát triển phần mềm chúng ta.

Liệu người dùng muốn xài ứng dụng của bạn, hay là họ bị ép buộc phải sử dụng nó?

Trong một bài thuyết trình tại sự kiện ETech07 gần đây (cũng có ở bản PDF), Raph đã kết nối những mảnh ghép một cách rõ ràng. Ông ta đã giải mã câu chuyện thành công của amazon.com, ebay.com, và linkedin.com để xem thực ra chúng là: các trò game phân bố trên diện rộng. Bạn sẽ muốn đọc phần lời ông nói đi kèm với slide để hiểu sâu hơn một chút về những khái niệm này:

Việc kết nối tới một vị CEO trên mạng xã hội LinkedIn so với kết nối với một người bình thường là hoàn toàn khác nhau. Cái bạn muốn là trò game đó thừa nhận một thực tế rằng nó rất khó để kết nối với LinkedIn của Reed Hoffman hơn là một ai đó đang hành nghề bán quảng cáo chẳng hạn.

Mạng xã hội là về sự cộng tác, nhưng cái lõi của các trò game này là sự cạnh tranh. Ngay khi bạn đưa cho người ta một cái thang thì họ sẽ leo lên nó. Đánh giá. Đo lường sự đóng góp. Những người khác cần xem xét để đánh giá đối với nó.

Phát triển phần mềm là một trò game cộng tác mà bạn chơi, dù có sẵn lòng hay không, cùng với nhóm của bạn và người dùng của bạn. Bạn có thể nói rằng cái bí mật của trò game đó là việc học cách làm thế nào để chơi trò game đó mà tất cả mọi người đều có được niềm vui.

Các bài viết liên quan:

Về tác giả bài viết:

Jeff_atwood_coding_horrorJeff Atwood là một chuyên gia công nghệ tại Mỹ, hiện đang sinh sống và làm việc tại Berkeley, CA. Anh là một kỹ sư phần mềm chuyên về công nghệ Microsoft .NET, và là một blogger nổi tiếng trong cộng đồng công nghệ với blog Coding Horror, anh là người sáng lập và kiêm Giám đốc điều hành (CEO) của trang web hỏi đáp uy tín Stack Overflow và cũng là đồng sáng lập của Stack ExchangeDiscourse.

Advertisements

Trả lời

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s