Kiedy bycie geniuszem technicznym nie wystarczy, aby odnieść sukces jako programista? [Zamknięte]

18

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.

Społeczność
źródło
Moja firma jest obciążona wieżami z kości słoniowej z pensjami z kości słoniowej dla ich mieszkańców :(
dr Hannibal Lecter
Widok jest ładny ze szczytu wieży z kości słoniowej :)
Wysoka reputacja sprawiła, że ​​otrzymałem zaproszenie do umieszczenia profilu w karierze StackOverflow, co doprowadziło do rozmowy od rekrutera, co doprowadziło do oferty przeprowadzki do Seattle :-)
Kevin Cline

Odpowiedzi:

22

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
Czy dodasz więcej szczegółów na temat komunikowania się z facetami nietechnicznymi (takimi jak kierownictwo lub klienci) na temat wysoce technicznych rzeczy? Obecnie czytam doskonałą książkę na ten temat zatytułowaną „Nawet geek umie mówić”.
Cóż, w gruncie rzeczy to tylko pytanie, czy możesz myśleć w SWOIM sposobie myślenia. Kiedyś odkryłem, że wyjaśnianie rozwoju oprogramowania jako „piszemy receptury dziewiarskie” dobrze pasuje do sposobu myślenia babć.
3
Zawsze preferuję kandydatów, którzy doskonale władają językiem angielskim i są gotowi poświęcić dodatkowy czas na pracę nad umiejętnościami pisania i mówienia. Z drugiej strony, jeśli on lub ona mówi lub pisze tak, jakby życie to kolejna aplikacja wdrożona na Twitterze, postaram się być uprzejmy, gdy pokażę im drzwi.
Adam Crossland,
@Pierre, czy ta książka jest dostępna online? Nie mogłem go znaleźć w Safari.
1
@ Pierre303 może Cię zainteresować „The Nerd Handbook”. randsinrepose.com/archives/2007/11/11/the_nerd_handbook.html . Autor ma bardzo interesujący blog.
15

Praca w zespole / komunikacja:

  • aby móc wyjaśnić swoje rozwiązania lub problemy
  • być w stanie współpracować z innymi ludźmi bez powodowania u nich złego samopoczucia (w jakikolwiek sposób) - sprawienie, by czuli się z Tobą w pracy, jest przyjemne

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.

Klaim
źródło
15

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.

Michael K.
źródło
+1 za komentarz dotyczący uporczywości - zastanawiam się, czy wysoki przedstawiciel SO korelowałby z uporem?
Gary Rowe,
@Gary - Przypuszczam, że mógłby, gdyby zasłużył sobie na odpowiedzi na pytania wymagające pewnej pracy do rozwiązania, a nie na pytania początkujących, w których brakuje średnika lub czegoś takiego. ;)
Michael K
12

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:

Osiem, Bob. Oznacza to, że kiedy popełniam błąd, przychodzi ośmiu różnych ludzi, którzy opowiadają mi o tym. To jest moja jedyna prawdziwa motywacja, żeby się nie męczyć, i strach przed utratą pracy. Ale wiesz, Bob, to sprawi, że ktoś będzie pracował tak ciężko, że nie zostanie zwolniony.

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 ”.

JB King
źródło
Dzięki milionowi, podczas gdy istnieją już genialne odpowiedzi, twoja była tą, której szukałem. Mam nadzieję, że więcej ludzi przyjedzie tutaj z większą liczbą umiejętności, które możemy rozwinąć, aby być lepszym programistą. (Przepraszam, nie mogę już dziś
7

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.

Berin Loritsch
źródło
6

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.

Adam Crossland
źródło
4

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.

Larry Coleman
źródło
2

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ł.

Dave
źródło
1

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.

Aseem Gautam
źródło