Odbyło się wiele dyskusji wokół doskonałego pytania „ Czy wysoka reputacja w przepełnieniu stosu pomoże znaleźć dobrą pracę? ”. Natychmiast zgodziłem się z JoshKiem, że w zasadzie powiedział „ nie ” (wyjaśnię dlaczego), ale Joel wtrącił się z wieloma przekonującymi faktami, które skłoniły mnie również do jego głosowania.
Moje pytanie brzmi: jakich innych umiejętności (oprócz geniuszu technicznego) potrzebujesz od programisty? Aby zdobyć pracę lub ją zatrzymać .
Uważam, że geniusz nie jest wystarczający. Spotkałem wielu technicznych geniuszy w różnych firmach, dla których pracowałem, które zrobiły na mnie duże wrażenie, ale niestety w wielu przypadkach zostały po prostu zwolnione po kilku miesiącach lub umieszczone w wieżach z kości słoniowej (głównie z powodu wewnętrznego buntu innych programistów). Widziałem wielu cierpiących z powodu tego, co rozumiem.
Dlatego jestem wielkim fanem nietechnicznych pytań na stanowiska techniczne. Lubię wiedzieć, w jaki sposób kandydat będzie wchodził w interakcje z innymi osobami (w tym z pracownikami nietechnicznymi), ile uwagi będzie miał dla firmy, czy będzie pracował dla pożądanego rezultatu i tak dalej.
Chciałbym wiedzieć, czego potrzebujesz od programistów i DLACZEGO jest to ważne (w końcu zatrudniasz kogoś do pisania kodu, prawda? Dlaczego miałbyś chcieć, aby był asertywny?) . Idealnie byłoby, gdybyś wymyślił przykładowe pytanie, które zadałbyś podczas wywiadów na poparcie swojej odpowiedzi.
Odpowiedzi:
Doskonałe umiejętności komunikacyjne.
Jeśli twoi koledzy nie mogą bezpośrednio odczytać twojego mózgu, będziesz musiał móc powiedzieć im, co myślisz. Najlepiej zarówno ustnie, jak i pisemnie.
EDYCJA: Jednym ze sposobów na zobaczenie ich podczas wywiadu może być zapytanie ich, jakie są ich ulubione ramy do wykonywania X, a następnie powiedzenie, że muszą pracować nad projektem, w którym X mógłby być użyty, ale decyzja polityczna o zastosowaniu technologii Y (który jest wyraźnie starszy i ma pewne ograniczenia, które rozwiązuje X).
Jeśli skończy się to kłótnią na temat tego, dlaczego decyzja polityczna jest zła, masz wyraźne wskazanie, że ta osoba nie radzi sobie dobrze z decyzjami pragmatycznymi.
źródło
Praca w zespole / komunikacja:
Bez tych umiejętności nie możesz pracować w zespole, a jeśli nie, nie będziesz w stanie dostać się do firmy, która tego wymaga (i prawie wszystkie z nich oczywiście wymagają pracy zespołowej). Nadal możesz być niezależnym i pracować nad projektami, w których nie ma innych ludzi do pracy, ale nadal musisz komunikować się z ludźmi z innych firm.
Nawet w przypadku nauki, jeśli nie możesz komunikować się z wieloma różnymi ludźmi, np. W Internecie, możesz nie być w stanie radzić sobie lepiej w prawdziwym życiu iw społeczeństwie (bez względu na zawód), jest to utrudnienie.
edytuj> W wywiadzie praca zespołowa / socjalizacja / komunikacja jest naprawdę łatwa do sprawdzenia, może to być najłatwiejsza rzecz. Musisz tylko zadać kilka pytań, nie technicznych, pytań łatwych do odpowiedzi lub po prostu pytania o to, co kandydat myśli o czymś lub co lubi lub nie lubi w danej dziedzinie. Sprawić, by mówił. Zobaczysz.
źródło
Wytrwałość to umiejętność, o której rzadko widuję. I to jest umiejętność - umiejętność zmuszenia się do rozwiązania problemu, nawet jeśli nie widzisz końca. Wiele osób tego nie robi; działają tylko na rozpęd lub po prostu robią minimum, aby sobie poradzić. Niestety, nie można powiedzieć, czy dana osoba ma tę cechę, rozmawiając z nią. Naprawdę musisz być w stanie rozmawiać z innymi, którzy pracowali z tą osobą. Referencje mogą to zrobić, ale ta opcja nie zawsze jest dostępna.
źródło
To więcej cech niż umiejętności, ale prawdopodobnie sugeruję, że nadal warto je znaleźć u kogoś, kto odniesie sukces jako programista:
Wszechstronność byłaby kolejną cechą, którą tu nałożyłem. Czasami deweloper może być zmuszony do pełnienia ról poza zwykłym programowaniem, np. Analityk biznesowy, architekt lub tester. Wiem, że miałem różne części do projektów, w których robię coś innego niż projektowanie lub pisanie kodu, a to powinno być coś do zobaczenia w innym. Nie każdy może zaakceptować przejęcie tych innych ról. Zapytaj, jakie sytuacje miał w przeszłości deweloper, gdzie musiał wypełnić inną rolę i jak to się potoczyło.
Pokora byłaby kolejną, którą prawdopodobnie postawiłbym jako wymóg. Ego może powodować wiele problemów w niektórych miejscach i nie wszyscy mogą zaakceptować, że może być ktoś lepszy w czymś niż oni. Jeśli ktoś ma lepszy pomysł, niech tak się stanie. Możesz mieć próbkę kodu programisty, który poprosisz ich o krytykę i zobacz, jak dobrze mogą się poprawić lub nie.
Duma byłaby kolejnym, który mógłby tam położyć. Jest to w pewnym stopniu sprzeczne z poprzednią jakością, ale jeśli ktoś nie ma poczucia dumy ze swojej pracy, jaka to jakość? Niezadowolenie jest tu nieco inne, ponieważ prawdopodobnie wielu programistów potrafi być perfekcjonistami. Zapytaj, z jakiego poprzedniego projektu czują się najbardziej dumni?
Ważną umiejętnością do zobaczenia jest również motywacja . Co je napędza? Jak dobrze potrafią to wyrazić? „Office Space” ma następujący wiersz autorstwa Petera Gibbonsa:
Podejrzewam, że jest to coś, do czego wielu programistów i nie-programistów może się odnosić. Dlaczego wykonujesz swoją pracę? To może być dobre pytanie, ale poszukaj szczerości i autentyczności w odpowiedzi, ponieważ czasami mogą pojawić się konserwowane odpowiedzi, które trzeba dostrzec.
Ciekawość byłaby ostatnia na mojej liście do dodania. Chęć zobaczenia, jak coś działa, aby nauczyć się nowych technologii i wyjść poza strefę komfortu, to kolejne wyznaczniki tego, które można znaleźć u odnoszących sukcesy programistów. Krótka historia o tym, jak ktoś się rozwija, może być sposobem na dostrzeżenie tej cechy, chociaż innym jest spytanie go o coś, czego nie widzieli i sprawdzenie, czy mają „Cóż, to może być interesujące do zbadania” lub „ Och, bracie, już nie to ”.
źródło
1) Komunikacja jest prawdopodobnie najważniejszą umiejętnością dla każdego, w tym dla typów inżynierii oprogramowania. Te umiejętności komunikacyjne są równie ważne w kontaktach z menedżerami i klientami, jak w kontaktach ze współpracownikami.
2) Praca zespołowa to nieco inna umiejętność, która w dużej mierze zależy od pierwszej. Zasadniczo muszę ustalić, czy osoba, którą próbuję zatrudnić, odniesie korzyść dla zespołu jako całości, czy też będą jakieś konflikty osobowości, które potencjalnie zatrudniam. Nikt nie może przewidzieć przyszłości, ale nie można również zignorować znaków ostrzegawczych w wywiadzie.
Jedną z taktyk, których używam w procesie wywiadu, jest poproszenie osoby o opisanie jednego z trudniejszych problemów technicznych (o których można rozmawiać) i sposobu ich rozwiązania. Gdy rozmawiają przez proces rozumowania i jak odkryli problem, możesz lepiej zrozumieć, jak dobrze potrafią komunikować się na temat potencjalnie skomplikowanych rzeczy. Jeśli szukają dodatkowej pomocy w tym procesie, widzę to jako plus. Nikt z nas nie jest doskonałym technologiem. Jeśli problem, który wybrali, zakończył się konfliktem osobowości (co zdarzyło się tylko raz), możesz przejść lub zbadać nieco głębiej.
Pod wieloma względami proces rozmowy kwalifikacyjnej jest jak randka w ciemno. Obie osoby przybierają najlepszą minę, próbując dowiedzieć się, czy chcą spędzić więcej czasu z drugą grupą. Im bardziej rozmowa będzie przebiegać jak rozmowa, tym bardziej zrelaksowany będzie rozmówca; i w związku z tym lepiej zobaczysz, czy są dobrze dopasowane.
źródło
Chociaż jest to cecha, która może być bardziej odpowiednia dla zespołu niż dla indywidualnych programistów, myślę, że wiele mówi się o powiedzeniu: „Wielcy inżynierowie wysyłają”.
Jest to coś, co trudno byłoby zademonstrować w wywiadzie dla większości ludzi, ale gdybym przeprowadzał wywiad z kandydatem, który, na przykład, był autorem i wysłał znaczną aplikację open source, bibliotekę lub platformę i mógł elokwentnie mówić o dodatkowej rzeczy, która aby faktycznie ukończyć niebanalny projekt, musiałbym dać tej osobie przewagę nad konkurencją.
Przeciwnie, jeśli potencjalny kandydat wskazałby mi swoje konto na Githubie i zobaczyłem, że jest pełne niedokończonych, błędnych, zaniedbanych lub źle udokumentowanych projektów, miałbym dobry powód, by zignorować jego kandydaturę.
„Kawa jest dla bliskich”, jak powiedział kiedyś mężczyzna w filmie.
źródło
Ważna jest umiejętność komunikacji i pracy w zespole, ale dodam, że umiejętność zrozumienia wymagań klienta i zdobycia wiedzy o domenach biznesowych była bardzo ważna z mojego doświadczenia.
źródło
Zgadzam się, że komunikacja jest najważniejsza, ale doświadczyłem awarii doskonałego programisty, który nie pokazałby innym inżynierom wykorzystania jego procesów. Udało mi się powielić jego procesy i pokazać je innym, ale bez jego pomocy. Został zwolniony, ponieważ nie uczył.
źródło
To nigdy nie wystarcza.
Zdrowy rozsądek. Rozwiązywanie problemów Zainteresowanie technologią jako całością. Postawa robienia rzeczy we właściwy sposób. Trwałość. Gra zespołowa / komunikacja.
Oceń każdą umiejętność na 1-5. Jeśli masz minimum 3 i średnio 20+. Będziesz miał dobre życie jako programista. 25+ będzie udanym programistą. Mniej niż 10 i musisz poważnie pomyśleć o karierze w tworzeniu oprogramowania.
źródło