Tôi có nên tìm kiếm các nhà phát triển với bộ kỹ năng cụ thể hoặc các nhà tổng quát cần học? [đóng cửa]


8

Nhờ sự giúp đỡ tuyệt vời của trang web này và SO, tôi đã có thể tạo một nguyên mẫu của một phần mềm tôi muốn bán nhưng thật không may mặc dù nguyên mẫu hoạt động tôi nghĩ chất lượng mã của tôi rất thấp. Tôi đã không sử dụng nhiều OOP hoặc các mẫu thiết kế nên mặc dù mã của tôi có thể hiểu được với tôi, tôi nghĩ rằng một nhà phát triển bình thường sẽ mờ nhạt nếu họ phải đọc nó.

Vì vậy, tôi muốn thuê một nhà phát triển để làm cho nó có chất lượng tốt hơn một chút và cải thiện một số triển khai API mà tôi có thể đã không thực hiện chính xác. Tôi đang gặp vấn đề khi thuê một nhà phát triển.

Tôi đã gặp 2 nhà phát triển và họ đã đọc thông số kỹ thuật phần mềm của tôi. Vấn đề là, họ thiếu kiến ​​thức về lĩnh vực kinh doanh của tôi (điều này hoàn toàn dễ hiểu và không có vấn đề gì) nhưng họ cũng thiếu kiến ​​thức về các hệ thống công nghệ cơ bản mà tôi đã sử dụng như Hadoop, Hbase, Cuda, v.v. Tôi đã dành rất nhiều thời gian để giải thích về bản đồ / thu nhỏ, bigtables và các công nghệ khác mà tôi đã sử dụng. Tôi nghĩ đó là kiến ​​thức phổ biến vì sự tương tác của tôi với mọi người trên trang này nhưng những người tôi gặp đã đề cập họ không bao giờ phải đối phó với những điều này nên họ không biết điều đó.

Câu hỏi của tôi là, đối với các dự án phần mềm đang thuê các nhà phát triển nhà thầu thì có nguy hiểm không nếu nhà phát triển không có kinh nghiệm với các công nghệ cơ bản? hoặc một nhà phát triển chung có thể hoàn thành trong một lĩnh vực khác thực sự có thể tiếp nhận các công nghệ mới? Tôi đã thực hiện rất nhanh việc tính toán phong bì và tôi nghĩ rằng chi phí trả trước sẽ tương tự nếu tôi thuê một sinh viên hoặc nhà phát triển không có kinh nghiệm về công nghệ của mình, người sẽ làm việc nhiều giờ so với thuê một nhà phát triển có kinh nghiệm cao, tính phí gấp đôi nhưng hoàn thành một nửa thời gian nhưng những rủi ro khác tôi nên xem xét hoặc lo lắng về? Ngoài ra, nếu tôi thuê một người tổng quát, tôi có nên trả tiền cho thời gian họ học hadoop hoặc cuda nếu họ là nhà thầu (dường như có ý nghĩa kinh doanh nhưng không chắc chắn công bằng với họ như thế nào nếu họ không sử dụng kỹ năng một lần nữa).

Tôi có một chút bối rối vì vậy bất kỳ đề xuất sẽ là tuyệt vời.


1
"hoặc một nhà phát triển chung có thể hoàn thành trong một lĩnh vực khác thực sự có thể tiếp nhận các công nghệ mới?" Tất nhiên, nếu không, không có công nghệ mới nào từ nhiều thập kỷ trước đã từng bắt kịp.
DarenW

6
I think a normal developer would faint if they had to read it- Đó là một số trung thực ngay tại đó.
Joel Etherton

Ngôn ngữ lập trình gì?
GlenPeterson

1
"Hadoop, Hbase, Cuda, v.v. Tôi nghĩ đó là kiến ​​thức phổ biến" ... Tôi ngạc nhiên khi bạn nghĩ như vậy. Tôi có thể sai. Tôi sẽ ngạc nhiên hơn nếu tôi đã.
NoChance

1
Các nhà phát triển có thiên hướng làm việc "sau giờ làm" theo cách riêng của họ - thường làm việc với các đồng nghiệp trong các dự án thú cưng - và hầu như luôn có khả năng chịu đựng thấp đối với mã kém và không lập trình viên làm lập trình. Nó giống như yêu cầu một thợ máy đến (sau khi công việc 9-5 của anh ta kết thúc) và giúp đưa chiếc xe của bạn trở lại với nhau sau khi bạn cố gắng sửa chữa vào cuối tuần.
mattnz

Câu trả lời:


19

Có nguy hiểm không nếu nhà phát triển không có kinh nghiệm với các công nghệ cơ bản?

Đúng. (Học ​​tập cần có thời gian và mắc lỗi thường là một phần của quá trình.)

hoặc một nhà phát triển chung có thể hoàn thành trong một lĩnh vực khác thực sự có thể tiếp nhận các công nghệ mới?

Đúng. (Chọn các công nghệ mới là điều mà các nhà tổng quát luôn làm. Bạn không tồn tại lâu như một lập trình viên nếu bạn không thể học những điều mới.)

Tôi nghĩ rằng chi phí trả trước sẽ tương tự nếu tôi thuê một sinh viên hoặc nhà phát triển không có kinh nghiệm về công nghệ của mình, người sẽ làm việc nhiều giờ so với thuê một nhà phát triển có kinh nghiệm cao, tính phí gấp đôi nhưng hoàn thành trong một nửa thời gian

Lưu ý rằng có một sự khác biệt lớn giữa 'không có kinh nghiệm với công nghệ X' và 'không có kinh nghiệm, thời gian'. Đó là một điều phải học một số khuôn khổ hoặc ngôn ngữ mới, và một điều nữa để bắt đầu công việc đầu tiên của bạn với tư cách là một nhà phát triển và không có ai đó có một số kinh nghiệm để chỉ cho bạn đi đúng hướng.

Những rủi ro nào khác tôi nên xem xét hoặc lo lắng về?

Các quyết định được đưa ra trong quá trình thiết kế và phát triển có thể khó khăn và / hoặc tốn kém để thay đổi sau này. Một nhà phát triển thông minh, có kinh nghiệm có thể giúp bạn tiết kiệm rất nhiều so với chỉ giờ phát triển. Mặt khác, ai đó thực sự giỏi trong những gì họ làm sẽ có thể tính phí theo.

Tôi có một chút bối rối vì vậy bất kỳ đề xuất sẽ là tuyệt vời.

Có lẽ bài viết của Joel Spolsky sẽ giúp: Hướng dẫn phỏng vấn du kích . Tóm lại, Joel nói rằng anh ta tìm kiếm hai điều: 1) thông minh, 2) hoàn thành công việc. Ngoài ra, tôi khuyên bạn nên tìm kiếm một người mà bạn có thể làm việc cùng, và họ sẽ hiểu những gì bạn đang cố gắng thực hiện và làm việc đó với bạn.


4

Tôi đoán rằng nếu một người mới có thể làm những điều tương tự chính xác với một nửa giá trong hai lần, tất cả sẽ hoạt động. Trên thực tế, sẽ có những vấn đề mà người mới của bạn sẽ không giải quyết được và những cạm bẫy mà họ không thể tránh khỏi. Tôi không nghĩ bạn sẽ nhận được mã tương tự. Bạn sẽ kết thúc việc hạ thấp kỳ vọng của bạn.

Điều này có nhiều khả năng là trường hợp khi nói đến thiết kế. Trả thêm phí cho nhà phát triển có kinh nghiệm để làm việc trên thiết kế. Bạn có thể sử dụng người mới để giúp với khối lượng mã hóa nếu bạn nghĩ rằng đó là hiệu quả chi phí.


3

Đúng. Cả hai.

Lý tưởng nhất, bạn có thể tìm thấy một người ở giữa, người sẽ cần một người đứng lên, nhưng không phải ai đó mang theo họ về kiến ​​thức kỹ thuật hoặc tên miền. Tuy nhiên, nhiều lực lượng ảnh hưởng đến vấn đề nhân sự mà bạn đang cố gắng giải quyết.

Tại sao lại có sự thiếu hụt kỹ năng miền

Các nhà phát triển là một nhóm lưu hành, chuyển từ miền ứng dụng sang miền ứng dụng theo nhu cầu của thị trường. Nếu một cái gì đó nóng, mười hoặc thậm chí một trăm hoặc thậm chí một ngàn công ty sẽ đuổi theo nó cho đến khi cạnh tranh đẩy tất cả trừ một số ít người chơi ra khỏi thị trường. Do đó, các ưu đãi dành cho các nhà phát triển đi sâu vào kiến ​​thức trước khi thuê trong lĩnh vực kinh doanh của bạn là zip. Nếu bạn đang làm một cái gì đó khá mới lạ, bạn sẽ không tìm thấy những người khác có kiến ​​thức về miền. Nếu bạn có đối thủ cạnh tranh, hoặc đặc biệt là đối thủ cũ, bạn không cần phải từ bỏ nhiệm vụ trải nghiệm tên miền.

Nếu bạn thuê một nhà phát triển ảnh nóng, họ có thể quan tâm nhất đến việc phát triển các kỹ năng di động, vì vậy bạn vẫn có thể bị buộc phải mang nhiều trọng lượng cho kiến ​​thức tên miền. Có lẽ bạn nên xem xét việc yêu cầu một kỹ sư hệ thống ghi lại kiến ​​thức miền liên quan đến tính năng để nhà phát triển sử dụng. Có lẽ giữa thông minh và hoàn thành công việc, bạn sẽ chọn ai đó mạnh mẽ trong việc hoàn thành công việc. Nếu bạn có thể tìm thấy một nhà phát triển quan tâm đến bạn trong một thời gian, học cả doanh nghiệp và công nghệ của bạn, người đặt nhu cầu của công ty bạn ngang bằng với chính họ, điều đó có thể lâu dài hơn so với anh chàng thông minh có kế hoạch liên quan leo lên và, khá thường xuyên, ra ngoài.

Kỹ năng yêu cầu cao

Nếu bạn đang làm một cái gì đó có nhu cầu cao, bạn phải làm nhiều hơn nữa để thu hút các ứng cử viên. Nếu khả năng hiển thị của bạn thấp và những gì bạn phải trả lại ít xuất sắc hơn so với đối thủ, bạn có thể cần phải trả nhiều tiền hơn hoặc phát triển tài năng bạn cần từ nhóm ứng viên có kỹ năng khác.

Kỹ năng tên miền hay Kỹ năng công nghệ?

Trong câu hỏi bạn đề cập đến một số kỹ năng mà ứng viên của bạn thiếu bao gồm Hadoop, Hbase, Cuda, map / less và bigtables. Tôi không chắc chắn tôi sẽ gọi những kỹ năng miền này bởi vì chúng dựa trên công nghệ chứ không phải là chi tiết cụ thể để tạo ra một sản phẩm dành riêng cho khách hàng của bạn. Tôi nghi ngờ rằng mỗi kỹ năng này đều có thể mang theo và vẫn sẽ có giá trị sau khi ngành công nghiệp cụ thể của bạn tự động hóa và bạn đã thống trị, tìm thấy một vị trí thích hợp hoặc chuyển sang một thứ khác.

Kỹ năng tăng trưởng thu hút ứng viên tốt

Lợi thế của việc tuyển dụng và đào tạo các kỹ năng công nghệ là người thông minh, hoàn thành công việc, nhà phát triển định hướng nghề nghiệp, năng nổ, tự đào tạo sẽ nhảy vào cơ hội học hỏi điều gì đó với một tương lai lâu dài và bổ ích. Nếu bạn duy trì các thách thức và kết hợp công nghệ mới có thể quản lý, nhiều nhà phát triển bạn muốn sẽ trở thành một nhóm của bạn cho cả hai lợi ích chung ngắn hạn và dài hạn.


2

Có nguy hiểm không nếu nhà phát triển không có kinh nghiệm với các công nghệ cơ bản? hoặc một nhà phát triển chung có thể hoàn thành trong một lĩnh vực khác thực sự có thể tiếp nhận các công nghệ mới?

Một nhà phát triển có thể chọn công nghệ (và cuối cùng họ sẽ) nhưng tôi không nghĩ rằng nó đáp ứng yêu cầu của bạn.

Bạn có phần mềm làm việc, nhưng bạn muốn nó được xem xét, tái cấu trúc và thậm chí có thể viết lại. Bạn thực sự cần một chuyên gia hoặc ít nhất là một người có kinh nghiệm trong một vài công nghệ của bạn để có thể làm điều đó, bởi vì mặc dù có những thứ như mẫu phần mềm, việc triển khai khác nhau giữa các nền tảng và khung do tính độc đáo của nền tảng và khung.

Bạn đã giải quyết các vấn đề kinh doanh và làm chủ tên miền và bạn đã triển khai phần mềm. Bây giờ bạn đang có hướng dẫn kỹ thuật để cho phép ứng dụng của bạn mở rộng quy mô và sống một cuộc sống lâu dài và khỏe mạnh. Bạn muốn ai đó đã làm điều này trong một hệ thống tương tự, hoặc sử dụng công nghệ tương tự.

Các nền tảng khác nhau thường đòi hỏi tư duy và kinh nghiệm hoàn toàn khác nhau. Tôi đoán bạn đang làm việc trên một dự án loại dữ liệu lớn / song song? Một nhà phát triển web hoặc một nhà phát triển tích hợp sẽ có thể viết lại nguyên mẫu của bạn và nó cũng hoạt động tốt, nhưng tại sao lại cho rằng họ có thể làm tốt hơn bạn?

Đừng giữ người hoàn hảo, vì họ có thể không tồn tại, nhưng nhà phát triển của bạn nên làm quen với ít nhất một số công nghệ và khái niệm bạn đang sử dụng, hoặc, như họ nói trong quảng cáo tuyển dụng, thể hiện khả năng nhanh chóng tìm hiểu các công nghệ và khái niệm mới . Nếu họ chưa nghe nói về Hadoop hoặc MapReduce thì tiếng chuông báo thức sẽ tắt - thời điểm lớn.


1

Bạn đang thực sự yêu cầu xem xét mã và / hoặc đào tạo. Đặc biệt để xem xét mã, một nhóm lập trình viên dày dạn với nền tảng đa dạng là tốt nhất. Khi tất cả họ đồng ý, hãy làm những gì họ nói với bạn. Khi tất cả họ có một quan điểm khác nhau, bạn đang làm điều đúng đắn. :-)

Nếu bạn sử dụng mapReduce, CUDA và Hadoop và muốn một người đánh giá duy nhất, hãy thuê chuyên gia. Lựa chọn đầu tiên của tôi là tìm kiếm một người có kinh nghiệm ngoài việc đi học. Ngoài ra, hãy xem xét việc tự đào tạo, tham gia các nhóm người dùng, v.v. Bạn có thể có một vài câu hỏi cá nhân quan trọng và đưa chúng cho bạn bè nếu bạn có loại bạn đó.

Liệu Lập trình viên.StackExchange có cho phép mọi người đăng mã để phê bình không? Nếu vậy, tôi sẽ chọn không quá một trang. Chọn một cái gì đó bạn biết là sai, nhưng không biết tại sao.

Bạn đang sử dụng ngôn ngữ lập trình nào?



0

Tôi hoàn toàn không biết gì về Hadoop / MapReduce thậm chí là một dấu hiệu cảnh báo rằng nhà phát triển có thể không thực hiện bất kỳ nỗ lực nào để cập nhật.

Điều đó nói rằng, đó chỉ là một dấu hiệu, không phải là không thuê. Đưa cho họ FizzBuzz hoặc một cái gì đó thuộc về bản chất đó, và nếu họ vượt qua được, hãy cho họ xem mã của bạn và yêu cầu phê bình. Có lẽ chọn một cái gì đó có lỗi một cách có chủ ý, nhưng cũng có một cái gì đó bạn nghĩ là ổn, vì cuộc thảo luận đó sẽ thú vị hơn.


0

Thật khó để đưa ra lời khuyên về điều này. Chỉ một số suy nghĩ:

Tôi nghĩ rằng chi phí trả trước sẽ tương tự nếu tôi thuê một sinh viên hoặc nhà phát triển không có kinh nghiệm về công nghệ của mình, người sẽ làm việc nhiều giờ so với thuê một nhà phát triển có kinh nghiệm cao, tính phí gấp đôi nhưng hoàn thành trong một nửa thời gian nhưng tôi nên cân nhắc những rủi ro nào khác lo lắng về?

Hình thành những gì bạn đã viết trong phần giới thiệu của bạn:

  • my code quality is very low
  • I didn't use much OOP
  • I wanted to hire a developer to make it a bit more better quality and improve some of my implementations

Trả lời điều này nên là không có trí tuệ :

Nếu bạn thuê một nhà phát triển không có kinh nghiệm , rất có thể , bạn có thể tăng chất lượng mã . Một lập trình viên không có kinh nghiệm là không có sự giúp đỡ .

Mặc dù có thể rẻ hơn trong thời gian ngắn , để thuê một người mới , bạn sẽ trả tiền sau !

Những rủi ro nào khác tôi nên xem xét hoặc lo lắng về?

Đừng phạm sai lầm chỉ tính toán chi phí, để giúp bạn và sản phẩm của bạn hoạt động. Quan trọng hơn là chi phí bảo trì .

Như một hệ quả trực tiếp, về những gì tôi đã nói trong đoạn trước, bạn phải xem xét, cái được gọi là Nợ kỹ thuật . Như bạn đã nói: codebase không có hình dạng tốt - có thể nói, đã có nợ kỹ thuật . Và với việc thuê nhân công không có kỹ năng, bạn đang gia tăng nợ . Có lẽ trong một số năm kể từ bây giờ, bạn kết thúc với một cơ sở mã không thể nhầm lẫn và có một) để bắt đầu lại và b) mất dần khách hàng, điều này tương đương trong cả hai trường hợp: mất tiền.

Ngoài ra, nếu tôi thuê một người tổng quát, tôi có nên trả tiền cho thời gian họ học hadoop hoặc cuda nếu họ là nhà thầu (dường như có ý nghĩa kinh doanh nhưng không chắc chắn công bằng với họ như thế nào nếu họ không sử dụng kỹ năng một lần nữa).

Rõ ràng: Có! Tôi không thấy bất kỳ lý do, không làm điều này. Họ cần kiến ​​thức, bạn cần họ có nó - vì vậy: có.

Nếu họ là những nhà phát triển giỏi , họ sẽ dễ dàng nắm bắt được công nghệ mới - hoặc ít nhất là mới đối với họ - công nghệ. Rất có thể, nếu họ thực hiện công việc một cách nghiêm túc, họ có công nghệ trên radar , nghĩa là họ không thực sự làm được gì với công nghệ, nhưng biết cách thứcthời điểm - sử dụng nó.

Tôi phải thừa nhận, bản thân tôi không có kiến ​​thức về Hadoop, nhưng tôi biết, khi đó có thể là một giải pháp tốt và có sự hiểu biết công bằng về cách thức hoạt động của nó trong lý thuyết ; Vì vậy, tôi sẽ nói rằng, sẽ không mất nhiều thời gian để giúp tôi làm việc hiệu quả.

Tôi đã gặp 2 nhà phát triển và họ đã đọc thông số kỹ thuật phần mềm của tôi. Vấn đề là, họ thiếu kiến ​​thức về lĩnh vực kinh doanh của tôi (điều này hoàn toàn dễ hiểu và không có vấn đề gì) nhưng họ cũng thiếu kiến ​​thức về các hệ thống công nghệ cơ bản mà tôi đã sử dụng như Hadoop, Hbase, Cuda, v.v. Tôi đã dành rất nhiều thời gian để giải thích về bản đồ / thu nhỏ, bigtables và các công nghệ khác mà tôi đã sử dụng.

Để giải thích doanh nghiệp của bạn nên là phần dễ nhất cho bạn, vì bạn biết rõ nhất. Bạn không thể mong đợi mọi người biết doanh nghiệp của bạn tốt như bạn hoặc thậm chí biết cả về nó.

Công nghệ cũng vậy:

Có rất nhiều khung, ngôn ngữ, bộ công cụ ngoài kia - không thể tìm thấy (m) bất kỳ nhà phát triển nào biết tất cả

Tất nhiên bạn có thể nói: $ Technology_du_jour được thổi phồng trên phương tiện truyền thông, vì vậy tôi mong mọi nhà phát triển đều có kiến ​​thức làm việc. Nhưng đó không phải là thực tế.

Đối với tôi là một nhà phát triển, công việc của tôi là một sự đánh đổi: tôi có kiến ​​thức làm việc về một số ngôn ngữ và một số công nghệ. Điều này làm cho tôi linh hoạt theo nhiều cách. Nếu tôi phải, tôi có thể phát triển sự hiểu biết sâu sắc về các công cụ hiện tại của mình, nhưng khi mùa giải trôi qua, các công cụ và ngôn ngữ cũng vậy.

tl; dr;

1) Nếu bạn có thể, hãy thuê một chuyên gia trong lĩnh vực của bạn và trong công nghệ mong muốn

2) Nếu bạn không thể,

2a) Tìm kiếm một nhà tổng quát có chuyên môn về dự án , có thể có hoặc không có kiến ​​thức về các công nghệ được sử dụng trong dự án của bạn

3) Nếu có thực sự , thực sự không ai khác: thuê một sinh viên.

Bạn có nợ kỹ thuật, đừng tăng 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.