มองเป็นเกม

posted on 04 Aug 2008 23:08 by wonam in softdev

Cockburn มองการพัฒนาซอฟต์แวร์ว่าเป็นเหมือน Cooperative Game เวลากล่าวถึงเกม เราก็จะมองว่าผู้เล่นแต่ละส่วนก็จะเลือกทางเดินเพื่อผลตอบแทน หรือเป้าหมาย  เกมที่จะกล่าวถึงเป็นเกมที่เล่นไปเรื่อย ๆ เหมือนกับว่าทำโครงงานนี้เสร็จแล้วก็ไปทำอันถัดไป

เมื่อมองกิจกรรมเป็นเกมแล้ว สิ่งต่อไปที่ต้องถามก็คือว่า ในเกมดังกล่าวนั้นมีเป้าหมายเป็นอะไร?

เขาบอกว่าหลัก ๆ มีสองอย่าง

  1. พัฒนาซอฟต์แวร์ได้เสร็จสมตามที่ลูกค้าต้องการ (ภายใต้เวลาและวงเงิน)  --- เป้าหมายอันนี้เกี่ยวกับการได้คะแนนในเกมนี้
  2. ตระเตรียมอะไรต่าง ๆ ไว้สำหรับอนาคต  --- ส่วนเป้าหมายอันนี้เกี่ยวกับการเตรียมตำแหน่งสำหรับตาเดินหน้า

ทุก ๆ กระบวนการที่ใช้ล้วนมีไว้เพื่อเป้าหมายทั้งสองนี้เท่านั้น  เขาเน้นว่ากิจกรรมหลาย ๆ อย่าง ถ้าทำมากเกินไปมันก็จะเกินความจำเป็น และอาจกลายเป็นภาระได้

เขายกตัวอย่างสองแนวทางการพัฒนาที่สุดโต่งไปกับแต่ละเป้าหมาย โดยมองจากมุมมองของเอกสาร

  • อันแรกเขายกตัวอย่างโครงงาน Chrysler Comprehensive Compensation System ที่เป็นจุดกำเนิดของ Extreme Programming  ในโครงงานนั้นมุ่งเน้นที่เป้าหมายแรก  เอกสารหลักของโครงงานนี้ก็คือการ์ดกระดาษจำนวนมากมายที่ในแต่ละใบเขียนอธิบายหน้าที่การทำงานของซอฟต์แวร์หนึ่งอย่างเป็นประโยคไม่กี่ประโยค (เรียกว่า user stories) เมื่อนักพัฒนาจะ implement หน้าที่ใด ก็จะไปถามลูกค้าโดยละเอียดอีกทีหนึ่ง  กระบวนการที่ใช้นั้นช่วยให้การสื่อสารระหว่างลูกค้ากับนักพัฒนาเป็นไปได้อย่างรวดเร็วมาก โดยแทบจะไม่มีเอกสารเลย  เอกสารความต้องการทั้งหมดอยู่ในการสื่อสาร, ความทรงจำ+ความเข้าใจของนักพัฒนา, และอยู่ในโปรแกรมที่ใช้ทดสอบและและโปรแกรมที่ได้ implement ไป
    เมื่อในที่สุดที่โครงงานนี้ถูกยกเลิกไป สิ่งที่เหลือก็มีแค่การ์ดและโปรแกรมเท่านั้นเอง  ไม่น่านานเอกสารที่อยู่ในความทรงจำก็คงหายไปหมดสิ้น
  • สำหรับอีกแนวทางหนึ่ง ก็คือการเก็บเอกสารทุกขั้นตอนอย่างละเอียด  ทุก ๆ การเปลี่ยนแปลงและแก้ไขต้องมีการจัดการเก็บเอาไว้  และน่าจะเดาได้ไม่ยากว่ายิ่งภาระในการจัดการเอกสารเยอะเท่าใด งานและเวลาที่ต้องเสียไปก็มากขึ้นเรื่อย ๆ ด้วย  (และทำให้เกิดอาการพวก "ไม่อยากเปลี่ยน" ขึ้นมาได้)

ในการพิจารณาการพัฒนาซอฟต์แวร์เป็นเกมนอกจากจะทำให้เห็นภาพของกิจกรรมต่าง ๆ ที่เกี่ยวข้องโดยตรงมากขึ้น  ยังทำให้เห็นเรื่องเกี่ยวข้องอื่น ๆ อีก เช่น ผู้เล่นที่เล่นเกมหลักที่เป็น cooperative game อยู่ ต่างก็เล่นเกมของตนเช่นเดียวกัน (เกมความก้าวหน้าในอาชีพ)  หรือบริษัทก็เช่นเดียวกัน อาจทำอะไรที่ดูเหมือนว่าไม่จำเป็น แต่นั่นอาจเป็นการวางหมากเพื่อตาเดินที่ดีในอนาคตก็ได้

Comment

Comment:

Tweet

Cooperative Game
เปิดดูหน้า wiki แล้ว Math ตูมเลล มึน

#4 By CyberAlchemist on 2008-08-10 02:52

Tux-Linux: ผมคิดว่า Cockburn จะค่อย ๆ สร้าง background ขึ้นมาเพื่อใช้อธิบาย software development methodology ตระกูล agile น่ะครับ เค้าเลยดึงโน่นดึงนี่มาจากหลาย ๆ สาขา บางทีก็เอามาเฉพาะศัพท์แสงเพื่อเปรียบเทียบเท่านั้น (เช่นในกรณีของ cooperative game นี่เอง)

veer: แก้แล้วครับ ขอบคุณครับ

#3 By wonam on 2008-08-05 08:14

"ไม่น่าเอกสารที่อยู่ในความทรงจำก็คงหายไปหมดสิ้น"

ไม่นาน เปล่าครับ?

#2 By veer on 2008-08-05 01:34

โดยทฤษฏีแล้วยังไม่ค่อยเข้าใจ cooperative game เท่าไหร่
แต่ที่อ่านก็ชัดเจนมากครับ

#1 By Tux-Linux (203.159.36.11) on 2008-08-05 01:23