การตรวจทานโค๊ด คืออะไร สำคัญอย่างไร และควรทำอย่างไร

สิ่งหนึ่งที่ผมได้จากการเป็นคนไปนั่งสัมภาษณ์ Candidate ทั้งหลายคือ หลาย ๆ บริษัทไม่มีการตรวจทานโค๊ด (นี่ผมพูดถึงบ.เทเลคอมยักษ์ใหญ่ของประเทศเลยนะ) คือ พอโปรแกรมเมอร์ทำงานเสร็จปุ๊บก็เอาโค๊ดขึ้นไปในระบบทดสอบทันที โดยไม่มีการให้อีกคนหนึ่งรีวิวก่อนว่างานที่เขาทำนั้นถูกผิดอะไรอย่างไร

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

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

ถ้ามองในมุมมองของนักประพันธ์ ผู้รีวิวโปรแกรมก็เปรียบเหมือนดั่งบรรณาธิการนั่นเอง

โดยส่วนตัวผมไม่เคยได้รับหน้าที่ให้รีวิวโค๊ดอย่างเป็นทางการ เนื่องด้วยวุฒิภาวะยังไม่ถึง (อย่างน้อยก็ถูกมองว่าอย่างนั้น) แต่ก็เคยไปทำหน้าที่นี้บ้างเป็นบางครั้ง ความเห็นของผมอาจจะไม่ถูกต้องนัก ก็ฟังหูไว้หูก็แล้วกัน

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

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

คำว่า “ตรงไปตรงมา” ในที่นี้ ไม่ใช่ความเห็นลักษณะแบบ “ห่วยว่ะ” หรือ “อ่านแค่สามบรรทัดก็หมดอารมณ์แล้ว” หรืออะไรทำนองนี้ ความเห็นลักษณะนี้เป็นความเห็นแบบบ่อนทำลายและไม่ได้ให้ประโยชน์อะไรกับคนเขียน ซ้ำร้ายเขาจะไม่อยากให้คุณตรวจทานอีกเป็นครั้งที่สอง

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

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

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

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

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

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

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *

This site uses Akismet to reduce spam. Learn how your comment data is processed.