วิธีกำหนดจำนวนโปรแกรมเมอร์ที่จำเป็นสำหรับโครงการ


18

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

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

โครงการมีความซับซ้อนและเพิ่มความซับซ้อนทุกวันด้วยรหัสมากกว่าหนึ่งล้านบรรทัด มันคือรหัส VB.NET ประมาณ 250,000 บรรทัด, รหัส Ruby 6,200 สายและบางที 5,000 บรรทัดของ PHP นอกจากนี้ยังมีฐานข้อมูล MySQL ที่มีประมาณ 200 ตาราง

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

ปัจจุบันโครงการนี้มีโปรแกรมเมอร์เพียงคนเดียวเท่านั้นเอง ขณะนี้ฉันยังให้การสนับสนุนผลิตภัณฑ์ทั้งหมดสำหรับ บริษัท ของเราที่มี 75 คน ซึ่งรวมถึงการแก้ไขปัญหาและการตั้งค่าไคลเอนต์ใหม่และคุณสมบัติใหม่ใด ๆ ที่จำเป็น นอกจากนี้เรากำลังพยายามที่จะเขียนสิ่งใหม่ทั้งหมดให้เป็น 100% Ruby on Rails และเราต้องการทำตลาดทั้งระบบภายในปีหน้าเพื่อให้ บริษัท อื่นใช้

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


11
ผมกำลังรอตลกหลอดไฟ :(
Oded

lol ... google ชื่อและคุณอาจจะพบบางอย่าง เมื่อฉันไปเที่ยวฉันเจอกลุ่มคนที่บังเอิญไปจริงๆ
kstevens715

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

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

คำถามนี้ดูเหมือนจะคล้ายกับคำถามนี้มาก บางทีคุณอาจจะพบคำตอบบางส่วนที่มีประโยชน์
S.Robins

คำตอบ:


3

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

  1. นักพัฒนาซอฟต์แวร์แบ็คเอนด์ที่ดี (ความคงทน / เลเยอร์ธุรกิจ)
  2. นักพัฒนาระดับกลาง / ส่วนหน้าที่ดีทำคลาสแอคชั่นและ JavaScript CSS Design
  3. นักออกแบบชั้นแนวหน้าที่ดี แต่ยังสร้างรหัสในทุกเลเยอร์ด้วยความช่วยเหลือจากผู้เชี่ยวชาญอีกสองคน ผู้พัฒนานี้สามารถทำสิ่งต่าง ๆ เช่นการตั้งค่ากรอบ JUnit Maven Jenkins Git การแยกสาขาและอื่น ๆ

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


1
ฉันใช้เวลาช่วงวันหยุด 2 วันในฤดูร้อนที่ผ่านมาและมีคนบุกเข้าไปในบ้านเพื่อรับแล็ปท็อปของฉัน ... ใช่ ฉันมักจะพูดคุยเกี่ยวกับการทำงานในสุญญากาศเพราะฉันไม่มีนักพัฒนาอื่น ๆ อีกมากมายที่จะโต้ตอบ และการใช้ชีวิตในเมืองเล็ก ๆ ก็ไม่มีแม้แต่กลุ่มผู้ใช้หรืออะไรก็ตามที่จะเข้าร่วม พวกเรา (ฉัน?) เพิ่งเริ่มเขียนโค้ดทดสอบเมื่อเร็ว ๆ นี้จริง ๆ แล้วเมื่อเราเริ่มเปลี่ยนไปใช้ Rails ฉันไม่สามารถจินตนาการถึงการพัฒนาโดยปราศจากการทดสอบ ฉันชอบความคิดที่มีผู้ทดสอบที่ทุ่มเท 50%
kstevens715

1
อย่างน้อยหนึ่ง dev ควรเป็น sepcialist ฐานข้อมูล
HLGEM

8

ยินดีต้อนรับสู่โลกที่ยากลำบากของการจัดหาทรัพยากร !

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

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

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

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


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

@DavidThornley นั้นขึ้นอยู่กับขอบเขตของหน้าที่นักพัฒนากำหนดส่งงานปริมาณงานของเขาว่า บริษัท ของเขาทำการตลาดผลิตภัณฑ์อย่างไร ฉันเคยเห็นโครงการที่ซับซ้อนหลายโครงการทำงานโดยทีม 1-2 คนซึ่งประสบความสำเร็จอย่างมากเพราะพวกเขามีการจัดการที่ดี ... และอีกมากมายที่ล้มเหลว ฉันเห็นด้วยอย่างไรก็ตามงานเป็นงานใหญ่และในตัวของมันเองก็เป็นธงสีแดงเล็กน้อยในแง่ของการจัดหาทรัพยากร สิ่งนี้คือมันไม่คุ้มค่าที่จะจ้างคนจำนวนมากโดยไม่ต้องทำการบ้านเล็ก ๆ เสียก่อนซึ่งมันเป็นประเด็นของคำตอบของฉัน :-)
S.Robins

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

6

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

การโฮสต์แอปพลิเคชั่นทางการค้าเป็นมากกว่าการสร้างแพลตฟอร์มที่แข็งแกร่ง มีข้อกำหนดการสนับสนุนการสนับสนุนด้านเทคนิคการแก้ไขข้อบกพร่องการฝึกอบรมผู้ใช้ ฯลฯ

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

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

และนี่คือคำตอบจากประสบการณ์ก่อนหน้านี้ของฉันที่อยู่ในสถานการณ์ที่คล้ายคลึงกันในการกำหนดราคาในพื้นที่แคลิฟอร์เนียตอนใต้:

5-6 คน && ~ 500k

  • 1 ผู้พัฒนา / ผู้จัดการผู้สวมใส่หมวกทุกใบ (~ 100k - 120k)

  • โปรแกรมเมอร์ซีเนียร์ 2 คนที่มีความสามารถในการขับเคลื่อนตนเองมีความเข้าใจและทักษะด้าน DB ที่ดี (2x ~ 80 - 100k)

  • 1 ผู้จัดการโครงการเพื่อติดต่อกับการจัดการ ($$?) บุคคลนี้ควรเข้าใจความต้องการของแอพและสื่อสารความต้องการเหล่านั้นโดยตรงไปยังโปรแกรมเมอร์

  • 1? นักพัฒนา (HTML / UI)? มีทักษะจาวาสคริปต์ (ฉันเกลียดการเขียนโปรแกรม UI / รหัสมาร์กอัป)

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


1
+1 ฉันชอบความล้มเหลวของคุณดีมาก! ทำ OT ให้เสร็จเงินเดือนที่คุณพูดจะทำให้ฉันรู้สึกหดหู่ใจเพราะฉันเคยคิดที่จะทำงานใน SoCal แต่พวกเขาก็ไม่ได้สูงกว่ายุโรปตะวันตกมากนักหากชาว Sr ทำงานเหมือน MSc + 5 ปี
Farmor

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

ว้าวคุณจะได้รับ devs อาวุโสใน So Cal ประมาณ 80-100K? ดูเหมือนจะค่อนข้างต่ำเมื่อเทียบกับค่าครองชีพ บางทีเราอาจมีแนวคิดที่แตกต่างกันของ 'รุ่นพี่' ผู้พัฒนาที่อาวุโสที่ฉันรู้จักในดัลลัสนั้นได้รับมากกว่านั้น
วินไคลน์

เราอาจมีความคิดที่แตกต่างกันในเรื่องของรสชาติที่ดีเช่นกัน .. ฉันจ้าง 2 .Net Sr. ซึ่งเป็นเด็กและมีความสามารถด้วยประสบการณ์มากมายในช่วง 10 ปีที่ผ่านมาซึ่งเต็มใจทำงานในช่วงนั้น เราใช้ Microsoft Stack ล่าสุด (TFS, .NET 4, C #, EF 4.1, MSSQL 2008 R2, blah blah .. ) และไม่มีปัญหากับการทุบรหัสสะอาดดี เราเป็นทีมเล็กและปัญหาที่เราพบว่าพยายามที่จะจ้างซีเนียร์บางคนก็คือพวกเขาต่อต้านการเรียนรู้และมีความคิดเห็นมากเกินไปและมีสัมภาระมากเกินไป (เราไม่มีหน้าต่างการจ้างงานมากเกินไป)
hanzolo

2

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

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

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

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


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

@ kstevens715 - ดูเหมือนว่าคุณต้องการความช่วยเหลือแม้ว่าจะเป็นเด็กที่มีเทคนิคก็ตาม ฉันคิดว่าคุณจะได้รับรายได้อย่างน้อย 5 รูปถ้าฉันได้รับคำสั่งให้รับแบตเตอรี่มันจะมีค่าใช้จ่ายประมาณ $ 10 สำหรับผู้ว่าจ้างของฉัน (35% ของค่าจ้างรายชั่วโมงของฉัน)
Ramhound
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.