งานใหม่สำหรับนักพัฒนาอาวุโส


21

ฉันมีนักพัฒนาอาวุโสที่มีประสบการณ์แปดปีของ. NET เริ่มตั้งแต่วันพรุ่งนี้เพื่อทำงานกับแอปพลิเคชัน 11,000 บรรทัด ในทีมมีตัวฉันและโปรแกรมเมอร์คนอื่น เราทั้งคู่มีประสบการณ์ประมาณสามปีในแต่ละครั้ง

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

ฉันควรให้พวกเขานานแค่ไหนก่อนที่พวกเขาจะพร้อมที่จะเริ่มเขียนคุณสมบัติใหม่และแก้ไขข้อบกพร่อง?


1
ขึ้นอยู่กับความซับซ้อนของรหัส 11,000 บรรทัด ฉันคาดหวังว่าใครสักคนที่มี 8 ปี (นั่นหมายความว่าพวกเขาเริ่มใช้มันในปี 2003) เพื่อให้สามารถวิ่งด้วยความเร็วสูงสุดภายในหนึ่งสัปดาห์
Ramhound

ในฐานะที่เป็นจุดข้อมูลเมื่อไม่กี่สัปดาห์ที่ผ่านมาเราได้มอบหมายนักพัฒนาให้กับโครงการด้วยรหัส JavaScript 13,700 บรรทัดและคิดว่าเขาจะทำงานได้อย่างมีประสิทธิภาพในการวิ่ง (หนึ่งสัปดาห์) โดยไม่ต้องคิดเลย
Gort the Robot

@StevenBurnap: ฉันชอบ :) จุดไฟบนเท้าของเขาและดูว่าเขาเผาบ้านลง
Joel Etherton

ฉันเป็นคนเดียวที่คิดว่า 11k ไลน์ไม่มากใช่ไหม? ฉันได้ให้วันกับความดีงามของหัวใจของฉัน
Louis Kottmann

ส่วนหนึ่งของตัวเลือกที่ได้รับมอบหมายของคุณอาจขึ้นอยู่กับว่าโครงการของคุณจะล่าช้าแค่ไหน สำหรับแนวคิดบางประการเกี่ยวกับวิธี จำกัด ผลกระทบของพนักงานใหม่ที่มีต่อพนักงานที่มีอยู่ให้ดูที่programmers.stackexchange.com/questions/164781/…
DeveloperDon

คำตอบ:


38

ฉันจะกำหนดข้อบกพร่องที่มีลำดับความสำคัญต่ำสองสามครั้งในวันแรกด้วยวิธีนี้ไม่มีใครกรีดร้องหากพวกเขาไม่ได้ทำในทันทีให้นักพัฒนาใหม่ได้ซักระยะเพื่อทำความคุ้นเคยกับรหัสฐาน

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

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

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

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

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


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

1
+1 - คะแนนที่ดีมาก แต่ฉันอยากจะย้ำว่ามันเป็นสิ่งสำคัญอย่างยิ่งที่จะตรวจสอบงานทั้งหมดของพวกเขาเพื่อให้คุณสามารถประเมินระดับทักษะของพวกเขาและให้แน่ใจว่าพวกเขาได้รับในหน้าเดียวกันกับทีม น่าเสียดายนี่ใช้เวลานานกว่าสองถึงสามสัปดาห์แรก +1 อีกอย่างที่ไม่ดีเท่าการสัมภาษณ์ เกิดอะไรขึ้นกับคนจำนวนมากระหว่างการสัมภาษณ์กับวันที่พวกเขาปรากฏตัวเป็นเรื่องลึกลับสำหรับฉัน lobotomies เป็นเรื่องธรรมดาตามที่ดูเหมือนจริงหรือไม่? นั่นเป็นคำอธิบายเดียวที่ฉันสามารถทำได้
Dunk

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

2
@DJClayworth ในขณะที่ฉันยอมรับว่าคนใหม่มีแนวโน้มที่จะมีความรู้มากขึ้นและ OP ควรใส่ใจกับสิ่งที่เขาต้องการจะทำแตกต่างกันมีบางครั้งที่ความรู้เกี่ยวกับระบบของคุณและข้อกำหนดอาจจะดีกว่าความรู้ทั่วไปของเขาและ คุณอาจต้องสั่งให้เขาใช้เส้นทางที่น้อยกว่าด้วยเหตุผลที่อยู่ในประวัติของระบบและข้อกำหนด บางครั้งคุณต้องยืนยันว่าพวกเขาทำสิ่งที่คุณทำด้วยเหตุผลที่พวกเขาอาจยังไม่ทราบ แน่นอนเมื่อคุณทำคุณต้องอธิบายว่าทำไมไม่ใช่แค่เราทำอย่างนั้นเสมอ
HLGEM

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

18

เริ่มต้นทันทีกับงานเล็ก ๆ - สิ่งที่ไม่ต้องการภาพใหญ่

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


นี่คือสิ่งที่ฉันคิด
MrBliz

+1 นี่เป็นเกมง่ายๆโดยเฉพาะอย่างยิ่งเนื่องจากรหัสฐานมีขนาดเล็ก
Louis Kottmann

8

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

ฉันพบว่าฉันไม่สามารถห่อหุ้มตัวโครงการจนกระทั้งฉันต้องเข้าไปแก้ไขหรือเปลี่ยนแปลงอะไรบางอย่าง

นอกจากนี้ ... ไม่ว่าคุณจะคิดว่าคุณอธิบายได้ดีแค่ไหนว่าโครงการทำงานอย่างไรมี 'โอ้ใช่ฉันลืมที่จะบอกคุณ' เราพบกับปัญหานี้ดังนั้นเราจึงทำสิ่งนี้ 'ช่วงเวลาที่ไม่ได้ล้อเล่นจนกว่า คุณเริ่มทำงานจริง


+1 ยิ่งการจ้างงานใหม่เร็วขึ้นเท่าใดก็สามารถเริ่มต้นโครงการได้เร็วเท่าไรการจ้างงานใหม่ก็จะสะดวกสบายขึ้น
ชาดแฮร์ริสัน

3

นานแค่ไหน?

เชือกยาวเท่าไหร่

เมื่อเขามีความสะดวกสบาย: เมื่อเขาแก้ไขข้อผิดพลาดครั้งแรกของเขา -> เขาพร้อม


3

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

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


2

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

ฉันเปลี่ยนงานหลายครั้งและฉันเป็นผู้มีส่วนร่วมในงานทั้งหมดภายในสัปดาห์แรก ที่ยากที่สุดใช้เวลาหนึ่งสัปดาห์ในการรับโค้ดเพื่อคอมไพล์ (อย่างน้อย 100k บรรทัดของโค้ด) การสร้างเต็มใช้เวลา 8 ชั่วโมงสำหรับโครงการนั้น

ฉันทำงานประมาณ 80 ชั่วโมงในสัปดาห์แรก (โครงการนี้ล้าหลัง)


น่าสนใจที่ทุกคนกำลังสมมติว่ามันเป็นผู้ชาย ... :)
MrBliz

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

ฉันเป็นผู้ชายและทุกคนต้องเป็นเช่นกัน :-) เพียงวิธีการเขียนของฉันฉันไม่ได้มีระเบียบวินัยมากพอที่จะเขียนเขา / เธอตลอดเวลา
Bill Leeper

1

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


2
ฉันคิดว่ามาตรฐานของฉันอาจสูงเกินไป แต่คุณ ... 1 วัน ... และ 1 สัปดาห์เพื่อให้เกิดผลจริงเหรอ? IME นั้นไม่เหมือนจริงมาก
Dunk

@Dunk: จะได้รับมอบหมายงานและสามารถเข้าใกล้พวกเขาได้โดยไม่สูญเสียไปโดยสิ้นเชิง? ฉันไม่ได้บอกว่าพวกเขาจะต้องใช้ความเร็วเต็มที่ แต่เมื่อถึงจุดนั้นพวกเขาควรจะสามารถค้นหารหัสฐานรู้ว่าใครจะขอเรียนรู้เพิ่มเติม ฯลฯ
Telastyn

ใช่อย่างจริงจัง 11k LoC ไม่ใหญ่มาก ให้เขาติดตั้งเพื่อให้มันสร้างและทำงานในดีบักเกอร์แล้วแสดงให้เขาเห็นว่ามันทำงานอย่างไร นั่นควรจะเพียงพอ
gbjbaanb

1

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

มันขึ้นอยู่กับงานที่คุณคาดหวังให้เขาทำจริงๆ

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