Có phải chỉ có việc thuê người giỏi nhất là một lời khuyên thực sự thiết thực cho lập trình ứng dụng máy tính để bàn thông thường? [đóng cửa]


61

Đối với nền, chúng tôi đang thực hiện các ứng dụng kỹ thuật máy tính để bàn, với AutoCAD như UI, một cái gì đó tương tự như etabs .

Một điều thực sự làm tôi bực mình là, có cần phải thuê những nhà phát triển giỏi nhất không? Để bắt đầu, chúng tôi đang gặp khó khăn lớn trong tuyển dụng; hầu hết các sơ yếu lý lịch chúng tôi thấy đều đang thực hiện các ứng dụng CRUD đơn giản hoặc tùy chỉnh SharePoint mà tôi không nghĩ thực sự liên quan đến nhiều chương trình khó. Ngay cả những người mà chúng tôi gọi để phỏng vấn, hầu hết đều không thể thực hiện chuỗi Fibonacci và tìm kiếm nhị phân đơn giản, và chúng tôi đủ duyên dáng để đưa ra gợi ý và đánh vần các vấn đề một cách rõ ràng để các ứng viên không phải tra từ điển để kiểm tra "Chuỗi Fibonacci" nghĩa là gì.

Điều này khiến tôi suy nghĩ: Vâng, chúng tôi cần một số mức độ năng khiếu lập trình khi thực hiện công cụ lập trình hình học / tuyến tính tính toán và chúng tôi cần một số mức độ năng khiếu lập trình khi thiết kế kiến ​​trúc phần mềm / hoặc quyết định sử dụng mẫu phần mềm nào, nhưng ngoài đó , rất nhiều mã của chúng tôi chỉ là mã hệ thống ống nước (tôi nghĩ), có thể được thực hiện bởi một người có chút quen thuộc với lập trình.

Cho rằng bây giờ chúng tôi thực sự cần tài năng lập trình, và cho rằng việc thuê các nhà phát triển siêu sao rất khó khăn, tôi muốn hạ thấp tiêu chuẩn của mình và chỉ thuê những người tầm thường, trái ngược với những gì Joel giảng .

Bạn nghĩ sao?

Chỉnh sửa: Bạn không cần phải viết lại toàn bộ thư viện lập trình hình học / tuyến tính; tất cả những gì bạn cần làm, theo như ứng dụng của tôi có liên quan, là có thể biết cách giải quyết các vấn đề trong tay thành các thuật ngữ lập trình hình học / tuyến tính tính toán phù hợp và biết khi nào / sử dụng các thư viện hiện có. Vì vậy, nó không khó như nó có vẻ.


53
Câu trả lời chuẩn: có thể bạn đang cung cấp mức lương quá thấp và các nhà phát triển tốt hơn không quan tâm đến việc làm cho bạn? Dù sao, nếu bạn gặp vấn đề với những người không thể thực hiện tìm kiếm nhị phân, thì đó không phải là vấn đề với việc thiếu siêu sao, một lập trình viên bình thường sẽ có thể làm điều đó.
quant_dev

15
Viết hoa tiêu đề của bạn làm cho tôi đọc nó dưới dạng PANDA :)
cthom06

13
Họ không thể viết chuỗi Fibonacci? Điều đó không có gì khó khăn ... những người này thực sự không thể là lập trình viên.
Ben B.

6
Graviton, tất cả là do tiền lương. Nếu (ví dụ) bạn cung cấp ba giá trị thị trường cho tiền lương, thì bạn sẽ có người sẵn sàng rời bỏ công việc của họ để đến làm việc cho bạn. Tôi không gợi ý rằng bạn cung cấp RATNG nhiều, nhưng nó minh họa điểm này. Nếu bạn muốn sơ yếu lý lịch tốt, thì bạn cần phải trả tiền cho nó.
riwalk

7
@ user1525 vì một cái gì đó tầm thường, các nhà phát triển thường không gặp vấn đề gì khi thực hiện nó (đệ quy hoặc không đệ quy)
Darknight

Câu trả lời:


110

Tôi đề nghị bạn ngừng đọc Joel quá nhiều. Những gì anh ấy đã viết trong blog của anh ấy mâu thuẫn với những phản hồi của anh ấy trên trang web này vì vậy tôi sẽ không thực sự tin lời anh ấy nhiều.

Điều gì tạo nên một siêu sao và tại sao cần phải có một cuộc thảo luận dài và không có hồi kết. Đó là tinh hoa và nó không thực tế.

Những gì bạn cần là một người:

  1. Rất thích được làm những gì bạn đang làm
  2. Sẽ là một lập trình viên nhiệt tình đam mê
  3. Sẽ có tiềm năng để học những gì nó cần để làm công việc của bạn ngay

Phần còn lại là không quan trọng.

Bạn sẽ không tin có bao nhiêu sinh viên trẻ tốt nghiệp ngoài kia không muốn gì khác ngoài việc đi sâu vào loại dự án mạnh mẽ này của CS và không bao giờ nhìn vào các ứng dụng CRUD mã hóa. Một thời gian trước tôi là một trong số họ, tôi thực sự mơ ước được tham gia một dự án xoay quanh việc phát triển trình biên dịch nhưng không thể tìm thấy. Tại sao không cho một cơ hội cho một trong số họ?

Tôi không tin AutoCAD được viết bởi siêu nhân. Hầu hết các dự án thành công được thực hiện bởi những người chỉ đơn giản muốn hoàn thành công việc và họ thực sự muốn điều đó.


hầu hết các sơ yếu lý lịch chúng tôi thấy đều đang thực hiện các ứng dụng CRUD đơn giản hoặc tùy chỉnh SharePoint

Điều gì sẽ xảy ra nếu hầu hết các công việc yêu cầu điều đó? Mọi người có thể đã học CS tại trường đại học và thậm chí đã thực sự giỏi về nó, nhưng bạn không thể mong họ nhớ nó nếu họ chưa bao giờ sử dụng nó trong lập trình thực tế trong 10 năm. Rõ ràng không ai sẽ đọc những cuốn sách CS cũ mỗi năm chỉ để giữ cho nó mới mẻ nếu kiến ​​thức này không được sử dụng ở bất cứ đâu.


11
Câu trả lời tuyệt vời!

33
Vâng tốt, nhưng tôi đã làm việc với những người nhiệt tình đam mê, những người không có đầu mối. Chúng là một trọng lượng chết và bạn không muốn chúng trong tổ chức của mình. Vì vậy, một số bài kiểm tra năng khiếu BASIC để loại bỏ các schmucks thực sự ngu ngốc là một điều rất tốt để làm.
quick_now

3
Đoạn cuối mô tả tôi đến một tee.
ozz

20
Nhìn thấy rất nhiều "bài kiểm tra năng khiếu" hoàn toàn vô dụng, thậm chí có lỗi chói lóa (và chỉ ra chúng khiến bạn thất bại trong bài kiểm tra, khi tìm và chỉ ra lỗi là một phần công việc của chúng tôi với tư cách là nhà phát triển ...).
jwenting

2
@ Nghệ thuật phát triển, có lẽ đó là may mắn cho bạn? Nếu bạn không thể thuyết phục họ về sự sai lầm của một câu hỏi phỏng vấn, hãy tưởng tượng bạn sẽ gặp rắc rối gì trong công việc.
Đánh dấu tiền chuộc

41

Một cuốn sách mà tôi thực sự thích là Đầu tiên phá vỡ tất cả các quy tắc . Nó có rất nhiều thông tin về sự khác biệt giữa người quản lý trung bình và người quản lý giỏi. Một trong những hiểu biết quan trọng mà các nhà quản lý giỏi đã nói đi nói lại được tóm tắt bởi một trong số họ trong câu, tôi chưa bao giờ chờ đợi quá lâu để tìm được người thuê đúng, và tôi chưa bao giờ đuổi việc thuê sai đủ nhanh. Vâng, thật bực bội khi mất nhiều thời gian để thuê, nhưng nó đáng giá trong khi.

Một điểm thứ hai mà bạn nên ghi nhớ là khi đo lường thông lượng dự án, có một đỉnh cao năng suất cho các nhóm 5-8 người. Bạn không trở lại cùng năng suất cho đến khi bạn có một nhóm hơn 20 người. Hãy rất, rất thận trọng về việc phát triển một đội vượt qua quy mô nơi động lực của nhóm nhỏ hoạt động. Và nếu bạn sẽ ở dưới ngưỡng đó, thì bạn thực sự muốn 5-8 người đó sẽ tốt.

Cả hai điểm nói mạnh về việc giữ cho thuê đúng.


2
+1 cho trích dẫn đó. Nó phản ánh hoàn hảo những gì tôi đã nhận ra trong vài năm qua.
Kris

Điều thú vị với đỉnh 5-8, là ngay khi bạn có 10 người, bạn chỉ có thể chia tay :) Tất nhiên, công việc cũng cần được chia nhỏ, và tốt nhất là không ngẫu nhiên ...
Matthieu M.

@ mattieu-m: Rất nhiều người có lý thuyết đó. Nếu hai nhóm thực sự cần phải tương tác nhiều, thì nó không hoạt động. Nếu họ có thể được đưa ra những mối quan tâm thực sự riêng biệt, thì nó hoạt động tốt.
btilly

26

Mọi người đều tuyên bố "chỉ thuê 1 phần trăm hàng đầu". Nếu đó là sự thật, 100% người có việc làm đều sẽ nằm trong "1 phần trăm hàng đầu" của tất cả mọi người, vì vậy 99% tất cả mọi người sẽ thất nghiệp (trong bất kỳ lĩnh vực nào). Vì đây rõ ràng không phải là trường hợp và tất cả chúng ta đều là những người có kinh nghiệm rõ ràng không thuộc nhóm đó (tại sao bạn lại hỏi câu hỏi này ...) chúng tôi biết điều này không đúng.

Trong thực tế, các tổ chức chỉ gồm những người như vậy sẽ rất không ổn định. Quá nhiều cái tôi, quá nhiều ý tưởng mâu thuẫn. Nó sẽ sụp đổ khi mọi người làm việc của riêng mình, sa lầy vào việc không bao giờ kết thúc các cuộc thảo luận lý thuyết về giá trị tương đối của mọi thứ, hoặc phát triển thành một trận đấu la hét liên tục khi tình cảm bùng lên mỗi khi có quyết định.


13
Vấn đề là, chỉ vì bạn chỉ thuê 1% ứng viên hàng đầu ứng tuyển vào bạn không có nghĩa là bạn đang tuyển dụng 1% nhà phát triển hàng đầu. 8 ') Xa như * siêu anh hùng đi, họ thường xuyên bị coi là một vấn đề cho phần còn lại của đội. Một người làm việc ở mức 200% nhưng giảm 5 người xuống 50% không phải là lợi nhuận ròng.
Đánh dấu gian hàng

2
+1: Theo thống kê, hầu hết mọi người đều nằm trong một vài điểm phần trăm của giá trị trung bình. Bất cứ ai không đánh giá cao điều đó đang sống trong một thế giới mơ ước. Và bạn hoàn toàn đúng: những người ở quá xa trung bình là những người gây rối, cho dù họ ở trên hoặc dưới mức trung bình trong khả năng.
Satanicpuppy

5
@Satanicpuppy: Theo thống kê, được phân phối bình thường khoảng hai phần ba số người nằm trong một độ lệch chuẩn so với giá trị trung bình và khoảng 98% nằm trong hai độ lệch chuẩn. Điều này không nói gì về độ lệch chuẩn là gì, hoặc trên thực tế nếu bất kỳ phân phối tùy ý nào là bình thường. Khả năng lập trình giữa các lập trình viên chắc chắn bị sai lệch, và thậm chí có thể là đuôi phải của một bản phân phối bình thường.
David Thornley

11
Một lý do chính tại sao tài năng lập trình giữa các lập trình viên có thể bị sai lệch và / hoặc đuôi phải của phân phối bình thường sẽ là nếu tài năng lập trình ở người thường được phân phối. Mẫu phụ của con người trở thành lập trình viên là mẫu thiên vị của phân phối đó; đó là, những người trung bình hoặc kém hơn về lập trình hiếm khi trở thành lập trình viên. Điều này có thể làm cho một lập trình viên "trung bình" có tài năng trên trung bình so với dân số nói chung, và nó cũng có thể làm cho tài năng phân phối lập trình viên trông giống như đuôi phải của phân phối bình thường.
Michael McGowan

2
@david: "Không ai có thể thấp hơn mức trung bình"? Tôi ước tôi làm việc ở nơi bạn làm việc.
Satanicpuppy

25

Điều đầu tiên bạn cần hỏi là tại sao bạn lại tiếp tục không đạt tiêu chuẩn bạn muốn. Tôi đã làm việc với rất nhiều người tốt, vì vậy họ ở ngoài đó và ứng dụng nghe có vẻ rất thú vị đối với tôi. Nếu bạn không thể có được những người có thể thực hiện các chuỗi Fibonacci và tìm kiếm nhị phân (điều này khó khăn hơn dường như; theo Knuth, đó là vài năm giữa lần xuất bản đầu tiên và lần xuất bản chính xác đầu tiên của nó), bạn đang làm gì đó để lái những người tốt đi.

Bạn đang yêu cầu nhiều kỹ năng hơn bạn sẵn sàng trả tiền? Bạn đang quảng cáo ở những nơi sai? Là công ty của bạn không hấp dẫn bởi vị trí hoặc danh tiếng? Đây là vấn đề đầu tiên và cơ bản nhất của bạn, và là vấn đề bạn cần giải quyết khẩn cấp. Bạn và đồng nghiệp chắc chắn biết một số người tốt không làm việc cho bạn. Cho họ thấy những gì bạn đã có, và hỏi họ xem họ có bị cám dỗ không, và nếu không thì tại sao không. Bạn có thể quá gần với vấn đề để hiểu nó chưa được trả lời.

Đừng thuê người vì họ là người giỏi nhất. Thuê người vì họ sẽ có thể làm điều gì đó bạn muốn làm. Nếu bạn thuê người tầm thường bởi vì đó là tất cả những gì áp dụng, thì bạn sẽ dần mất đi những người tốt và bạn sẽ gặp khó khăn với những người có đại số run rẩy khi cố gắng làm mọi thứ với hình học tính toán. (Thuê người tầm thường vì bạn có một công việc cho một vài lập trình viên tầm thường là một việc khác, nhưng bạn phải có thể thuê những người chất lượng ở nơi bạn cần họ.)


7
Bởi vì bộ phận nhân sự không đủ năng lực trong việc sàng lọc các ứng cử viên phần mềm. Yêu cầu: 10 năm trong kịch bản cà phê, 40 năm lập trình PHP, giáo dục: BS / BA
Ẩn danh

1
@ user1525: Rất có thể là sự bất tài về nhân sự, nhưng điểm quan trọng là tìm hiểu lý do và cách khắc phục (hoặc thấy rằng điều đó không thể sửa được, vì vậy rõ ràng đã đến lúc phải nhảy tàu). Tôi sẽ không đi đến kết luận. Câu trả lời của bạn không gợi ý một cách tiếp cận khác: yêu cầu những người giỏi nộp hồ sơ và xem HR làm gì với họ.
David Thornley

18

"hầu hết không thể thực hiện chuỗi Fibonacci và tìm kiếm nhị phân đơn giản"

Tiêu chí của bạn chắc chắn là sai. Trong nhóm của tôi, chúng tôi đều là các nhà vật lý hoặc kỹ sư. Tôi cá là không ai có thể thực hiện tìm kiếm nhị phân vì chúng tôi không tham gia các khóa học CS và trong cuộc sống thực, chúng tôi sử dụng một thư viện cho việc đó. Tôi thậm chí sẽ nói: một người viết binsearch mình không biết cách tập trung vào những điều quan trọng.

Nó có tầm quan trọng lớn hơn nhiều, nếu ứng viên thông minh và phù hợp với nhóm. Nếu bạn muốn kiểm tra tài năng lập trình của anh ấy, hãy cho anh ấy / cô ấy một công việc phải làm ở nhà. Lưu ý anh ấy / cô ấy mất bao lâu và thảo luận về kết quả để tìm hiểu xem đó có phải là ứng cử viên thực sự làm việc không.


3
Có thể người ta không mong đợi rằng người nộp đơn có được tìm kiếm nhị phân chính xác, nhưng nếu bạn có thể cung cấp cho người nộp đơn một số gợi ý, anh ta hoặc cô ta sẽ có thể đến gần. IMO, thật thú vị khi thấy mọi người cố gắng giải quyết những thách thức được đưa ra cho họ như thế nào để họ có một cuốn bách khoa toàn thư trong đầu.
dpk

11
Tôi là một nhà vật lý bằng cách đào tạo và tôi có thể thực hiện tìm kiếm nhị phân bịt mắt và với một tay bị trói sau lưng. Xin lỗi, nhưng không biết cách viết một triển khai tìm kiếm nhị phân đơn giản là ... kém. Không có từ nào khác để mô tả nó, chỉ là nghèo.
quant_dev

vâng, bạn đúng Tìm kiếm nhị phân, ít nhất là ý tưởng cơ bản, thực sự có thể được thực hiện. Tôi cũng có thể làm được.
michael

... ít nhất là ý tưởng cơ bản (mặc dù tôi không thể thực hiện Fibonacci mà không tìm hiểu trước về nó). Nhưng một bài kiểm tra như thế này khiến mọi người gặp thuận lợi, những người chỉ tham gia các lớp cs hoặc đơn giản là vô tình chuẩn bị các câu hỏi. Nó hữu ích hơn để cung cấp cho các ứng viên một ví dụ lập trình thế giới thực. Nó cho thấy cách họ giải quyết các vấn đề phức tạp hơn mà không bị áp lực ngay lập tức và nó cũng có thể cho các ứng viên thấy, loại công việc bạn mong đợi họ làm (chọn một ví dụ tốt). Hữu ích hơn nhiều so với câu hỏi trong sách giáo khoa IMHO.
michael

2
Không biết định nghĩa của chuỗi Fibonacci ngoài đỉnh đầu của họ là không đáng lo ngại. NHƯNG, việc không thể viết chương trình để tính toán nó sau khi đã được giải thích là rất đáng lo ngại (ngay cả khi tất cả những gì bạn mong đợi họ làm là tính toán tổng phụ trong một ứng dụng CRUD đơn giản!).
Stephen C. Steel

13

Tôi nghĩ rằng "tuyển dụng người giỏi nhất" đang trở thành một giáo phái quá mức.

Hầu hết các công việc lập trình là thường xuyên và không sáng tạo. Ngay cả khi làm việc trên các dự án mới thực sự sáng tạo. Hầu hết trong số đó là buồn tẻ, và thường dựa trên các mẫu. Điều này đặc biệt đúng với UI.

Hầu hết các hệ thống hiện đại cũng yêu cầu rất nhiều người viết chúng, điều đó vốn dĩ, tất cả chúng không thể là tốt nhất. Hầu hết mọi người đều ở mức trung bình, ngay cả khi họ không, họ vẫn phải thực hiện nhiều nhiệm vụ của người "trung bình".

Điều đó đang được nói, đòi hỏi năng lực cơ bản và yêu cầu tối thiểu hợp lý là không hợp lý và không phải là điều mà bạn nên thỏa hiệp.

Hãy suy nghĩ về phẫu thuật thường quy: Tùy thuộc vào khả năng chịu rủi ro của bạn, có lẽ bạn muốn có một bác sĩ trung bình thực hiện nó hơn là đợi 10 năm để Trưởng khoa của trường y có thời gian để làm điều đó. Điều đó không có nghĩa là bạn nên để cho trật tự thực hiện phẫu thuật.


Không phải ngụy biện ... nhưng bác sĩ "trung bình", người đã thực hiện hàng trăm hoặc hàng ngàn ca phẫu thuật kiểu đó có thể thích hợp hơn với Trưởng khoa của trường y, người có thể có nhiều kiến ​​thức hơn nhưng gần như không có kinh nghiệm
JoelFan

8

"Thuê người giỏi nhất" có nghĩa là "thuê người giỏi nhất hiện đang có sẵn gần như chúng ta" và có nghĩa là những điều khác nhau cho các công ty khác nhau. Một số người muốn lập trình viên rockstar, những người khác muốn các kỹ sư phần mềm tỉ mỉ và người tiếp theo muốn có những người thợ phần mềm có kinh nghiệm. Không có "phổ quát nhất", vì vậy hãy ghi nhớ điều đó và có thể thông số công việc của bạn cho thấy bạn đang tìm kiếm một loại lập trình viên và cuộc phỏng vấn nói rằng bạn đang tìm kiếm một lập trình viên loại khác. Đột nhiên, bạn không nhận được trận đấu.

Điều đó nói rằng, tôi không thích làm việc với các lập trình viên quá. Vì vậy, không có gì để làm với kinh nghiệm (họ có thể đã lập trình được 20 năm và vẫn không giỏi lắm), nhưng mọi thứ phải làm với năng khiếu và sự nhiệt tình. Nếu cái đó ảnh hưởng đến một trong hai thứ đó, bạn có một vấn đề. Cũng không có lý do gì để thuê một người có đóng góp cần được làm lại bởi các thành viên khác trong nhóm vì mã của họ không đủ tốt. Nhiều tiền hơn về chỗ ngồi không phải lúc nào cũng có trong câu trả lời, nhiều tiền hơn trên ghế có thể không may cũng có nghĩa là nhiều công việc hơn cho các thành viên tốt hơn trong nhóm khi họ đang cố gắng thực hiện công việc của mình dọn dẹp mớ hỗn độn mà lập trình viên đã giao .

Một số người không bắt gặp như những ngôi sao nhạc rock, nhưng là những lập trình viên tầm trung vững chắc. Họ rất tốt khi có trong đội và đó không phải là ý tôi với "lập trình viên quá". Thứ hai là một người hầu như không tránh khỏi bị sa thải hàng năm tại thời điểm đánh giá hiệu suất.


1
ugh, ngay cả thuật ngữ "lập trình viên rockstar" cũng khiến tôi muốn phát điên.
ozz

6

Là loại Người quản lý, tôi đồng ý thuê "1% hàng đầu" là không thực tế và không cần thiết. Lời khuyên của tôi là nên thuê đúng nhóm để xây dựng và bảo trì sản phẩm của bạn (có thể là hai nhóm rất khác nhau, vì xây dựng và bảo trì rất khác nhau về nhu cầu của họ)

Tôi thực sự khuyên bạn nên xác định những người bạn hiện có trong nhóm của bạn là "những người chủ chốt" (ví dụ: hoàn thành công việc, có thái độ tốt, có thể làm việc với sự không chắc chắn / yêu cầu cấp cao, v.v.) và sau đó thuê những người họ có làm việc với trong quá khứ (và tôn trọng, rõ ràng). Điều này giúp loại bỏ rất nhiều sự không chắc chắn xung quanh quá trình phỏng vấn, và giúp gel nhóm.

Ngoài ra, "dài hạn" hơn - đầu tư mạnh vào một chương trình thực tập. Nếu nhóm lập trình của bạn là 20 người, hãy nhận 5 thực tập sinh một năm và giao cho họ công việc thực sự. Mang lại một hoặc hai bạn thích mỗi năm và mang thêm 5 biến ngẫu nhiên. Đây có lẽ là cách tốt nhất để giữ cho nhóm của bạn chứa đầy các lập trình viên giỏi. Sau đó, bạn có thể thuê bên ngoài một cách cơ hội, và nâng tầm cho những ứng cử viên đó.

Như đã được đề cập, hãy chú ý đến quá trình phỏng vấn của bạn. Làm cho các ứng viên viết mã (hoặc tốt hơn, đi qua giải pháp của họ cho vấn đề "1 giờ về nhà") khiến họ ăn trưa với nhóm. Nhận biết kỹ năng kỹ thuật và liên cá nhân của họ. Và đừng bao giờ ngại nói "không" ngay cả khi bạn đang tuyệt vọng để có thêm 20 người cho một dự án lớn bắt đầu vào tuần tới.


6

Theo kinh nghiệm của tôi, Nguyên tắc Paretto cũng áp dụng cho lập trình: 80% công việc được hoàn thành bởi 20% các nhà phát triển và ngược lại. Các con số có thể được phóng đại. Trong thực tế, bạn sẽ có khoảng 20% ​​nhân viên làm 50% công việc (theo công việc tôi có nghĩa là công việc tốt, không chỉ đơn thuần là các dòng mã). Nó thực sự giống như một đường cong hình chuông. Vì vậy, trong một đội gồm 10 người, bạn sẽ có 1 anh hùng, 2 anh chàng tuyệt vời, 4 người trung bình và 2-3 người thảm hại.

Rất nhiều công ty sử dụng đường cong Bell để cân nhắc việc đánh giá. Vì vậy, khá nhiều cho dù các ứng cử viên của bạn sáng đến mức nào, họ sẽ rơi vào cấp độ của họ. Bạn không thể có một đội mà mọi người đều ở cùng cấp độ. Không xảy ra.


2
+1, tôi đồng ý. Nhưng tôi nghĩ câu hỏi là: Bạn có cần "những người thảm hại" (ví dụ như tinh thần đồng đội hay bất cứ điều gì) hoặc nhóm sẽ làm tốt như vậy nếu không có họ? Và bạn có thể nhận ra họ trong một cuộc phỏng vấn việc làm?
nikie

10
Xác định thảm hại. Nếu họ là những người lập kế hoạch giỏi làm công việc lẩm cẩm nhàm chán nhưng không thể tạo ra bước nhảy vọt, bạn vẫn là họ. Nhưng nếu họ vô vọng và không thể làm gì, thì họ là một sự lãng phí không gian.
quick_now

Lý do duy nhất để giữ những người thảm hại là bạn không thể có ai đó tốt hơn để thay thế họ. Họ làm những gì chúng ta gọi là "công việc của con lừa": những thay đổi nhỏ hoặc lớn không cần suy nghĩ nhiều.
DPD

1
Có thể tìm thấy chúng trong cuộc phỏng vấn. Có tùy thuộc vào kỹ năng của người phỏng vấn. Tôi cho phép họ xử lý một vài chương trình và vấn đề của texbook. Nếu họ vượt qua cấp độ này, tôi cung cấp cho họ một số vấn đề phức tạp hơn để đánh giá nếu họ có thể suy nghĩ. Những người thảm hại có thể giỏi cú pháp nhưng chỉ vì họ học nó bằng cách học vẹt mà không thực sự hiểu nó. Họ sẽ thất bại trong việc giải quyết vấn đề. Một số người sẽ nói với bạn rằng họ không thể tự suy nghĩ và chỉ có thể làm việc bằng ngôn ngữ Ctrl + C, Ctrl + V
DPD

4
Con lừa làm việc ít nhất là làm việc. Đó là khi họ muốn viết lại 10 năm các công cụ đã phát triển trong Haskell với một vài liên kết đến OCaml, trong 3 tuần, và mọi thứ khác mà họ chạm vào sẽ chuyển sang cr * p. Sau đó, bạn thực sự không muốn điều đó!
quick_now

4

Đã có một loạt các câu trả lời ở đây nhưng tôi nghĩ vẫn còn một điểm cần thảo luận: tác động của việc tuyển dụng những kẻ tầm thường đến chất lượng phần mềm của bạn và cách nó khiến cuộc sống của bạn trở thành một người quản lý khó khăn hơn nhiều.

Câu trả lời cho "có cần phải thuê những nhà phát triển tốt nhất không?" luôn luôn là một chất béo lớn CÓ. Tất nhiên trong thực tế, điều này không phải lúc nào cũng có thể. Sai lầm nguy hiểm mà tôi nghĩ rằng bạn đang làm bằng cách thậm chí xem xét câu hỏi này là nghĩ rằng "phần mềm của chúng tôi rất đơn giản ngay cả một chàng trai quá có thể làm được". Cái này sai.

Phần mềm của bạn sẽ được hoàn thành, đừng nghi ngờ điều đó, nhưng hãy mong đợi những kết quả rất khác biệt từ một nhóm xuất sắc hơn là từ một nhóm rất bình thường. Bạn sẽ có nhiều lỗi hơn, nhiều vấn đề về hiệu năng hơn, nhiều vấn đề về khả năng bảo trì và khả năng mở rộng hơn, v.v. Bạn sẽ phải trông nom những kẻ tầm thường của bạn thông qua những vấn đề phức tạp hơn. Bạn sẽ phải trông nom những kẻ tầm thường mặc dù quyết định kiến ​​trúc đúng đắn.

Nếu bạn chấp nhận điều này và sẵn sàng quản lý nó, điều đó ổn. Chỉ cần chuẩn bị cho quá trình và cho kết quả.


+1. Đúng. Ý tưởng rằng bạn có thể thuê những người thậm chí không thể viết một tìm kiếm nhị phân với sự giúp đỡ và có họ là bất cứ thứ gì ngoài trọng lượng chết thuần túy - các nhà sản xuất tiêu cực ròng, có lẽ - hoàn toàn vô lý.
Tom Anderson

3

Tôi nghĩ rằng nó không thực sự là một vấn đề để thuê nhà phát triển tuyệt vời. Thách thức thực sự là làm cho họ muốn làm việc cho bạn.

Có cần phải thuê những người tốt nhất?
Tôi cũng tin như thế. Nhà phát triển tuyệt vời không chỉ là người hoàn thành mọi thứ đúng hạn. Không chỉ một cá nhân như vậy là năng suất hơn những người khác. Nhà phát triển tuyệt vời cũng đang dẫn đầu bằng ví dụ và chỉ đơn giản là truyền cảm hứng cho các thành viên khác trong nhóm. Khác có thể rất tiến bộ trong khi làm việc với họ.

OK, vì vậy bạn sẽ hạ thấp tiêu chuẩn của bạn. Thật tuyệt, có lẽ bạn sẽ thay đổi suy nghĩ sau khi bạn thuê một cá nhân thực sự tệ hại. Câu hỏi sẽ trả lời tất cả các câu hỏi CS của bạn một cách hoàn hảo nhưng ai thực sự không thể viết một dòng mã sản xuất. Chúc may mắn với điều đó :)


3

Hãy lùi lại một bước.

Chúng ta đang cố gắng làm gì? Viết phần mềm.

Tại sao chúng ta nghĩ rằng chúng ta cần phải thuê tốt nhất? Bởi vì đứa trẻ Arnold quái đản đó không thể thoát ra khỏi cái túi giấy ướt và bây giờ SQL đã bị hỏng và tôi không thể đăng nhập.

Được rồi, vậy tốt nhất là gì? Tôi không biết, có lẽ anh ta là người muốn có nhiều tiền và có một bản lý lịch dài sáu feet với một danh mục đầu tư tuyệt vời và làm việc tại google hoặc một cái gì đó. Anh ta nên có một tấm bằng, và có thể một số chữ cái ở cuối tên của anh ta. Vâng, điều đó nghe có vẻ tốt nhất đối với tôi và đối với người giỏi nhất, ý tôi là một người không phải là đứa trẻ Arnold quái dị. Ồ, và anh ấy nên biết làm thế nào để làm một số chuyện tào lao thực sự khó khăn mà tôi đã nghe nói ở trường như "viết một loại bong bóng" hoặc bất cứ điều gì họ gọi nó. Tôi sẽ yêu cầu một trong những người khác kể tên một vài điều khó khăn mà họ phải làm ở trường, yeah.

Có vẻ như bạn không muốn đứa trẻ Arnold quái dị đó? Bạn sẽ Tôi mệt mỏi vì có mã lỗi, mọi thứ sẽ mất mãi mãi và những người mới mà tôi phỏng vấn nói với tôi rằng tôi cần phải viết lại mọi thứ!

Phải, vậy bạn yêu cầu đứa trẻ Arnold quái dị làm gì? Tạo một trang web PHP, viết một số jQuery, yêu cầu PHP thực hiện một số CRUD cơ bản với MSSQL và thay đổi màu nền xung quanh.

Nghe có vẻ như một nhiệm vụ rất phù hợp dành riêng cho tốt nhất? Tôi chắc chắn rằng những người giỏi nhất có thể làm điều đó, nhưng có lẽ bất cứ ai có kỹ năng phù hợp với điều này đều có thể làm được điều này.

Vì vậy, bạn không cần điều tốt nhất? Phải, tôi chỉ cần một người có bộ kỹ năng đáp ứng mục tiêu của tôi.

Oh. Vâng.


@ user1525, đây không phải là ứng dụng CRUD. Đó là phần mềm kỹ thuật.
Graviton

Không phải lúc nào. Rất nhiều công việc ngoài kia không đòi hỏi bất kỳ kiến ​​thức nào về cấu trúc dữ liệu, thuật toán hoặc độ phức tạp tính toán. Chắc chắn, họ không phải là công việc tại tìm kiếm google, nhưng có một nhu cầu rất lớn cho điều đó. Chỉ cần nhìn vào hầu hết các bài đăng trên bảng công việc, "Tôi cần một plugin jquery" hoặc "cho tôi một ứng dụng iphone trông giống như những psd này". Mọi người hoặc muốn tốt nhất hoặc rẻ nhất.
Ẩn danh

3

Tiêu đề câu hỏi của bạn đề cập đến "Ứng dụng máy tính để bàn thông thường", nhưng văn bản của bạn nói về việc cần áp dụng kiến ​​thức về hình học tính toán và lập trình tuyến tính. Đó là những lĩnh vực ứng dụng đã tạo ra các chương trình nghiên cứu lớn trong nhiều thập kỷ với các hậu quả xã hội to lớn của bất kỳ tiến bộ nào (nhớ lại, lập trình tuyến tính trừu tượng hóa việc phân bổ tài nguyên ). Kết quả là, có rất nhiều cách tiếp cận tinh vi để giải quyết vấn đề trong các lĩnh vực này hoạt động rất tốt.

Một người thuê tồi

  • thậm chí có thể không nghe nói về các loại vấn đề này,
  • có thể không quen thuộc với các giải pháp phổ biến,
  • có lẽ sẽ không biết về những thứ tốt hơn ngoài kia (gợi ý: hầu hết sinh viên đại học không bao giờ nghe về những thứ ưa thích, nếu họ nghe về các vấn đề), và
  • gần như chắc chắn sẽ mất nhiều thời gian để thực hiện những điều như vậy (xem xét rằng tôi đã thấy một số trong số họ cung cấp toàn bộ hội thảo sau đại học về cấu trúc dữ liệu phù hợp, bao gồm cả giáo sư).

Nói cách khác, hãy suy nghĩ xem bạn có thực sự làm việc trên một cái gì đó cho người đi bộ không. Nếu bạn là, tuyệt vời, việc tuyển dụng sẽ dễ dàng hơn nhiều. Nếu bạn không, hãy giữ một người có thể làm những gì bạn cần.


bạn không cần phải viết lại toàn bộ thư viện lập trình hình học / lập trình tính toán; tất cả những gì bạn cần làm, theo như ứng dụng của tôi có liên quan, là có thể biết cách giải quyết các vấn đề trong tay thành các thuật ngữ lập trình hình học / tuyến tính tính toán phù hợp và biết khi nào / sử dụng các thư viện hiện có.
Graviton

2

Chắc chắn tôi không phải là một lập trình viên siêu sao theo tiêu chuẩn của Joel. Tuy nhiên, tôi đã viết khá nhiều dự án thành công trong sự nghiệp 20 năm làm nhà phát triển của mình. Tôi có thể đã giải quyết câu hỏi của bạn. Nhưng ít hơn từ kinh nghiệm của tôi tại nơi làm việc, trong thực tế, rất nhiều công việc phức tạp hơn được thực hiện bằng cách yêu cầu cơ sở dữ liệu của bạn hoặc một chức năng thư viện để thực hiện.

Nhưng nếu bạn quyết định thuê những người ít kinh nghiệm hơn, bạn nên xem xét sử dụng các công nghệ dễ xử lý. Ví dụ: nếu bạn dự định sử dụng C ++ cho toàn bộ dự án, thì hãy giới hạn phần C ++ trong các thư viện được viết bởi những người giỏi nhất của bạn và để những người khác triển khai giao diện người dùng trong Visual Basic.


2

Viết ra các giá trị bạn tìm kiếm trong một nhân viên sẽ gia nhập hàng ngũ của bạn.

Khi giá trị được đánh giá cao duy nhất là năng lực lập trình, bạn sẽ thấy mình nhanh chóng được bao quanh bởi những người coi trọng điều đó. Vì hầu hết các lập trình viên thực sự có năng lực đều có một hệ thống giá trị phức tạp hơn, họ sẽ không tham gia nhóm của bạn.

Tuy nhiên, nhiều khả năng bạn đang tìm kiếm những người sáng tạo, sáng tạo, đáng tin cậy, uyên bác, tò mò, tự học, hòa đồng, có năng lực và tận tâm. Cho thấy rằng công ty của bạn hiểu và tôn trọng các giá trị này và sẵn sàng giúp nhân viên của mình phát triển chúng hơn nữa.

Hiểu và nắm lấy các giá trị của nhân viên hiện tại của bạn và truyền đạt chúng trong các ứng dụng công việc của bạn. Các công ty tốt, với hệ thống giá trị bền vững, thu hút nhân viên tốt.


-1: nếu bạn nói (và OP đã nói về) tất nhiên nó sẽ có ý nghĩa. Tôi không hiểu câu trả lời này sẽ giúp anh ta như thế nào. Về cơ bản, bạn đang nói rằng anh ta không đưa đủ tiếp thị vào ứng dụng của mình nếu tôi hiểu đúng? Chà, có lẽ điều đó sẽ giúp ích được đôi chút nhưng tôi thường không thấy nhiều người có năng lực cao không đặt ít nhất một lượng giá trị hợp lý vào .. duh .. năng lực? .. như tôi đã nói, thay thế "năng lực lập trình" bằng tiền và câu trả lời của bạn rất có ý nghĩa nhưng xin lỗi tôi không hiểu.
n1ckp

Nếu bạn không hiểu bình luận của tôi, có lẽ bạn không nên sửa nó. Dù sao, ý tôi là khá đơn giản. Theo thời gian, tôi đã gặp khá nhiều lập trình viên xuất sắc. Họ biết ngôn ngữ, thuật toán, toán học, vật lý ... Tuy nhiên, điều khiến họ trở nên tuyệt vời ngay từ đầu là mối quan tâm không chỉ là nghề thủ công. Họ thường coi trọng sự tò mò ở bản thân và ở người khác. Họ xem sự uyên bác độc lập là một đặc điểm quan trọng (hoặc giá trị) hoặc họ được truyền cảm hứng bởi những người xung quanh họ là những người sáng tạo. Thông thường, những giá trị này quan trọng hơn thu nhập của họ.
Dibbeke

@Dibbeke: tôi cũng đã sửa nó xuống một phần vì tôi không thấy điều này liên quan đến câu hỏi như thế nào. Mặc dù rất hay và tôi không đồng ý với nhận xét cuối cùng của bạn (mặc dù câu trả lời của bạn là một cái gì đó khác) nhưng tôi vẫn không thấy nó sẽ giúp OP hoặc trả lời câu hỏi thực tế như thế nào.
n1ckp

@ n1ck Khi bạn nói tiếp thị, tôi bắt đầu tự hỏi liệu căn cứ vào quá trình tuyển dụng các giá trị cơ bản có thực sự giống nhau không. Tôi không biết, nhưng tôi nhận ra rằng việc xây dựng một mạng xã hội về niềm tin và sự tôn trọng bị ảnh hưởng rất nhiều bởi nó. Điều này ảnh hưởng đến uy tín của công ty bạn và giúp bạn thu hút những nhà phát triển phần mềm hàng đầu đó.
Dibbeke

@Dibbeke: không chắc tôi có nhận xét cuối cùng của bạn không nhưng tôi nghĩ tôi đồng ý ít nhất một chút với bạn. Nhưng một lần nữa, tôi không chắc nó có ích cho OP không (mặc dù tôi thấy nhiều hơn về cách nó liên quan đến câu hỏi bây giờ). Điều khiến tôi nói rằng anh ta không bao giờ nói bất cứ điều gì về công ty của mình, vì vậy, có thể đó là nguyên nhân khiến công ty của anh ta có tiếng xấu, nhưng tôi nghĩ rằng bạn đang nhảy vào kết luận ..
n1ckp

1

Trong bất kỳ tổ chức nào bạn có những người có nhiều kinh nghiệm hơn và những người có ít hơn. Không chỉ vậy, mà một chuyên gia trong một lĩnh vực có thể là một người mới trong một lĩnh vực khác. Chắc chắn một người nghiệp dư nhiệt tình có thể gây hại nhiều hơn là tốt cho cơ sở mã, nhưng đó là cách họ học hỏi - từ sửa chữa lỗi lầm và thảo luận về kinh nghiệm của họ với các đồng nghiệp giàu kinh nghiệm hơn.

Đề nghị của tôi sẽ là thay vì cố gắng thuê các siêu sao, bạn cố gắng thuê những người sáng sủa hợp lý, sẽ phù hợp với văn hóa công ty của bạn, rất muốn học hỏi và đánh giá cao những hạn chế của họ.


1

Chắc chắn bạn nên khao khát chỉ thuê những người giỏi nhất. Điều đó không tự động có nghĩa là bạn sẽ thành công với nó - chỉ có rất nhiều "điều tốt nhất" để đi xung quanh, và sẽ có người chiến thắng và kẻ thua cuộc trong cuộc chiến để thu hút họ. Phần lớn sẽ đến từ năng khiếu và sự sẵn sàng làm việc chăm chỉ của bạn trong vấn đề và các tài nguyên có sẵn cho bạn.

Từ bỏ trước khi bạn bắt đầu là cách chắc chắn nhất để mất.


1

Tìm kiếm nhị phân là một vấn đề thú vị bởi vì hầu hết các lập trình viên sẽ thực sự đấu tranh để viết nó một cách chính xác ( Bently viết về nó trong Lập trình Ngọc trai ). Có lẽ không quá tệ để kiểm tra nó miễn là bạn không loại trừ các ứng cử viên dựa trên sự thất bại của họ để giải quyết nó. Nếu họ giải quyết nó một cách nhanh chóng và chính xác thì ít nhất nó sẽ gợi ý họ thuộc loại lập trình viên nào để bạn có thêm thông tin trong trường hợp cụ thể đó.


1

bạn cần phải thuê người giỏi nhất nhưng thuật ngữ này đã được trích dẫn ra khỏi bối cảnh nhiều lần. bạn cần tìm ứng viên tốt nhất với các kỹ năng cần thiết cho vị trí đó, và không phải là lập trình viên giỏi nhất theo nghĩa tổng thể. Phát triển phần mềm rất rộng và không phải vị trí nào cũng đòi hỏi kiến ​​thức kỹ thuật như nhau.

Hãy tự hỏi mình câu hỏi này (bạn đã làm rồi ..): Nếu bạn có một kỹ sư khác ở vị trí tương tự trong 5 năm, bạn có mong đợi cô ấy sẽ nhớ các chuỗi tìm kiếm và chuỗi nhị phân không?

nếu câu trả lời là không, thì hãy thay đổi mẫu phỏng vấn của bạn. Có thể bạn cần biết một tá thuật toán tìm kiếm nếu bạn muốn làm việc trên một ứng dụng tìm kiếm như google hoặc bing. Mọi người khác chỉ sử dụng map.get ("");

nhắm mục tiêu các cuộc phỏng vấn của bạn đến những gì vị trí cần, không phải là một lập trình viên giỏi trong sách giáo khoa.


1

Nếu bạn thực sự không quan tâm đến chất lượng thì tôi khuyên bạn nên sử dụng một trong những trang web gia công và bắt đầu với các dự án nhỏ. Sau đó, bạn có thể trả tiền cho họ nếu họ có thể thực hiện công việc và có một cách dễ dàng để bảo lãnh nếu họ không thể.

Tuy nhiên, tôi đặt câu hỏi liệu có thực sự có nhiều mã hóa thông thường trong một ứng dụng kỹ thuật máy tính để bàn không. Chúng có thể rất phức tạp và hầu hết các lập trình viên không giỏi quản lý sự phức tạp. Bạn có thể dễ dàng tạo ra rất nhiều mã kế thừa tức thì sẽ gắn kết nhóm của bạn trong nhiều năm tới. Nhìn chung, việc thuê đầu tiên cho một dự án mới là quan trọng nhất và sẽ tạo ra giai điệu cho toàn bộ dự án.


0

Tôi hoàn toàn đồng ý với hầu hết các ý kiến ​​trên đề cập đến việc phù hợp với một người cho một vấn đề. Điều này thường dẫn đến một mối quan hệ lâu dài thay vì thuê một siêu sao để giải quyết vấn đề thường xuyên - điều sẽ khiến anh ta nản lòng khi rời đi nhanh chóng.
Phải nói rằng, bạn nên luôn cố gắng thuê cho công ty của bạn hơn là một vị trí cụ thể. Bởi vì anh chàng này sẽ sớm chuyển đổi giữa các đội sớm hơn với các liên hệ cá nhân, v.v. và anh ta có thể trở thành một trọng tài ở một nơi khác. Đảm bảo công ty của bạn có hướng dẫn chuyển nội bộ rất nghiêm ngặt và bạn có một bức tranh rõ ràng về những gì bạn sẽ làm trong nhóm của mình trong vài năm tới trước khi thuê một người mà bạn nghĩ có thể không gặp thanh công ty (nhưng sẽ giải quyết vấn đề hiện tại ). Tôi đã thấy quá nhiều trường hợp trong đó sự tầm thường trong các nhà phát triển đã khiến nhóm làm việc cực kỳ chăm chỉ để phù hợp với họ.

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.