Odpowiednik testu Joela do pomiaru programatora [zamknięty]

70

Rozumiem, że do pomiaru projektu lub kodu możemy użyć testu Joela , ale czy istnieje jakiś prosty standardowy test (taki jak test Joela), który jest w stanie zmierzyć i odfiltrować, jak dobry jest programista?

Moim planem jest, aby najpierw przeprowadzić ten test jako szybki filtr przed przejściem do bardziej szczegółowego testu.

Rudy
źródło
2
Jeśli używane są takie testy, myślę, że programiści powinni o tym wiedzieć. Mogą, ale nie muszą być ważne, jak: Zatrudnij ten, który ma najwięcej modyfikacji nadwozia.
JeffO
2
Interesujące, gdy zadałem to pytanie, zostało skierowane do piekła (teraz znów pozytywne, tak i szybko zamknięte). Czy to naprawdę tak różni się od tego? programmers.stackexchange.com/questions/133691/…
ripper234
8
@ ripper234, przyczyny zamknięcia pytania w SE są trochę jak te niewytłumaczalne, sporadyczne błędy oprogramowania - naprawdę tajemnica. Trochę jak ludzka natura.
tehnyit
8
Sam Joel zapewnia prosty, ale rygorystyczny test: Smart and Gets Things Done . : P
Dan J
FizzBuzz! Pewno!
CraigTP

Odpowiedzi:

67

Istnieje matryca kompetencji programisty .

Podobnie jak w przypadku testu Joela jest to tylko niejasny przewodnik. Jedynym sposobem na prawidłową ocenę programisty jest zapytanie dobrych programistów, którzy z nimi pracowali.

Tom Squires
źródło
27
Pozostaje więc tylko problem z oceną, czy dawni / obecni koledzy z drużyny są dobrzy ... Ups.
Péter Török
21
Tak, jest rekurencyjne :)
Tom Squires
13
To nie przypomina testu Joela. Twoja odpowiedź wskazuje na ogromną szczegółową matrycę, test Joela to seria 12 bardzo prostych pytań, na które należy odpowiedzieć.
Bryan Oakley,
2
@BryanOakley - to prawda, ale PCM jest także pierwszą rzeczą, o której pomyślałem, czytając pytanie. Wynik: nie ma prostych pytań, na które można odpowiedzieć, aby zmierzyć programistę!
Joris Timmermans,
2
@BryanOakley punkt macierzy jest bardziej złożony niż szereg jest dobrze przyjęty; dla mnie bliższą analogią do testu Joela byłaby seria złożona z elementów kolumny poziomu 1 w PCM - „wyjaśnij i użyj tablic ..., Podstawowe sortowanie ... itd.”
gnat
25

Odwróciłbym test Joela:

Czy użyli kontroli źródła?

Czy wiedzą, jak zautomatyzować kompilację w jednym kroku?

...

Jedyne, co nie wydaje się szczególnie odpowiednie, to pytanie testerów. Inne, które wydają się nieco wyłączone, zmieniają się w ten sposób, w jaki sposób sobie z tym poradziliśmy, w jaki sposób poradziłeś sobie w poprzednich rodzajach pytań (W ten sposób radzimy sobie z aktualizowaniem naszego harmonogramu, jak radziłeś sobie z harmonogramem w przeszłości?) .

edytować:

Zasadniczo nie dostajesz rzeczy w teście Joela za darmo, musisz zatrudnić ludzi, którzy mogą to zrobić. Chcesz ustalić ich zdolność do tego, aby tak się stało.

kamieniste
źródło
1
Wszystkie pytania Joela dotyczą bardziej środowiska niż programisty. Jeśli mój zespół nie używa kontroli kodu źródłowego, to nie integruję się z nimi za pomocą własnej kontroli kodu źródłowego, nie jest to żadna poprawa. Ulepszenie zespołu do korzystania z kontroli kodu źródłowego.
Edwin Buck
15

Test Joela jest po prostu nieformalnym sprawdzeniem poziomu podstawowego, aby szybko ocenić, czy miejsce ma dobre warunki pracy dla programistów. Nawet jeśli zdobędzie doskonałą 10, nadal może być piekłem, który zbankrutuje sześć miesięcy później. Niski wynik wskazuje na coś, co nie jest do końca właściwe, i stanowi doskonałe pytanie podczas rozmowy kwalifikacyjnej („Nie korzystasz obecnie z kontroli źródła; czy są jakieś plany, aby to zrobić w przyszłości?”), A odpowiedzi mogą być takie, że zaakceptowałbyś tę pracę pomimo niskiej oceny Joela.

Test Joela również nie jest testem „standardowym”; to tylko lista kontrolna, którą Joel Spolsky opublikował na swoim blogu.

Jeśli chodzi o „pomiar”, idzie o jakość programisty; niestety, naprawdę ważne umiejętności i cechy dobrego programisty są trudne lub niemożliwe do oszacowania, więc nie można zastąpić dokładnej oceny przez człowieka. Za pomocą bardzo prostego zadania programistycznego można jednak łatwo wyeliminować całkowicie nieświadomych kandydatów - najlepiej coś, co wiąże się z rekurencją, strukturami drzewa lub wskaźnikami (programista, który tego nie „dostanie”, raczej nie będzie przydatny). Dla tych, którzy przejdą ten test, będziesz musiał ręcznie ocenić umiejętności: przeczytaj napisany przez siebie kod, przetestuj napisane aplikacje, powierz im więcej zadań programistycznych (zarówno projektowych, jak i wdrożeniowych), obejrzyj, jak działają, porozmawiaj z nimi, sprawdź, czy może zainicjować profesjonalną dyskusję. Jeśli szukasz specjalisty / guru języka,

tdammers
źródło
1
+1 Ocena umiejętności dobrych programistów jest trudnym do oszacowania zadaniem.
Karthik Sreenivasan
20
("You're not currently using source control; are there any plans to do so in the future?"), and the answers might be such that you'd accept the job despite a low Joel score. Nawiasem mówiąc, popełniłbyś błąd, przyjmując pracę. W końcu każdy programista dowiaduje się, że Plans to do so in the futurejest to coś, co ankieterzy mówią, aby cię oszukać, ale nigdy nie działają z powodu okropnego zarządzania. Ile razy coś słyszeliśmy Oh, we are moving towards Agile...i okazało się, że jest to kolejny sklep z wodospadem?
wałek klonowy
@maple_shaft: tak, prawdopodobnie nie jest to dobry przykład ...
tdammers
5
Idealna 10 na teście Joela to w rzeczywistości 12 ... po prostu mówiąc :)
MattDavey
3
@MattDavey: To krytycznie zależy od twoich kompetencji do napędzania zmian. Miałem jedno z tych doświadczeń, kiedy byłem w tym biznesie przez dwa lata (tak, przejdziemy do C ++) i uzyskałem oczekiwany wynik. W dzisiejszych czasach byłoby inaczej. I można dowiedzieć się, czy jest to szczere pragnienie, ale niezdolność do zmiany, a następnie zrobić to możliwe.
MSalters
12

Tak:

Czy programujesz w wolnym czasie?

Z mojego doświadczenia wynika, że ​​to jedno pytanie najbardziej wskazuje na to, jak dobry jest programista. Jeśli im się spodoba; jeśli mają pasję do wykonywania zadania, będą w tym dobrzy.

I szczerze mówiąc, wiele zadań od 9 do 5 nie wymaga dużo kodowania . Nie wymagają dużo iteracji przez cykl życia projektowania nowych programów i sprawdzania, jak ten projekt działa / kończy się niepowodzeniem. Bez tej iteracji programiści nie są w stanie zdobyć podstawowych umiejętności projektowania programów.

I nie wymagają dużo nauki. Programiści, którzy po prostu włamują się do rzeczy w domu, będą poszukiwać nowych i interesujących rozwiązań bez ograniczeń wielkiego biznesu.

Telastyn
źródło
2
Dlaczego ma to tylko jeden głos? IMO to prawdziwe rozróżnienie między miernymi zespołami a tymi, które są naprawdę innowacyjne.
Repo Man
0

Ech, mam skrupulatne sformułowanie na początku. To nie jest „użyłeś X” ani „Czy wiesz o Y”, to kwestia faktycznego używania i działania. Każdy programista, który nie dotknął ani nie usłyszał o elementach testu Joela, jest po prostu odłączony i musi uzyskać wskazówkę. Ale masz rację, sklepy z kodami nie przeszły testu Joela, ponieważ ludzie w sklepach zezwalają na to. Jedyna obrona, jaką widzę, przebiega w stylu „Próbowałem, ale nie miałem autorytetu. A teraz aplikuję tutaj”.

Philip
źródło
0

Czy korzystasz z kontroli źródła?

Tak ale

  • To tak naprawdę nic nie mówi.
  • Skąd wiesz, czy scalam dalej?
  • Skąd wiesz, czy wyciągam zmiany przed wypychaniem?
  • Skąd wiesz, czy kompiluję przed przystąpieniem do repozytorium.

Czy potrafisz wykonać kompilację w jednym kroku?

  • Tak, nasz przewodnik CI pisze skrypty, a ja po prostu uruchamiam je w PowerShell.

Czy robisz codzienne kompilacje?

  • Nasz serwer CI ma

Czy masz bazę danych błędów?

Tak, ale nie skonfigurowałem go i nie administruję, po prostu go używam.

Czy naprawiasz błędy przed napisaniem nowego kodu?

  • W idealnym świecie, w którym mam nieograniczone zasoby - tak, mam. W prawdziwym świecie czasami jestem zmuszony je zalogować i pracować nad czymś innym.

Czy masz aktualny harmonogram?

Nie, to nie moja praca.

Czy masz specyfikację?

Dostaję specyfikację, następnie analizuję ją i tworzę odpowiednie dokumenty.

Czy programiści mają ciche warunki pracy?

  • Nie zatrudnisz mnie, jeśli słucham muzyki, rozmawiam z kolegą i żartuję? Tworzenie oprogramowania powinno być kreatywne - warunki pracy będą się różnić w zależności od organizacji.

Czy korzystasz z najlepszych narzędzi, które można kupić za pieniądze?

Nie wiesz, jakie są najlepsze narzędzia, a jeśli uważasz, że tak, zawsze znajdzie się ktoś, kto będzie się kłócił.

Czy masz testerów?

Tak. W rzeczywistości tak i nie są zbyt dobre, ale nie było tego w pytaniu.

Czy nowi kandydaci piszą kod podczas rozmowy kwalifikacyjnej?

Tak i zawodzą. Tak i zdają. Co ci to mówi?

Czy wykonujesz testy użyteczności korytarza?

Nie, ale co jeśli zrobimy coś lepszego?

Podsumowując:

  • Ten test może działać dobrze w doskonałym świecie akademickim, w którym wszystko po prostu działa, wszyscy się dogadują, dzielą wiedzą i istnieją nieograniczone zasoby.
  • To, co chcesz wiedzieć, to jakim jestem inżynierem. Proste bitowe odpowiedzi nie powiedzą nic pożytecznego i myślę, że ktoś musi być bardzo naiwny, aby się w nich zakochać.
  • Odpowiedzi powyżej, zarówno negatywne, jak i pozytywne, nie mówią nic o mojej zdolności do tworzenia czystego kodu.

To nie jest rant, ale byłbym bardzo zainteresowany, aby dowiedzieć się, jakiego rodzaju dewelopera uważasz, że jestem oparty na udzielonych przeze mnie odpowiedziach. Mam nadzieję, że to udowodni mój punkt widzenia.

CodeART
źródło
8
Naprawdę nie rozumiem tego. Te pytania dotyczą zespołu / firmy, a nie indywidualnego programisty. I OP nie zasugerował, aby użyć tych samych pytań do oceny programisty, chce tylko zestawu prostych pytań.
CodesInChaos
1
Myślę, że jestem tak dobry, jak mój zespół lub firma, dla której pracujemy. Moim zdaniem takie testy powodują wiele zamieszania, ale tak naprawdę nie mówią nic użytecznego o firmie lub deweloperze.
CodeART
3
How do you know whether I pull changes before pushing? Cóż, nie wiem, jakiej kontroli źródła używasz, ale przynajmniej w SVN, jeśli spróbujesz zatwierdzić w folderze ze zmianami, których jeszcze nie masz, zatwierdzenie nie powiedzie się, dopóki nie uruchomisz aktualizacji.
Mason Wheeler
Używamy TFS :) Naprawdę muszę zdobyć inne systemy kontroli wersji.
CodeART
Ludzie Soooo faktycznie używają TFS. Nauczyłem się czegoś.
Fabinout,