โปรแกรมเมอร์อาวุโสควรมีส่วนร่วมในฐานะผู้ตรวจสอบรหัสในโครงการของโปรแกรมเมอร์อาวุโสหรือไม่?


55

หนึ่งในสมาชิกในทีมของฉันเป็นโปรแกรมเมอร์รุ่นเยาว์มีทักษะการเขียนโปรแกรมที่น่าประทับใจสำหรับระดับประสบการณ์ของเขา

และระหว่างการตรวจสอบโค้ดฉันเชื่อว่าการเน้นการเรียนรู้ไม่ใช่การชี้ข้อผิดพลาด

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


54
สิ่งที่ "จูเนียร์" และ "อาวุโส" ทั้งหมดนี้เกี่ยวกับอะไร? IMO ไม่ว่าจะเป็นหรือไม่เป็นโปรแกรมเมอร์ที่มีคุณสมบัติในการตรวจสอบรหัสของคนอื่น ๆ ควรจะพิจารณาตามความสามารถและประสบการณ์ - ไม่ชื่อ ....
จอมปลวก

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

18
แต่บางครั้งชื่อนี้ถูกกำหนดโดยการเมืองและเกมของ HR :)
Michal Franc

4
คุณหมายความว่าอย่างไรโดย "โปรแกรมเมอร์อาวุโส"? คนเหล่านี้มีประสบการณ์น้อยลงในแอปพลิเคชันหรือมีประสบการณ์น้อยลงในอุตสาหกรรมหรือไม่? จากประสบการณ์ของฉันมีความเป็นไปได้ที่สมาชิกในทีมจะเป็นบุคคลที่มีประสบการณ์มากที่สุดในโครงการที่กำหนดเพราะพวกเขาได้ทำงานมานานหรือนานที่สุด
Thomas Owens

4
@ThomasOwens โดย "โปรแกรมเมอร์อาวุโส" ฉันหมายถึงคนที่มีประสบการณ์น้อยลงในอุตสาหกรรม
Md Mahbubur Rahman

คำตอบ:


62

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

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

นอกเหนือจากประสบการณ์ในเครื่องมือและเทคโนโลยียังพิจารณาประสบการณ์ในโดเมนแอปพลิเคชัน ผู้ที่มีประสบการณ์ 20 ปี แต่เพียง 1 หรือ 2 ในอุตสาหกรรมการเงินอาจได้รับความช่วยเหลือโดยการมีนักพัฒนาที่มีประสบการณ์น้อยกว่าโดยรวมด้วยประสบการณ์เพียง 5 ปีในอุตสาหกรรมการเงินตรวจสอบงานของเขา

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

สิ่งนี้นำไปใช้กับการทบทวนทุกประเภท - ความต้องการ, การออกแบบ, รหัส ...


4
+1 สำหรับ "ผู้เข้าร่วมที่จำเป็นในการตรวจสอบควรเป็นคนที่เหมาะสมที่สุดในการระบุปัญหาเหล่านี้โดยไม่คำนึงถึงชื่อหรือรุ่นพี่" และยังเป็นคำตอบที่ยอดเยี่ยม
Md Mahbubur Rahman

60
"จุดประสงค์เบื้องต้นของการตรวจสอบรหัสคือการค้นหาข้อบกพร่องหรือปัญหาที่อาจเกิดขึ้น" ไม่เห็นด้วยอย่างสิ้นเชิง วัตถุประสงค์หลักของการทบทวนรหัสคือการแบ่งปันความรู้ วัตถุประสงค์ที่สองของการตรวจสอบโค้ดคือการสร้างมาตรฐานการเข้ารหัส ข้อบกพร่องใด ๆ ที่พบในระหว่างการตรวจสอบคือโชคดีกว่าการตัดสิน programmer.97things.oreilly.com/wiki/index.php/Code_Reviews
pdr

8
@pdr ควรสร้างมาตรฐานการเข้ารหัสที่ดีก่อนที่จะเขียนโค้ดบรรทัดแรก หากคุณกำลังใช้ความเห็นเพื่อสร้างมาตรฐานมันสายเกินไป อาจเป็นเวลาที่ดีในการปรับแต่งมาตรฐานการเข้ารหัสในขณะที่คุณกำลังพัฒนา - คุณสามารถใช้ความคิดเห็นเพื่อระบุจุดอ่อนหรือเสนอแนะการปรับปรุงมาตรฐาน แต่ฉันไม่สามารถจินตนาการได้ว่าการเริ่มต้นโครงการพัฒนาโดยไม่มีมาตรฐาน แนวทางที่แนะนำของภาษา)
Thomas Owens

5
คุณจะรู้ได้อย่างไรว่าจะใส่มาตรฐานการเข้ารหัสไว้อย่างไรก่อนที่โครงการจะเริ่มต้นและมันชัดเจน (ผ่านการตรวจสอบโค้ด) ที่สมาชิกในทีมที่แตกต่างกันเข้าหาปัญหาเดียวกันในรูปแบบที่แตกต่างกันอย่างไร เราไม่ได้พูดถึงการใส่ชื่อเมธอดซึ่งโดยทั่วไปจะมีมาตรฐานภาษาเรากำลังพูดถึงสิ่งต่าง ๆ เช่น NUnit vs MSTest; รูปแบบพื้นที่เก็บข้อมูล ความสามารถในการพูดว่า "เฮ้ฉันเขียนเสื้อคลุมสำหรับลูกค้า WCF แล้วดูที่เหมืองใช้สิ่งที่ดีที่สุดและทำให้เป็นมาตรฐาน" สิ่งนี้มาจากการตรวจสอบโค้ดและเป็นเหตุผลที่ดีที่สุดที่จะทำ
สาธารณรัฐประชาธิปไตยประชาชนลาว

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

81

โปรแกรมเมอร์อาวุโสควรมีส่วนร่วมในฐานะผู้ตรวจสอบรหัสในโครงการของโปรแกรมเมอร์อาวุโสหรือไม่?

ใช่พวกเขาควร มันเป็นประสบการณ์การเรียนรู้ที่ดีในการอ่านรหัสของคนอื่น (และนั่นใช้ทั้งกับรหัสที่ดีและไม่ดีแม้ว่าใครจะหวังว่ารหัสของนักพัฒนาอาวุโสจะไม่เลว ... )

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


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


ฉันคิดว่า mouviciel หมายความว่ารหัสของผู้อาวุโสสามารถข่มขู่ไม่ใช่ผู้อาวุโสเอง (ถ้าเป็นกรณีนั้นใช่ทีมมีปัญหาร้ายแรงมากกว่าใครจะทบทวนรหัส)
yannis

6
@YannisRizos - 1) ฉันไม่ได้อ่านอย่างนั้น 2) นั่นคือสิ่งที่"ไม่ฉลาดที่จะคาดหวังมาก" เข้ามาหากรหัสของผู้อาวุโสคือ "ข่มขู่" แล้วมันเป็นสิ่งที่ดีโดยเฉพาะอย่างยิ่งสำหรับการพัฒนาของจูเนียร์ที่พยายามอ่าน / ทำความเข้าใจ
สตีเฟ่นซี

1
เรียนรู้ว่าโปรแกรมเมอร์อาวุโสคิดอย่างไรเป็นอีกส่วนที่มีคุณค่าของการตรวจสอบโค้ดสำหรับนักพัฒนารุ่นเยาว์ เมื่อฉันเป็นรหัสผู้พัฒนารุ่นรองทำให้เข้าใจได้ง่ายขึ้นเมื่อผู้พัฒนาอาวุโสได้ตรวจสอบรหัสกับฉัน
Michael Shopsin

38

ฉันจะเพิ่มว่าถ้าโปรแกรมเมอร์ "จูเนียร์" ไม่สามารถเข้าใจรหัสผู้สูงอายุแล้วในตัวเองเป็นตัวชี้วัดที่ดีของรหัส ตกลงอาจมีบางครั้งที่มันเป็นไปไม่ได้ที่จะเขียนโค้ดที่ทุกคนสามารถเข้าใจได้ แต่หวังว่ามันจะเป็นข้อยกเว้น - ถ้ามีเพียง 1 หรือ 2 คนที่สามารถเข้าใจโค้ดได้แล้วจะเกิดอะไรขึ้นเมื่อคนเหล่านั้นไม่ว่าง มัน?

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

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


6
ตอนนี้เป็นประโยคเปิดตัวที่ดี
สาธารณรัฐประชาธิปไตยประชาชนลาว

หากรหัสกำลังใช้เทคนิคขั้นสูง (เช่นการใช้ชุดการดำเนินการแทนอาร์เรย์และลูป) สิ่งที่เกิดขึ้นคือมีคนในทีมยกเกมขึ้น
kevin cline

1
เมื่อทำการตรวจสอบโค้ดมันเป็นตัวบ่งชี้ที่แข็งแกร่งอย่างยิ่งว่ารหัสนั้นจำเป็นต้องมีข้อคิดเห็นหรือสองอย่างหากใครก็ตามต้องถามว่าชิ้นส่วนของรหัสนั้นทำอะไร
Bryan Anderson

24

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

  • พวกเขามีเวลามากขึ้นโดยทั่วไป
  • พวกเขามีแนวโน้มที่จะใช้มันช้าๆทีละบรรทัดจากความจำเป็นที่จะเข้าใจรหัส
  • เมื่อคุณพูดถึงการดูแลรักษาโค้ดนั่นหมายความว่าทุกคนใน บริษัท ไม่ใช่แค่โปรแกรมเมอร์ชั้นนำของคุณ นั่นหมายความว่าโปรแกรมเมอร์รุ่นเยาว์ของคุณจะต้องสามารถเข้าใจโค้ดได้เพื่อที่จะประกาศให้สามารถรักษาได้
  • บ่อยครั้งที่พวกเขามีข้อสันนิษฐานที่ไม่ดีโดยเชื่อว่ามีบางสิ่งที่เป็นไปตามที่พวกเขาคิด
  • การศึกษาของพวกเขาในภาษาการเขียนโปรแกรมเป็นเรื่องล่าสุดและมีโอกาสน้อยที่จะสับสนกับประสบการณ์หลายปีในภาษาอื่น ตัวอย่างเช่นอาวุโสอาจใช้นิสัยที่เขาหยิบขึ้นมาจาก C ++ ที่รวบรวม แต่ทำงานแตกต่างกันอย่างละเอียดใน Java รุ่นน้องเลือกข้อผิดพลาดเหล่านั้นได้ง่ายขึ้น
  • ผู้ตรวจสอบโค้ดจำเป็นต้องระบุปัญหาเท่านั้นไม่จำเป็นต้องเสนอทางออกที่ดีกว่า พวกเขามักจะแสดงความคิดเห็นตามแนวของ "ฉันไม่สามารถหาวิธีที่จะทำได้ดีกว่า แต่ส่วนนี้สับสนเพราะการทำซ้ำทั้งหมด" โปรแกรมเมอร์ที่มีประสบการณ์มากขึ้นสามารถทำการปรับปรุงได้อย่างง่ายดายแม้ว่าพวกเขาอาจไม่ได้สังเกตเห็นปัญหาในตอนแรก

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


13

จูเนียร์มักจะถูกขอให้รักษารหัสเป็นสิ่งสำคัญที่พวกเขาสามารถเข้าใจได้

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

ฉันยังได้ขอให้รุ่นน้องทบทวนรหัสบางอย่างเมื่อฉันรู้ว่าพวกเขาจะทำสิ่งที่คล้ายกันสำหรับลูกค้ารายอื่นในไม่ช้าหรือถ้าฉันรู้ว่าพวกเขาทำงานอย่างอื่นที่คล้ายกันหรือว่าพวกเขามีทักษะเฉพาะชุด

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

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

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

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

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

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

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


7

คำตอบของฉันคือบางครั้ง มันจะแตกต่างจากโปรแกรมเมอร์ไปจนถึงโปรแกรมเมอร์และจากงานหนึ่งไปอีกงานหนึ่ง

สำหรับ:

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

ต่อต้าน:

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

5

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

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

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

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


2

วิศวกรจูเนียร์ควรตรวจสอบรหัสของวิศวกรอาวุโสอย่างน้อยก็ในบางครั้ง

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

บางครั้งฉันมองข้ามประโยชน์ของการตรวจสอบโค้ดในความคิดของฉันซึ่งอาจมีความสำคัญในระยะยาวมากกว่าการตรวจจับข้อผิดพลาด:

  • การแบ่งปันความรู้เกี่ยวกับสิ่งที่เกิดขึ้นจริงในรหัสฐาน - "เดี๋ยวก่อนฉันคิดว่าบิลมีคลาสที่ทำ X เราไม่จำเป็นต้องเขียนใหม่"
  • การแบ่งปันความรู้เกี่ยวกับเทคนิคที่ดีและรูปแบบการเขียนโปรแกรม

ในทั้งสองด้านนี้ผู้ตรวจสอบรุ่นใหม่มีแนวโน้มที่จะได้รับประโยชน์มากกว่าผู้อาวุโส


2

โปรแกรมเมอร์อาวุโสควรทำการแสดงความคิดเห็นเกี่ยวกับรหัสสำหรับเพื่อนร่วมงานอาวุโสของพวกเขา!

แต่พวกเขาไม่ควรจะเป็นเพียงวิจารณ์ จับคู่กับนักพัฒนาซอฟต์แวร์ที่มีประสบการณ์มากขึ้นต่อการตรวจสอบโค้ด

มีประโยชน์มากมาย:

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

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

  • รุ่นน้อง dev จะได้เรียนรู้วิธีการเขียนโค้ดที่ดีขึ้น การทบทวนโค้ดเป็นโอกาสที่จะสอนโดยยกตัวอย่าง

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

  • ผู้พัฒนาระดับรองจะมีความรู้เกี่ยวกับรหัสฐานอย่างลึกซึ้งยิ่งขึ้น จงเห็นแก่ตัว! ด้วยการดึงนักพัฒนาผู้ต่ำต้อยมาก่อนคุณจะสามารถมอบมันให้กับพวกเขาได้เร็วขึ้น

  • รุ่นน้องจะรู้สึกมีส่วนร่วมมากขึ้น รุ่นจูเนียร์ dev จะเริ่มเห็นรหัส "รุ่นพี่" (และเพื่อนร่วมงาน) ว่าเป็นคนต่างชาติน้อยลงและข่มขู่ นี่เป็นประโยชน์อย่างมากและมักถูกมองข้ามจากการตรวจสอบโค้ด

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

  • นักพัฒนาอาวุโสจะต้องรับผิดชอบ ฉันเคยเห็นสถานการณ์ที่ผู้พัฒนาซอฟต์แวร์อาวุโสมักจะขัดเกลารหัสของกันและกัน (ความไว้วางใจความขี้เกียจ ฯลฯ ) ดวงตาชุดพิเศษจะช่วยลดทอนมันลงไป

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


0

การตรวจสอบรหัสนั้นใช้สำหรับการตรวจสอบรหัสไม่ใช่เพื่อการเรียนรู้ ถ้าฉันเป็นโปรแกรมเมอร์รุ่นน้องฉันจะถูกข่มขู่ให้ตรวจสอบรหัสของรุ่นพี่

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

ทางเลือกสองทางคือ:

  • ให้จูเนียร์เข้าร่วมประชุมทบทวนรหัสและให้ผู้ดูแลทุกคนเปิดการอภิปรายการสอน / การเรียนรู้
  • การเขียนโปรแกรมคู่ฝึกหัด

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

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

@Jefromi: OP ได้กล่าวอย่างชัดเจนว่าเขา / เธอต้องการกำหนดวัตถุประสงค์ของการตรวจสอบโค้ดเพื่อการเรียนรู้ ฉันแค่บอกว่านี่ไม่ใช่สิ่งที่พวกเขามีไว้สำหรับ
mouviciel

หืมฉันคิดว่าเราเข้าใจ OP แตกต่างกัน - โพสต์นั้นบอกว่าเน้นการเรียนรู้ แต่มันก็บอกว่า "เกี่ยวข้องกับผู้ตรวจสอบโค้ด" ซึ่งหมายความว่าโปรแกรมเมอร์รุ่นเยาว์ไม่ใช่คนเดียว
Cascabel
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.