ฉันจะทำให้กรณีสำหรับโปรแกรมเมอร์ราคาแพงได้อย่างไร


33

ใน บริษัท ของเราเราต้องทำสิ่งที่ดูเหมือนไม่ซับซ้อนหลายอย่างเช่นพัฒนา UI มือถือ

สมมติว่าโปรแกรมเมอร์ผู้มีประสบการณ์ต้องเสียค่าใช้จ่าย 4x เท่าผู้เริ่มต้น

โดยพื้นฐานแล้วทั้งคู่สามารถทำสิ่งที่ดูเหมือนง่ายให้เสร็จภายในเวลาเท่ากัน

ความแตกต่างคือโปรแกรมเมอร์ที่มีประสบการณ์สร้างข้อผิดพลาดน้อยลงและรหัสของพวกเขามีเสถียรภาพมากขึ้น ฯลฯ โปรแกรมเมอร์เริ่มต้นเสียเวลามากสำหรับคนอื่น ๆ (PM ลูกค้าและอื่น ๆ ) แต่ราคาถูกกว่ามาก

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

เราควรลงทุนในโปรแกรมเมอร์มากขึ้นและดีขึ้นหรือมากขึ้นและดีกว่า PM เนื่องจากความแตกต่างระหว่างโปรแกรมเมอร์ที่มีประสบการณ์และใหม่ในสาขาของเราสามารถเป็น 4x


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

18
Let's say the experienced programmers costs us 4x as much as the beginners.- ไม่น่าเป็นไปได้ อัตราส่วนนั้นมากกว่า 2x หรือ 3x หากคุณกำลังจ่ายโปรแกรมเมอร์ที่ไม่ดีสิ่งที่คุณกำลังทำจริง ๆ คือการจ้างมือสมัครเล่นและฝึกอบรมให้ทำงานที่คุณต้องการเพียงให้พวกเขาออกจาก บริษัท ของคุณเพื่อรับทุ่งหญ้าสีเขียวเมื่อพวกเขาได้รับประสบการณ์น้อยที่สุดภายใต้เข็มขัดของพวกเขา
Robert Harvey

4
Both are basically able to complete the seemingly simple things in the same amount of time.- ดีโปรแกรมเมอร์ที่มีประสบการณ์จะช่วยประหยัดเวลาได้มากในระยะยาวเพราะคุณไม่จำเป็นต้องให้คำแนะนำที่เฉพาะเจาะจงกับเขาในสิ่งที่ต้องทำ
Robert Harvey

8
@ จูลส์: ในการที่จะ outsource / offshore คุณต้องเขียนรายละเอียดสเปคอย่างละเอียดซึ่งเป็นกระบวนการที่อาจต้องใช้เวลามากพอที่โปรแกรมเมอร์ผู้มีประสบการณ์จะเขียนโปรแกรมจริง อย่าเอาคำพูดของฉันไปพูดกับใครก็ตามที่กำลังพยายามแตกหน่อ ฉันมี.
Robert Harvey

2
@Ewan: โปรดยกตัวอย่าง บริษัท ขนาดใหญ่ที่ออกจากลอนดอนในช่วงสองปีที่ผ่านมาเพื่อค้นหานักพัฒนาซอฟต์แวร์ราคาถูกที่อื่นในสหราชอาณาจักร
gnasher729

คำตอบ:


60

ฉันมีประสบการณ์โดยตรงเกี่ยวกับทฤษฎีทั้งสองที่ถูกลองใช้ในโลกแห่งความจริง - ในโครงการเดียวกันจริง ๆ

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

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

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

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

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

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

TL; DR โปรแกรมเมอร์ที่ดีคือการต่อรอง สิ่งที่ยากคือการค้นหาพวกเขาและสร้างสภาพแวดล้อมการทำงานที่น่าดึงดูดพอที่จะทำให้พวกเขา


3
ฉันจะสลับ "ประสบการณ์" กับ "ดี" ใน tl ของคุณ dr ด้วยเหตุผลที่คุณชี้ให้เห็นข้างต้น นอกจากนี้อาจเป็นไปได้ (แต่ยังคงยาก) ในการค้นหาโปรแกรมเมอร์ที่ดีที่มีประสบการณ์ระดับมืออาชีพค่อนข้างน้อยหรือไม่มีเลย ฉันจะยอมรับว่าการปลดล็อกศักยภาพของนักพัฒนาเหล่านี้ต้องใช้การกรูมมิ่งและเป็นไปได้มากว่า บริษัท ของ OP ไม่มีวัฒนธรรมที่เหมาะสมในการทำสิ่งนี้ ประโยชน์อย่างหนึ่งของการมีโปรแกรมเมอร์ที่ยอดเยี่ยมคือการเป็นแบบอย่างที่ดีของพฤติกรรมและการปฏิบัติที่ดีและตรงกันข้ามกับคนธรรมดา
Derek Elkins

1
@Derek Elkins - ทำตามคำแนะนำได้ดี เห็นด้วยกับจุดที่สองของคุณ ในงานหนึ่งฉันถูก จำกัด อย่างมากสำหรับงบประมาณและยังคงสามารถรวมทีมที่ดีมากจากโปรแกรมเมอร์ที่มีประสบการณ์หนึ่งคนและโปรแกรมเมอร์รุ่นเยาว์ 3 คน (ไม่มีปริญญาประสบการณ์น้อยมาก) เป็นพนักงานใหม่ - หนึ่งในนั้นยอดเยี่ยมมาก แต่ฉัน "ใช้" เงินจำนวนมากผ่านประวัติย่อที่แย่มากก่อนที่ฉันจะพบพวกเขาและเวลามากขึ้น / เงินได้ฝึกฝนพวกเขาด้วยการขว้างงานเล็ก ๆ ในระดับที่เหมาะสมและปล่อยให้พวกเขาเป็นเจ้าของโซลูชั่นและฉลองความสำเร็จของพวกเขา
mcottle

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

โพสต์ยอดเยี่ยม +1 ฉันเพียงแค่เพิ่มข้อแม้ว่าเวลาการส่งมอบเป็นเครื่องมือทื่อมากสำหรับการประเมินคุณภาพของนักพัฒนา เรามีผู้รับเหมา "ซุปเปอร์สตาร์" ซึ่งมีความต้องการอย่างหนาแน่นในขั้นต้นเนื่องจากความเร็วในการพัฒนาของเขา เมื่อผู้คนพยายามหยิบสิ่งของของเขาขึ้นล้อก็จะหลุดออกมาเร็ว ๆ นี้ - แฮ็คโค้ดยากรหัสเสาหินขาดการทดสอบหน่วย - เขาก็รีบส่งพัสดุเร็วไป
Robbie Dee

นอกจากนี้นักพัฒนาซอฟต์แวร์ระดับพรีเมี่ยมใช้เวลาในการเขียนรหัสน้อยกว่ารุ่นน้องเนื่องจากพวกเขาต้องการความช่วยเหลืออย่างมากในการช่วยเหลือผู้อื่นตรวจสอบโค้ดสถาปัตยกรรมส่วนเบี่ยงเบนกระเป๋าสีน้ำตาลการประชุมเชิงปฏิบัติการฝึกอบรมและอื่น ๆ
Robbie Dee

19

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

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

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

หากคุณคิดว่าการจ้างมืออาชีพมีราคาแพงให้รอจนกว่าคุณจะได้จ้างมือสมัครเล่น

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


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

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

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

@Christophe Story points สำหรับการเปรียบเทียบความซับซ้อนของงานหนึ่งกับงานอื่น - พวกเขาไม่ได้ออกแบบมาสำหรับการวัดเวลาแม้ว่าพวกเขาจะถูกทารุณกรรมอย่างหนาแน่น (2pts = 1 วันเป็นต้น)
Robbie Dee

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

10

ฉันชอบและอัปเดตคำตอบของ mcottle แต่ฉันต้องการครอบคลุมการเปลี่ยนแปลงและข้อโต้แย้งอื่น ๆ ที่คำตอบอื่น ๆ ยังไม่ได้นำเสนอ

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

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

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

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

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

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

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


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

6

นี่ไม่ใช่ / หรือสถานการณ์

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

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

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

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


5

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

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

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

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


3

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

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

การเขียนโปรแกรมเป็นทักษะที่ค่อนข้างถูก แต่เป็นความรู้ที่มีค่า


2

อย่าพยายาม 'ทำกรณี' ตลาดกำหนดราคาสำหรับพนักงาน หากตลาดยินดีที่จะจ่ายค่าประสบการณ์มากกว่า 4x เพราะ บริษัท โดยรวมได้พยายามที่จะเพิ่มผลิตผล 4x

ตอนนี้เห็นได้ชัดว่าตลาดอาจผิดหรืออาจเป็น 3.5 หรือ 5x แต่ถ้าคุณเป็นเอเจนซี่ดิจิทัลการแข่งขันกับตลาดหรือสิ่งที่แตกต่างนั้นไม่สำคัญ

ปัญหาที่แท้จริงของคุณคือคุณเก่งพอที่จะสัมภาษณ์เพื่อแยกแยะความแตกต่างระหว่าง dev ที่มีประสบการณ์ดีและ dev เก่าเพียงผู้ที่ blagging มัน

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


แม้ว่าสิ่งนี้จะถูกต้องในแง่เศรษฐกิจ แต่ตลาดในพื้นที่แยกเช่นเมืองเล็ก ๆ พื้นที่ชนบทอาจเบ้อย่างมาก เมืองมหาวิทยาลัยอาจจะดีกว่า
วงษ์

จริง แต่ธุรกิจของคุณอยู่ในสถานที่
Ewan

2

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

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

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


1

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

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

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

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