Làm thế nào để phỏng vấn một nhà khoa học tự nhiên cho một vị trí dev? [đóng cửa]


30

Câu hỏi gốc

Tôi đã thực hiện một số cuộc phỏng vấn cho công ty của mình, chủ yếu là các nhà khoa học máy tính cho các vị trí dev nhưng cũng có một số người thử nghiệm và quản lý dự án. Bây giờ tôi phải lấp chỗ trống trong nhóm nghiên cứu của chúng tôi trong bộ phận R & D (chú thích: và các tổ chức người dùng cuối. Đây không phải là nghiên cứu khoa học máy tính, chúng tôi sẽ không giải quyết vấn đề P = NP).

Bây giờ chúng tôi đã mời một anh chàng có bằng thạc sĩ hóa học (cũng có rất nhiều vật lý trong CV), người không bao giờ có bất kỳ bài học khoa học máy tính nào. Tôi đã nói chuyện với anh ta khoảng nửa giờ tại các ngày làm việc của một trường đại học địa phương và không nghi ngờ gì nữa, anh chàng này rất thông minh. Ngoài ra điểm của anh ấy là tuyệt vời và anh ấy tốt nghiệp với sự khác biệt. Đối với BSc của mình, anh ta cần phải tự dạy lập trình trong Mathematica và nói với tôi rằng anh ta thích lập trình rất nhiều. Ngoài ra, ông đã giải quyết một số vấn đề hóa học vật lý mà có lẽ tôi không hiểu bằng cách sử dụng phần mềm của riêng mình, được triển khai trong Mathematica, cho luận án thạc sĩ của mình. Nó bao gồm GUI và kích thước đáng chú ý là 8.000 LoC. Anh ta dường như rất bị thu hút bởi những gì chúng tôi đang làm trong nhóm nghiên cứu của chúng tôi và thành thật mà nói, thật khó khăn cho một doanh nghiệp vừa và nhỏ như chúng tôi để có được những người tốt. Tôi cũng rất quan tâm đến việc thuê anh ấy vì anh ấy có thể hỗ trợ tôi viết đề xuất dự án, báo cáo, thuyết trình, v.v. Anh ấy có lẽ cũng sẽ phù hợp với đội của chúng tôi.

Câu hỏi duy nhất còn lại là: Làm thế nào tôi có thể kiểm tra xem anh ta có đạt được các kỹ năng lập trình mà anh ta cần để thực hiện phần mềm trong các dự án của chúng tôi không vì đây sẽ là một phần quan trọng của công việc?

Tất nhiên tôi sẽ hỏi anh ta nó là gì, đó là điều hấp dẫn anh ta về lập trình. Tôi cũng sẽ hỏi làm thế nào anh ấy tiến hành viết phần mềm khoa học tự nhiên của mình và cách anh ấy cấu trúc nó. Tôi sẽ hỏi về cách anh ta quản lý để có được các kỹ năng và thông tin về phát triển phần mềm mà anh ta cần. Nhưng tôi có thể hỏi thêm điều gì nữa không? Một cái gì đó cụ thể hơn có lẽ? Tôi có nên yêu cầu anh ta giải thích giải pháp Mathicala của mình?

Để rõ ràng: Tôi không tìm kiếm kiến ​​thức trong một ngôn ngữ hoặc công nghệ cụ thể. Chúng tôi là một cửa hàng .NET trong phát triển sản phẩm nhưng tôi muốn có sự lựa chọn miễn phí cho các dự án nghiên cứu của chúng tôi. Vì vậy, tôi quan tâm đến siêu năng lực có thể học bất cứ điều gì thực sự cần thiết.

Tôi hy vọng câu hỏi này có thể trả lời được và không có kết thúc mở vì tôi thực sự muốn biết liệu có cách nào mặc định để kiểm tra khả năng có được các kỹ năng lập trình tiếp theo trong công việc hay không. Nếu điều gì đó không rõ ràng với bạn xin vui lòng cho tôi một số ý kiến ​​và để tôi cải thiện câu hỏi của tôi.

Cập nhật để phản ánh các câu trả lời được đưa ra cho đến 2011-12-01

Câu trả lời nào tôi chấp nhận và tại sao

Cảm ơn tất cả các câu trả lời của bạn, hầu hết chúng đều khá hữu ích, vì vậy tôi đã nâng cao rất nhiều! Mặc dù câu trả lời của Tom Squires nhận được nhiều phiếu bầu nhất, tôi sẽ chấp nhận câu trả lời do Hoàng tử Goulash đưa ra . Tất nhiên Tom là khách quan, nhưng câu trả lời của Prince chỉ hữu ích hơn cho tôi và tôi đã kiểm tra lại Câu hỏi thường gặp rằng đây là tiêu chí để chấp nhận câu trả lời.

Những gì tôi sẽ hỏi anh ấy trong cuộc phỏng vấn

  • Tôi sẽ để anh ấy giải thích một số bài tập đơn giản như ví dụ trong The Camel Has Two Humps được đề cập bởi Chris Burt-Brown

  • Tôi sẽ yêu cầu anh ta giải thích một số luồng điều khiển nâng cao hơn có thể trong ký hiệu đồ họa.

  • Tôi sẽ kiểm tra sự hiểu biết của anh ấy về đệ quy bằng một ví dụ toán học.

  • Tôi sẽ để anh ta giải thích một thuật toán của sự lựa chọn của mình bằng ngôn ngữ tự nhiên.

  • Tôi sẽ để anh ta giải thích giải pháp Mathicala của mình, đặc biệt là tôi sẽ hỏi về mô hình thủ tục của anh ta, cách sử dụng các công cụ, cấu trúc mã và phần mềm nói chung cũng như các lớp trừu tượng khác nhau.

  • Để kiểm tra động lực của anh ấy, tôi sẽ yêu cầu niềm đam mê phát triển phần mềm của anh ấy.

  • Tôi sẽ hỏi anh ta nếu anh ta nhận thức được những gì anh ta sẽ cần để tìm hiểu về phát triển phần mềm doanh nghiệp. Đặc biệt tôi muốn biến cuộc thảo luận thành hướng làm việc theo nhóm, lập trình cặp, TDD vì tôi mong anh ta không biết nhiều về điều này sau khi làm việc một mình với ThS.

Có vẻ như đó sẽ là một cuộc phỏng vấn dài;)

Cập nhật sau cuộc phỏng vấn 2011-12-09

Một lần nữa cảm ơn tất cả các câu trả lời tốt của bạn. Anh ấy đã vượt qua cuộc phỏng vấn với màu sắc bay. Tôi không bao giờ hài lòng hơn với một ứng viên. Giải pháp Mathicala của ông dường như được cấu trúc khá tốt. Anh ta có thể giải thích nơi anh ta sử dụng các hàm bậc cao hơn, mặc dù anh ta không biết rằng chúng được gọi như thế này. Anh ấy đã trả lời các câu hỏi đệ quy dựa trên toán học của tôi cũng như các bài tập đơn giản và kiểm soát các luồng từ The Camel Has Two Humps. Khi anh ấy giải thích một số thuật toán, tôi đã học được rất nhiều về sự phù hợp phi tuyến tính;) Anh ấy cũng thành thật nói rằng tất nhiên anh ấy không thể đảm bảo rằng anh ấy sẽ có thể học được những điều về phát triển phần mềm chuyên nghiệp mà anh ấy không biết cho đến nay. Nhưng anh ta tin rằng anh ta luôn giỏi trong việc học các khái niệm mới - ngay cả bản thân anh ta - và thực sự quan tâm đến phát triển phần mềm. Anh ấy cũng yêu cầu ngăn xếp công nghệ của dự án, anh ấy sẽ được áp dụng trước, để có một cái nhìn tại nhà. Anh ấy cũng tò mò về lập trình cặp và làm việc nhóm. Bây giờ tôi hy vọng rằng hợp đồng lao động sẽ được ký kết.


9
Tôi thấy thật tuyệt vời khi các công ty sẵn sàng thuê những người không có kiến ​​thức về công nghệ họ sử dụng. Tôi ước tôi tìm thấy công ty của bạn trước khi tôi làm những gì tôi đã làm cho sự nghiệp của mình!
NoChance

Emmad: Đó là những gì tôi đã cố gắng giải thích và có nghĩa là "siêu năng lực". Công ty của tôi được lợi ở đâu khi tôi thuê một lập trình viên C # xuất sắc, người không có khả năng (hoặc sẵn sàng) học Scala / Lift khi cần? Và thành thật mà nói: Thật ra rất khó để có được những người tốt ở Đức. Đặc biệt là khi bạn là một doanh nghiệp vừa và nhỏ không nằm trong một đô thị thời thượng như chúng ta.
Silas

2
Yêu cầu anh ta thực hiện một nghiên cứu nhỏ về dòng điều khiển đơn giản và các kỹ thuật rất cơ bản khác trong một ngôn ngữ cụ thể. Sau đó, khi anh ta đến yêu cầu anh ta giải quyết vấn đề bằng cách sử dụng chúng.
Darren Young

2
Tôi đã làm việc với một vài nhà khoa học đã trở thành nhà phát triển ở vị trí hiện tại của mình. IMHO họ có xu hướng rất giỏi trong khía cạnh giải quyết vấn đề phát triển và không giỏi trong việc viết mã có thể duy trì với các nguyên tắc OO tốt. Nếu bạn muốn anh ấy làm nhiều hơn là viết các công cụ 'nhanh và bẩn', bạn có thể cần phải có một nhà phát triển truyền thống làm việc với anh ta.
Jordan Bentley

2
Tôi khá nhiều AM anh chàng này. Tôi có một nền tảng vật lý / hóa học tính toán và tôi đã phát triển rất nhiều mô hình / mã tính toán, cùng với một số dự án phụ (đôi khi phức tạp và thành công). Những điều chỉnh chính tôi phải thực hiện trong môi trường phát triển chuyên nghiệp phải làm với phương pháp phát triển và làm việc theo nhóm. Hãy chắc chắn rằng anh ấy hiểu những gì nó cần để làm việc cùng nhau trên phần mềm. Hãy chắc chắn rằng anh ấy hiểu các phương pháp mà các bạn sử dụng (TTD / tích hợp liên tục loại công cụ đó) và những gì làm việc với chúng có ý nghĩa cho đầu ra của anh ấy.
drxzcl

Câu trả lời:


21

Tôi rất háo hức ở đây vì tôi đã bắt đầu làm một nhà phát triển phần mềm vài năm trước với bằng tiến sĩ vật lý, nhưng rất ít kinh nghiệm mã hóa (lên tới một khóa học đại học về Fortran). Rõ ràng nó phụ thuộc vào loại phần mềm bạn đang phát triển, nhưng quan điểm của tôi là kỹ năng mã hóa rất dễ nhận bởi bất kỳ ai có kỹ năng giải quyết vấn đề / khoa học nửa vời. Tôi không có ý định xúc phạm các lập trình viên suốt đời đã nghiên cứu về khoa học máy tính: tất nhiên có những khía cạnh kỹ thuật cần được đào tạo nghiêm túc để thành thạo (ví dụ kiến ​​trúc đa luồng và kiến ​​trúc rất thấp) nhưng tôi cho rằng đó là không phải vị trí bạn đang cố gắng để điền vào.

Đối với cuộc phỏng vấn kỹ thuật cho vị trí hiện tại của tôi, tôi đã phải đối mặt với một vấn đề toán học khá phức tạp và được yêu cầu thiết kế một chương trình để giải quyết nó. Trọng tâm là viết một thuật toán mà sau khi thực hiện sẽ giải quyết được vấn đề. Tôi có thể viết một câu trả lời hoàn toàn bằng cách sử dụng các từ để mô tả giải pháp của mình, nhưng tôi được phép viết một số mã bằng ngôn ngữ mà tôi chọn nếu tôi muốn. Bài kiểm tra liên quan nhiều hơn đến khả năng giải quyết vấn đề và liệu tôi có thể "nghĩ như một lập trình viên" hay không. Rõ ràng nếu có những ứng cử viên có khả năng như nhau và một người có nhiều kinh nghiệm mã hóa trực tiếp hơn, thì anh ta sẽ đứng đầu, nhưng điều đó có vẻ đủ công bằng với tôi.

Điểm mấu chốt là: kiểm tra ứng viên về các kỹ năng bạn đang thuê anh ta, không phải vì lý tưởng mà bạn hy vọng anh ta sẽ đạt được.


2
Đã làm việc với các lập trình viên trước đây là các nhà khoa học, đó không chỉ là những chi tiết cấp thấp mà họ không biết gì, mà còn là những thứ rất cao cấp. YMMV tất nhiên, nhưng đó là một vấn đề thiếu chiều sâu nói chung là vấn đề. Không phải tất cả các công việc đều cần điều đó mà
Donal Fellows

1
@DonalFellows: Tôi không nghi ngờ rằng các nhà phát triển không được đào tạo cụ thể có thể thiếu cả bề rộng và kiến ​​thức chuyên sâu. Nó phụ thuộc vào vai trò, và vào số lượng đào tạo nội bộ đang được cung cấp.
Hoàng tử Goulash

1
@DonalFellows: cho rằng OP quan tâm đến việc xác định khả năng học hỏi của ứng viên, chứ không phải kiến ​​thức hiện tại của anh ta ...

2
@DonalFellows: như tôi đã nói trước đây, cho rằng OP quan tâm đến việc xác định khả năng học hỏi của người nộp đơn , chứ không phải kiến ​​thức hiện tại của anh ta ...

2
@Mark Bannister: Một nhà khoa học giỏi có thể học hỏi, đó không phải là một câu hỏi hữu ích ở đây. Một câu hỏi hữu ích hơn sẽ là nếu nhà khoa học sẽ học những gì anh ta cần biết. Đó là một vấn đề cá tính nhiều hơn. Nhà khoa học có biết những gì anh ta hoặc cô ta không biết về công nghệ phần mềm không?
David Thornley

37

Làm thế nào tôi có thể kiểm tra nếu anh ta có được các kỹ năng lập trình mà anh ta cần

Bạn không thể . Không thể kiểm tra chính xác một kỹ năng mà anh ta chưa có. Bạn phải thực hiện một cuộc gọi phán xét dựa trên trí thông minh và thái độ của anh ấy. Cuối cùng, nó luôn luôn là một rủi ro.

Từ kinh nghiệm cá nhân tôi có thể nói rất có thể chuyển từ khoa học sang lập trình. Cả hai về cơ bản sôi sục để sử dụng bộ não của bạn để giải quyết các câu đố phức tạp.


8
+1 Cho "Cả hai về cơ bản đều sử dụng bộ não của bạn để giải các câu đố phức tạp."
joshin4colours

1
Có chuyện gì với bạn? Thuê anh chàng, vì trời! Hãy nhớ rằng các lập trình viên chỉ đơn thuần là các nhà khai thác máy tiện công nghệ cao. Anh ấy nhiệt tình, thông minh và biết nhiều về hóa học. Nếu sau đó bạn không thuê anh ta, thì lần tới bạn sẽ thuê ai đó một năm kể từ bây giờ, bạn sẽ đá vào mông bạn rằng bạn đã không làm thế.
Pete Wilson

1
Không hiếm khi một sinh viên tốt nghiệp CS có thể đã được lập trình từ khi họ 13 tuổi hoặc hơn. Vào thời điểm họ vào đại học, họ đã là một lập trình viên trung cấp theo hầu hết các quy mô. Điều đó không có nghĩa là họ không học được gì từ bằng cấp của họ. Lập trình rất dễ ... Khoa học máy tính / Kỹ thuật mềm thì không. Điều này không phải họ sẽ không thể đóng góp và trở thành một thành viên có giá trị ... Nhưng điều đó có nghĩa là họ có thể sẽ không bao giờ có cùng nền tảng CS.
dùng606723

6

Tôi không có bất kỳ nguồn thứ cấp nào xác minh tài liệu này vì vậy tôi không thể đảm bảo cho nó nhưng:

Lạc đà có hai bướu
http://www.eis.mdx.ac.uk/research/PhDArea/saeed/apers1.pdf

Chúng tôi đã tìm thấy một bài kiểm tra cho năng khiếu lập trình, trong đó chúng tôi cung cấp chi tiết. Chúng tôi có thể dự đoán thành công hay thất bại ngay cả trước khi sinh viên có bất kỳ liên hệ nào với bất kỳ ngôn ngữ lập trình nào với độ chính xác rất cao và bằng cách thử nghiệm với cùng một công cụ sau vài tuần tiếp xúc, với độ chính xác cực cao.


3
Sau khi đọc bài báo, tôi tin rằng hãy nhớ rằng tôi đã đọc thêm về nghiên cứu này một thời gian trước đây. Chỉ không thể tìm thấy nó một lần nữa :( Chỉnh sửa: nó đã được đề cập tại Coding H khiếp sợ , cảm ơn vì lời nhắc
Silas

Bạn đánh bại tôi với nó, tôi chuẩn bị trả lời với liên kết Mã hóa kinh dị @Silas đã thêm
Izkata

5

Làm thế nào tôi có thể kiểm tra nếu anh ta sẽ có được các kỹ năng lập trình mà anh ta cần?

Nó rất đơn giản. Cung cấp cho anh ta các kỹ năng.

Bây giờ, đó không phải là một câu trả lời rất thỏa mãn, nhưng hãy để tôi giải thích.

Tôi đến lập trình sau 3 năm làm Kỹ sư Xây dựng. Đó là một nền tảng khá vững chắc trong vật lý và toán học ứng dụng . Đó không phải là toán học lý thuyết mà bằng cấp CS sẽ cung cấp, nhưng nó có giá trị gì đó. Những gì tôi rút ra từ kinh nghiệm kỹ thuật là một nền tảng vững chắc trong việc giải quyết vấn đề . Bất cứ ai có nền tảng toán học đều đánh giá cao khái niệm về sự thanh lịch khi nói về một giải pháp cho một vấn đề. Họ đã được giáo dục về tái cấu trúc vì họ đã dành thời gian lấy sáu trang cào gà và chuyển nó thành một bằng chứng nửa trang thanh lịch để nộp.

Bất cứ ai nghiên cứu vật lý đều phát triển một cách tiếp cận trực quan để cùng nhau tìm ra giải pháp từ các khung cơ bản.

Và lập trình bên ngoài những kỹ năng này là gì? - Ngôn ngữ, thành ngữ, mô hình và khung. Đây là những dễ dàng để dạy. Đó là vấn đề giải quyết mà bạn không thể. Nếu bạn có thể cung cấp hướng dẫn trong các lĩnh vực này, thì bạn sẽ kết thúc với một nhà phát triển tốt.

Câu hỏi sau đó trở thành "Bạn có thể đợi anh ấy tăng tốc bao lâu?"

tl; dr; Bạn có thể dạy đánh máy. Bạn không thể dạy thông minh.


+1, Câu trả lời rất hay. Tôi ước mọi người có quan điểm cởi mở hơn về nghề nghiệp: có bằng toán học không có nghĩa là bạn không thể lập trình để kiếm sống, cũng không phải là cách khác.Học để học là kỹ năng quan trọng IMO.
K.Steff

2

Tôi có bằng Cử nhân Khoa học Vật liệu nhưng đã làm việc trong tất cả sự nghiệp phát triển phần mềm.

Tôi sẽ đề nghị rằng ứng viên của bạn có thể sẽ không gặp vấn đề với các thuật toán và lập trình cơ bản, nhưng khi nói đến các yêu cầu loại "kỹ thuật" hơn, anh ta có thể cần một số hướng dẫn. Điều đó có nghĩa là tôi cấu trúc mã của mình tốt, không có 500 hàm dòng, kiểm tra hiệu quả, thiết kế cho hiệu quả ...

Hầu hết những điều này có thể được dạy, nhưng bạn có thể muốn thiết kế một số câu hỏi để giải quyết vấn đề này.


2

Ngoài ra, ông đã giải quyết một số vấn đề hóa học vật lý mà có lẽ tôi không hiểu bằng cách sử dụng phần mềm của riêng mình, được triển khai trong Mathematica, cho luận án thạc sĩ của mình. Nó bao gồm GUI và kích thước đáng chú ý là 8.000 LoC.

Âm thanh đối với tôi giống như ứng viên đã biết cách lập trình, với điều kiện họ có thể không có nhiều kinh nghiệm làm việc như một nhà phát triển chuyên dụng nhưng họ có một dự án rõ ràng mà họ đã hoàn thành đòi hỏi một lượng công việc không hề nhỏ phải hoàn thành. Như vậy, bạn có thể phỏng vấn ứng viên giống như cách mà nhà phát triển sử dụng ngôn ngữ khác với ngôn ngữ bạn mua, cụ thể là:

  • Năng lực cốt lõi - Ứng viên có hiểu logic lập trình cơ bản, kiểm soát luồng, cấu trúc dữ liệu cơ bản.
  • Năng lực nâng cao - Ứng viên có hiểu lập trình và thiết kế hướng đối tượng, cấu trúc dữ liệu nâng cao, giao diện, lớp trừu tượng, v.v.
  • Kỹ năng giải quyết vấn đề - Đưa ra một vấn đề, ứng viên có thể hiện kỹ năng giải quyết vấn đề vững chắc không.

Ngôn ngữ mà Mathicala sử dụng khá tiên tiến và một người giỏi viết phần mềm cho Mathicala nên khá thành thạo trong các lĩnh vực khác, vì vậy tập trung vào trải nghiệm đó và sử dụng nó làm cơ sở cho kinh nghiệm mã hóa có thể là một cách tốt để tiếp cận cuộc phỏng vấn.


2

Nói như một sinh viên tốt nghiệp Kỹ sư hàng không vũ trụ đã trở thành lập trình viên, chắc chắn có thể thực hiện bước nhảy vọt từ khoa học tự nhiên sang lập trình. Tuy nhiên, được cảnh báo, có thể giải quyết vấn đề không phải lúc nào cũng tương quan với khả năng viết mã. Bạn dường như nhận ra điều này và đó là một điều tốt.

Đối với tôi, các khái niệm quan trọng nhất để đảm bảo anh ấy nắm bắt được kiểm soát dòng chảyđệ quy (và nói chung là một tập hợp con của điều này). Trước khi tuyển dụng một ứng viên, ngay cả một người rõ ràng rất thông minh cũng chắc chắn rằng anh ta có thể viết ra một thuật toán từ đơn giản để giải quyết vấn đề. Hãy chắc chắn rằng anh ta có thể lấy thuật toán từ đơn giản đó và biến nó ít nhất thành mã giả. Bạn thậm chí có thể thăm dò xem liệu anh ta ít nhất có thể hiểu khái niệm đa hình hay không, mặc dù tôi không chắc đây là kiến ​​thức cần thiết trong tình huống này.

Ngoài ra, hãy cẩn thận với khả năng giải quyết các vấn đề khoa học trong Mathematica / MatLab / Dù không có nghĩa là anh ta có thể viết mã tốt. Nó chỉ có nghĩa là anh ta có thể áp dụng các nguyên tắc lập trình cơ bản (đôi khi cực kỳ cơ bản), thường là các câu lệnh if / other. Học để trở thành một lập trình viên giỏi thường sẽ có cả cam kết cá nhân và chủ lao động với ai đó trong giai đoạn này. Cảnh báo: Tôi đã gặp những người rất thông minh, những người đã / là những kỹ sư giỏi không thể lập trình ra khỏi túi giấy và thực sự không thể nắm bắt được các nguyên tắc ngôn ngữ cơ bản.

Kinh nghiệm cá nhân

Tôi tốt nghiệp ra trường với tấm bằng kỹ sư và một chút kinh nghiệm lập trình dưới vành đai của tôi. Tôi đã làm việc với một lượng C rất nhỏ, khá nhiều MatLab và một số VB + Access. Tôi mất khoảng 3 tháng học để trở thành một lập trình viên thực sự hữu ích trong một cửa hàng VB.NET. Tôi mất thêm 9 tháng để thành thạo hoàn toàn. Tuy nhiên, tôi có thể, với một mức độ tự tin công bằng nói rằng kỹ năng giải quyết vấn đề của tôi vượt trội hơn 99% so với các lập trình viên khác mà tôi đã gặp trong công việc. Chủ lao động của tôi đã luôn coi tôi là một trong những tài sản quý giá hơn của họ.

Phần kết luận

Đó là một đề xuất rủi ro / phần thưởng nhưng thường đôi khi người nào đó có kỹ năng giải quyết vấn đề thuần túy có thể trả hết về lâu dài miễn là họ có khả năng học các khái niệm lập trình và cả hai bạn đều sẵn sàng đầu tư thời gian để mở rộng chương trình của mình hiểu biết. Tuy nhiên, tôi tin chắc rằng anh ta phải sở hữu ít nhất một sự hiểu biết cơ bản về các nguyên tắc cơ bản của lập trình trước khi bạn đề nghị anh ta một công việc. Theo kinh nghiệm của tôi, một khi bạn ở thời điểm này, bạn có thể tiến xa hơn với nó.


Cảm ơn vì đã trả lời. Nó xác nhận hầu hết những suy nghĩ của tôi. Tôi chỉ muốn nói thêm rằng tôi đã gặp rất nhiều nhà khoa học máy tính, làm việc như các nhà phát triển và kiến ​​trúc sư trong nhiều năm, những người IMO cũng không thể viết mã tốt. Ngay cả một số người viết bài kỹ thuật về lập trình. Điểm mấu chốt: Nuôi ong một progammer giỏi luôn đòi hỏi bạn phải đọc rất nhiều sách, học các ngôn ngữ khác nhau, v.v ... bất kể bạn sở hữu loại bằng cấp nào.
Silas

1

Tôi sẽ bắt đầu với một số câu hỏi và vấn đề cơ bản về thuật toán để xem liệu anh ấy có logic về thuật toán và lập trình hay không. Nếu anh ta có khả năng hiểu thuật toán là gì, cuối cùng anh ta có thể phát triển các kỹ năng cần thiết để làm những việc cụ thể sau đó.


1

Làm cách nào tôi có thể kiểm tra xem anh ta có đạt được các kỹ năng lập trình mà anh ta cần để thực hiện phần mềm trong các dự án của chúng tôi không vì đây sẽ là một phần quan trọng của công việc

Thành thật mà nói, tôi khá chắc chắn rằng bạn sẽ không nhận được thông tin này trong cuộc phỏng vấn kéo dài một hoặc hai giờ. Đưa cho anh ta một bài tập lập trình trong C # (một cái gì đó không quá kỹ thuật) và một hoặc hai tuần để giải quyết. Đó là đủ thời gian để học những điều cơ bản của ngôn ngữ cho một người đã học lập trình với Mathematica. Sau đó thực hiện đánh giá mã với anh ta và quyết định dựa trên cơ sở đó.


1

Bạn có thể nhìn vào Thực tiễn để lập trình trong một môi trường khoa học? (trên Stack Overflow) để có được một số ý tưởng về văn hóa lập trình của khoa học tự nhiên trông như thế nào. Bằng cách đó, bạn đang ở trong một vị trí để so sánh sự chuẩn bị của anh ấy với các đồng nghiệp của anh ấy.

Đối với vấn đề đó, bạn có thể yêu cầu anh ấy mô tả các thực hành lập trình mà anh ấy đã sử dụng để tìm hiểu nếu anh ấy nhận thức được rằng có nhiều cách khác để làm điều đó .

Có rất nhiều "lập trình viên giỏi" trong doanh nghiệp của tôi có trình độ chuyên môn có khả năng giữ đủ trạng thái trong đầu để cùng nhau xử lý một số mã làm việc, nhưng công việc của họ có xu hướng không có cấu trúc và khó duy trì. Nói chung họ có thể được dạy, nhưng ... họ phải được dạy.


0

Một bộ phận khác nơi tôi làm việc sử dụng một biến thể trong bài kiểm tra tiêu chuẩn của chúng tôi. Nhiệm vụ đầu tiên là đảo ngược các từ trong một chuỗi tại chỗ. Sau đó, sử dụng mã đó để đảo ngược thứ tự các từ trong chuỗi, vẫn đúng vị trí. Thay vì sử dụng ngôn ngữ lập trình, họ có ứng cử viên thiết kế các thuật toán trên giấy và chạy chúng bằng bảng Scrabble.


0

Tôi sẽ yêu cầu mô tả (sử dụng ngôn ngữ tự nhiên) một thuật toán để tính toán một cái gì đó từ vật lý. Một cái gì đó phức tạp hơn một chút là một công thức đơn giản và sau đó tôi sẽ hỏi làm thế nào anh ta thấy tính toán của mình được gói gọn trong các đối tượng (không cần kiến ​​thức OOP, bạn có thể giải thích sự mong đợi của bạn về một đối tượng). Bằng cách này bạn có thể thấy suy nghĩ logic của anh ấy. Điều này quan trọng hơn bất kỳ kỹ năng lập trình nào.


0

Đầu tiên, họ có lẽ khá thông minh, vì vậy trường hợp xấu nhất họ có thể học để trở thành một lập trình viên giỏi với sự hướng dẫn. Tuy nhiên, nếu bạn cần họ nhảy vào và trở thành một lập trình viên giỏi từ lúc đi, hãy nhờ họ gửi một số mã mẫu mà họ đã viết.

Đây có phải là một hoặc hai chức năng đa mục đích khổng lồ hay chúng đã gói gọn chức năng ở mức độ trừu tượng thích hợp? Là những con số ma thuật được mã hóa cứng trong suốt? Là mã DRY? Họ đã đưa ra các biến tên hợp lý hay tất cả mọi thứ là một chữ viết tắt hoặc biến chữ cái không thể mã hóa? Bạn có thể chủ yếu làm theo logic của mã của họ? Họ có hiểu những điều cơ bản về OO không?

Hỏi những gì họ sử dụng để kiểm soát phiên bản (git / hg / svn / cvs / bzr, v.v.). Họ đã bao giờ cấu hình mã hoặc sử dụng một trình gỡ lỗi, và nếu vậy thì cái nào hoặc chiến lược gỡ lỗi chung của họ là gì?

Nếu họ thất bại trong bài kiểm tra này và bạn cần một lập trình viên giỏi từ việc di chuyển, hãy bỏ qua người này. Mặt khác, thuê họ, đề nghị họ đọc một số sách kỹ thuật phần mềm (ví dụ: Hoàn thành mã) ngoài sách lập trình / CS chung.

(Đối với hồ sơ, tôi cũng là nhà khoa học vật lý trở thành lập trình viên.)


-3

Vì anh vẫn còn ở một trường đại học hoặc chỉ mới hoàn thành gần đây, anh đã quen với việc học. Để anh ấy đọc và hiểu cuốn sách Mẫu thiết kế và sau (hoặc trong) một tháng, có một cuộc thảo luận kỹ lưỡng với anh ấy về các chủ đề. . Nhưng nó sẽ khiến bạn mất một tháng thời gian.


8
-1 Câu hỏi là về cách phỏng vấn anh ta, không phải làm thế nào để khiến anh ta ngừng muốn vị trí này.
Peter Taylor
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.