ควรกระจายความสามารถผ่านทีมอย่างไร


9

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


ดูเหมือนว่าเช่นนี้programmers.stackexchange.com/questions/76890/...
S.Lott

@Lott ที่คล้ายกัน แต่นั่นหมายถึงการรักษานักพัฒนาที่โดดเด่นมากเกินไปในการตรวจสอบถ้าฉันจำได้อย่างถูกต้อง
Morgan Herlocker

2
ระบบตัวละครที่ดีที่สุดให้คุณแจกจ่ายคะแนนความสามารถพิเศษเป็นระยะ
FrustratedWithFormsDesigner

1
ขออภัยวันนี้ Mass Effect 2 (และเกมอื่น ๆ ) มากเกินไป : P
FrustratedWithFormsDesigner

คำตอบ:


11

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


7

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

โดยพื้นฐานแล้วเรื่องราวดังต่อไปนี้:

กลุ่มของโปรแกรมเมอร์ถูกแบ่งออกเป็นกลุ่มตามความสามารถโดยมีโปรแกรมเมอร์ x ที่แย่ที่สุดที่ถูกจัดกลุ่มเข้าด้วยกัน x ตัวถัดไปจัดกลุ่มเข้าด้วยกัน ฯลฯ และกลุ่มที่ดีที่สุดจัดกลุ่มเข้าด้วยกัน

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

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

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


1
ใช่นี่เป็นหนึ่งในปัญหาหลักของ A-Team แต่สรุปได้ว่ามันใช้ได้กับทุกทีมที่อยู่บนพื้นฐานของการศึกษานี้จะเป็นความผิดพลาด
Jeremy

เห็นด้วย: ไม่ใช่ทุกคนเหมือนกันหรือกลุ่มที่เทียบเท่าจะมีพลวัตเท่ากัน แต่มันเป็นเรื่องเล็ก ๆ น้อย ๆ ที่ดี!
Ed James

1
เอากลุ่ม devs มารวมกันซึ่งทั้งหมดเขียนอัลกอริธึมการค้นหาเส้นทางเท่านั้นและนี่คือสิ่งที่คุณจะได้รับ ...
Steven Evers

ฮ่า ๆ - คุณไม่สามารถหารายงานที่เป็นไปได้มากที่สุดเพราะศาสตราจารย์เพิ่งสร้างเรื่องราวขึ้นมาทันที ;-)
Steven A. Lowe

นั่นคงไม่ทำให้ฉันประหลาดใจ: D
Ed James

3

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

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

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


ฉันสามารถสันนิษฐานได้จากย่อหน้าแรกของคุณว่าคุณไม่ได้ทำงานในสภาพแวดล้อมที่มีความต้องการสำหรับนักพัฒนาเกินอุปทาน พวกเราหลายคนทำ :-)
Carson63000

3

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

ยิ่งกว่านั้นจะเกิดอะไรขึ้นถ้าคนที่มีทักษะตัดสินใจออกเดินทาง ใครจะเป็นผู้ดำเนินโครงการ

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


3

คนที่ไม่สามารถสอนทำได้

ฉันคิดว่ามีปัจจัยที่ต้องพิจารณาอีกมาก

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

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


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

@ Ladislav Mrnka: ฉันไม่ได้บอกว่าคุณไม่ควรแจกจ่ายนักพัฒนาอาวุโสในทีมต่าง ๆ ความสามารถในการเรียนรู้จากรหัสจะแตกต่างกันไป สิ่งนี้จะถือว่า devs ใช้เวลาในการเรียนรู้จากโค้ดที่หลายคนทำไม่ได้
dietbuddha

2

การกำหนดทีม 'A' มีสองประเด็นที่สำคัญ ประการแรกคือความเข้ากันได้ การมีทีมที่เข้ากันได้ดีและทำงานร่วมกันเป็นสิ่งสำคัญยิ่งกว่านั้นคือ "ความสามารถ" ของพวกเขา ตอนนี้อาจเป็นโปรแกรมเมอร์ทักษะสูงสองคนโปรแกรมเมอร์ฝีมือสองคนหรือมิกซ์ ความจริงที่ว่าพวกเขาสามารถทำงานร่วมกันได้ดีหมายความว่าพวกเขาจะมีประสิทธิผลมากขึ้น

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


1

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

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