Jak przeprowadzić wywiad z naukowcem na stanowisko dewelopera? [Zamknięte]

30

Oryginalne pytanie

Przeprowadziłem już kilka wywiadów dla mojej firmy, głównie informatyków na stanowiska deweloperów, ale także niektórych testerów i kierowników projektów. Teraz muszę wypełnić wolne miejsce w naszej grupie badawczej w dziale badawczo-rozwojowym (uwaga: „badania” oznaczają, że staramy się rozwiązywać problemy w naszej dziedzinie zawodowej / niszy rynkowej za pomocą oprogramowania w projektach badawczych wraz z uniwersytetami, innymi firmami, ośrodkami badawczymi i organizacje użytkowników końcowych. To nie są badania informatyczne; nie rozwiążemy problemu P = NP).

Teraz zaprosiliśmy faceta posiadającego tytuł magistra chemii (z dużą ilością fizyki w swoim CV), który nigdy nie miał żadnej lekcji informatyki. Rozmawiałem już z nim przez około pół godziny w dniach kariery na lokalnym uniwersytecie i nie ma wątpliwości, że facet jest mądry. Również jego oceny są doskonałe i ukończył z wyróżnieniem. Aby uzyskać tytuł licencjata, musiał nauczyć się programowania w Mathematica i powiedział mi prawdopodobnie, że bardzo lubi programowanie. Rozwiązał także problem chemii fizycznej, którego prawdopodobnie nie rozumiem, używając własnego oprogramowania, zaimplementowanego w Mathematica, do pracy magisterskiej. Zawiera GUI i godną uwagi wielkość 8000 LoC. Wydaje się, że bardzo go pociąga to, co robimy w naszej grupie badawczej, i szczerze mówiąc, dla takiego MŚP jak my trudno jest znaleźć dobrych ludzi. Jestem również bardzo zainteresowany zatrudnieniem go, ponieważ może mi pomóc w pisaniu propozycji projektów, raportów, prezentacji i tak dalej. Prawdopodobnie pasowałby również do naszego zespołu.

Pozostaje tylko pytanie: jak mogę sprawdzić, czy zdobędzie umiejętności programistyczne potrzebne do wdrożenia oprogramowania w naszych projektach, ponieważ będzie to znacząca część pracy?

Oczywiście zapytam go, co to jest, fascynuje go w programowaniu. Zapytam także, jak napisał swoje oprogramowanie do nauk przyrodniczych i jak je zbudował. Zapytam o to, jak udało mu się zdobyć umiejętności i informacje na temat potrzebnego mu oprogramowania. Ale czy jest coś jeszcze, o co mogę zapytać? Może coś bardziej konkretnego? Czy powinienem poprosić go o wyjaśnienie rozwiązania Mathematica?

Żeby było jasne: nie szukam wiedzy w określonym języku lub stosie technologii. Jesteśmy sklepem .NET w zakresie opracowywania produktów, ale chcę mieć swobodny wybór dla naszych projektów badawczych. Interesuje mnie zatem to, że meta-kompetencja jest w stanie nauczyć się wszystkiego, co jest rzeczywiście potrzebne.

Mam nadzieję, że na to pytanie można odpowiedzieć i nie ma ono charakteru otwartego, ponieważ naprawdę lubię wiedzieć, czy istnieje domyślny sposób sprawdzenia możliwości zdobycia dalszych umiejętności programowania w pracy. Jeśli coś nie jest dla ciebie jasne, proszę o komentarze i pozwól, że poprawię moje pytanie.

Zaktualizuj, aby odzwierciedlić odpowiedzi udzielone do 01.12.2011

Jaką odpowiedź zaakceptowałem i dlaczego

Dziękuję wszystkim za odpowiedzi, większość z nich jest bardzo pomocna, więc bardzo głosowałem! Chociaż odpowiedź Toma Squiresa uzyskała najwięcej głosów, przyjmuję odpowiedź udzieloną przez księcia Goulasha . Oczywiście Tom jest obiektywnie prawdziwe, ale odpowiedź księcia jest po prostu bardziej pomocne dla mnie i dwukrotnie sprawdził nas, że to jest kryterium przyjąć odpowiedź.

O co go zapytam podczas wywiadu

  • Pozwolę mu wyjaśnić kilka prostych zadań, takich jak przykład w The Camel Has Two Humps wspomnianym przez Chrisa Burt-Browna

  • Poproszę go o wyjaśnienie bardziej zaawansowanych przepływów sterowania, może w formie zapisu graficznego.

  • Sprawdzę jego rozumienie rekurencji na przykładzie matematycznym.

  • Pozwolę mu wyjaśnić wybrany przez siebie algorytm w języku naturalnym.

  • Pozwolę mu wyjaśnić swoje rozwiązanie Mathematica, w szczególności zapytam o jego model procedury, użycie narzędzi, strukturę kodu i oprogramowania w ogóle, a także o różne warstwy abstrakcji.

  • Aby sprawdzić jego motywację, poproszę o fascynację tworzeniem oprogramowania.

  • Zapytam go, czy jest świadomy tego, czego będzie musiał się dowiedzieć o tworzeniu oprogramowania dla przedsiębiorstw. Szczególnie chcę zmienić dyskusję w kierunku pracy w zespołach, programowania pary, TDD, ponieważ spodziewam się, że nie będzie dużo o tym wiedział po pracy na swoim własnym mgr.

Wygląda na to, że to będzie długi wywiad;)

Aktualizacja po wywiadzie 2011-12-09

Jeszcze raz dziękuję wszystkim za dobre odpowiedzi. Przeszedł wywiad z latającymi kolorami. Nigdy nie byłem bardziej zadowolony z wnioskodawcy. Jego rozwiązanie Mathematica wydaje się być całkiem dobrze skonstruowane. Był w stanie wyjaśnić, gdzie używał funkcji wyższego rzędu, chociaż nie wiedział, że są one tak nazywane. Odpowiedział na moje matematyczne pytania rekurencyjne, a także na proste zadania i kontrolę przepływu rzeczy z The Camel Has Two Humps. Kiedy wyjaśniał niektóre algorytmy, wiele się nauczyłem o dopasowaniu nieliniowym;) Powiedział też szczerze, że oczywiście nie może zagwarantować, że będzie w stanie dowiedzieć się czegoś o profesjonalnym tworzeniu oprogramowania, którego do tej pory nie zna. Ale prawdopodobnie twierdzi, że zawsze był dobry w uczeniu się nowych koncepcji - nawet sam - i jest naprawdę zainteresowany tworzeniem oprogramowania. Poprosił również o stos technologii w projekcie, do którego zostałby najpierw zgłoszony, aby mógł obejrzeć go w domu. Był także ciekawy programowania w parach i pracy zespołowej. Teraz mam nadzieję, że umowa o pracę zostanie zawarta.

Silas
źródło
9
Uważam, że to cudowne, że firmy chętnie zatrudniają ludzi bez wiedzy na temat technologii, z której korzystają. Chciałbym znaleźć Twoją firmę, zanim zrobiłem to, co zrobiłem w mojej karierze!
NoChance 28.11.11
Emmad: To właśnie starałem się wyjaśnić i rozumieć przez „meta-kompetencje”. Jakie korzyści ma moja firma, kiedy zatrudniam doskonałego programistę C #, który nie jest w stanie (lub nie chce) uczyć się Scala / Lift w razie potrzeby? I szczerze mówiąc: w rzeczywistości trudno jest znaleźć dobrych ludzi w Niemczech. Zwłaszcza, gdy jesteś MŚP, które nie znajduje się w modnej metropolii takiej jak my.
Silas
2
Poproś go, aby przeprowadził małe badania nad prostym przepływem sterowania i innymi bardzo podstawowymi technikami w określonym języku. Potem, kiedy on wejdzie, poproś go, aby rozwiązał problem za pomocą tych.
Darren Young,
2
Pracowałem z kilkoma naukowcami, którzy zostali programistami na moim obecnym stanowisku. IMHO wydają się być bardzo dobrzy w rozwiązywaniu problemów związanych z rozwojem i nie tak świetni w pisaniu łatwego do utrzymania kodu z dobrymi zasadami OO. Jeśli chcesz, aby robił więcej niż pisanie „szybkich i brudnych” narzędzi, być może będziesz musiał współpracować z tradycyjnym programistą.
Jordan Bentley
2
Prawie jestem tym facetem. Mam doświadczenie w dziedzinie fizyki obliczeniowej / chemii i opracowałem wiele modeli obliczeniowych / kodu, a także szereg (czasem skomplikowanych i udanych) projektów pobocznych. Główne zmiany, które musiałem wprowadzić w środowisku rozwoju zawodowego, dotyczyły metodologii rozwoju i pracy w zespole. Upewnij się, że rozumie, co to znaczy współpracować przy oprogramowaniu. Upewnij się, że rozumie metody, których używacie (TTD / intubacyjna integracja tego typu rzeczy) i co z nimi oznacza dla jego wyników.
drxzcl

Odpowiedzi:

21

Jestem bardzo uprzedzony, ponieważ kilka lat temu zacząłem jako programista z doktoratem z fizyki, ale bardzo mało doświadczenia w kodowaniu (co stanowi kurs licencjacki na Fortran). Oczywiście zależy to od rodzaju tworzonego oprogramowania, ale moim zdaniem umiejętności kodowania są bardzo łatwe do zdobycia przez każdego, kto ma na wpół przyzwoite umiejętności naukowe / rozwiązywania problemów. Nie zamierzam tego obrażać przez całe życie programistów, którzy studiowali informatykę: oczywiście istnieją aspekty techniczne, które wymagają poważnego szkolenia w celu opanowania (np. Wielowątkowość i architektura bardzo niskiego poziomu), ale zakładam, że to nie stanowisko, które próbujesz obsadzić.

Podczas mojego wywiadu technicznego dotyczącego mojego obecnego stanowiska stanąłem wobec dość złożonego problemu matematycznego i poprosiłem o zaprojektowanie programu do jego rozwiązania. Nacisk położono na napisanie algorytmu, który po zaimplementowaniu rozwiąże problem. Mógłbym napisać odpowiedź, używając wyłącznie słów, aby opisać moje rozwiązanie, ale pozwolono mi napisać kod w wybranym przeze mnie języku. Test dotyczył bardziej umiejętności rozwiązywania problemów i tego, czy potrafiłem „myśleć jak programista”. Oczywiście, jeśli byliby kandydaci o równych umiejętnościach i ktoś miałby większe doświadczenie w kodowaniu bezpośrednim, wyszedłby na wierzch, ale to wydaje mi się dość uczciwe.

Najważniejsze jest: zbadaj kandydata pod kątem umiejętności, które go zatrudniasz, a nie pod kątem ideałów, które masz nadzieję osiągnąć.

Książę Gulasz
źródło
2
Pracując z programistami, którzy byli byłymi naukowcami, nie tylko szczegóły niskiego poziomu są im nieświadome, ale także rzeczy bardzo wysokiego poziomu. Oczywiście YMMV, ale to ogólny brak głębi, to jest problem. Nie żeby wszystkie miejsca pracy tego wymagały…
Donal Fellows,
1
@DonalFellows: Nie wątpię, że programiści bez specjalnego szkolenia mogą nie mieć zarówno szerokiej, jak i głębokiej wiedzy. To zależy od roli i liczby oferowanych szkoleń wewnętrznych.
Prince Goulash
1
@DonalFellows: biorąc pod uwagę, że PO jest zainteresowany określeniem zdolności wnioskodawcy do nauki, a nie jego obecnej wiedzy ...
2
@DonalFellows: jak powiedziałem wcześniej, biorąc pod uwagę, że PO jest zainteresowany określeniem zdolności wnioskodawcy do nauki, a nie jego obecnej wiedzy ...
2
@Mark Bannister: Dobry naukowiec może się uczyć, to nie jest przydatne pytanie. Bardziej użytecznym pytaniem byłoby, czy naukowiec dowie się, co powinien wiedzieć. To bardziej kwestia osobowości. Czy naukowiec wie, czego nie wie o inżynierii oprogramowania?
David Thornley,
37

Jak mogę sprawdzić, czy zdobędzie umiejętności programowania, których potrzebuje

Nie możesz . Niemożliwe jest dokładne przetestowanie umiejętności, której jeszcze nie ma. Musisz dokonać oceny sytuacji na podstawie jego inteligencji i postawy. Ostatecznie zawsze będzie to ryzyko.

Z własnego doświadczenia mogę powiedzieć, że przejście od nauki do programowania jest bardzo możliwe. Oba sprowadzają się do wykorzystania mózgu do rozwiązywania skomplikowanych zagadek.

Tom Squires
źródło
8
+1 za „Oba sprowadzają się do wykorzystania mózgu do rozwiązywania złożonych zagadek”.
joshin4colours
1
Co jest z tobą nie tak? Zatrudnij faceta, na litość boską! Pamiętaj, że programiści są jedynie zaawansowanymi technologicznie operatorami tokarek. Jest entuzjastyczny, inteligentny i zna dużo chemii. Jeśli go nie zatrudnisz, następnym razem, gdy za rok pójdziesz zatrudnić kogoś, będziesz skopał tyłek, że tego nie zrobiłeś.
Pete Wilson
1
Nierzadko absolwent CS mógł programować, ponieważ miał około 13 lat. Do czasu wejścia na studia są już programistami pośrednimi w większości skal. To nie znaczy, że niczego się nie nauczyli ze swoich stopni naukowych. Programowanie jest łatwe ... Informatyka / Inżynieria miękka nie. Nie oznacza to, że nie będą w stanie wnosić wkładu i być cennym członkiem ... Ale to oznacza, że ​​prawdopodobnie nigdy nie będą mieli takich samych podstaw CS.
user606723,
6

Nie mam żadnych dodatkowych źródeł weryfikujących ten artykuł, więc nie mogę za niego ręczyć, ale:

Camel Has Two Humps
http://www.eis.mdx.ac.uk/research/PhDArea/saeed/paper1.pdf

Znaleźliśmy test umiejętności programowania, o którym podajemy szczegóły. Możemy przewidzieć sukces lub porażkę, nawet zanim uczniowie zetkną się z jakimkolwiek językiem programowania z bardzo wysoką dokładnością, i testując ten sam instrument po kilku tygodniach ekspozycji, z najwyższą dokładnością.

Chris Burt-Brown
źródło
3
Po przeczytaniu artykułu pamiętam, że jakiś czas temu przeczytałem więcej o tym badaniu. Po prostu nie mogę go znaleźć ponownie :( Edytuj: wspomniano o nim w Coding Horror , dzięki za przypomnienie
Silas,
Pobiłeś mnie, miałem już odpowiedzieć dodając link do Coding Horror @Silas
Izkata,
5

Jak mogę sprawdzić, czy zdobędzie umiejętności programowania, których potrzebuje?

To jest bardzo proste. Daj mu umiejętności.

To nie jest zbyt satysfakcjonująca odpowiedź, ale pozwólcie, że rozwinę się.

Do programowania przyjechałem po 3 latach pracy w inżynierii lądowej. To dość solidne tło w fizyce stosowanej i matematyce. To nie jest teoretyczna matematyka, którą dałby dyplom CS, ale jest coś warta. To, co czerpałem z doświadczenia inżynierskiego, było solidnym doświadczeniem w rozwiązywaniu problemów . Każdy, kto ma doświadczenie matematyczne, docenia już pojęcie elegancji, gdy mówi o rozwiązaniu problemu. Mają już wykształcenie w zakresie refaktoryzacji, ponieważ spędzili czas na pobraniu sześciu stron skrawków z kurczaka i przekształceniu ich w elegancki półfartowy dowód do złożenia.

Każdy, kto studiował fizykę, opracował intuicyjne podejście do łączenia razem rozwiązania z podstawowych ram.

A czym jest programowanie poza tymi umiejętnościami? - Język, idiom, wzory i ramy. Są łatwe do nauczenia. Rozwiązywanie problemów jest niemożliwe. Jeśli jesteś w stanie zapewnić instrukcje w tych obszarach, to skończysz z dobrym programistą.

Powstaje pytanie: „Jak długo możesz poczekać, aż osiągnie prędkość?”.

tl; dr; Możesz uczyć pisania. Nie możesz uczyć mądrze.

Chris Cudmore
źródło
+1, bardzo ładna odpowiedź. Chciałbym, żeby ludzie mieli bardziej otwarte poglądy na temat zawodów: posiadanie dyplomu z matematyki nie oznacza, że ​​nie możesz robić programów na życie, ani na odwrót. Nauka uczenia się jest ważną umiejętnością IMO.
K.Steff
2

Mam licencjat z inżynierii materiałowej, ale całą swoją karierę pracowałem w tworzeniu oprogramowania.

Sugerowałbym, że twój kandydat prawdopodobnie nie będzie miał problemów z podstawowym programowaniem i algorytmami, ale jeśli chodzi o wymagania bardziej „inżynierskie”, może potrzebować wskazówek. Rozumiem przez to dobrą strukturę jego kodu, brak 500 funkcji liniowych, skuteczne testowanie, projektowanie pod kątem wydajności ...

Większość z tego można się nauczyć, ale możesz chcieć zaprojektować kilka pytań, aby to sprawdzić.

Jaydee
źródło
2

Rozwiązał także problem chemii fizycznej, którego prawdopodobnie nie rozumiem, używając własnego oprogramowania, zaimplementowanego w Mathematica, do pracy magisterskiej. Zawiera GUI i godną uwagi wielkość 8000 LoC.

Wydaje mi się, że kandydat już wie, jak programować, pod warunkiem, że może nie mieć tyle doświadczenia, jak oddany programista, ale ma dający się wykazać projekt, który ukończył i wymagał wykonania niebanalnej ilości pracy. W związku z tym możesz być w stanie przeprowadzić wywiad z kandydatem w taki sam sposób, jak programista, który używa innego języka niż ten, którego używa sklep, a mianowicie:

  • Kompetencje podstawowe - Czy kandydat rozumie podstawową logikę programową, kontrolę przepływu, podstawowe struktury danych.
  • Kompetencje zaawansowane - Czy kandydat rozumie programowanie i projektowanie obiektowe, zaawansowane struktury danych, interfejsy, klasy abstrakcyjne itp.
  • Umiejętności rozwiązywania problemów - czy dany kandydat wykazuje się solidnymi umiejętnościami rozwiązywania problemów.

Język, którego używa Mathematica, jest dość zaawansowany, a ktoś, kto jest dobry w pisaniu oprogramowania dla Mathematica, powinien być dość kompetentny w innych dziedzinach, więc skupienie się na tym doświadczeniu i wykorzystanie go jako podstawy do programowania może być dobrym sposobem na podejście do rozmowy kwalifikacyjnej.

rjzii
źródło
2

Mówiąc jako absolwent inżynierii lotniczej, programista, z pewnością możliwe jest przejście od nauk przyrodniczych do programowania. Ostrzegamy jednak, że umiejętność rozwiązywania problemów nie zawsze wiąże się z umiejętnością pisania kodu. Wydaje się, że zdajesz sobie z tego sprawę i to jest dobra rzecz.

Dla mnie najważniejszymi pojęciami, aby upewnić się, że chwyta on kontrolę przepływu i rekurencję (i ogólnie zapętlenie jako podzbiór tego). Przed zatrudnieniem kandydata nawet ktoś bardzo inteligentny jest pewien, że potrafi napisać prosty algorytm rozwiązywania problemów. Upewnij się, że może wziąć ten algorytm prostych słów i przekształcić go przynajmniej w pseudo-kod. Możesz nawet zbadać, czy może on przynajmniej zrozumieć pojęcie polimorfizmu, chociaż nie jestem pewien, czy jest to niezbędna wiedza w takich okolicznościach.

Uważaj też na umiejętność rozwiązywania problemów naukowych w Mathematica / MatLab / Cokolwiek, co nie znaczy, że umie pisać dobry kod. Oznacza to jedynie, że jest on w stanie zastosować podstawowe (czasem bardzo podstawowe) zasady programowania, zwykle instrukcje if / else. Nauka bycia dobrym programistą na ogół wymaga od kogoś osobistego i pracodawcy zobowiązania na tym etapie. Ostrzeżenie: spotkałem bardzo inteligentnych ludzi, którzy byli / są dobrymi inżynierami, którzy nie potrafili zaprogramować wyjścia z papierowej torby i szczerze mówiąc, nie potrafili zrozumieć podstaw języka.

Osobiste doświadczenie

Ukończyłem szkołę ze stopniem inżyniera i odrobiną doświadczenia programistycznego. Pracowałem z bardzo małą ilością C, sporą ilością MatLab i trochę VB + Access. Zajęło mi około 3 miesięcy nauki, aby stać się naprawdę użytecznym jako programista w sklepie VB.NET. Pełne opanowanie zajęło mi kolejne 9 miesięcy. Jednak z pewnym stopniem pewności mogę powiedzieć, że moje umiejętności rozwiązywania problemów przewyższają 99% innych programistów, których spotkałem w pracy. Moi pracodawcy konsekwentnie uważali mnie za jeden z ich cenniejszych aktywów.

Wniosek

Jest to propozycja ryzyka / nagrody, ale często zdarza się, że walka z kimś, kto ma umiejętności rozwiązywania problemów, może się opłacić na dłuższą metę, o ile jest on w stanie nauczyć się koncepcji programowania i oboje jesteście gotowi zainwestować czas w rozszerzenie jego programowania wiedza, umiejętności. Jednak głęboko wierzę, że musi on posiadać przynajmniej podstawową wiedzę na temat podstaw programowania, zanim zaoferuje mu pracę. Z mojego doświadczenia wynika, że ​​kiedy już jesteś w tym momencie, możesz pójść o krok dalej.

Mike Cellini
źródło
Dzięki za odpowiedź. Potwierdza to większość moich myśli. Chcę tylko dodać, że spotkałem wielu informatyków, którzy od lat pracują jako programiści i architekci, którzy również nie są w stanie napisać dobrego kodu. Nawet niektórzy piszący artykuły techniczne na temat programowania. Konkluzja: Bycie dobrym progamerem zawsze wymaga przeczytania wielu książek, nauki różnych języków i tak dalej ... bez względu na to, jaki stopień posiadasz.
Silas
1

Zacznę od kilku podstawowych pytań dotyczących algorytmów i podstaw, aby sprawdzić, czy zajmuje się logiką algorytmów i programowania. Jeśli jest w stanie zrozumieć, czym jest algorytm, może w końcu rozwinąć umiejętności potrzebne do późniejszych konkretnych działań.

LostMohican
źródło
1

Jak mogę sprawdzić, czy zdobędzie umiejętności programowania potrzebne do wdrożenia oprogramowania w naszych projektach, ponieważ będzie to znacząca część pracy

Szczerze mówiąc, jestem prawie pewien, że nie wyciągniesz tych informacji z trwającej jedną lub dwie godziny rozmowy. Daj mu zadanie programowania w C # (coś niezbyt technicznego) i jeden lub dwa tygodnie do rozwiązania. To powinien wystarczyć na naukę podstaw języka dla kogoś, kto nauczył się programowania w Mathematica. Następnie dokonaj z nim przeglądu kodu i wybierz tę bazę.

Doktor Brown
źródło
1

Możesz spojrzeć na praktyki programowania w środowisku naukowym? (na stosie przepełnienia), aby dowiedzieć się, jak wygląda kultura programowania w naukach przyrodniczych. W ten sposób możesz porównać jego przygotowanie z przygotowaniami jego rówieśników.

Jeśli o to chodzi, możesz poprosić go o opisanie praktyk programistycznych, do których był przyzwyczajony, aby dowiedzieć się, czy jest świadomy innych sposobów .

W mojej firmie jest wielu „dobrych programistów”, których kwalifikacje są w stanie utrzymać w głowie wystarczający stan, aby ułożyć jakiś działający kod, ale którego praca jest nieustrukturyzowana i trudna do utrzymania. Generalnie można ich uczyć, ale ... trzeba ich uczyć.

dmckee
źródło
0

Inny dział, w którym pracuję, korzysta z odmiany naszego standardowego testu. Pierwszym zadaniem jest odwrócenie słów na miejscu. Następnie użyj tego kodu, aby odwrócić kolejność słów w ciągu, wciąż na miejscu. Zamiast używać języka programowania, kandydat zaprojektował algorytmy na papierze i uruchomił je za pomocą tablicy Scrabble.

Peter Westlake
źródło
0

Poprosiłbym o opisanie (przy użyciu języka naturalnego) algorytmu obliczania czegoś z fizyki. Coś nieco bardziej skomplikowanego niż prosta formuła, a potem zapytałbym, jak mógłby zobaczyć, jak jego obliczenia są zamknięte w obiektach (nie potrzeba wiedzy OOP, możesz wyjaśnić, czego oczekujesz od obiektu). W ten sposób możesz zobaczyć jego logiczne myślenie. Jest to ważniejsze niż jakakolwiek umiejętność programowania.

alinoz
źródło
0

Po pierwsze, są prawdopodobnie całkiem sprytni, więc w najgorszym przypadku mogą nauczyć się być dobrym programistą z wytycznymi. Jeśli jednak potrzebujesz, aby wskoczyli i byli przyzwoitym programistą od samego początku, poproś, aby przesłali przykładowy kod, który napisali.

Czy jest to jedna czy dwie gigantyczne funkcje wielofunkcyjne, czy też zawierały one funkcjonalność na odpowiednich poziomach abstrakcji? Czy magiczne liczby są na stałe zakodowane? Czy kod jest SUCHY? Czy nadali zmiennym rozsądne nazwy, czy też wszystko jest nieczytelnym skrótem lub zmienną jednoliterową? Czy potrafisz przeważnie przestrzegać logiki ich kodu? Czy rozumieją podstawy OO?

Zapytaj, czego używają do kontroli wersji (git / hg / svn / cvs / bzr itp.). Czy kiedykolwiek profilowali kod lub używali debuggera, a jeśli tak, to które lub jaka jest ich ogólna strategia debugowania?

Jeśli nie przejdą tego testu i od samego początku potrzebujesz dobrego kodera, pomiń tę osobę. W przeciwnym razie, zatrudnij ich, zasugeruj, aby przeczytali książki inżynierii oprogramowania (np. Code Complete) oprócz ogólnych książek o programowaniu / CS.

(Dla przypomnienia jestem również fizykiem, który został programistą).

dr jimbob
źródło
-3

Ponieważ jest jeszcze na uniwersytecie lub dopiero niedawno skończył, jest przyzwyczajony do nauki. Poproś go, aby przeczytał i zrozumiał książkę Wzory projektowe, a po miesiącu (lub w ciągu miesiąca) przeprowadzi z nim szczegółowe dyskusje na te tematy. (Myślę, że) może to wiele powiedzieć o jego umiejętnościach (nie tylko tych trudnych (te też), ale także o tym, jak radzi sobie z chwytaniem nowych koncepcji, rozumieniem ich wykorzystania, widzeniem zalet i wad itp.). Ale będzie cię to kosztowało miesiąc.

herby
źródło
8
-1 Pytanie dotyczyło tego, jak przeprowadzić z nim wywiad, a nie jak sprawić, by przestał pragnąć stanowiska.
Peter Taylor