Pytanie o próbkę kodu firmy podczas wywiadu [zamknięte]

69

Poproszenie osoby poszukującej pracy o pokazanie kodu jest dość powszechną praktyką w firmie produkującej oprogramowanie. Czy jednak byłoby dopuszczalne, aby kandydat poprosił ankietera o pokazanie mu małego fragmentu kodu, który według niego jest dobrze napisany?

Simon Bergot
źródło
14
Wolę zapytać o standardy kodowania, recenzje kodu itp.
user16764,
5
Czy firma przechodzi „test Joela”: joelonsoftware.com/articles/fog000000000043.html
Martin York
2
@LokiAstari test joela nie dotyczy bezpośrednio kultury kodowania (tylko środowisko pracy).
Simon Bergot,
8
@ user16764 to jak zadawanie kandydatowi teoretycznych pytań: to dobry pierwszy krok, ale tak naprawdę nie pokazuje, jak stosuje tę wiedzę.
Simon Bergot,
2
programmers.stackexchange.com/questions/160922/... Podobne do tego pytania.
Anonimowy

Odpowiedzi:

69

Zawsze proszę o wyświetlenie kodu z kilku powodów:

  • Chcę wiedzieć, w co się pakuję. Oczywiście żadna firma programistyczna nie jest idealna i nie oczekuję, że wszyscy będą pompować cuda elegancji przez cały czas (bo ja też tego nie robię), ale jeśli poproszę o najlepszy kod firmy, a wszystko, co mogą mi pokazać, to sub-par spaghetti bałagan, wiem, że jestem w nieszczęśliwym czasie, rozpakowując włosy i walcząc z technicznym długiem, aby cokolwiek zrobić. Patrząc na najlepszy kod, jaki może pokazać firma, ustala górną granicę możliwej jakości; nawet jeśli jest mało prawdopodobne, aby cały ich kod tak wyglądał, nadal wiesz, że jest to coś, o co dążą.
  • Patrzenie na próbki kodu wiele mi mówi o kulturze kodowania w firmie. Czy używają komentarzy do dokumentacji? Czy skłaniają się ku stylowi obiektowemu, czy mają tendencje do programowania funkcjonalnego? Czy są konserwatywne czy postępowe? Czy cenią sobie spójne nazewnictwo, właściwe formatowanie i wcięcia oraz ogólnie czysty kod? Czy kod jest łatwy do naśladowania? Jak kształtują swoje projekty? Jak podchodzą do ważnych rzeczy - zautomatyzowanych testów, obsługi błędów itp.? Jak defensywny jest ich styl kodowania?
  • Wyświetlanie ich istniejącego kodu pozwoli Ci ocenić, czy możesz sprostać ich standardom .
  • Dobrym znakiem jest fakt, że firma chce udostępniać próbki kodu samodzielnie. Oznacza to, że oferują one mnie wnioskodawcę, trochę zaufania , ponieważ ich codebase jest jednym z ich najcenniejszych aktywów. Oznacza to również, że nie wstydzą się swojego kodu, że są pewni, że pokazanie mi kodu pomoże mi zainteresować współpracą z nimi.
  • Jeśli nie pokażą ci żadnych próbek kodu, nie musi to być czerwona flaga, ale mądrze jest zapytać, dlaczego nie będą udostępniać (całkiem prawdopodobne, że po prostu nie mogą z powodów prawnych), a także wyjaśnić, dlaczego chcesz je zobaczyć. Nie sądzę, by zainteresowanie kodem było postrzegane jako znak negatywny, o ile pytasz uprzejmie i pozytywnie.

A potem jest jeszcze kilka efektów ubocznych:

Firmy, które zgadzają się pokazywać ci kod, z oczywistych powodów raczej nie wyślą mi tarballa plików źródłowych zawierających najnowszą wersję całej bazy kodu. Jeśli pokażą mi jakiś kod, zrobią to w formie małej demonstracji, co jest świetne: oznacza to, że mogę porozmawiać z jednym z moich potencjalnych partnerów, pozwala mi zadawać więcej pytań na temat ich kultury kodowania, procesów, i baza kodów, a idealnie pomoże rozpocząć profesjonalną dyskusję, w której mogę zarówno wykazać umiejętności i wiedzę, jak i dowiedzieć się więcej o środowisku pracy. Oznacza to również, że mogę przyjrzeć się używanym przez nich narzędziom, co również jest dość wnikliwe - na przykład jeśli projekt, który mi pokazują, opiera się w dużej mierze na konkretnym środowisku IDE, oznacza to, że wszyscy używają tego, co może być dobre lub złe. I w końcu,

tdammers
źródło
1
Jeśli potencjalny pracodawca pokaże ci kod, który jest wyraźnie zły, pamiętaj, że może to być okazja do poprowadzenia go do ulepszenia kodu i procesów. Jak mówi stare powiedzenie: „Mogę tylko spieprzyć idealnie, ale mogę naprawić zepsute!”. Pamiętaj też, że kod pokazywany kandydatowi lub przez niego był prawdopodobnie poddawany o wiele bardziej rygorystycznemu sprawdzeniu niż inny kod.
akton
@akton To moje podejście do złego kodu. Jest to jednak bezużyteczne, gdy jesteś sam w zadaniu „naprawiania bałaganu”. Pytanie o dobry kod może pomóc poczuć, czy twój przyszły zespół ceni takie rzeczy, jak SOLID
Simon Bergot
1
„Zawsze pytam o jakiś kod”. Ale po co faktycznie wyświetlasz kod? Czy prosisz, aby przygotowali coś wcześniej, czy wysłali ci coś później? Bez względu na to, jak na to spojrzeć, wydaje się to niepraktyczne.
Burhan Ali,
1
@BurhanAli: Po prostu pytam. Wielu nie chce mi tego pokazywać i zwykle dają mi dobre powody, co jest w porządku. Ci, którzy się zgadzają, oprowadzają mnie po nadzorowanej trasie; Wątpię, aby ktokolwiek przesłał mi pełny zestaw źródeł do przejrzenia, ale klikanie projektu w IDE podczas oglądania jest często dopuszczalne.
tdammers
W wielu przypadkach uważam, że kod, który naprawdę chciałbym zobaczyć, byłby uważany za zamknięty jako przewaga konkurencyjna. To będzie kod, który jest dla mnie najważniejszy ... jeśli jednak zgodzą się pokazać ci kod i jest do bani, to prawdopodobnie znak, że nie rozumieją dobrego kodu. Gdybym był leadem, prawdopodobnie nie pokazałbym ci żadnego trywialnego kodu wewnętrznego. Tylko ja.
Rig
14

Czy jednak byłoby dopuszczalne, aby kandydat poprosił ankietera o pokazanie mu małego fragmentu kodu, który według niego jest dobrze napisany?

Przypuszczam, że mieści się w całej mantrze „wywiady są dwukierunkowe”, ale nie spodziewałbym się, że ją otrzymam. Obawy dotyczące własności intelektualnej są najbardziej oczywistym problemem po tym, że nie ma komputera w pokoju przesłuchań, a doprowadzenie cię do jednego z nich jest dość niewygodne.

Co więcej, po prostu wybiorą najlepiej wyglądający, najmniej znaczący kod, jaki mogą. Najlepszy kod nie jest tak naprawdę problemem, najgorszy jest. Z tego samego powodu pobieranie próbek kodu od kandydatów jest prawie bezużyteczne.

Telastyn
źródło
10
Nadal warto sprawdzić, czy potrafią wybrać dobry kod, aby ci pokazać. Najbardziej frustrującą częścią radzenia sobie ze złym kodem jest często to, że nikt go nie rozpoznaje i należy go naprawić.
JGWeissman
5
Pomysł dobrego kodu ankietera może nie być twoim pomysłem na dobry kod. Pomyślałbym, że lepiej byłoby dowiedzieć się tego wcześniej niż później.
Eric King,
1
Niestety, kiedy próbowałem zastosować podejście „wywiady są dwukierunkowe”, większość pracodawców działała zirytowana. Nigdy nie pokazano mi kodu. Inną rzeczą, o którą poprosiłem, jest model danych, ale też nie mam szczęścia.
Antonio2011a,
12

czy kandydat mógłby zaakceptować prośbę ankietera o pokazanie mu małego fragmentu kodu, który według niego jest dobrze napisany?

Możesz zapytać o co tylko chcesz, ale:

  • Prawdopodobnie nie dostaniesz tego.

  • Jeśli go dostaniesz, nie powie ci nic pożytecznego. Jeśli 10% ich kodu jest piękne, a reszta to spaghetti, nadal będziesz mieć do czynienia głównie ze spaghetti.

  • Będziesz wyglądać jak smarty spodnie. To nie jest wielka pomoc, jeśli ostatecznie zdecydujesz, że chcesz tam pracować.

  • To strata cennego czasu na rozmowę kwalifikacyjną.

  • Są lepsze sposoby, aby dowiedzieć się, co chcesz wiedzieć. Zadaj pytania takie jak:

    • Jakie są najważniejsze wskaźniki jakości kodu?
    • Czy będę głównie utrzymywał istniejący kod lub pisał nowy kod?
    • Czy możesz krótko wyjaśnić, jak działa Twój system?
    • Czy masz dokument standardów kodowania i czy wszyscy go przestrzegają?
Caleb
źródło
Słuszna uwaga ! Niestety zadawanie pytań typu „Jakie są najważniejsze wskaźniki jakości kodu?” Może być również postrzegane jako smarty spodni. (Z mojego punktu widzenia jest to rozsądne pytanie, ale wielu pracodawców nie lubi czuć się pytanymi przez potencjalnego podwładnego).
Antonio2011a,
2
@ Antonio2011a Powinno być w porządku, jeśli pytasz dobrze - być może „jakich wskaźników jakości kodu tutaj szukasz?” wyjaśnij tylko, że chcesz dowiedzieć się więcej o tym, jak oni to robią. Dowiadujesz się o nich, a nie przeprowadzasz testu. Może działać, nawet gdy prosi o kod: „Czy mogę zobaczyć, jak wygląda twój kod?” zamiast „Chciałbym próbki dobrego kodu”.
Caleb
3

Cóż, to zależy. Zawsze lubiłem wiedzieć, gdzie idę do pracy.

Widzę rozmowę o pracę jako dwukierunkową. Firma dowiaduje się o tobie, a ty dowiadujesz się o firmie. Pytanie o kod może być trochę za dużo, ale zadawanie pytań związanych z programowaniem powinno być OK.

Na przykład nie zaakceptowałbym pracy, w której firma nie stosuje zwinnych technik lub TDD lub nie planuje przyjąć i zachęcać do takich praktyk. Doceniam również to, kiedy firma jest dumna ze swojego produktu i kodu - kiedy wydaje się, że ankieter czeka, aż poprosisz o obejrzenie go, więc ma pretekst, aby wyjaśnić wszystkie fajne rzeczy, które robią.

Patkos Csaba
źródło
Zgoda. Próbuję zagłębić się w narzędzia, których używają? Czy kierownictwo płaci za dodatkowe narzędzia (komponenty, narzędzia), których nie ma w wielu miejscach. Postawa wobec narzędzi open source jest zawsze dobra.
ozz
2

Haha, to zabawne pytanie. Nie obraziłbym się, gdyby ktoś poprosił mnie o próbkę kodu podczas wywiadu, ale prawdopodobnie też nie pokazałbym im żadnego kodu, chyba że poprosi o to z wyprzedzeniem, a ja będę miał czas na dokładne zaplanowanie.

Zdecydowanie rozumiem jednak zamiar zadawania takiego pytania. Jako osoba poszukująca pracy wcześniej poprosiłam Test Joela o przeprowadzenie wywiadu. Nie wiedzieli, co to jest, ale chętnie odpowiedzieli.

W niektórych miejscach zadawanie tego typu pytań może zwiększyć twoje szanse, a może zaszkodzić twoim szansom w innych miejscach. Piękno życia polega na tym, że jeśli zwiększy to twoje szanse, to jest to miejsce, w którym chciałbyś pracować. Jeśli to obniża twoje szanse, to i tak nie chciałbyś tej pracy.

Nie widzę nic do stracenia, grzecznie pytając i będąc w stanie wyjaśnić, dlaczego chcesz to zobaczyć.

Mark E. Haase
źródło
„Piękno życia polega na tym, że jeśli zwiększy to twoje szanse, to jest to miejsce, w którym chciałbyś pracować”. +1
Spidey
2

Zadałem to pytanie podczas moich dwóch wywiadów, w których twierdzili, że mają starszych deweloperów migrujących do asp.net mvc3 lub 4, lub gdy powiedzieli, że chcą mocno skomentowanego kodu. Za każdym razem odrzuciłem z powodu braku wiedzy na temat standardu kodu. Jedyny standard, jaki znalazłem, to to, czy działa kopiowanie i wklejanie go i będzie działać. Nie zadam tego pytania, jeśli robię nowy projekt lub muszę napisać fragment kodu niezależny od innych członków zespołu. Na pewno zobaczę kod, jeśli jestem zatrudniony do naprawy istniejącego oprogramowania lub funkcji i nie powiem tak, chyba że znam odpowiedź. Załóżmy, że nie pytasz, a oni mówią, czy możesz naprawić datepicker, aby rozpocząć od dzisiejszej daty. Kiedy patrzysz na starszy kod, nie widzisz jquery ani interfejsu użytkownika jquery, ale niestandardowy selektor dat, który ma wszystkie daty zapisane w pliku xml i co noc uruchamia się zadanie crona, aby zaktualizować w nim przyszłe miesiące. To spowodowałoby ból głowy, ponieważ kod do osiągnięcia tego jest mniejszy niż słowa w tym przykładzie. Jeśli masz zamiar popracować nad ich kodem, poproś o jego zobaczenie. Nie pytać jest jak cytowanie pracy z przekonaniem, że klient powiedział, że jest mała. Może posiadać 20 akrów ziemi, a ogrodnictwo na 1 akrze jest dla niego małe, ale ogrodnik nie może zapłacić 50 funtów tylko dlatego, że wszystkie jego małe prace zaczynają się od 50.

Farrukh Subhani
źródło
1

Zwykle pracuję dla firm, w których przynajmniej część ich pracy ma charakter open source, więc znalezienie próbek kodu jest banalne. Zastanawiam się, kto pracuje w firmie, a potem ustalam ich uchwyty online. Ponieważ ludzie używają tej samej nazwy ekranowej w kółko, łatwo jest znaleźć miejsce, w którym popełnili kod, bez względu na to, czy korzystali z Github, Bitbucket, czy gdzie indziej całkowicie.

Moja obecna firma ma mnóstwo kodu hostowanego na Github, więc łatwo było zobaczyć, z czym pracują, jak duża jest ich baza kodu i co wydaje się już nie być interesujące.

Nigdy nie prosiłbym o próbkę, po prostu dlatego, że pokażą ci najlepszy kod, jaki mają. To nie jest kod, z którym będziesz pracować. Prawdopodobnie mieści się w słoiku z dzwonkiem w zamkniętym pokoju. Będziesz pracował z niechlujnym kodem, z którym wiele osób musiało się bawić.

kcunning
źródło
0

To jest niesamowite, jeśli możesz to zdobyć. Czasami nie jest to możliwe bez umów typu NDA, ale zawsze warto spróbować. Aby zwiększyć swoje szanse, poinformuj ankieterów, że chcesz to zrobić z dużym wyprzedzeniem (kilka dni), aby mogli mieć coś do powiedzenia.

zaraz
źródło