The Five Ideals
จากหนังสือ The Unicorn Project ในนั้นจะมีที่ปรึกษาเก่ง ๆ คนหนึ่งชื่อ Erik เป็นเหมือนเซ็นเซหาตัวยาก เดี๋ยวก็มา เดี๋ยวก็ไป ถ้าโชคดีก็จะเจอเค้าว่าง แล้วเค้าก็จะสอนอะไรที่สำคัญ ๆ แต่ฟังดูล้ำ ๆ และลึกซึ้ง จนตัวละครในเรื่องต้องใช้เวลาขบคิดนานกว่าจะเข้าใจ
สิ่งหลัง ๆ ที่ Erik สอนในเรื่องนี้คือ The Five Ideals เป็นเหมือนภาพในฝันสำหรับองค์กรที่พัฒนาซอฟต์แวร์ ต่อจากนี้จะเป็นความเข้าใจของผมที่มีต่อแต่ละ ideal
The first ideal: Locality and Simplicity
ผมได้เรียนรู้ locality จากคอร์ส Building Microservices ที่เรียนกับ Sam Newman การที่เราแยกของบางอย่างเป็น private (information hiding) ให้ความยืดหยุ่นกับเรา เพราะถ้ามันเป็น private เวลาเราเปลี่ยนแปลงมัน เราไม่ต้องกลัวว่าคนอื่นจะได้รับผลกระทบ
ถ้าเป็นของที่เป็น public เวลาจะเปลี่ยน ต้องสร้างสะพานใหม่ก่อน ประกาศให้ทุกคนรู้ว่าให้ย้ายไปใช้สะพานใหม่ และเมื่อสะพานเก่าไม่มีคนใช้แล้ว เราค่อยทุบสะพานเก่าทิ้ง หลัก ๆ คือการทำ backward compatibility นี่แหละ Versioning ก็เป็นเทคนิคหนึ่งในนั้น แต่ตัวอย่างที่ผมยกไม่ได้พูดถึงแค่การ integrate code กับ environment แต่หมายรวมถึงการ integrate กับพฤติกรรมของ user เลย
ส่วนเรื่อง simplicity เป็นหลักการที่ผมพยายามยึดเวลาออกแบบซอฟต์แวร์อยู่แล้ว เพราะผมยอมรับว่าผมไม่มีทางเดาถูกว่าอนาคตจะต้องเปลี่ยนแปลงจุดไหนของซอฟต์แวร์ ไหน ๆ ก็ทำ TDD ให้มี unit test coverage ครอบคลุมโค้ดทั้งหมดแล้ว ฉะนั้นจะไม่ design เผื่อว่าอะไรจะเปลี่ยนเลย เอาให้มัน simple เข้าไว้ วันที่มันจำเป็นต้องซับซ้อนขึ้นจะได้ไม่ยากเกินไป
The second ideal: Focus, Flow and Joy
Mihaly Csikszentmihalyi เป็นคนคิด concept เรื่อง flow ในชีวิตเรา ถ้าเราเรียงสิ่งที่เราทำจากง่ายไปยาก มันจะมีตั้งแต่ comfort zone ก่อน ที่ทำไปวัน ๆ ไม่ได้เก่งขึ้น พอเลยไปอีกเอื้อมมือหนึ่ง นั่นแหละคือ flow เป็นเป้าหมายที่เกินขอบของ comfort zone ไปนิดหนึ่ง เวลาทำต้องใช้สมาธิสูงมาก เพื่อจะอยู่กับลมหายใจ และพยายามผ่อนคลาย ไม่เกร็ง เพื่อเราจะได้ perform ได้อย่างสุดฝีมือ การอยู่ใน zone นี้ การันตีเลยว่าคืนนั้นหลังจากนอนหลับ ร่างกายจะสร้างการเชื่อมโยงของระบบประสาทใหม่ ๆ และพรุ่งนี้เราจะทำมันได้ดียิ่งขึ้น
อีกธรรมชาติหนึ่งที่น่าสนใจของ flow zone คือ เวลาเราอยู่ตรงนั้น มันจะเป็นตรงที่ไม่รู้ว่าฉันจะทำสิ่งนี้ได้ไหม แต่อยากลอง ซึ่งเวลาอยู่ตรงนั้นมันมักจะสนุก (Joy)
ถ้าข้าม flow zone ไป จะเป็น zone ท้าทาย เป็นบริเวณที่ถ้าทำ 10 ครั้งจะพลาดสัก 8 แต่ 2 ครั้งที่ทำได้จะภูมิใจมาก ๆ ถือเป็นขอบบนของ flow ละ สำหรับคนที่เข้มงวดกับตัวเองมาก ๆ ขอบบนนี้มาแตะบ้างได้ แต่อยู่นานไม่ได้ มันทำอย่างสม่ำเสมอแบบยั่งยืนไม่ไหว
แต่ถ้าไปไกลกว่านั้นอีกนิด เรียกว่าทรมานตัวเองละ ถือว่าเกิน flow ไปละ เป็น zone เครียดและกดดัน ไม่เหมาะกับการเรียนรู้
The third ideal: Improvement of Daily Work
งานที่ทำต้องดีขึ้นทุก ๆ วัน หมายถึงพัฒนาสิ่งแวดล้อมการทำงานนะ เวลาที่ผมจะ print เอกสารแล้วพบว่ากระดาษหมด ผมจะไม่แค่หากระดาษมาให้พอที่ผมจะ print เสร็จแล้วก็ไป ปล่อยให้มันหมดสำหรับคนต่อไป แต่จะหากระดาษมาเติมให้เต็ม เพื่อคนต่อไปจะได้ไม่เจอปัญหาที่ผมเจอ สิ่งแวดล้อมการทำงานก็จะดีขึ้นอีกนิดหนึ่ง
เหมือนเวลาแก้ซอฟต์แวร์ก็เช่นกัน ถ้ามันต้องตามล้างตามเช็ด เพื่อให้คนอื่นมาแก้ต่อวันหน้าสะดวกขึ้น ผมก็จะค่อย ๆ ทำไป เพื่อให้วันพรุ่งนี้มันง่ายขึ้นอีกนิดหนึ่ง
อีกกรณีที่ผมจะใช้หลักการนี้บ่อยคือ เมื่อเกิดความผิดพลาด ผมจะถามตัวเองว่า เราปรับสิ่งแวดล้อมอย่างไรได้บ้าง เพื่อไม่ให้ปัญหาลักษณะนี้มีโอกาสเกิดอีก เพื่อให้สิ่งแวดล้อมการทำงานของเราปลอดภัย ทุกคนจะได้ทำงานได้อย่างสบายใจ
The fourth ideal: Psychological Safety
สัตว์ต่าง ๆ จะเล่น ก็ต่อเมื่อปลอดภัย
เมื่อรู้สึกไม่ปลอดภัย ทุกคนก็จะดูแลตัวเองก่อน เห็นใจคนอื่นน้อยลง มีวิสัยทัศน์ที่แคบลง และก็จะสร้างสรรค์ไม่ออก เพราะความสร้างสรรค์เกิดขึ้นตอนสมองผ่อนคลาย
พอองค์กรไม่ปลอดภัย ทุกคนก็จะไม่กล้าถาม ไม่กล้าคุยตรง ๆ ความเข้าใจไม่ตรงกันก็จะเยอะขึ้นเรื่อย ๆ เวลาต้องตัดสินใจปุบปับก็จะผิดไปหมด เพราะเราไม่ค่อยมี shared context ด้วยกัน เพราะ context มันถูกแยกออกไปเป็นวงเล็ก ๆ ที่เค้าปลอดภัยจะคุย และมันก็เลยมี context เล็ก ๆ กระจายอยู่ในหลาย ๆ วงเมาท์
ในองค์กรที่มี psychological safety คนจะกล้าคิด กล้าตัดสินใจ และได้เรียนรู้จากการตัดสินใจนั้น แต่ถ้าองค์กรขาด psychological safety คนจะไม่กล้าตัดสินใจ และจะรอ confirm กับหัวหน้า ทุก ๆ การตัดสินใจก็จะค่อย ๆ รวมขึ้นมาหาผู้บริหารระดับบน ๆ ทำให้เกิด bottleneck ของการตัดสินใจ และทั้งองค์กรจะขยับช้าลง
The fifth ideal: Customer Focus
ถ้ามีงานหนึ่งชิ้นที่ลูกค้ารออยู่ ถ้า upstream ทำเสร็จ เราอยากให้ downstream เอางานนั้นไปทำต่อเลย เพื่อไม่ให้ลูกค้าต้องรอนาน
แต่ถ้าเราไม่ให้งานรอคนทำงานว่าง แปลว่าเราต้องให้คนทำงานรองานมาถึง การจะทำแบบนั้นได้ พนักงานต้องมี slack time ที่จะรองานที่กำลังจะมาถึง
ถ้าเราเห็นพนักงานว่าง แล้วก็ไล่เค้าไปหาอะไรทำเพื่อให้คนไม่ว่าง เวลางานของลูกค้ามาถึง เราก็จะไม่ว่างทำ เปรียบได้กับตอนวิ่งผลัดที่ไม้ 3 กำลังรอไม้จากไม้ 2 แล้วเราก็ไล่เค้าไปสควอตระหว่างรองานมา
Customer focus เป็นด้านตรงข้ามของ shareholder focus นั่นคือ ถ้าเราเลือกจะมาทางนี้ เรากำลัง optimize สำหรับ growth ไม่ใช่ profit
ถ้าเราเลือกมาทางนี้ เราจะอยู่ด้านตรงข้ามกับการลด cost หรือประหยัดเพื่อให้ผลกำไรดูดี เพื่อหวังเงินที่ไหลมาจากนักลงทุน แต่เราจะทำวิจัย วิเคราะห์ข้อมูลการใช้สินค้าและบริการ เพื่อส่งมอบประสบการณ์ที่ดีกว่าให้ลูกค้า เพื่อจะรุกตลาดใหม่ ๆ และเติบโตขึ้น การลงทุนทั้งหมดนี้ทำให้ค่าใช้จ่ายในการบริหารสูงขึ้นทั้งนั้น แต่การส่งมอบบริการที่ดีขึ้นมันมีความหมาย มันทำให้เราได้ใจคนทำงาน มันคุ้มค่าที่จะทุ่มเท
ความยากของ ideal นี้คือ มันจะ work ไม่ได้ ถ้าพนักงานเราไม่รู้สึกปลอดภัยจาก ideal ที่ 4 ก่อน เพราะเราต้องใส่หน้ากากออกซิเจนให้ตัวเองก่อน แล้วถึงจะไปช่วยคนอื่นได้
สรุป
นี่แหละ ideal ทั้ง 5 ที่ Erik สอนทีมงานสำหรับการพัฒนาซอฟต์แวร์ เป็นหลักการบริหารสำหรับองค์กรที่ทำซอฟต์แวร์ ซึ่งสอดรับกับผลงานวิจัยด้าน motivation และแนวคิดการบริหารสมัยใหม่หลาย ๆ อย่าง
อ้างอิง
https://www.danpink.com/wp-content/uploads/2013/07/FLIP-Manifesto.pdf