ฉันจะจัดการทีมที่มีระดับความสามารถแตกต่างกันอย่างไร


16

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

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


11
มีทีมที่มีทักษะระดับเดียวกันหรือไม่?
P.Brian.Mackey

@ P.Brian.Mackey: ฉันหมายถึงค่อนข้างแตกต่าง
Jon Purdy

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

@Henrik: ฉันรู้ว่าฉันกำลังทำอะไรอยู่ฉันไม่มีประสบการณ์มากมายในการจัดการผู้พัฒนารายอื่นและต้องการรับคำแนะนำเกี่ยวกับวิธีทำให้แน่ใจว่าสิ่งต่าง ๆ เป็นไปอย่างราบรื่น ฉันมีความมั่นใจอย่างเต็มที่ในความสามารถของพวกเขาและฉันคิดว่าผู้คนกำลังอ่านคำถามเชิงลบของฉันมากกว่าที่ฉันคิดไว้ ฉันเพิ่งเข้าสู่การเขียนโปรแกรมมานานกว่าครึ่งชีวิตแล้วดังนั้นฉันจึงทำผิดพลาดมากมายที่คนเหล่านี้มีประสบการณ์ 2-3 ปียังไม่ได้เจอ
Jon Purdy

สำหรับ บริษัท หรือโครงการด้าน?
Marcie

คำตอบ:


10

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

หมายเหตุด้านข้าง: ไม่ควรมีเรื่องที่น่าประหลาดใจในระหว่างการทบทวนแบบปกติ


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

1
เครื่องมือสำหรับการตรวจสอบรหัสในขณะที่เป็น "ชำระล้าง" คือ [ code.google.com/p/gerrit/]
Henrik

9

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

ผมยังแนะนำให้ใช้ระบบอัตโนมัติมากที่สุดเท่าที่เป็นไปได้:

  • ให้ทีมใช้เครื่องมือเช่นNDependหรือResharperหากคุณอยู่ใน. Net realm ปรับแต่งกฎมาตรฐานหากคุณไม่ชอบ
  • ทำให้การทดสอบของคุณเป็นจริงโดยอัตโนมัติ

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


3
โปรแกรมเมอร์ที่ไม่ดีอาจตั้งค่ากรณีทดสอบที่ไม่ดี?
JeffO

1
เครื่องมืออย่าง Resharper เป็นคำนิยาม เรียบร้อย แต่ไม่แน่นอนฟรี การทดสอบอัตโนมัติต้องมีการเขียนโค้ดที่สามารถทดสอบได้ซึ่งอาจเป็นการกำหนดข้อกำหนดที่ไม่สามารถปฏิบัติได้หากระดับความสามารถนั้นไม่สามารถทำได้
P.Brian.Mackey

@ เจฟฟ์: พวกเขาไม่ใช่โปรแกรมเมอร์ที่ไม่ดีเรามีภูมิหลังที่แตกต่างกันและฉันก็มีเวลาหลายปี สันนิษฐานว่าฉันและคนที่มีประสบการณ์มากที่สุดจะเขียนบททดสอบถ้ามี
Jon Purdy

@Jeff O: จากนั้นพาทีมออกไป
ปีเตอร์เค

@ P.Brian.Mackey: ไม่มีข้อกำหนดของเครื่องมือฟรีในคำถาม หากรหัสไม่สามารถทดสอบได้ให้นำออกจากทีม พยายามแสดงให้พวกเขาเห็นวิธีเขียนโค้ดที่สามารถทดสอบได้และหากพวกเขาไม่ได้ทำการปรับปรุงใด ๆ ให้นำพวกเขาออกจากทีม
ปีเตอร์เค

5

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

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


3

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

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

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

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

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


2

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

พูดคุยตกลงเขียนแบบและสื่อสารมาตรฐาน (เช่นการตั้งชื่อการกำหนดแนวทางปฏิบัติที่ดีที่สุดและโครงสร้างโฟลเดอร์)

ทำการทดสอบอย่างต่อเนื่องและสม่ำเสมอและตรวจสอบคุณภาพ แจ้งให้บุคคลนั้นโดยเร็วเมื่อคุณเห็นความไม่สอดคล้องกัน


2

ฉันจะบอกว่า 'ให้คนที่มีประสบการณ์มากที่สุดในทีมมารวมกัน' แต่ดูเหมือนคุณเป็นคนนั้น

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

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


เห็นด้วยในส่วนการตรวจสอบรหัส คุณต้องแนะนำพวกเขาให้เร็วที่สุด

2

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

ฉันเป็นผู้จัดการและสามารถเป็นผู้นำทางเทคนิค (ในช่วงไม่กี่ปีที่ผ่านมาฉันได้เล่นบทบาทหลัง ๆ เพื่อเพิ่มความเป็นผู้นำภายในทีมไม่ว่าในกรณีใดความคิดบางอย่าง:

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

1

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


1

ในฐานะที่เป็นนักพัฒนาที่มีประสบการณ์มากที่สุดในทีมผมจะคาดหวังจากการฝึกหนัก

ให้ทีมมอบหมายงานด้วยตัวเองโดยใช้Kanbanจากนั้นใช้เวลาตลอดทั้งวันในการเขียนโปรแกรมจับคู่กับแต่ละงาน

เมื่อคุณเห็นนิสัยที่ไม่ดีหรือบางสิ่งที่พวกเขาควรรู้ให้หยุดทุกสิ่งและวาดภาพบนไวท์บอร์ด

หลังจากผ่านไปไม่กี่สัปดาห์คุณจะสามารถชะลอการฝึกหนักได้เนื่องจากทักษะโดยรวมของทีมจะเข้าหาคุณ


1

มีรายการที่แตกต่างกันสองรายการที่ฉันอยากจะตรวจสอบจากตำแหน่งของคุณ:

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

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

ด้วยวิธีการทั้งหมดนี้ทำให้การสื่อสารดีขึ้น โชคดี!


0

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

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

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