Potrzebuję sposobu na odfiltrowanie CV osób, które po prostu kopiują i wklejają kod, a następnie mają nadzieję, że zadziała, i sprawdzą, czy to działa. Wszystko to dzieje się bez zrozumienia (lub starania), aby zrozumieć resztę kodu w systemie.
Jasne, że wiem, że kopiowanie i wklejanie kodu jest częścią uczenia się nowego obiektu, kontroli itp. ... ale jak można stwierdzić, czy stanowi to 70% (lub więcej) ich kariery programistycznej?
Spotkałem ludzi z wyższego szczebla, których umiejętności są tak przestarzałe lub nieistotne dla projektu, że wszystko, co robią, to Google, kopiowanie, a następnie wklejanie kodu bez myślenia o rozwiązaniu jako całości. W rezultacie mamy niedopasowanie JSON, AJAX, callbacki, ASMX, WCF i postbacki w tym samym projekcie. Oczywiste jest, że nie ma spójności ani logiki w przypadku stosowania każdej technologii.
W najgorszym przypadku ten typ programisty stwarza problemy bezpieczeństwa i wektory do ataku.
Pytanie
Jak poleciłbyś odfiltrować osoby o słabym doświadczeniu programistycznym? Czy mogę to zrobić na poziomie wznowienia? Jeśli nie, jak mam to zrobić podczas wywiadu.
źródło
Odpowiedzi:
Nie sądzę, że umiejętności twoich programistów stanowią problem. Twój problem leży gdzie indziej, być może lider zespołu lub architekt, który nie ma pewności siebie, by „zachęcać” do lepszych dyscyplin kodowania, lub zespół zarządzający, który nie rozumie znaczenia zarządzania długiem technicznym i nie daje programiści czas i zasoby, aby to zrobić. Czy Twoja firma przechowuje recenzje kodu?
Problemem może być przywództwo, a nie programiści kopiuj-wklej.
źródło
Leadership may be the problem, not copy-paste developers.
To była dokładnie moja interpretacja.Aby wyeliminować programistów, którzy nie mogą programować, należy ustawić praktyczne ćwiczenia programistyczne w ramach fazy kontroli lub fazy wywiadu. (To drugie jest prawdopodobnie lepsze, ponieważ można kontrolować środowisko, aby zapobiec oszukiwaniu.)
Ale nie sądzę, żeby to naprawdę rozwiązało twój problem.
IMO, prawdziwym problemem jest to, że Twój zespół nie wykonuje wystarczającej wewnętrznej oceny kodu i nie opracowuje „poradnika” preferowanych rozwiązań znanych problemów. Jest to częściowo kwestia kultury, częściowo kwestia komunikacji, a (prawdopodobnie) częściowo kwestia terminów realizacji projektu.
Inną kwestią jest to, że projekt zwykle ma długą żywotność, a podczas tego okresu pojawią się nowe technologie / techniki, a stare prawdopodobnie nie wypadną z łask. Jeśli chcesz uniknąć korzystania z technologii / technik „śniadania dla psów”, musisz:
źródło
Zatrudnij ludzi na 3-miesięczny okres próbny. Zwolnij ich, jeśli będą do bani.
Jeśli nie INSPEKCJA, nie możesz OCZEKIWAĆ. Recenzje kodu, narzędzia audytu. Serwer CI może uruchomić je automatycznie.
Zadawaj prawdziwe pytania podczas wywiadów, tak jak pytania z prawdziwego kodu.
Poproś, aby napisali kod na tablicy.
Jeśli jesteś kierownikiem nietechnicznym, nie masz uprawnień, aby to oceniać.
Jeśli jesteś niewykwalifikowany, poproś o pomoc renomowanego, profesjonalnego konsultanta, który przeprowadzi testy. Zapytaj swoich obecnych ludzi i konkurentów biznesowych, czy znają 100-krotnie produktywną osobę. Zapłać im za rozmowę.
Jeśli chcesz prowadzić szpital bez szefa gabinetu, idź dalej.
źródło
Ostatnie kilka lat spędziłem na rozmowach z ludźmi i stwierdziłem, że 90% kandydatów po prostu nie może programować. Moja technika rozmowy w celu ustalenia programowania polega na udzieleniu kandydatowi zbyt prostego streszczenia i pozwoleniu mu rozwiązać go za pomocą markera i tablicy.
Tryby awarii obejmują:
wymyślanie projektu, a następnie wdrażanie czegoś innego. Ci kandydaci są odrzucani, ponieważ są niebezpieczni w zespole. nie postępuj zgodnie ze specyfikacjami, pisz błędy itp ...
Nie można wymyślić projektu. Zaskakująca liczba „doświadczonych” kandydatów potrzebuje specyfikacji obejmującej projekt wdrożenia.
nie znając języka programowania, mimo że CV twierdziło o doświadczeniu.
Nie zadawanie dodatkowych pytań w celu wyodrębnienia pełniejszych specyfikacji.
Brak możliwości wyjaśnienia decyzji projektowych. Ten jest ważny. Jeśli ktoś nie umie wyjaśnić, dlaczego, to za każdym razem zrobi to inaczej, a spójność zostanie utracona.
Efektem końcowym było to, że spędziłem dużo czasu na przeprowadzaniu wywiadów i niezbyt częstej rekrutacji. jednak zespół programistów był bardzo dobry i miał pełny szacunek dla całej firmy i dostarczył!
źródło
Sugerowałbym FizzBuzz, o którym wspomina Jeff Atwood w poście na stronie http://www.codinghorror.com/blog/2007/02/why-cant-programmers-program.html .
źródło
Zadaję trzy pytania do rozmowy kwalifikacyjnej
Widziałem ludzi, którzy ukończyli to w 5 minut i widziałem, jak ludzie walczą przez 30 minut, zanim się poddają.
źródło
java.util.LinkedList l = new java.util.LinkedList()
nic nie importuje, ale z pewnością korzysta z wbudowanych kolekcji.Nie możesz tego zrobić na poziomie wznowienia, ponieważ zasadniczo mają nieskończony czas na napisanie tego, ale możesz to zrobić podczas rozmowy telefonicznej, jeśli zadasz kilka pytań, które wymagają technicznej wiedzy na temat tego, co robią. To daje zarówno odpowiedź (dobrą lub złą), jak i ile czasu zajęło im dotarcie.
Podczas rozmowy poproś, aby napisali kod. Jest to jedyny sposób, aby stwierdzić, czy potrafią programować naprawdę. Uprość problem, daj mu komputer z połączeniem internetowym, a IDE, którego używasz, jest zainstalowane, pozwól mu zadać dowolne pytanie (oprócz gimme-hte-codez) i obserwuj, jak działają.
EDYCJA: Do analizy pośmiertnej wydaje się, że PMD ma wykrywacz kopiuj / wklej, aby go znaleźć: http://pmd.sourceforge.net/cpd.html
źródło
Prosty
Edytować:
Jak zauważono autorofthings7, w praktyce można zrobić zrzut wideo (zrzut ekranu).
źródło
Jeśli chcesz „wyeliminować” słabych programistów, możesz wypróbować na przykład Matrycę kompetencji programisty (przydatna, ale raczej nie dotyczy wszystkich możliwych obszarów - oczywiście możesz stworzyć własną) lub codility.com (zadania są bardzo dobre i oszczędza dużo czasu).
Ogólnie rzecz biorąc, zatrudnienie dobrych programistów jest trudne i często wymaga wielu lat praktyki. Możesz założyć własną bazę danych pytań do wywiadu, nie tylko pytając o kodowanie, ale także matematyki, logiki, nie wspominając o pytaniach motywacyjnych.
źródło
Powiedziałbym, że problem z twoimi kandydatami nie polega na tym, że w ogóle nie mogą programować, ale że nie mają poczucia, że używają odpowiedniego narzędzia do pracy. Moja sugestia to pytanie na temat eseju, w którym otrzymaliby wysokie wymagania dotyczące nowego systemu i poproszeni o dostarczenie architektury i uzasadnienie wyboru komponentów. Ale zachowaj FizzBuzz dla kandydatów, którzy nie mogą w ogóle kodować bez przeglądarki.
źródło