ผู้นำทางความคิด
ความเชื่อผิดๆ เกี่ยวกับผลิตภาพในการพัฒนาซอฟต์แวร์

ในช่วงสองทศวรรษที่ผ่านมา ความหมายของผลิตภาพได้พัฒนาและขยายไปในทิศทางต่างๆ ในสาขาวิศวกรรมซอฟต์แวร์ ซึ่งมักจะทำให้เกิดความสับสนหรือผลลัพธ์ที่ขัดแย้งกัน ในช่วงแรกของการทำงานใน lĩnh vựcนี้ ผมเคยเข้าใจผิดว่าการทำงานมากกว่า 8 ชั่วโมง การเขียนโค้ดมากกว่า และการมีกิจกรรมมากกว่า จะทำให้ได้ผลลัพธ์ที่ดีกว่า แต่ความคิดนี้กลับทำให้เราไม่สามารถบรรลุเป้าหมายที่ตั้งไว้ และยังทำให้ผลคุณภาพของโค้ดลดลง และส่งผลกระทบต่อความเป็นอยู่ที่ดีของนักพัฒนาด้วย
ในบทความนี้ ผมจะแบ่งปันความเข้าใจผิดที่ผมพบและทำลายความเชื่อผิดๆ ที่มีอยู่ในอุตสาหกรรมเทคโนโลยี โดยอาศัยเรื่องราวส่วนตัว ประสบการณ์ของทีม และการวิจัยที่มีหลักฐาน ผมจะแย้งว่าผลิตภาพที่แท้จริงมีความเกี่ยวข้องกับการมุ่งเน้นเป้าหมายที่ชัดเจน การทำงานที่มีสุขภาพดี และวัฒนธรรมองค์กรที่สมดุล มันไม่ใช่การทำงานหนักหรือการทำงานเป็นเวลานานที่ทำให้เราได้ผลลัพธ์ที่ดี
ความหลอกลวงของการทำงานล่วงเวลา
หนึ่งในความเชื่อผิดๆ ที่ผมพบคือการทำงานล่วงเวลาจะทำให้ได้ผลลัพธ์ที่ดีกว่า ในช่วงแรกของการทำงาน ผมเคยทำงานในโครงการใหญ่ๆ ที่ต้องทำงานล่วงเวลาและวันหยุดเพื่อให้เสร็จสิ้นภายในเวลาที่กำหนด แต่หลังจากนั้น 6 เดือน ปัญหาเริ่มปรากฏขึ้น และเราต้องใช้เวลาและทรัพยากรเพิ่มเติมในการแก้ไขปัญหา และความเชื่อมั่นของลูกค้าก็ลดลงด้วย
คุณภาพมากกว่าปริมาณ
ความคิดสร้างสรรค์และการแก้ปัญหาเป็นทักษะที่สำคัญในการพัฒนาซอฟต์แวร์ แต่จะถูกจำกัดโดยความเหนื่อยล้า การใช้เครื่องมือติดตามเวลา เช่น RescueTime และ Toggl ทำให้ผมพบว่าโค้ดที่มีคุณภาพสูงสุดจะถูกเขียนเมื่อนักพัฒนามีเวลาที่ไม่ถูกรบกวนเป็นเวลา 4-5 ชั่วโมง และเมื่อพวกเขาทำงานเป็นเวลา 10-12 ชั่วโมง อัตราความผิดพลาดจะเพิ่มขึ้น และการทำงานจะใช้เวลามากขึ้น
ความผิดพลาดของการมุ่งเน้น
ความเชื่อผิดๆ อีกอย่างหนึ่งคือนักพัฒนาควรจะทำงานอย่างต่อเนื่องและไม่หยุดพัก เพื่อให้ได้ผลลัพธ์ที่ดี ความเข้าใจนี้ทำให้บางบริษัทต้องใช้ระบบติดตามกิจกรรมที่เข้มงวด และเน้นย้ำถึงการทำงานอย่างต่อเนื่อง แต่สิ่งนี้กลับทำให้เราละเลยกิจกรรมที่สำคัญอื่นๆ เช่น การวางแผน การอภิปราย การวิจัย และการออกแบบแนวคิด
การแก้ปัญหาโดยไม่ต้องใช้เครื่องมือ
หนึ่งในตัวอย่างที่น่าสนใจคือเมื่อทีมของผมกำลังต่อสู้กับปัญหาที่ยากในการออกแบบระบบ микросервис หลังจากทำงานเป็นเวลาสองสัปดาห์โดยไม่มีผลลัพธ์ที่ดี เราได้ตัดสินใจหยุดพักและพูดคุยกันในห้องพัก โดยใช้เวลาเพียง 30 นาทีในการหาวิธีแก้ปัญหาโดยใช้กระดานขาว และสามารถลดความซับซ้อนของปัญหาได้มาก
การปรับเปลี่ยนมาตรฐานผลิตภาพ
หากการทำงานล่วงเวลาและกิจกรรมที่ไม่หยุดพักไม่ใช่มาตรฐานที่ดีแล้ว เราควรติดตามอะไรบ้าง มาตรฐานผลิตภาพที่传统ในอุตสาหกรรมซอฟต์แวร์มักจะเน้นย้ำถึงการวัดผลลัพธ์ เช่น จำนวนบรรทัดโค้ด จำนวนการ commit หรือจำนวน ticket ที่ปิด แต่สิ่งเหล่านี้อาจไม่ใช่มาตรฐานที่ดีในการวัดความก้าวหน้า
การเข้าใกล้ที่ครอบคลุมมากขึ้น
ทีมของผมได้พยายามหามาตรฐานที่มีความหมายมากกว่านี้ โดยใช้มาตรฐานที่เน้นย้ำถึงผลลัพธ์ เช่น
- เวลาในการส่งมอบฟีเจอร์ใหม่
เราสามารถส่งมอบฟีเจอร์ที่มีคุณค่าจริงให้กับผู้ใช้ได้เร็วแค่ไหน - จำนวนเหตุการณ์ในการผลิต
อัตราการเกิดเหตุการณ์ที่ต่ำหมายถึงคุณภาพโค้ดที่ดีกว่า การทดสอบที่ครอบคลุมมากขึ้น และการตัดสินใจด้านสถาปัตยกรรมที่ดีกว่า - คะแนนการบำรุงรักษาโค้ด
เราสามารถใช้เครื่องมืออัตโนมัติ เช่น SonarQube เพื่อตรวจจับโค้ดที่ซ้ำกัน ความซับซ้อน และความเสี่ยง - การแบ่งปันความรู้ของทีม
เราสามารถตรวจสอบได้ว่าทีมมีการแบ่งปันความรู้กันมากน้อยเพียงใด โดยการตรวจสอบว่าพวกเขาทำงานร่วมกันอย่างไร และมีการอภิปรายและการออกแบบแนวคิดอย่างไร - การให้คะแนนความพึงพอใจของลูกค้า
สุดท้าย ซอฟต์แวร์ถูกสร้างขึ้นสำหรับผู้ใช้ การให้คะแนนความพึงพอใจที่ดี การใช้งานที่มาก และการสนับสนุนที่ดีสามารถเป็นตัวบ่งชี้ผลิตภาพที่ดี
โดยการใช้มาตรฐานเหล่านี้ เราสามารถตัดสินใจได้ดีขึ้นเกี่ยวกับวิธีการเขียนโค้ด และรักษาความสมดุลระหว่างความต้องการของผู้ใช้และความต้องการในการบำรุงรักษา
พลังของความเกียจคร้านเชิงกลยุทธ์
ผมเคยคิดว่านักพัฒนาที่ดีควรจะเขียนโค้ดได้มากและรวดเร็ว แต่ผมพบว่ามันไม่ใช่เช่นนั้น นักพัฒนาที่ดีจะใช้ความเกียจคร้านเชิงกลยุทธ์ โดยหาวิธีแก้ปัญหาได้อย่างมีประสิทธิภาพและใช้โค้ดที่น้อยกว่า
เครื่องมือและเทคนิคสำหรับผลิตภาพที่แท้จริง
การสร้างสภาพแวดล้อมที่มีผลิตภาพที่แท้จริงต้องใช้ทั้งเครื่องมือที่เหมาะสมและวัฒนธรรมองค์กรที่ดี ผมได้ลองใช้เครื่องมือและเทคนิคต่างๆ และพบว่ามีหลายสิ่งที่สามารถช่วยได้ เช่น
- เทคนิค Pomodoro ที่ดัดแปลง
เราสามารถใช้เวลา 45 นาทีในการทำงานและพัก 15 นาที เพื่อให้ได้สมดุลระหว่างการทำงานและพักผ่อน - การผสมผสาน Kanban และ Scrum
เราสามารถใช้การทำงานแบบ Kanban และ Scrum เพื่อจำกัดงานที่กำลังทำและวางแผนงานในระยะสั้น - การ跟踪เวลาและวิเคราะห์ผลลัพธ์
เราสามารถใช้เครื่องมือติดตามเวลาเพื่อตรวจสอบว่านักพัฒนาทำงานได้ดีที่สุดในช่วงเวลาใด และวางแผนงานให้เหมาะสม - การตรวจสอบโค้ดและโปรแกรมมิ่งแบบจับคู่
เราสามารถตรวจสอบโค้ดและทำงานร่วมกันเพื่อให้ได้ผลลัพธ์ที่ดีกว่า - การบูรณาการและการทดสอบอย่างต่อเนื่อง
เราสามารถใช้เครื่องมือการบูรณาการและการทดสอบเพื่อให้แน่ใจว่าโค้ดที่เขียนขึ้นเป็นไปตามมาตรฐาน
โดยการใช้เครื่องมือและเทคนิคเหล่านี้ เราสามารถสร้างสภาพแวดล้อมที่มีผลิตภาพที่แท้จริงได้
การสร้างวัฒนธรรมวิศวกรรมที่ดี
หนึ่งในความเชื่อผิดๆ ที่มีอันตรายที่สุดคือความเครียดและความกดดันจะทำให้ผลิตภาพเพิ่มขึ้น แต่ผมพบว่ามันไม่ใช่เช่นนั้น วัฒนธรรมที่ดีควรจะให้ความสำคัญกับการทำงานที่มีคุณภาพและความเป็นอยู่ที่ดีของนักพัฒนามากกว่า
ความปลอดภัยทางจิตใจและความคาดหวังที่ยั่งยืน
ผมพบว่าเมื่อนักพัฒนารู้สึกปลอดภัยและสามารถแสดงความคิดเห็นได้ без การกลัวว่าจะถูกวิพากษ์วิจารณ์ เราจะได้ผลลัพธ์ที่ดีกว่า เราสามารถสร้างวัฒนธรรมนี้ได้โดยการทำการประชุมประจำและให้โอกาสนักพัฒนาที่จะแสดงความคิดเห็นและเสนอแนะ
วันไม่มีการประชุมและช่วงเวลาโฟกัส
เราสามารถสร้างวัฒนธรรมที่ดีได้โดยการให้เวลานักพัฒนาที่จะทำงานโดยไม่มีการรบกวน เช่น การสร้างวันไม่มีการประชุมหรือช่วงเวลาโฟกัส
บทเรียนจากกรณีศึกษาในโลกแห่งความเป็นจริง
มีหลายตัวอย่างในอุตสาหกรรมเทคโนโลยีที่แสดงให้เห็นว่าการใช้แบบจำลองที่สมดุลและเน้นย้ำถึงคุณภาพสามารถนำไปสู่ผลลัพธ์ที่ดีกว่าได้
การปรับเปลี่ยนความหมายของ “ผลิตภาพ”
สุดท้าย ผมพบว่าผลิตภาพในอุตสาหกรรมซอฟต์แวร์ไม่ใช่การทำงานล่วงเวลาหรือการทำงานอย่างต่อเนื่อง แต่เป็นการสร้างคุณค่าให้กับผู้ใช้โดยการทำงานที่มีคุณภาพและความเป็นอยู่ที่ดี
สมการสมดุล
สูตรสำหรับความสำเร็จที่ยั่งยืนคือการสร้างสมดุลระหว่างวัตถุประสงค์ที่ชัดเจน เครื่องมือที่เหมาะสม และวัฒนธรรมที่ดี
- การทำงานที่มีประสิทธิภาพมากกว่าการทำงานที่ยาวนาน
- การวัดผลลัพธ์ที่เน้นย้ำถึงคุณค่า
- การปรับปรุงอย่างต่อเนื่องของวัฒนธรรม
สรุป
ผลิตภาพที่แท้จริงในอุตสาหกรรมซอฟต์แวร์ไม่ใช่การทำงานล่วงเวลาหรือการทำงานอย่างต่อเนื่อง แต่เป็นการสร้างคุณค่าให้กับผู้ใช้โดยการทำงานที่มีคุณภาพและความเป็นอยู่ที่ดี
การเดินทางส่วนตัวของผมสอนให้ผมรู้ว่า “การทำงาน” หรือ “การปิด ticket” ไม่ใช่มาตรฐานที่ดีในการวัดผลิตภาพ แต่ผลิตภาพที่แท้จริงมาจากการทำงานที่มีคุณภาพและความเป็นอยู่ที่ดีของนักพัฒนาด้วย












