Cách xác định # lập trình viên cần thiết cho một dự án


18

Làm thế nào để bạn biết có bao nhiêu lập trình viên một dự án cụ thể cần phải thành công?

Công ty tôi làm việc để đáp ứng các đơn đặt hàng cho các công ty khách hàng. Chúng tôi đã viết một hệ thống quản lý kho nội bộ xử lý việc quản lý hàng tồn kho dựa trên vị trí, xử lý đơn hàng, tạo vận đơn, lập hóa đơn, kiểm toán cước phí và báo cáo (có thể là 50 báo cáo). Nó cũng có chức năng quét mã vạch và cổng thông tin khách hàng cùng với hàng tá các tính năng nhỏ hơn khác. Nó cũng bao gồm một khóa thời gian đầy đủ của nhân viên. Nó tích hợp với Quickbooks, UPS và FedEx. Nó xử lý công việc cho ít nhất 50 khách hàng, tất cả chỉ khác nhau một chút về chức năng của họ. Ví dụ: chúng tôi nhập đơn đặt hàng từ các tệp mà khách hàng gửi nhưng mỗi khách hàng gửi một định dạng tệp khác nhau (csv, excel, tệp phẳng và dịch vụ web) để chúng tôi có hơn một chục phương thức thiết lập chuyển đổi đơn hàng. Xuất khẩu là cùng một câu chuyện.

Dự án rất phức tạp và đang phát triển phức tạp mỗi ngày với hơn một phần tư triệu dòng mã. Đó là khoảng 250.000 dòng mã VB.NET, 6.200 dòng mã Ruby và có thể 5.000 dòng PHP. Nó cũng có một cơ sở dữ liệu MySQL với khoảng 200 bảng.

Do các yêu cầu thay đổi liên tục và nhu cầu khác nhau của hàng chục khách hàng, bản thân mã này thay đổi rất nhiều về chất lượng từ mã cực kỳ kém đến tương đối tốt.

Hiện tại, dự án này chỉ có một lập trình viên duy nhất - bản thân tôi. Tôi hiện cũng đang làm tất cả các hỗ trợ sản phẩm cho công ty của chúng tôi có 75 người hoặc hơn. Điều đó bao gồm khắc phục sự cố và thiết lập ứng dụng khách mới và bất kỳ tính năng mới nào cần thiết. Thêm vào đó, chúng tôi đang cố gắng viết lại toàn bộ nội dung để trở thành 100% Ruby trên Rails. Và chúng tôi muốn tiếp thị toàn bộ hệ thống trong năm tới hoặc lâu hơn để được các công ty khác sử dụng.

Hiện tại, chúng tôi chỉ có bản thân mình là một lập trình viên nhưng tôi không tin điều đó là đủ. Có ai có bất kỳ khuyến nghị cho bao nhiêu lập trình viên một dự án tầm cỡ này nên có hoặc làm thế nào chúng ta nên đi về việc xác định câu trả lời cho câu hỏi đó? Đặc biệt đưa ra thực tế rằng quản lý muốn sản phẩm có chất lượng thương mại vào năm tới?


11
Tôi đã chờ đợi một trò đùa bóng đèn :(
Oded

lol ... google tiêu đề và bạn có thể sẽ tìm thấy một số. Khi tôi đang googling tôi thực sự tìm thấy một loạt những người vô tình lol.
kstevens715

8
Nếu các yêu cầu liên tục thay đổi, sẽ không có số tay phụ nào nhận được sản phẩm này được vận chuyển và ra khỏi cửa. Bạn phải đặt ra các yêu cầu đầu tiên.
Oded

Điều đó hoàn toàn đúng trong trường hợp của tôi. Tôi biết câu hỏi tôi có thể không trả lời được. Nhưng nếu tôi có thể so sánh những loại dự án mà người khác đang thực hiện và có bao nhiêu người tham gia toàn thời gian trong các dự án đó thì có lẽ điều đó sẽ giúp ích.
kstevens715

Câu hỏi này dường như rất giống với câu hỏi này . Có lẽ bạn cũng sẽ tìm thấy một số câu trả lời có ích.
S.Robins

Câu trả lời:


3

Tôi sẽ nói ít nhất 5 người. Một cho thử nghiệm, một cho thông số kỹ thuật, hỗ trợ và tài liệu và 3devs. Có rất nhiều điều cần được kiểm tra trong trường hợp của bạn, vì vậy một người kiểm tra chuyên dụng 50% không nên không hợp lý. Một người viết ra các yêu cầu và có hỗ trợ khách hàng thiết lập cấu trúc hạ tầng của bạn để thử nghiệm, v.v. Ba nhà phát triển tôi cảm thấy khá thấp cho một dự án như thế này. Một mặt sau lớn được tích hợp cho nhiều hệ thống của bên thứ ba và mặt trước hoàn chỉnh với vô số báo cáo tùy chỉnh. Tôi muốn có.

  1. Một nhà phát triển back end tốt (lớp kiên trì / lớp kinh doanh)
  2. Một nhà phát triển trung cấp / front end tốt tạo các lớp hành động và Thiết kế CSS JavaScript.
  3. Một kiến ​​trúc sư phát triển toàn diện giỏi nhưng cũng tạo mã trong tất cả các lớp với sự trợ giúp chuyên gia từ hai lớp kia. Nhà phát triển này cũng có thể làm những việc như thiết lập khung JUnit Maven Jenkins Git rẽ nhánh, v.v.

Điều gì xảy ra nếu bạn rời đi, bị ốm đi nghỉ, vv Một người cho mỗi dự án không bao giờ thông minh. Ở một mình cũng không tốt vì bạn không tiến hóa một cách chuyên nghiệp mà không có đồng nghiệp. Tôi làm việc khá thường xuyên một mình, thiết lập kiến ​​trúc mới, v.v., thường trong các nhóm nói 5 nhà phát triển nhưng tôi không bao giờ tiến hóa nhiều như khi tôi nói với đồng nghiệp, hãy cùng nhau thiết lập và chúng tôi tự khóa một tuần để nói chuyện, thảo luận và chọn khung. Lập trình cặp cực kỳ cho và không thể được thực hiện với một nhà phát triển, và ai sẽ thực hiện đánh giá mã nếu bạn cảm thấy không chắc chắn? Nếu bạn gặp khó khăn ai sẽ giúp bạn? Tôi sẽ chỉ thực hiện một dự án một người nếu đó là một phần của phạm vi lớn hơn và có thể nhận được các tài nguyên chuyên gia được gọi nếu cần.


1
Tôi đã có một kỳ nghỉ 2 ngày vào mùa hè năm ngoái và ai đó đã phải đột nhập vào nhà tôi để lấy máy tính xách tay của tôi ... vâng. Tôi luôn nói về làm việc trong môi trường chân không vì tôi không có nhiều nhà phát triển khác để tương tác. Và sống trong một thị trấn nhỏ thậm chí không có bất kỳ nhóm người dùng hoặc bất cứ điều gì để tham gia. Chúng tôi (tôi?) Mới bắt đầu viết mã kiểm tra gần đây, thực sự là khi chúng tôi bắt đầu chuyển sang Rails. Tôi đã không thể tưởng tượng phát triển mà không có bài kiểm tra. Tôi thích ý tưởng có một người thử nghiệm chuyên dụng 50%.
kstevens715

1
Ít nhất một dev nên là một sepcialist cơ sở dữ liệu.
HLGEM

8

Chào mừng bạn đến với thế giới khó khăn của việc tái cung cấp !

Vấn đề không phải là một trong Kích thước dự án so với Kích thước đội. Đó là một quan niệm sai lầm rất phổ biến thường che giấu các vấn đề khác thường liên quan đến quản lý. Vấn đề là tất cả về Phạm vi . Bạn cần phải quyết định những gì bạn có thể đạt được với tài nguyên hiện tại của mình - còn gọi là bạn. Sau đó, bạn cần phải quyết định xem khả năng xử lý khối lượng công việc của bạn có đủ để xử lý công việc trong các khung thời gian bạn đã được phân bổ hay không. Do đó, nhu cầu dự án của bạn phải được xác định và phạm vi.

  • Bạn có muốn dành thời gian để làm sạch cơ sở mã hiện có?
  • Đây có phải là một yêu cầu cơ bản để đảm bảo sự thành công của dự án?
  • Bạn có các tính năng mới để thêm vào hệ thống? Các khía cạnh quan trọng nhất của dự án của bạn phải được xử lý, và các mục nhỏ trong danh sách mong muốn là gì?
  • Bất kỳ yêu cầu nào có thể bị từ bỏ, hoặc ít nhất là được đưa ra cho đến khi phát hành bảo trì tiếp theo?

Khi bạn có ý tưởng về phạm vi yêu cầu của mình, bạn có thể dễ dàng xác định khối lượng công việc cần thiết hơn để đạt được kết quả trong một khung thời gian nhất định. Nếu tài nguyên của bạn có khả năng bị sử dụng quá mức, thì bạn sẽ cần thêm nhân viên. Nếu tài nguyên của bạn có khả năng bị sử dụng không đúng mức, thì bạn có thể thấy mình có thể di chuyển thời hạn gần hơn hoặc tăng phạm vi dự án của bạn.

Nếu bản năng ruột thịt của bạn nói với bạn rằng bạn không có đủ nhân viên để quản lý dự án, bạn có thể đúng, nhưng bạn cần phải hiểu tại sao bạn lại nói với bạn điều này. Nó không đủ để chỉ đơn giản là có một cảm giác. Thay vào đó, bạn cần có khả năng kiểm tra vấn đề một cách khoa học để đưa ra bằng chứng sao lưu bản năng của mình và bạn cần chuẩn bị để đối mặt với khả năng bản năng của bạn thậm chí có thể sai. Khi bạn đã thu thập bằng chứng của mình - Tức là: phân chia dự án, sau đó bạn thực sự cần phải ngồi xuống với quản lý của mình và đưa ra một trường hợp để giảm phạm vi của dự án, hoặc tăng các tài nguyên có sẵn để đảm bảo thành công của dự án, dựa trên trên các bằng chứng trong tầm tay.


Phạm vi dường như sẽ được viết lại hoàn toàn hệ thống SLOC 250K thành một thứ có chất lượng thu nhỏ (hoặc ít nhất là chất lượng phần mềm tư vấn). Ưu điểm là thu thập các yêu cầu và thiết kế tổng thể có thể đã được thực hiện. Đây không phải là nhỏ, và không phải là một cái gì đó cho một nhà phát triển có trách nhiệm khác.
David Thornley

@DavidThornley Điều đó phụ thuộc nhiều vào phạm vi nhiệm vụ của nhà phát triển, thời hạn, khối lượng công việc của anh ấy, cách công ty của anh ấy đã tiếp thị sản phẩm. Tôi đã thấy nhiều dự án phức tạp được thực hiện bởi một nhóm 1-2 người đã rất thành công vì họ được quản lý tốt ... và nhiều dự án khác đã thất bại. Tuy nhiên, tôi đồng ý rằng nhiệm vụ này là một nhiệm vụ lớn và bản thân nó đã là một lá cờ đỏ về mặt tái cung cấp. Vấn đề là, không đáng để chỉ thuê nhiều người mà không làm một chút bài tập về nhà trước, đó thực sự là câu trả lời của tôi. :-)
S.Robins

Phạm vi là thứ mà tôi đã đưa ra khá nhiều trong vài tháng qua. 20% dự án có 80% tác động đến công ty. Đó là những gì tôi đang cố gắng tập trung vào. Thật không may, 80% có 20% tác động là thứ bị đẩy lên hàng đầu khi chúng tôi cố gắng xử lý "tình huống khẩn cấp" bằng cách ném thêm mã và các tính năng vào nó. Tôi đã từng yêu cầu đóng băng một tính năng để tôi có thể khắc phục một số vấn đề cốt lõi. Họ đã cho tôi 5 ngày. Không cần phải nói đó là 5 năm sau và nhiều vấn đề cốt lõi vẫn còn. Cảm ơn cho bài viết của bạn mặc dù, rất hữu ích.
kstevens715

6

Thành công của sản phẩm / dự án sẽ phụ thuộc vào cam kết của công ty trả tiền cho nó. Nếu họ sẽ thuê thêm lập trình viên / nhân viên hỗ trợ, sẽ có sự giảm năng suất vốn có từ một lập trình viên, người biết phải đào tạo, dạy, quản lý, v.v. không phải đó là điều xấu .. nhưng sẽ hãy giảm trước khi bất kỳ sự gia tăng nào được nhận ra .. cũng cần có các nhà phân tích kinh doanh, nhà quản lý, bán hàng và sự hỗ trợ của sản phẩm một khi nó có sẵn trên thị trường ..

Lưu trữ một ứng dụng thương mại không chỉ đơn thuần là tạo ra một nền tảng vững chắc. có các yêu cầu hỗ trợ, hỗ trợ kỹ thuật, sửa lỗi, đào tạo người dùng, v.v.

Bạn có bất kỳ thủ tục phân tích / thông số / ước tính tốt tại chỗ? nếu không, bắt đầu ngay bây giờ , bạn có thể tự làm điều này.

bạn đang làm việc bộ não của bạn ra ngay bây giờ? Nếu vậy, hãy chuẩn bị để làm việc chăm chỉ gấp đôi nếu bạn dự kiến ​​sẽ quản lý quá trình này và tiếp tục phát triển (tăng do?) ..

và đây là câu trả lời từ kinh nghiệm trước đây của tôi trong tình huống tương tự về giá khu vực Nam California:

5-6 người && ~ 500k

  • 1 Trưởng nhóm phát triển / quản lý người mặc tất cả các mũ (~ 100k - 120k)

  • 2 lập trình viên (rất có khả năng, tự lái) có hiểu biết và kỹ năng DB tốt (2x ~ 80 - 100k)

  • 1 Trình quản lý dự án để giao tiếp với Quản lý ($$?) Người này cũng có thể hiểu được nhu cầu của ứng dụng và truyền đạt những nhu cầu đó trực tiếp đến các lập trình viên

  • 1? Nhà phát triển (HTML / UI)? với các kỹ năng javascript (tôi ghét lập trình UI / mã đánh dấu)

  • 1? Cơ sở dữ liệu người? tuy nhiên, hầu hết các lập trình viên giỏi không gặp vấn đề gì trong việc tạo cấu trúc dữ liệu có thể mở rộng, tuy nhiên, nếu bạn gặp phải vấn đề tối ưu hóa, ít nhất bạn sẽ muốn có một nhà tư vấn


1
+1 Tôi thích sự cố của bạn rất tốt! Hoàn thành OT mức lương mà bạn trích dẫn cảm thấy buồn cho tôi vì tôi đã nghĩ làm việc ở SoCal nhưng chúng không cao hơn nhiều so với Tây Âu, nếu người Sr giống như ThS + 5 năm làm việc.
Nông dân

1
Tôi đồng ý ngoại trừ rằng tôi cũng đề nghị một lập trình viên nhập cảnh đảm nhận nhiệm vụ hỗ trợ (thiết lập máy khách và các cải tiến nhỏ) và thực hiện công việc chung chung. Kết hợp một số vai trò có thể hoạt động tùy thuộc vào cấp độ kỹ năng liên quan.
jfrankcarr

Ồ, bạn có thể nhận được các nhà phát triển cao cấp trong So Cal với giá 80 - 100K? Điều đó có vẻ khá thấp với chi phí sinh hoạt. Có lẽ chúng ta có những ý tưởng khác nhau về 'tiền bối'; các nhà phát triển cấp cao mà tôi biết ở Dallas đang nhận được nhiều hơn thế.
kevin cline

Có lẽ chúng tôi cũng có những ý tưởng khác nhau về hương vị của nó. Tôi đã thuê 2 .Net Sr. những người trẻ và tài năng với nhiều kinh nghiệm trong 10 năm qua, những người sẵn sàng làm việc trong phạm vi đó. Chúng tôi đã sử dụng Microsoft Stack mới nhất (TFS, .NET 4, C #, EF 4.1, MSSQL 2008 R2, blah blah ..) và không gặp vấn đề gì với việc xóa mã sạch tốt. Chúng tôi là một nhóm nhỏ, và vấn đề chúng tôi thấy khi cố gắng thuê một số Sr là họ không chịu học hỏi và có quá nhiều ý kiến ​​và mang theo quá nhiều hành lý (Chúng tôi cũng không có nhiều cửa sổ tuyển dụng)
hanzolo

2

1 lập trình viên trên một cơ sở mã lớn với tất cả trách nhiệm cấu hình, kiểm tra, giao tiếp, hỗ trợ, ghi lại tài liệu và sửa lỗi sẽ không mất nhiều thời gian để viết mã mới hoặc thêm tính năng (hoặc thậm chí tái cấu trúc mã cũ).

Hãy chia nhỏ tuần của bạn theo tỷ lệ phần trăm của các nhiệm vụ bắt buộc này không mở rộng kinh doanh và bạn sẽ ngạc nhiên về cách quản lý nhanh chóng thuê thêm trợ giúp.

Các dự án lớn có một số chi phí liên kết nhất định sẽ không biến mất (đặc biệt là nếu triển khai / thử nghiệm với khách hàng mới mọi lúc như bạn có vẻ). Đây là lý do bạn có hỗ trợ xoay và hỗ trợ nói chung; vì vậy một số người trong nhóm có thời gian để làm việc với các tính năng mới.

Bạn cũng có thể muốn xem xét các cuốn sách về ước tính phần mềm. Những cuốn sách này nghe có vẻ không có nhiều điều để nói, nhưng chúng chứa các nghiên cứu trường hợp thú vị từ nhiều lĩnh vực khác nhau và đưa ra những tuyên bố của họ với bằng chứng.


95% thời gian của tôi dành cho việc thực hiện một trong những nhiệm vụ đó. Tôi thích ý tưởng của các vòng quay hỗ trợ. Đó có thể là điều cần xem xét nếu chúng tôi thuê một người mà tôi có thể xoay vòng với lol. Hôm nay, ví dụ, tôi thực sự bắt đầu làm việc với một số mã lõi và bị gián đoạn vì ai đó cần pin.
kstevens715

@ kstevens715 - Có vẻ như bạn cần giúp đỡ, ngay cả khi đó là đứa trẻ của ai đó là kỹ thuật. Tôi giả sử bạn đang được trả ít nhất thu nhập 5 con số, nếu tôi được yêu cầu lấy pin, nó sẽ có giá khoảng 10 đô la cho employeer của tôi (35% tiền lương mỗi giờ của tôi).
Ramhound
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.