Cách thêm nhà phát triển mới vào nhóm


24

Tôi điều hành một công ty nhỏ chỉ gồm 2 nhà phát triển. Chúng tôi đang xây dựng một ứng dụng rất lớn cho một trong những khách hàng của chúng tôi. Phát triển dự án này đã diễn ra được 1,5 năm.

Bây giờ khách hàng này đã đảm bảo một tài trợ quan trọng, và họ đang tổ chức các sự kiện liên quan đến dự án này. Vì vậy, bây giờ chúng tôi có thời hạn trong 2 tháng và chúng tôi không thể bỏ lỡ nó.

Chúng tôi đang nghĩ đến việc thêm một nhà phát triển mới vào nhóm và tôi tự hỏi chúng tôi có thể làm gì để giúp anh ấy hòa nhập.

Đây là tình huống:

  • Chúng tôi đang tiến gần đến ngưỡng của luật Brooks - thời điểm khi thêm các nhà phát triển mới sẽ phản tác dụng.
  • Ứng dụng này được thiết kế tương đối tốt, nhưng việc triển khai còn hỗn loạn ở một số điểm (đặc biệt là mã cũ).
  • Có các bài kiểm tra đơn vị chỉ cho mã gần đây hơn. Khi dự án này bắt đầu, chúng tôi đã không thường xuyên tiến hành kiểm tra.
  • Tài liệu và ý kiến ​​không đầy đủ.
  • Ứng dụng này là cả lớn và phức tạp.
  • Khách hàng đã viết ra hầu hết mọi chi tiết về dự án của mình, theo một cách rất rõ ràng và "thân thiện với lập trình viên".

Bây giờ có phải là một ý tưởng tốt để thêm một người? Nếu vậy, chúng ta có thể làm gì để giúp nhà phát triển mới hòa nhập vào nhóm?

CHỈNH SỬA:

Nhà tài trợ đang tổ chức một sự kiện thể thao dựa trên internet cho mùa xuân tới. Nó phải bắt đầu vào một ngày cụ thể trong năm. Chúng ta không thể thay đổi nó.

Những gì chúng tôi phát triển (tôi là một trong hai) cần làm là:

  • Hoàn thành ứng dụng hiện có (khoảng 25% công việc phải làm).

  • Tạo một mô-đun mới, cần thiết cho việc tổ chức sự kiện này (khoảng 75% công việc phải làm). Mô-đun mới này không thể được phát triển mà không hiểu API của chương trình chính.

Tôi không thể ước tính thời gian chính xác, nhưng chúng tôi đang ở trong một tình huống rủi ro.


11
bạn không ở trong ngưỡng của luật brooks, đã được thông qua hơn một năm trước.
Ryathal

3
Bạn đã không viết một từ nào về mục tiêu bạn có cho thời hạn đó. Thêm một số tính năng cụ thể cho nhà tài trợ đó? Làm một bài thuyết trình sản phẩm cho các sự kiện? Tạo một gói cài đặt? Khắc phục một số vấn đề quan trọng nhất? Những vấn đề nào bạn có bạn không thể giải quyết với nhóm hiện tại của bạn?
Doc Brown

Bao nhiêu thời gian để 2 nhà phát triển tin rằng họ sẽ cần một mình? 3 tháng (tính là 2 dev * 3 tháng bằng 3 dev * 2 tháng)?
Scarfridge

@DocBrown Tôi đã thêm chi tiết cho câu hỏi. Tôi hy vọng nó rõ ràng hơn bây giờ.
lortabac

"Tài liệu và bình luận không đầy đủ" ... "Khách hàng đã viết ra hầu hết mọi chi tiết về dự án của mình, theo một cách rất rõ ràng và" thân thiện với lập trình viên ". Yêu cầu anh chàng mới dịch các bài viết của khách hàng thành tài liệu thiết kế, sau đó "Có các bài kiểm tra đơn vị cho mã gần đây hơn. Khi dự án này bắt đầu, chúng tôi đã không thường xuyên tiến hành các bài kiểm tra" để anh ta viết và chạy thử nghiệm. Anh ấy sẽ không cản trở bạn và sẽ đóng góp cho dự án
Mawg

Câu trả lời:


24

Điều tốt nhất để làm là không ném nhà phát triển mới vào lửa, mà thay vào đó khắc phục một số chức năng và / hoặc sửa lỗi mà nhà phát triển không gặp khó khăn khi nhảy vào. Tìm một khu vực cần làm việc mà không yêu cầu một người phải biết toàn bộ kiến ​​trúc, yêu cầu và cơ sở mã cùng một lúc. Có thể có anh ấy hoặc cô ấy làm việc trên tài liệu để tìm hiểu hệ thống nhanh hơn.


Thêm Unittests cho mã cũ và sửa lỗi là một số ý tưởng mà nhà phát triển mới có thể làm - tất nhiên là có sự hỗ trợ và đánh giá mã của những người khác. Có lẽ cần phải có kiểm tra UI tự động? Đó cũng là điều mà nhà phát triển mới có thể làm và tìm hiểu nhiều về ứng dụng.
Hans-Peter Störr

18

Thay vì thêm một nhà phát triển mới vào nhóm, hãy xem xét thêm một nhà tư vấn có kinh nghiệm trong khoảng thời gian hai đến ba tháng để xử lý sự gia tăng tạm thời khối lượng công việc của công ty bạn. Ý tưởng là để có được một người có thể xử lý thời gian khởi động gần như bằng không, nhưng đồng thời có thể không nhất thiết là sự bổ sung tốt nhất cho nhóm của bạn.

Ngay cả khi bạn nghĩ rằng việc tăng khối lượng công việc không phải là tạm thời, thì bây giờ có lẽ không phải là thời điểm tốt nhất để phát triển nhóm của bạn một cách hữu cơ: thêm nhà phát triển thứ ba là một điều căng thẳng đối với một nhóm ngay cả khi không có áp lực từ thời hạn dự án; thời hạn chặt chẽ chỉ làm cho quá trình chuyển đổi tồi tệ hơn.

Sự đánh đổi là để đổi lấy sự giúp đỡ tạm thời, bạn sẽ nhận được mã được viết bởi người ngoài. Để giảm thiểu rủi ro này, hãy đảm bảo rằng cả hai bạn thực hiện tất cả các đánh giá mã với anh ấy. Hãy chắc chắn rằng bạn cũng xem xét và hiểu tất cả các bài kiểm tra đơn vị của anh ấy.


5
Nó phụ thuộc bao xa phía sau họ. Tư vấn sẽ chi phí nhiều hơn và mang theo kiến ​​thức khi anh ta rời đi. Ngoài ra, việc tìm kiếm bất cứ ai cần thời gian khởi động gần như bằng không có lẽ là điều đáng mơ ước.
Nik

1
@Nik Tôi đồng ý, chi phí cao hơn chắc chắn là một sự đánh đổi; vậy là kiến ​​thức rút cạn khỏi dự án. Có được một người khởi nghiệp gần như bằng không rất khó, đặc biệt là trong một thông báo ngắn, nhưng tôi đã thấy nó được thực hiện trong một số dự án quan trọng. Tuy nhiên, chi phí thuê họ khá cao.
dasblinkenlight

Tôi sẽ làm một số nghiên cứu, nhưng một nhà tư vấn có kinh nghiệm có thể khó tìm thấy trong khu vực của tôi. Bạn có nghĩ rằng sẽ có thể làm việc với một người từ thành phố khác không? Hoặc khoảng cách sẽ làm chậm quá trình?
lortabac

3
Tôi đoán luật của Brook cũng áp dụng cho một nhà tư vấn có kinh nghiệm, vì vậy tôi không nghĩ rằng đây sẽ là một giải pháp thực sự cho vấn đề.
Doc Brown

@lortabac Thêm một người nào đó làm việc với bạn từ xa sẽ rất có thể làm mọi thứ chậm lại. Làm thế nào linh hoạt là các nhà tài trợ cắt tỉa các yêu cầu cho các mô-đun bổ sung? Bạn có thể muốn yêu cầu họ sắp xếp các tính năng mới theo thứ tự quan trọng và quyết định mức tối thiểu tuyệt đối của các yêu cầu mà bạn phải thực hiện để sự kiện có ý nghĩa. Nếu bạn không thể có được một "lính cứu hỏa" tại địa phương, việc giảm phạm vi có thể là một kế hoạch dự phòng tốt cho bạn.
dasblinkenlight

14

Bây giờ có phải là một ý tưởng tốt để thêm một người?

Không. Nếu có thể, hãy cố gắng để khách hàng đồng ý giảm phạm vi thay thế.

Thêm một người vào cuối này sẽ thêm rủi ro đáng kể và thời hạn không thể được đẩy ra (theo như tôi đã hiểu).


4
+1. Mặc dù tất cả các đề xuất tốt, được bình chọn cao hơn, tôi nghĩ rằng đây có lẽ là điều duy nhất sẽ thực sự hoạt động trong tình huống như vậy.
Doc Brown

Đồng ý hết lòng. Nếu bạn còn hai tháng và bạn chỉ nghĩ đến việc thuê một ai đó bây giờ, bạn sẽ không nhận được nhiều từ việc thuê mới. Trừ khi bạn rất may mắn hoặc có một người có năng lực trong tâm trí, bạn sẽ lãng phí hai tháng để tìm kiếm (và làm giảm năng suất của chính bạn) hoặc thuê một người nào đó sẽ khiến mọi việc tồi tệ hơn. Đừng vội thuê bạn.
jmk

10

Đừng làm điều đó.

Chưa.

Chế độ xem truyền thống

Trong câu hỏi của bạn, bạn đề cập đến luật Brooks từ Tháng huyền thoại .

Thêm nhân lực vào một dự án phần mềm muộn sẽ làm cho nó muộn hơn.

Bỏ qua luật của Brook mang một cái giá. Đừng đa nhiệm. Tập trung vào việc phân phối Sản phẩm khả thi tối thiểu (MVP) của bạn. Sau đó tập trung năng lượng của bạn vào việc tuyển dụng, cung cấp nguồn lực, đào tạo và quản lý một thành viên nhóm mới.

Hai tháng thật ngắn ngủi. Lập kế hoạch tuyển dụng với một danh sách ghi lại và bạn sẽ thấy nó có thể tốn thời gian như thế nào.

Larry Page và Sergei Brin đã dành hai năm để chọn nhóm ban đầu cho Google. Lựa chọn của bạn cho nhân viên số ba cũng nên là một lựa chọn cẩn thận.

Agile, Chế độ xem Millenium mới

Cạnh tranh thúc đẩy hợp tác năng động hơn bây giờ so với thời đại khi Tháng huyền thoại được viết (giữa những năm 1960). Sự nghiệp lâu dài tại một công ty đã biến mất. Bây giờ chúng tôi di chuyển thường xuyên giữa các dự án và các công ty. Xây dựng đội ngũ nhanh chóng tạo ra thành công. Tăng tốc chậm là một yếu tố hạn chế nghiêm trọng. Các ví dụ tuyệt vời đến từ các dự án nguồn mở, khởi nghiệp và tăng cường sử dụng các dự án nhóm trong các khóa học về khoa học máy tính.

Có khả năng, các nhóm Agile ràng buộc các yếu tố vào lịch trình của họ. Họ không bị trễ vì chúng được tối ưu hóa cho các tài nguyên có sẵn. Tích hợp nhân viên mới là một hạn chế nữa và được coi là sự đánh đổi giữa các mục tiêu ngắn hạn và dài hạn. Nhóm Agile liên tục tích hợp mã, vậy tại sao mọi người không quá?

Agile nhóm tích hợp kỹ thuật và xã hội cho nhân viên mới có thể sử dụng:

  • scrums hàng ngày
  • lập trình cặp
  • tái cấu trúc
  • thêm các bài kiểm tra đơn vị bị thiếu
  • vỗ béo tài liệu nạc
  • mã đánh giá

Con chiên hy sinh

Trong " Các mô hình tổ chức phát triển phần mềm linh hoạt" James Coplien thảo luận về động lực nhóm và chi phí của việc thêm thành viên nhóm mới. Mô hình "Con chiên hy sinh" của anh ta giao toàn bộ cố vấn và huấn luyện cho một người, bảo vệ phần còn lại của đội khỏi bị gián đoạn.

Đó là một chiến lược mà bạn có thể muốn xem xét thực hiện.

Một chiến lược khác là phân công người cố vấn tuyển dụng mới, những người trả lời các câu hỏi từ những người tuyển dụng mới trong những giờ cụ thể mỗi ngày. Nếu bạn chỉ có thể dành một chàng trai, có lẽ anh ta làm việc mà không bị gián đoạn vào buổi sáng hoặc buổi chiều và trả lời các câu hỏi vào buổi chiều hoặc buổi sáng tương ứng. Nhóm tôi tham gia có mười thực tập sinh vào mùa hè năm ngoái, vì vậy rất nhiều người đã bị gián đoạn rất nhiều.

Hiện tại việc tư vấn được thực hiện bởi một người, chủ yếu trong và ngay sau buổi sáng của chúng tôi (8:30 sáng đến khoảng 9:15 sáng, kết hợp) và vào buổi chiều từ 12 đến 3:30 (anh ấy làm việc 7 giờ sáng - 3:30 PM).


Cuốn sách đó hơi đắt tiền nhưng tôi sẽ kiểm tra nó.
Xanh

Bạn có thể tìm thấy các trích đoạn từ những cuốn sách tôi đã đề cập trực tuyến, có thể thông qua các cuốn sách của Google. Tôi mượn cả hai cuốn sách Brooks và Coplien thông qua thư viện đại học địa phương của tôi.
Nhà phát triển

6

Tôi rất háo hức khi bạn đề cập đến Luật Brook. Hoàn thành tốt Vấn đề chính với việc thêm một nhà phát triển khác là chi phí trong việc giúp họ tăng tốc và chi phí cho việc đồng bộ hóa trạng thái với họ về vị trí của bạn trong dự án. Do đó, nếu bạn quyết định lấy nhà phát triển thứ ba, tôi sẽ thử điều này:

  • Cung cấp cho anh chàng mới một khu vực nơi chi phí tối đa thấp và anh ta có thể đi càng nhanh càng tốt. Điều này sẽ phụ thuộc rất nhiều vào người bạn thuê và những kỹ năng họ có.
  • Đảm bảo rằng khu vực này được kết hợp lỏng lẻo với các khu vực khác của ứng dụng để chi phí đồng bộ hóa ít hơn. Gửi anh ta để làm công việc DB mãnh liệt và sắp xếp lại các bảng có thể là quá nhiều.
  • Làm những gì bạn có thể để giữ tinh thần lên. Như những người khác đã lưu ý, việc thêm một thành viên nhóm mới có thể gây căng thẳng vì vậy có lẽ một khoản đầu tư vào đồ uống có ga có thể giúp ích.

có lẽ xác định các lĩnh vực cần làm việc và có người mới bắt đầu bằng cách viết các bài kiểm tra cho mã hiện có, để hỗ trợ sự hiểu biết của họ về hệ thống trước khi họ thay đổi / thêm vào nó.
StevenV

@StevenV đó là một ý tưởng tuyệt vời, tuyệt vời. Viết bài kiểm tra cho các thành phần bạn không biết sẽ giúp bạn làm quen với chúng rất nhanh. Và hệ thống sẽ dễ kiểm tra hơn khi bạn hoàn thành. :)
Xanh

5

Nếu bạn tuân thủ nghiêm ngặt Luật Brook, bạn có thể sẽ không bao giờ phát triển nhóm của mình.

Bí quyết là mang lại người mới mà không bị ảnh hưởng với quá nhiều sự chậm chạp trong đội hiện tại của bạn. Cuối cùng, người mới sẽ tăng tốc và bạn có thể vượt qua cái bướu.

Trong trường hợp của bạn? Tôi muốn đề nghị người mới viết tất cả những bài kiểm tra đơn vị bị thiếu.

  1. Những thứ này cực kỳ cần thiết như một biện pháp bảo vệ chống lại các lỗi hồi quy, nó sẽ đốt cháy bạn nhanh hơn bất kỳ sự chậm lại nào của Brooks.
  2. Người mới sẽ học được can đảm của hệ thống của bạn. Đó là một chút thử nghiệm bằng lửa - nhưng đầu ra của chúng không đi vào mã sản xuất, nên có rất ít rủi ro.
  3. Đặt một giới hạn cứng cho số lượng thời gian các thành viên khác trong nhóm có thể mất. Ví dụ, yêu cầu họ xếp hàng các câu hỏi và chỉ cho phép 30 phút mỗi ngày tương tác với các thành viên khác trong nhóm cho đến khi thời hạn được đáp ứng.

Ngoài ra, hãy đối mặt với nó: bạn sẽ phải quản lý phạm vi và mong muốn của khách hàng bất kể bạn có mang theo người mới hay không. Việc chi trả đến chu kỳ tiếp theo.

Ed Yourdon đã có một nhận xét tuyệt vời về Luật Brook. Ông nói: tất nhiên, việc thêm người sẽ khiến bạn đi chậm hơn - nhưng khi một dự án gặp rủi ro là việc quản lý thời gian duy nhất sẽ mang lại những người mới. Vì vậy: lấy chúng, giảm thiểu tác động đến bản phát hành hiện tại và loại bỏ những người biểu diễn kém ngay khi bạn có thể. Bằng cách này, theo thời gian, bạn có thể xây dựng một đội ngũ mạnh mẽ.


3

Nếu bạn đã làm việc cho các dự án khác mà bạn có thể cung cấp cho anh ta, điều đó sẽ giải phóng thời gian để 2 nhà phát triển hiện tại tập trung vào các sản phẩm có thời hạn lớn có thể giúp đỡ.


3

Bạn nói rằng bạn cần phải hoàn thành 25% công việc ban đầu, cộng với công việc mới. ANd bạn cần phải làm điều này trong hai tháng - khi bạn mất 18 tháng để thực hiện 75% công việc. Nói một cách thẳng thắn, điều này cho tôi thấy rằng khả năng ước tính của bạn chỉ ở mức trung bình đối với một lập trình viên tập trung vào mã - nghĩa là, bạn nghĩ rằng mọi thứ sẽ đưa bạn khoảng một nửa đến một phần ba miễn là họ thực sự làm.

Heroics có thể cho phép bạn cung cấp sản phẩm mà bạn đã ký hợp đồng, nhưng nó sẽ không làm cho bạn hoặc khách hàng của bạn bất kỳ ưu đãi nào. Nó sẽ kém chất lượng và bị lỗi trong những điều kiện này và bạn sẽ chạy trên khói.

Hãy nhớ rằng thời gian bạn dành cho việc tuyển dụng cũng sẽ ảnh hưởng lớn đến sự sẵn có của bạn - đây không phải là điều bạn có thể làm vào cuối tuần, cần có thời gian để tìm được những nhân viên tài năng phù hợp. Dự kiến ​​sẽ dành ít nhất một vài tuần để tìm kiếm, phỏng vấn, v.v ... Mong rằng bạn và nhân viên hiện tại của bạn sẽ mất khoảng 10 giờ một tuần thời gian làm việc trong khi bạn tìm kiếm.

Đề nghị của tôi:

Ngồi xuống với khách hàng của bạn, giải thích rằng bạn ở trên đầu và làm việc với anh ta để giảm phạm vi xuống mức tối thiểu.

Chỉnh sửa Chỉ cần nhìn thấy ngày ở đây. Vậy làm thế nào mà nó kết thúc? (Cảm ơn Ars Technica đã đăng câu hỏi ba tháng tuổi;)


Vài ngày sau khi đăng câu hỏi này tôi rời công ty. Như một số ý kiến ​​về Ars Technica đã chỉ ra một cách chính xác, có những vấn đề sâu sắc hơn mà tôi chưa đề cập trong câu hỏi. Tôi chỉ muốn có ý kiến ​​về vấn đề cụ thể này.
lortabac

2

Có một vài cách khác nhau mà tôi xem xét điều tra:

  1. Giữ việc thuê nhà phát triển mới cho đến khi thời hạn kết thúc để việc tập trung vào việc truyền kiến ​​thức tên miền cho anh chàng mới sẽ dễ dàng hơn. Đây sẽ là sở thích của tôi vì nó có thể hơi thách thức theo một số cách.

  2. Mang vào nhà phát triển mới để làm việc trên tài liệu, kiểm tra đơn vị và những thứ khác không thay đổi bất kỳ mã hiện có nào. Đây sẽ là những gì tôi đề nghị nếu bạn mang đến cho anh chàng mới để cố gắng giảm thiểu tác động đến khối lượng công việc hiện tại.


2

Ngày đã trôi qua, nhưng đối với bất cứ ai đọc nó sau này.

Điều quan trọng để xem xét là khách hàng trong tình huống này có nhiều thứ để mất hơn bạn. Họ đã chi rất nhiều tiền, và họ có một sự kiện quan trọng sắp tới có thể tạo ra hoặc phá vỡ doanh nghiệp của họ. Bạn đã có tiền của họ và mất một khách hàng sẽ không phá vỡ doanh nghiệp của bạn. Nếu có, thì bạn có các vấn đề kinh doanh nghiêm trọng khác ngoài quản lý dự án khủng khiếp.

Đặt cược tốt nhất của bạn là đàm phán một tập hợp con thiết yếu của chức năng và sau đó làm thêm giờ để hoàn thành nó. Nếu bạn không thể tạo ra một tập hợp con nhỏ hơn hoặc không sẵn sàng làm thêm giờ trong tình huống đó, có lẽ bạn không nên kinh doanh. Điều này có thể có nghĩa là khiến các khách hàng khác bị trì hoãn, tuy nhiên tôi đoán các khách hàng khác của bạn đã không trả tiền trong 3 năm, vì vậy hãy đặt tài nguyên của bạn vào nơi có tiền.

Nếu họ không sẵn sàng đàm phán phạm vi, thì bạn sẽ thất bại.

Không có cơ hội cung cấp dự án này hoàn toàn trong khung thời gian. Nếu bạn nghĩ rằng bạn còn 25% cho một dự án đã mất 18 tháng để phân phối cho đến nay, thì bạn còn ít nhất 6 tháng (trong số ~ 2 nhà phát triển). Thêm một người khác sẽ không thay đổi đáng kể điều này.

Như đã được chỉ ra, tuyển dụng cần có thời gian. Kinh nghiệm của tôi là mất một tháng ở mức tối thiểu. Sau đó thêm đào tạo và thời gian của bạn đã hết.

Tôi hy vọng điều này làm việc cho bạn.

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.