ผู้นำทางความคิด

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

mm
เพิ่ม Unite.AI ลงในแหล่งข้อมูลที่คุณต้องการบน Google

ในช่วงสองทศวรรษที่ผ่านมา ความหมายของผลิตภาพได้พัฒนาและขยายไปในทิศทางต่างๆ ในสาขาวิศวกรรมซอฟต์แวร์ ซึ่งมักจะทำให้เกิดความสับสนหรือผลลัพธ์ที่ขัดแย้งกัน ในช่วงแรกของการทำงานใน lĩnh vựcนี้ ผมเคยเข้าใจผิดว่าการทำงานมากกว่า 8 ชั่วโมง การเขียนโค้ดมากกว่า และการมีกิจกรรมมากกว่า จะทำให้ได้ผลลัพธ์ที่ดีกว่า แต่ความคิดนี้กลับทำให้เราไม่สามารถบรรลุเป้าหมายที่ตั้งไว้ และยังทำให้ผลคุณภาพของโค้ดลดลง และส่งผลกระทบต่อความเป็นอยู่ที่ดีของนักพัฒนาด้วย

ในบทความนี้ ผมจะแบ่งปันความเข้าใจผิดที่ผมพบและทำลายความเชื่อผิดๆ ที่มีอยู่ในอุตสาหกรรมเทคโนโลยี โดยอาศัยเรื่องราวส่วนตัว ประสบการณ์ของทีม และการวิจัยที่มีหลักฐาน ผมจะแย้งว่าผลิตภาพที่แท้จริงมีความเกี่ยวข้องกับการมุ่งเน้นเป้าหมายที่ชัดเจน การทำงานที่มีสุขภาพดี และวัฒนธรรมองค์กรที่สมดุล มันไม่ใช่การทำงานหนักหรือการทำงานเป็นเวลานานที่ทำให้เราได้ผลลัพธ์ที่ดี

ความหลอกลวงของการทำงานล่วงเวลา

หนึ่งในความเชื่อผิดๆ ที่ผมพบคือการทำงานล่วงเวลาจะทำให้ได้ผลลัพธ์ที่ดีกว่า ในช่วงแรกของการทำงาน ผมเคยทำงานในโครงการใหญ่ๆ ที่ต้องทำงานล่วงเวลาและวันหยุดเพื่อให้เสร็จสิ้นภายในเวลาที่กำหนด แต่หลังจากนั้น 6 เดือน ปัญหาเริ่มปรากฏขึ้น และเราต้องใช้เวลาและทรัพยากรเพิ่มเติมในการแก้ไขปัญหา และความเชื่อมั่นของลูกค้าก็ลดลงด้วย

คุณภาพมากกว่าปริมาณ

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

ความผิดพลาดของการมุ่งเน้น

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

การแก้ปัญหาโดยไม่ต้องใช้เครื่องมือ

หนึ่งในตัวอย่างที่น่าสนใจคือเมื่อทีมของผมกำลังต่อสู้กับปัญหาที่ยากในการออกแบบระบบ микросервис หลังจากทำงานเป็นเวลาสองสัปดาห์โดยไม่มีผลลัพธ์ที่ดี เราได้ตัดสินใจหยุดพักและพูดคุยกันในห้องพัก โดยใช้เวลาเพียง 30 นาทีในการหาวิธีแก้ปัญหาโดยใช้กระดานขาว และสามารถลดความซับซ้อนของปัญหาได้มาก

การปรับเปลี่ยนมาตรฐานผลิตภาพ

หากการทำงานล่วงเวลาและกิจกรรมที่ไม่หยุดพักไม่ใช่มาตรฐานที่ดีแล้ว เราควรติดตามอะไรบ้าง มาตรฐานผลิตภาพที่传统ในอุตสาหกรรมซอฟต์แวร์มักจะเน้นย้ำถึงการวัดผลลัพธ์ เช่น จำนวนบรรทัดโค้ด จำนวนการ commit หรือจำนวน ticket ที่ปิด แต่สิ่งเหล่านี้อาจไม่ใช่มาตรฐานที่ดีในการวัดความก้าวหน้า

การเข้าใกล้ที่ครอบคลุมมากขึ้น

ทีมของผมได้พยายามหามาตรฐานที่มีความหมายมากกว่านี้ โดยใช้มาตรฐานที่เน้นย้ำถึงผลลัพธ์ เช่น

  1. เวลาในการส่งมอบฟีเจอร์ใหม่
    เราสามารถส่งมอบฟีเจอร์ที่มีคุณค่าจริงให้กับผู้ใช้ได้เร็วแค่ไหน
  2. จำนวนเหตุการณ์ในการผลิต
    อัตราการเกิดเหตุการณ์ที่ต่ำหมายถึงคุณภาพโค้ดที่ดีกว่า การทดสอบที่ครอบคลุมมากขึ้น และการตัดสินใจด้านสถาปัตยกรรมที่ดีกว่า
  3. คะแนนการบำรุงรักษาโค้ด
    เราสามารถใช้เครื่องมืออัตโนมัติ เช่น SonarQube เพื่อตรวจจับโค้ดที่ซ้ำกัน ความซับซ้อน และความเสี่ยง
  4. การแบ่งปันความรู้ของทีม
    เราสามารถตรวจสอบได้ว่าทีมมีการแบ่งปันความรู้กันมากน้อยเพียงใด โดยการตรวจสอบว่าพวกเขาทำงานร่วมกันอย่างไร และมีการอภิปรายและการออกแบบแนวคิดอย่างไร
  5. การให้คะแนนความพึงพอใจของลูกค้า
    สุดท้าย ซอฟต์แวร์ถูกสร้างขึ้นสำหรับผู้ใช้ การให้คะแนนความพึงพอใจที่ดี การใช้งานที่มาก และการสนับสนุนที่ดีสามารถเป็นตัวบ่งชี้ผลิตภาพที่ดี

โดยการใช้มาตรฐานเหล่านี้ เราสามารถตัดสินใจได้ดีขึ้นเกี่ยวกับวิธีการเขียนโค้ด และรักษาความสมดุลระหว่างความต้องการของผู้ใช้และความต้องการในการบำรุงรักษา

พลังของความเกียจคร้านเชิงกลยุทธ์

ผมเคยคิดว่านักพัฒนาที่ดีควรจะเขียนโค้ดได้มากและรวดเร็ว แต่ผมพบว่ามันไม่ใช่เช่นนั้น นักพัฒนาที่ดีจะใช้ความเกียจคร้านเชิงกลยุทธ์ โดยหาวิธีแก้ปัญหาได้อย่างมีประสิทธิภาพและใช้โค้ดที่น้อยกว่า

เครื่องมือและเทคนิคสำหรับผลิตภาพที่แท้จริง

การสร้างสภาพแวดล้อมที่มีผลิตภาพที่แท้จริงต้องใช้ทั้งเครื่องมือที่เหมาะสมและวัฒนธรรมองค์กรที่ดี ผมได้ลองใช้เครื่องมือและเทคนิคต่างๆ และพบว่ามีหลายสิ่งที่สามารถช่วยได้ เช่น

  1. เทคนิค Pomodoro ที่ดัดแปลง
    เราสามารถใช้เวลา 45 นาทีในการทำงานและพัก 15 นาที เพื่อให้ได้สมดุลระหว่างการทำงานและพักผ่อน
  2. การผสมผสาน Kanban และ Scrum
    เราสามารถใช้การทำงานแบบ Kanban และ Scrum เพื่อจำกัดงานที่กำลังทำและวางแผนงานในระยะสั้น
  3. การ跟踪เวลาและวิเคราะห์ผลลัพธ์
    เราสามารถใช้เครื่องมือติดตามเวลาเพื่อตรวจสอบว่านักพัฒนาทำงานได้ดีที่สุดในช่วงเวลาใด และวางแผนงานให้เหมาะสม
  4. การตรวจสอบโค้ดและโปรแกรมมิ่งแบบจับคู่
    เราสามารถตรวจสอบโค้ดและทำงานร่วมกันเพื่อให้ได้ผลลัพธ์ที่ดีกว่า
  5. การบูรณาการและการทดสอบอย่างต่อเนื่อง
    เราสามารถใช้เครื่องมือการบูรณาการและการทดสอบเพื่อให้แน่ใจว่าโค้ดที่เขียนขึ้นเป็นไปตามมาตรฐาน

โดยการใช้เครื่องมือและเทคนิคเหล่านี้ เราสามารถสร้างสภาพแวดล้อมที่มีผลิตภาพที่แท้จริงได้

การสร้างวัฒนธรรมวิศวกรรมที่ดี

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

ความปลอดภัยทางจิตใจและความคาดหวังที่ยั่งยืน

ผมพบว่าเมื่อนักพัฒนารู้สึกปลอดภัยและสามารถแสดงความคิดเห็นได้ без การกลัวว่าจะถูกวิพากษ์วิจารณ์ เราจะได้ผลลัพธ์ที่ดีกว่า เราสามารถสร้างวัฒนธรรมนี้ได้โดยการทำการประชุมประจำและให้โอกาสนักพัฒนาที่จะแสดงความคิดเห็นและเสนอแนะ

วันไม่มีการประชุมและช่วงเวลาโฟกัส

เราสามารถสร้างวัฒนธรรมที่ดีได้โดยการให้เวลานักพัฒนาที่จะทำงานโดยไม่มีการรบกวน เช่น การสร้างวันไม่มีการประชุมหรือช่วงเวลาโฟกัส

บทเรียนจากกรณีศึกษาในโลกแห่งความเป็นจริง

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

การปรับเปลี่ยนความหมายของ “ผลิตภาพ”

สุดท้าย ผมพบว่าผลิตภาพในอุตสาหกรรมซอฟต์แวร์ไม่ใช่การทำงานล่วงเวลาหรือการทำงานอย่างต่อเนื่อง แต่เป็นการสร้างคุณค่าให้กับผู้ใช้โดยการทำงานที่มีคุณภาพและความเป็นอยู่ที่ดี

สมการสมดุล

สูตรสำหรับความสำเร็จที่ยั่งยืนคือการสร้างสมดุลระหว่างวัตถุประสงค์ที่ชัดเจน เครื่องมือที่เหมาะสม และวัฒนธรรมที่ดี

  1. การทำงานที่มีประสิทธิภาพมากกว่าการทำงานที่ยาวนาน
  2. การวัดผลลัพธ์ที่เน้นย้ำถึงคุณค่า
  3. การปรับปรุงอย่างต่อเนื่องของวัฒนธรรม

สรุป

ผลิตภาพที่แท้จริงในอุตสาหกรรมซอฟต์แวร์ไม่ใช่การทำงานล่วงเวลาหรือการทำงานอย่างต่อเนื่อง แต่เป็นการสร้างคุณค่าให้กับผู้ใช้โดยการทำงานที่มีคุณภาพและความเป็นอยู่ที่ดี

การเดินทางส่วนตัวของผมสอนให้ผมรู้ว่า “การทำงาน” หรือ “การปิด ticket” ไม่ใช่มาตรฐานที่ดีในการวัดผลิตภาพ แต่ผลิตภาพที่แท้จริงมาจากการทำงานที่มีคุณภาพและความเป็นอยู่ที่ดีของนักพัฒนาด้วย

เดนิส เอร์มาคอฟว์ เป็น Software Engineer ที่ Techflow และได้รับการรับรองเป็น Professional Scrum Master และ ICF ACC coach เริ่มต้นอาชีพด้วยการทำงานเกี่ยวกับ HTML markup ในยุคของ Netscape Navigator และจัดการทีมซอฟต์แวร์เป็นเวลา 15 ปี แต่เสียความเชื่อมั่นในอุตสาหกรรม และตอนนี้ได้พบบทบาทใหม่ในฐานะนักพัฒนาซอฟต์แวร์ที่มีส่วนร่วม