Ownership, Responsibility, and Accountability

พอเขียนเรื่องความสม่ำเสมอก็หยุดเขียนซะหนึ่งอาทิตย์ ช่างสม่ำเสมอจริงๆ (ประชดตัวเอง) เพิ่งจะได้ยินเกี่ยวกับสามคำนี้ เลยคิดว่า จริงๆ แล้วเจ้าสามคำข้างบนนี่ก็สำคัญกับการนำ Agile มาใช้ไม่ใช่น้อย น่าจะเอามาเขียนซะหน่อย มาว่ากันเลย

Ownership

หมายถึงความเป็นเจ้าของ มีความคิดกันมานานแล้วว่า คนเรานั้นถ้ารู้สึกเป็นเจ้าของอะไรแล้วก็จะดูแลและทำดีเป็นพิเศษ มีเรื่องเล่าว่าในประเทศอิสราเอลซึ่งเป็นต้นตำรับระบบคอมมูนที่ประสบความสำเร็จมาก ประเทศเราก็เคยส่งคนไปดูงานเพื่อเอากลับมาพัฒนาระบบสหกรณ์ เค้าทำแบบนี้ คือ ให้ครอบครัว 4 ครอบครัวใช้พี้นที่ร่วมกัน โดย สมมตินะครับ 20 ไร่ เค้าจะให้เป็น 10 ไร่เป็นพื้นที่ส่วนกลาง และ อีกครอบครัวละ 2.5 ไร่ เป็นพื้นที่ส่วนตัว โดย พี้นที่ส่วนกลางนี่ทุกครอบครัวจะต้องมาช่วยกันทำ ส่วนพื้นที่ส่วนตัวนี่ ต่างคนต่างทำ ผลปรากฏว่า พื้นที่ส่วนตัวมีผลผลิตต่อไร่มากกว่าพื้นที่ส่วนกลางถึงเกือบเท่าตัวเลยทีเดียว นี่เป็นตัวอย่างของประโยชน์ของความรู้สึกเป็นเจ้าของ

ความรู้สึกเป็นเจ้าของนั้นมักนำมาใช้ในการพัฒนาซอฟแวร์แบบดั้งเดิมโดย แบ่งโค้ดออกเป็นส่วนๆ เรียกว่า มอร์ดูล โดยให้แต่ละมอร์ดูลมี owner หรือเจ้าของ ถ้าจำเป็นต้องแก้ไขมอร์ดูลใดมอร์ดูลมากเกินกว่าคนเดียวจะทำได้ ก็มักจะหาคนมาช่วย โดยให้เจ้าของมอร์ดูลเป็นคนควบคุม เกิดเป็นเจ้าของ กับคนมาช่วย ระบบนี้ดีในตอนแรกเพราะ เมื่อคนเรารู้สึกถึงความเป็นเจ้าของก็จะดูแลดี และให้ความเอาใจใส่ แต่ก็เกิดปัญหาเมื่อ สิ่งที่ต้องการแก้มีมาก คนที่มาช่วยมักทำงานไม่ดีเท่าเจ้าของ เพราะหนึ่งคือความคุ้นเคยไม่มากพอ และไม่มีความรู้สึกเป็นเจ้าของนั่นเอง นอกจากนี้ยังเกิดปัญหาว่า ถ้าเจ้าของไม่อยู่เช่นป่วย หรือลาออกไป ก็จะเกิดปัญหา หาคนมาแทนไม่ได้ ตรงนี้เองที่ CMMi เข้ามามีบทบาท เพราะเป็นการพยายามทำให้ หาคนมารับหน้าที่เจ้าของได้ง่ายด้วยการทำ document และ ออกแบบโปรเซส

Agile มองเรื่องนี้ในมุมกลับ คือถ้าคนเรารู้สึกว่า เป็นเจ้าของแล้วทำงานได้ดี ถ้างั้นก็ให้ทุกคนรู้สึกเป็นเจ้าของทุกส่วนร่วมกัน ก็จะทำให้ทุกคนทำงานได้ดีและไม่มีปัญหาเมื่อ ใครคนหนึ่งป่วย หรือว่าลาออก เพราะคนอื่นซึ่งเป็นเจ้าของเหมือนกัน ก็จะเข้ามาดูแลแทนได้ง่าย และ ถ้างานในส่วนใดส่วนหนึ่งมากเกินไป คนอื่นจะเข้ามาทำก็ไม่ได้ทำให้ความรู้สึกเป็นเจ้าของน้อยกว่าคนอื่น เราเรียก วิธีแบบ Agile นี้ว่า ‘Collective Code Ownership’ ซึ่งเป็นเรื่องสำคัญมากเรื่องหนึ่งใน eXtreme Programming

Responsibility

พวกเราหลายคนแปลคำนี้ว่า ความรับผิดชอบ แม้แต่พจนานุกรมหลายเล่มเองก็แปลอย่างนั้น แต่ตามความรู้สึกผมคำนี้ควรจะแปลว่า ‘หน้าที่’ มากกว่า ตามพจนานุกรมนั้น คำคำนี้จะหมายความถึงสิ่งที่เราจะต้องทำและมีอำนาจที่จะตัดสินใจในเรื่องที่เกี่ยวกับมันได้

ตัวอย่างของ responsibility ใน Agile คือ story เมื่อ developer รับเอา story มาทำนั้น เขาก็มีหน้าที่ที่จะต้องทำให้ story นั้นสำเร็จ แต่ใน Agile นั้น responsibility จะมีความแตกต่างจะการพัฒนาแบบดั้งเดิมคือ การ assign งาน โดย Agile นั้น แต่ละคนจะเป็นคน assign งานให้กับตัวเอง เมื่อเริ่ม iteration แต่ละคนจะเลือกงานที่คิดว่า เหมาะสมกับตัวเองมาทำ แถวบ้านผมจะเรียกว่าการ Grab story ฟังดูแล้วจะเห็นภาพ developer เข้าไปเลือก story แล้วก็ “คว้า” เอามาทำ ซึ่งถ้าเป็นแบบดั้งเดิมนั้น การ assign มักจะทำโดย ลีด ซึ่งเมื่อเปรียบเทียบกับแบบ Grab แล้ว แบบหลังนี้ดูจะโปรโมตความเป็นเจ้าของได้มากกว่า เพราะเป็นคนเลือกเอามาทำเอง

Accountability

พวกเราหลายคนที่แปลคำว่า responsibility ว่า ความรับผิดชอบ มักจะแปลคำนี้ไม่ได้ เพราะมันดูจะตรงกับคำว่าความรับผิดชอบมากกว่า คือ แปลว่าเป็นผู้รับผลจากการกระทำนั้น คือถ้าดีก็ได้รับผลดีและถ้าแย่ก็จะได้รับผลแย่นั่นเอง ก็รับผิดหรือไม่ก็รับชอบอย่างไรล่ะ

คำนี้มักถูกนำมาเปรียบเทียบ กับ responsibility อยู่เสมอว่าหัวหน้างานนั้น เมื่อมอบหมายหน้าที่(responsibility) ให้ใครไปแล้วนั้นความรับผิดชอบ(accountability) ไม่ได้ตามไปด้วย อันนี้ในทัศนคติ ด้าน ownership ถือว่าไม่ดีเพราะ คนรับงานไปจะไม่รู้สึกถึงความเป็นเจ้าของเท่าใดนัก ก็ทำดีลูกพี่ก็เอาไปนี่นา (แต่ทำไม่ดีลูกพี่คงไม่ยอม)

Agile แก้ไขเรื่องนี้ด้วยการ มอบหมาย ทั้ง หน้าที่และความรับผิดชอบให้กับทีม คือหน้าที่ต้องมาพร้อมกับความรับผิดชอบ คือก็ทีมรับหน้าที่พัฒนาซอฟแวร์ถ้ามันออกมาดีทีมก็ต้องได้รับผลดีนั้น ในทางตรงกันข้ามก็เช่นกัน ถ้าออกมาไม่ดีก็ต้องรับผิดเช่นกัน ซึ่งมันจะนำมาซึ่งความรู้สึกเป็นเจ้าของที่สมบูรณ์กว่า หัวหน้างานใน Agile ก็จะแปรสภาพเป็น Agile Master ซึ่งจะเน้นคอยช่วยชี้แนะให้กับทีมเท่านั้น จะสังเกตเห็นว่าผมเน้นคำว่าทีมมากเป็นพิเศษ เพราะความสำเร็จหรือล้มเหลวของซอฟแวร์ทั้งตัวนั้นจะให้ใครคนใดคนหนึ่งมารับผิดชอบคนเดียวมันก็ดูจะมากจนเกินไป Agile เรียกหลักการนี้ว่า “Self Organizing Team”

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

Advertisements

ใส่ความเห็น

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out / เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out / เปลี่ยนแปลง )

Google+ photo

You are commenting using your Google+ account. Log Out / เปลี่ยนแปลง )

Connecting to %s