Tôi thích và nâng cao câu trả lời của maptle, nhưng tôi muốn đề cập đến một số động thái và lập luận khác mà các câu trả lời khác chưa đưa ra.
Đầu tiên, ẩn ý trong câu trả lời của maptle là thực tế là dưới một cấp độ kỹ năng nhất định, một số vấn đề là không thể. Thật không may, cách bạn phát hiện ra điều này là do nhóm của bạn cố gắng và thất bại, điều này rấtđắt. Sau khi thất bại, có hai bài học có thể học được từ điều này. Một lựa chọn là bạn học được rằng bạn cần nhiều nhà phát triển có năng lực hơn và vì vậy bạn thuê họ và bạn hoàn thành dự án vượt quá ngân sách và vượt tiến độ, nhưng ít nhất bạn đã chuẩn bị trong tương lai. Tùy chọn khác là một dự án như vậy là "quá khó" cho nhóm của bạn và những điều đó không nên được thử trong tương lai, tức là bạn từ bỏ dự án và thực sự có bất kỳ dự án tương tự nào. Tất nhiên, sẽ hiếm khi được gọi là "chúng tôi quá ngu ngốc để làm điều này", nhưng thay vào đó sẽ được hợp lý hóa là "hệ thống của chúng tôi rất phức tạp" hoặc "chúng tôi có rất nhiều mã kế thừa" hoặc một số mã khác. Quan điểm sau này có thể làm cong đáng kể quan điểm của một công ty về những gì có thể và thời gian phát triển / tốn kém sẽ là bao lâu. "
Một câu hỏi là, chính xác kế hoạch của công ty bạn là gì? Được rồi, họ sẽ thuê các lập trình viên cơ sở giá rẻ. Ba năm trôi qua, bây giờ thì sao? Họ làm gì với nhà phát triển đã ở bên họ suốt ba năm đó? Có phải họ không bao giờ tăng lương cho anh ấy / cô ấy? Các tùy chọn ở đây như sau:
- Họ đưa ra mức tăng cạnh tranh để giữ chân nhân viên, trong trường hợp nào tại sao họ lại gặp vấn đề trong việc trả lãi suất cho nhà phát triển cao cấp bây giờ? Tôi sẽ trở lại điều này mặc dù.
- Họ có tỷ lệ trì trệ, điều đó có nghĩa là cuối cùng họ sẽ "sôi sục" với những nhân viên thiếu lái xe và / hoặc kỹ năng.
- Họ chủ động loại bỏ nhiều nhân viên cao cấp hơn.
Hai trường hợp thứ hai ngụ ý rất nhiều sự thay đổi nhân viên, điều đó có nghĩa là mất kiến thức của công ty và trả tiền cho nhân viên làm việc liên tục. Trong trường hợp thứ hai, về cơ bản, bạn đang chọn các nhà phát triển tồi và do đó chi phí sẽ tăng theo hình thức tăng lịch trình. Cách thức này sẽ diễn ra là mọi thứ đều ổn trong dự án X cho đến khi đột nhiên Jim rời đi, một trong những nhà phát triển tốt hơn, bởi vì anh ta đã không được tăng lương trong hai năm, bây giờ dự án sẽ "hiểu được" lâu hơn đáng kể bạn cần phải thuê và đào tạo các nhà phát triển cơ sở mới, những người (có lẽ) sẽ không giỏi như Jim. Đây là cách bạn tính toán lại kỳ vọng.
Ngay cả trong trường hợp các mức tăng cạnh tranh đang được cung cấp, nếu tất cả những gì bạn có là các nhà phát triển cơ sở ở đâu và họ phải học như thế nào? Về cơ bản, bạn đang hy vọng rằng một trong số họ sẽ tự mình học hỏi các thực hành tốt bất chấp môi trường làm việc của họ và cuối cùng là cố vấn cho những người khác (trái ngược với việc rời khỏi đồng cỏ xanh hơn). Nó sẽ có ý nghĩa hơn rất nhiều khi "tố chính máy bơm" với một số nhà phát triển giỏi. Nhiều khả năng bạn sẽ phát triển văn hóa của người mới bắt đầu chuyên gia . Kết quả là cuối cùng bạn sẽ trả mức giá dành cho nhà phát triển cao hơn cho những người chỉ tốt hơn một chút so với nhà phát triển cơ sở và độc hại về mặt văn hóa.
Một lợi ích của, đặc biệt, các nhà phát triển rất giỏi, mà tôi ngạc nhiên không ai khác đề cập đến là họ có thể dễ dàng trở thành một nhân tố. Nó cũng có thể là trường hợp một nhà phát triển cơ sở và một nhà phát triển cao cấp mất cùng thời gian để tạo một bảng. Tuy nhiên, một nhà phát triển giỏi sẽ không làm điều đó. Họ sẽ tạo một trình tạo bảng để giảm thời gian cho mọi người tạo bảng. Ngoài ra, họ cũng sẽ tăng trần những gì có thể cho mọi người . Ví dụ: các nhà phát triển đã triển khai khung MapReduce của Google có khả năng cực kỳ đủ điều kiện, nhưng ngay cả khi người dùngMapReduce hoàn toàn không thể tự tạo một phiên bản phân tán ồ ạt cho thuật toán của họ, giờ đây họ có thể dễ dàng với MapReduce. Thường thì sự năng động này là ít trắng trợn hơn. Ví dụ, kiểm soát nguồn, kiểm tra và thực hành triển khai tốt hơn giúp mọi người trở nên tốt hơn, nhưng việc theo dõi một người cụ thể có thể khó hơn.
Để tranh luận về phía bên kia một chút, có thể những người cấp cao hơn là đúng. Có lẽ các nhà phát triển có kinh nghiệm hơn không cần thiết. Tuy nhiên, nếu đó là trường hợp, có vẻ như sự phát triển không phải là một phần quan trọng của công ty. Trong trường hợp đó, tôi sẽ loại bỏ hoàn toàn các nhà phát triển và sử dụng phần mềm sẵn có hoặc thuê các nhà thầu theo yêu cầu. Có thể đáng để khám phá lý do tại sao họ không chỉ sử dụng các nhà thầu chứ không phải là một nhóm nội bộ. Nếu bạn sẽ có rất nhiều nhân viên khuấy động, thì các nhà thầu tăng cường không nên là một vấn đề.