Czy „Zatrudnianie tylko najlepszych” to naprawdę praktyczna rada dotycząca normalnego programowania aplikacji na komputery stacjonarne? [Zamknięte]

61

W tle wykonujemy aplikacje inżynierskie dla komputerów stacjonarnych, z interfejsem AutoCAD podobnym do interfejsu użytkownika, coś podobnego do etabs .

Jedną z rzeczy, która naprawdę mnie wkurza, jest potrzeba zatrudniania najlepszych programistów? Na początek mamy duże trudności z rekrutacją; większość CV, które widzimy, albo robi proste aplikacje CRUD, albo dostosowuje SharePoint, co nie wydaje mi się, że wymaga dużo hardcorowego programowania. Nawet ci, do których dzwonimy na rozmowę, większość nie może wykonać sekwencji Fibonacciego i prostego wyszukiwania binarnego, a my jesteśmy na tyle uprzejmi, aby udzielać wskazówek i wyraźnie wyjaśniać problemy, aby kandydaci nie musieli szukać słownika, aby sprawdzić co oznacza „sekwencja Fibonacciego”.

To sprawiło, że pomyślałem: tak, potrzebujemy pewnego poziomu umiejętności programowania podczas wykonywania geometrii obliczeniowej / programowania liniowego i potrzebujemy pewnego poziomu umiejętności programowania podczas projektowania architektury oprogramowania / lub decydowania, który wzorzec oprogramowania użyć, ale poza tym , wiele z naszego kodu to tylko kod instalacyjny (myślę), co może zrobić ktoś znający się na programowaniu.

Biorąc pod uwagę, że naprawdę potrzebujemy teraz talentów programistycznych, a biorąc pod uwagę, że zatrudnianie programistów superstar jest bardzo trudne, chcę obniżyć swój standard i zatrudnić tylko takich sobie, co jest sprzeczne z tym, co głosi Joel .

Co myślisz?

Edycja: Nie musisz przepisywać całej biblioteki geometrii obliczeniowej / programowania liniowego; wszystko, co musisz zrobić, jeśli chodzi o moją aplikację, to umieć rzutować problemy na odpowiednie obliczeniowe geometryczne / liniowe terminy programowania i wiedzieć, kiedy / jak korzystać z istniejących bibliotek. Więc to nie jest tak trudne, jak się wydaje.

Graviton
źródło
53
Standardowa odpowiedź: może oferujesz zbyt niskie zarobki, a lepsi twórcy nie są zainteresowani pracą dla Ciebie? W każdym razie, jeśli masz problemy z ludźmi, którzy nie mogą wyszukiwać binarnie, to nie jest to problem z brakiem gwiazdek, zwykły koder powinien to zrobić.
quant_dev
15
Twoje
wielkie
13
Nie mogą napisać sekwencji Fibonacciego? Nie jest to wcale trudne ... ci ludzie nie mogą być programistami.
Ben B.,
6
Grawiton, wszystko sprowadza się do pensji. Jeśli (na przykład) zaoferowałeś potrójną wartość rynkową wynagrodzenia, wtedy ludzie chętnie porzuciliby pracę, aby przyjść do pracy dla ciebie. Nie sugeruję, że oferujecie TAKIE dużo, ale ilustruje to sens. Jeśli chcesz wznowić dobro, musisz za to zapłacić.
riwalk
7
@ user1525, ponieważ jest to coś trywialnego, programiści zwykle nie powinni mieć problemu z jego wdrożeniem (rekurencja lub brak rekurencji)
Darknight

Odpowiedzi:

110

Sugeruję, żebyś przestał zbyt często czytać Joela. To, co napisał na swoim blogu, jest sprzeczne z jego odpowiedziami na tej stronie, więc tak naprawdę nie uwierzyłem mu na słowo.

Co czyni supergwiazdę i dlaczego trzeba ją otworzyć, otwiera długą i doniosłą dyskusję. To elitarność i nie jest praktyczna.

Potrzebujesz osoby, która:

  1. Chciałbym robić to, co robisz
  2. Byłby entuzjastycznym programistą
  3. Mógłby się dowiedzieć, co trzeba zrobić, aby dobrze wykonywać swoją pracę

Reszta nie ma znaczenia.

Nie uwierzyłbyś, ilu jest młodych absolwentów, którzy nie chcą niczego innego, jak tylko zanurzyć się w projekt CS-silny i nigdy nie patrzeć na kodowanie aplikacji CRUD. Jakiś czas temu byłem jednym z nich, praktycznie marzyłem o dołączeniu do projektu dotyczącego rozwoju kompilatora, ale nie byłem w stanie go znaleźć. Dlaczego nie dać szansy jednemu z nich?

Nie wierzę, że AutoCAD został napisany przez superumiejętności. Większość udanych projektów została wykonana przez ludzi, którzy po prostu chcieli to zrobić i naprawdę tego chcieli.


większość CV, które widzimy, albo robi proste aplikacje CRUD, albo dostosowuje SharePoint

Czego można się spodziewać, jeśli wymaga tego większość miejsc pracy? Ludzie mogli studiować CS na uniwersytecie, a nawet byli w tym naprawdę dobrzy, ale nie można oczekiwać, że zapamiętają to, jeśli nigdy nie użyli tego w praktycznym programowaniu od 10 lat. Oczywiście nikt nie będzie co roku czytał starych książek o CS tylko po to, aby zachować świeżość, jeśli nigdzie nie wykorzystamy tej wiedzy.

user8685
źródło
11
Niesamowita odpowiedź!
33
Tak, w porządku, ale pracowałem z entuzjastycznymi ludźmi, którzy nie mają pojęcia. Są martwe, a ty nie chcesz ich w swojej organizacji. Więc niektóre testy umiejętności PODSTAWOWEJ do wyeliminowania naprawdę głupich szmugli są bardzo dobre.
szybko_niedz.
3
Ostatni akapit opisuje mnie w trójniku.
ozz
20
Widziałem wiele „testów umiejętności”, które były całkowicie bezużyteczne, a nawet zawierały rażące błędy (a ich wskazanie sprawiło, że nie zdałeś testu, gdy znalezienie i wskazanie błędów jest częścią naszej pracy jako programistów ...).
jwenting
2
@Developer Art, może to było dla ciebie szczęście? Jeśli nie możesz ich przekonać o słuszności pytania podczas rozmowy kwalifikacyjnej, wyobraź sobie, jakie problemy miałbyś w pracy.
Mark Ransom
41

Książka, która naprawdę mi się podoba, to po pierwsze złamać wszystkie zasady . Zawiera wiele informacji na temat różnic między przeciętnymi menedżerami a dobrymi menedżerami. Jedno z kluczowych spostrzeżeń, które powtarzali dobrzy menedżerowie, zostało podsumowane przez jednego z nich w zdaniu : Nigdy nie czekałem zbyt długo na znalezienie odpowiedniego zatrudnienia i nigdy nie zwolniłem wystarczająco szybko. Tak, zatrudnianie zajmuje dużo czasu, ale warto.

Drugim punktem, o którym należy pamiętać, jest to, że mierząc wydajność projektu, istnieje szczyt produktywności dla zespołów 5-8 osób. Nie powrócisz do tej samej produktywności, dopóki nie będziesz mieć zespołu ponad 20 osób. Bądź bardzo, bardzo ostrożny, jeśli chodzi o powiększenie zespołu powyżej wielkości, w której działa dynamika małego zespołu. A jeśli zamierzasz pozostać poniżej tego progu, naprawdę chcesz, aby te 5-8 osób były dobre.

Oba punkty zdecydowanie przemawiają za utrzymaniem odpowiedniego zatrudnienia.

btilly
źródło
2
+1 za ten cytat. Doskonale odzwierciedla to, co udało mi się zrealizować w ciągu ostatnich kilku lat.
Kris,
co ciekawe ze szczytem 5-8, to to, że jak tylko zdobędziesz 10 osób, możesz po prostu podzielić :) Oczywiście praca również musi zostać podzielona, ​​a najlepiej nie losowo ...
Matthieu M.
@ mattieu-m: Wiele osób ma tę teorię. Jeśli te dwie grupy rzeczywiście muszą skończyć intensywną interakcję, to nie działa. Jeśli można im dać naprawdę odrębne obawy, to działa dobrze.
btilly
26

Wszyscy twierdzą, że „zatrudniają tylko 1 najwyższy percentyl”. Gdyby tak było, 100% zatrudnionych byłoby w „najwyższym 1 percentylu” wszystkich osób, więc 99% wszystkich osób byłoby bezrobotnych (w dowolnej dziedzinie). Ponieważ wyraźnie tak nie jest i wszyscy doświadczyliśmy ludzi, którzy najwyraźniej nie należą do tej grupy (dlaczego w ogóle zadajesz to pytanie ...) wiemy, że to nieprawda.

W rzeczywistości organizacje złożone wyłącznie z takich osób byłyby bardzo niestabilne. Za dużo ego, za dużo sprzecznych pomysłów. Albo się rozpadnie, bo każdy robi swoje, popadnie w niekończące się teoretyczne dyskusje o względnych zaletach wszystkiego, albo przerodzi się w ciągłe krzyczenie, gdy nastroje wybuchną, gdy trzeba będzie podjąć decyzję.

jwenting
źródło
13
Problem w tym, że tylko dlatego, że zatrudniasz tylko 1% najlepszych kandydatów, którzy się z tobą ubiegają, nie oznacza, że ​​zatrudniasz 1% najlepszych programistów. 8 ') Jeśli chodzi o * superbohaterów , są oni często uważani za problem dla reszty drużyny. Jedna osoba pracująca przy 200%, ale redukująca 5 osób do 50%, nie jest zyskiem netto.
Mark Booth
2
+1: Statystycznie większość ludzi jest w granicach kilku punktów procentowych średniej. Każdy, kto tego nie docenia, żyje w świecie snów. I masz całkowitą rację: ludzie, którzy są zbyt daleko od średniej, zakłócają spokój, niezależnie od tego, czy są zdolni powyżej czy poniżej średniej.
Satanicpuppy
5
@Satanicpuppy: Statystycznie, biorąc pod uwagę normalny rozkład, około dwóch trzecich ludzi jest w granicach jednego standardowego odchylenia od średniej, a około 98% mieści się w dwóch standardowych odchyleniach. Nie mówi to nic o tym, czym jest odchylenie standardowe, ani w rzeczywistości, czy dowolny rozkład jest normalny. Zdolność programistyczna wśród programistów jest zdecydowanie wypaczona, a nawet może być właściwym ogonem normalnej dystrybucji.
David Thornley
11
Głównym powodem, dla którego talent programisty wśród programistów może być wypaczony i / lub prawy ogon normalnej dystrybucji byłby, gdyby talent programistyczny u ludzi był normalnie dystrybuowany. Podpróbka ludzi, którzy zostali programistami, jest stronniczą próbką tego rozkładu; to znaczy ludzie, którzy są przeciętni lub gorzej programują, rzadko stają się programistami. Może to sprawić, że „przeciętny” programista będzie miał ponadprzeciętny talent w stosunku do ogółu populacji, a także sprawi, że talent do dystrybucji programistów będzie wyglądał jak prawy ogon normalnej dystrybucji.
Michael McGowan
2
@david: „Nikt nie może być tak daleko poniżej średniej”? Chciałbym pracować tam, gdzie pracujesz.
Satanicpuppy
25

Pierwszą rzeczą, o którą musisz zapytać, jest to, dlaczego otrzymujesz CV, które nie spełniają wymaganych standardów. Pracowałem z wieloma dobrymi ludźmi, więc są tam, a aplikacja wydaje mi się bardzo interesująca. Jeśli nie możesz znaleźć ludzi, którzy potrafią wykonywać sekwencje Fibonacciego i wyszukiwanie binarne (co jest trudniejsze niż się wydaje; według Knutha upłynęło kilka lat między pierwszą publikacją a pierwszą poprawną publikacją), robisz coś, aby poprowadzić dobre z dala.

Czy potrzebujesz więcej umiejętności, niż jesteś w stanie zapłacić? Czy reklamujesz się w niewłaściwych miejscach? Czy Twoja firma jest nieatrakcyjna ze względu na lokalizację lub reputację? To twój pierwszy i najbardziej podstawowy problem, który musisz pilnie rozwiązać. Ty i twoi koledzy bez wątpienia znacie dobrych ludzi, którzy dla was nie pracują. Pokaż im, co masz, i zapytaj, czy byliby kuszeni, a jeśli nie, dlaczego nie. Być może jesteś zbyt blisko problemu, aby zrozumieć go samodzielnie.

Nie zatrudniaj ludzi, ponieważ są najlepsi. Zatrudniaj ludzi, ponieważ będą mogli zrobić coś, co chcesz. Jeśli zatrudnisz miernego, bo to wszystko, co ma zastosowanie, powoli zaczniesz tracić dobrych ludzi i skończysz z ludźmi, których algebra drży próbując robić rzeczy z geometrią obliczeniową. (Zatrudnienie przeciętnego, ponieważ masz pracę dla kilku miernych programistów, to inna sprawa, ale musisz być w stanie zatrudnić wysokiej jakości ludzi tam, gdzie ich potrzebujesz).

David Thornley
źródło
7
Ponieważ działy HR są w dużej mierze niekompetentne w selekcji kandydatów na oprogramowanie. Wymagania: 10 lat pisania kawy, 40 lat programowania PHP, wykształcenie: BS / BA
Incognito
1
@ user1525: Równie dobrze może to być niekompetencja HR, ale ważne jest, aby dowiedzieć się, dlaczego i jak to naprawić (lub przekonać się, że nie można tego naprawić, więc jasne jest, że nadszedł czas, aby wskoczyć na statek). Nie wyciągałbym pochopnych wniosków. Twoja odpowiedź sugeruje inne podejście: poproś dobrych ludzi o przesłanie CV i zobacz, co HR z nimi robi.
David Thornley
18

„większość nie może wykonać sekwencji Fibonacciego i prostego wyszukiwania binarnego”

Twoje kryteria są z pewnością błędne. W mojej grupie wszyscy jesteśmy fizykami lub inżynierami. Założę się, że nikt nie mógł wyszukiwać binarnie, ponieważ nie uczestniczyliśmy w kursach CS i w prawdziwym życiu korzystamy z biblioteki. Powiedziałbym nawet: ktoś, kto sam pisze binsearch, nie wie, jak się skupić na ważnych rzeczach.

Ma to o wiele większe znaczenie, jeśli kandydat jest mądry i pasuje do grupy. Jeśli chcesz sprawdzić jego talent programistyczny, daj mu pracę do wykonania w domu. Zwróć uwagę, jak długo to trwało, i omów wyniki, aby dowiedzieć się, czy kandydaci są prawdziwą pracą.

Michael
źródło
3
Nie można oczekiwać, że wnioskodawca dokładnie przeszuka binarnie, ale jeśli możesz dać mu pewne wskazówki, powinien on być w stanie się zbliżyć. IMO, ciekawiej jest zobaczyć, jak ludzie próbują rozwiązywać przedstawione im wyzwania, niż mieć encyklopedię w głowie.
dpk
11
Z wykształcenia jestem fizykiem i mogę wyszukiwać binarnie z zasłoniętymi oczami i jedną ręką związaną za moimi plecami. Przepraszamy, ale nie wiem, jak napisać prostą implementację wyszukiwania binarnego jest ... kiepska. Żadnego innego słowa, by to opisać, po prostu kiepskie.
quant_dev
tak masz rację. Wyszukiwanie binarne, przynajmniej podstawowa idea, może być rzeczywiście wykonane. Ja też mogę to zrobić.
Michael
... przynajmniej podstawowy pomysł (chociaż nie mogłem zrobić Fibonacciego bez uprzedniego spojrzenia na to, co to było). Ale taki test daje przewagę ludziom, którzy właśnie uczęszczali na zajęcia cs lub po prostu przygotowali pytania przypadkowo. Bardziej przydatne jest podanie kandydatom prawdziwego przykładu programowania. Pokazuje, w jaki sposób rozwiązują bardziej złożone problemy bez natychmiastowej presji, a także może pokazać kandydatom, jakiego rodzaju pracy oczekujesz od nich (wybierz dobry przykład). O wiele bardziej przydatne niż pytania podręcznika IMHO.
Michael
2
Nie przejmowanie się definicją sekwencji Fibonacciego na czubku głowy nie jest niepokojące. ALE niemożność napisania programu do jego obliczenia po wyjaśnieniu jest niepokojąca (nawet jeśli wszystko, czego oczekujesz, to obliczenia sum częściowych w prostej aplikacji CRUD!).
Stephen C. Steel
13

Myślę, że „zatrudnianie najlepszych” staje się zbyt wielkim kultem.

Większość prac programistycznych jest rutynowa i nie jest kreatywna. Nawet podczas pracy nad naprawdę kreatywnymi nowymi projektami. Większość to szelma i często oparta na wzorach. dotyczy to szczególnie interfejsu użytkownika.

Większość współczesnych systemów wymaga tak wielu osób, aby je napisać, że z natury rzeczy wszystkie nie mogą być najlepsze. Większość ludzi jest przeciętna, nawet jeśli nie są, nadal muszą wykonywać wiele zadań „przeciętnej” osoby.

To powiedziawszy, wymaganie podstawowej kompetencji i minimalnych rozsądnych wymagań nie jest nierozsądne i nie jest czymś, na co należy pójść kompromis.

Pomyśl o rutynowej operacji: w zależności od tolerancji ryzyka prawdopodobnie wolałbyś, aby wykonał ją przeciętny lekarz, niż czekać 10 lat na dziekana szkoły medycznej, aby to zrobić. To nie znaczy, że powinieneś pozwolić ordynansowi wykonać operację.

Uri
źródło
Nie można się spierać ... ale „przeciętny” lekarz, który wykonał setki lub tysiące tego rodzaju operacji, może być lepszy niż Dziekan szkoły medycznej, który może mieć więcej wiedzy, ale nie prawie doświadczenia
JoelFan
8

„Zatrudnianie najlepszych” zwykle oznacza „zatrudnianie najlepszych, którzy są obecnie w przybliżeniu dostępni tam, gdzie jesteśmy” i oznacza różne rzeczy dla różnych firm. Niektórzy chcą koderów Rockstar, inni chcą skrupulatnych inżynierów oprogramowania, a następny chce doświadczonych rzemieślników oprogramowania. Nie ma „uniwersalnego najlepszego”, więc miej to na uwadze, a może Twoja specyfikacja pracy sugeruje, że szukasz jednego typu programisty, a wywiad mówi, że szukasz innego typu programisty. Nagle nie dostajesz zapałek.

To powiedziawszy, nie lubię pracować z tak bardzo programistami. Tak więc nie ma to nic wspólnego z doświadczeniem (być może programowali od 20 lat i nadal nie są w tym zbyt dobrzy), ale wszystko, co dotyczy talentu i entuzjazmu. Jeśli tak samo dotyczy któregoś z tych dwóch, masz problem. Nie ma również sensu zatrudniać kogoś, kogo członkowie muszą przerobić, ponieważ kod nie jest wystarczająco dobry. Więcej oparzeń na fotelach nie zawsze jest w odpowiedzi, więcej oparzeń na fotelach może niestety oznaczać więcej pracy dla lepszych członków zespołu, gdy próbują wykonywać swoje zadania i posprzątać bałagan, który dostarczył tak programista .

Niektórzy ludzie nie wydają się być gwiazdami rocka, ale są solidnymi programistami średniego poziomu. Dobrze jest mieć ich w zespole i nie o to mi chodzi w przypadku „takiego programisty”. Ten ostatni to ktoś, kto ledwo unika zwolnienia każdego roku w czasie przeglądu wyników.

Timo Geusch
źródło
1
ugh, nawet termin „programista rockstar” sprawia, że ​​chcę się rzygać.
ozz
6

Jako typ menedżera zgadzam się, że zatrudnienie „1%” nie jest praktyczne i nie jest konieczne. Radzę wynająć odpowiedni zespół, który zbuduje i utrzyma twój produkt (mogą to być dwa bardzo różne zespoły, ponieważ kompilacja kontra utrzymanie różnią się bardzo pod względem potrzeb)

Zdecydowanie sugeruję, abyś zidentyfikował osoby, które obecnie masz w zespole, które są „kluczowymi ludźmi” (np. Załatwiają sprawy, mają dobre nastawienie, mogą dobrze pracować z niepewnością / wysokimi wymaganiami itp.), A następnie zatrudniają ludzi, których mają pracował w przeszłości (i oczywiście szacunek). To eliminuje wiele niepewności wokół procesu wywiadu i pomaga żelować zespół.

Ponadto, bardziej „długoterminowe” - dużo zainwestuj w program stażystów. Jeśli Twój zespół programistów liczy 20 osób, zdobądź 5 stażystów rocznie i daj im prawdziwą pracę. Każdego roku przynieś jeden lub dwa, które ci się podobają, i przynieś jeszcze 5 losowych zmiennych. Jest to prawdopodobnie najlepszy sposób, aby utrzymać zespół pełen dobrych programistów. Następnie możesz zatrudnić na zewnątrz oportunistycznie i podnieść poprzeczkę tym kandydatom.

Jak już wspomniano, zwróć uwagę na proces rozmowy kwalifikacyjnej. Poproś kandydatów o napisanie kodu (lub lepiej, przejrzyj swoje rozwiązanie problemu „1 godzina zabierz do domu”), aby zjedli lunch z zespołem. Poznaj ich umiejętności techniczne i interpersonalne. I nigdy nie bój się powiedzieć „nie”, nawet jeśli desperacko pragniesz 20 osób do dużego projektu, który rozpocznie się w przyszłym tygodniu.

Al Biglan
źródło
6

Z mojego doświadczenia wynika, że ​​zasada Paretto dotyczy również programowania: 80% pracy wykonuje 20% programistów i odwrotnie. OK, liczby mogą być przesadzone. W rzeczywistości będziesz mieć około 20% pracowników wykonujących 50% pracy (przez pracę mam na myśli dobrą pracę, a nie tylko linie kodu). To właściwie bardziej krzywa dzwonowa. Tak więc w drużynie złożonej z 10 osób będziesz miał 1 bohatera, 2 wspaniałych facetów, 4 przeciętnych i 2-3 żałosnych.

Wiele firm używa krzywej Bell do ważenia ocen. Tak więc bez względu na to, jak bystrzy są twoi kandydaci, spadną na swoje poziomy. Nie możesz mieć zespołu, w którym wszyscy są na tym samym poziomie. Nie zdarza się

Burhan Ali
źródło
2
+1, zgadzam się. Ale myślę, że pytanie brzmi: czy potrzebujesz tych „żałosnych” (np. Do morale zespołu lub cokolwiek innego), czy też zespół bez nich poradziłby sobie tak dobrze? Czy potrafisz je rozpoznać podczas rozmowy kwalifikacyjnej?
nikie
10
Określ żałosne. Jeśli są dobrymi łobuzami, którzy wykonują nudne chrząknięcie, ale nie potrafią podskoczyć z podziwu, nadal jesteście nimi. Ale jeśli są po prostu beznadziejni i nic nie mogą zrobić, to marnują miejsce.
Szybko_niedz.
Jedynym powodem, aby zachować te żałosne, jest to, że nie można kogoś lepszego zastąpić. Robią to, co nazywamy „pracą osła”: niewielkie lub masywne zmiany, które nie wymagają wiele przemyślenia.
DPD
1
Czy można je znaleźć w wywiadzie? Tak, w zależności od umiejętności ankietera. Pozwoliłem im przejąć kilka programów i problemów z tbookami. Jeśli przejdą ten poziom, daję im bardziej złożone problemy, aby ocenić, czy mogą myśleć. Żałosne mogą być dobre w składni, ale tylko dlatego, że uczą się tego na pamięć, ale tak naprawdę nie rozumieją. Będą flop przy rozwiązywaniu problemów. Niektórzy powiedzą ci, że nie potrafią myśleć samodzielnie i mogą pracować tylko w języku Ctrl + C, Ctrl + V
DPD
4
Drony pracujące na osiołach przynajmniej działają. To wtedy, gdy chcą ponownie napisać 10 lat opracowanych rzeczy w Haskell z kilkoma linkami do OCaml, w ciągu 3 tygodni, a wszystko, czego dotykają, zmienia się w cr * p. W takim razie NAPRAWDĘ NIE CHCESZ!
szybko_niedz.
4

Jest tu już wiele odpowiedzi, ale myślę, że jest jeszcze jedna kwestia, która wymaga omówienia: wpływ, jaki ma zatrudnienie tak bardzo chłopaków na jakość oprogramowania i jak znacznie utrudnia to życie jako menedżera.

Odpowiedź na pytanie „czy istnieje potrzeba zatrudnienia najlepszych programistów?” jest zawsze dużym tłuszczem TAK. Oczywiście w rzeczywistości nie zawsze jest to możliwe. Niebezpiecznym błędem, który, jak myślę, popełniacie, nawet rozważając to pytanie, jest myślenie: „nasze oprogramowanie jest tak proste, że nawet tak facet może to zrobić”. To jest źle.

Twoje oprogramowanie zostanie zrobione, nie wątp, ale oczekuj bardzo różnych wyników od doskonałego zespołu niż od tak-takiego zespołu. Będziesz mieć więcej błędów, więcej problemów z wydajnością, więcej problemów z utrzymaniem i skalowalnością itd. Będziesz musiał opiekować się swoimi tak bardzo chłopakami przez bardziej złożone problemy. Będziesz musiał opiekować się dziećmi, aby podejmować właściwe decyzje dotyczące architektury.

Jeśli to zaakceptujesz i będziesz gotowy, aby to zarządzać, nie ma problemu. Po prostu bądź przygotowany na proces i na wyniki.

hbatista
źródło
+1. Tak. Pomysł, że można zatrudnić ludzi, którzy nie potrafią nawet napisać przeszukiwanie binarne z pomocą i mieć je mieć coś innego niż czysta ciężar - ujemny producentów netto, prawdopodobnie - jest kompletnie absurdalne.
Tom Anderson
3

Myślę, że tak naprawdę nie jest problemem zatrudnienie wspaniałego programisty. Prawdziwym wyzwaniem jest, aby uczynić je chce pracować dla Ciebie.

Czy istnieje potrzeba zatrudnienia najlepszych?
Tak mi się wydaje. Świetny programista to nie tylko ten, który wszystko załatwia na czas. Nie tylko taka osoba jest o wiele bardziej produktywna niż inni. Świetny programista jest także przykładem i po prostu inspiruje innych członków zespołu. Inne mogą znacznie się rozwinąć podczas pracy z nimi.

OK, więc obniżysz swoje standardy. To fajnie, prawdopodobnie zmienisz zdanie po zatrudnieniu naprawdę kiepskiej osoby. Ten, który bezbłędnie odpowie na wszystkie twoje pytania CS, ale który tak naprawdę nie może napisać jednej linii kodu produkcyjnego. Powodzenia z tym :)

Paweł Dyda
źródło
3

Cofnijmy się o krok.

Co próbujemy zrobić Napisz oprogramowanie.

Dlaczego uważamy, że musimy zatrudnić najlepszych? Ponieważ ten cholerny Arnold nie potrafił wydostać się z mokrej papierowej torby, a teraz SQL jest zepsuty i nie mogę się zalogować.

Okej, więc co jest najlepsze ? Nie wiem, to prawdopodobnie ktoś, kto chce dużo pieniędzy i ma życiorys długości sześciu stóp z dużym portfolio i pracował w google czy coś takiego. Powinien mieć stopień naukowy, a może kilka liter na końcu swojego imienia. Tak, dla mnie to brzmi najlepiej, a najlepiej, mam na myśli kogoś, kto nie jest tym cholernym dzieckiem Arnolda. Aha, a on powinien wiedzieć, jak zrobić naprawdę ciężkie badziewie, o którym słyszałem w szkole, na przykład „napisz bąbelek” lub jak to nazywają. Poproszę jednego z pozostałych facetów, aby wymienił kilka trudnych rzeczy, które musieli robić w szkole, tak.

Wygląda na to, że po prostu nie chcesz tego cholernego dzieciaka Arnolda? Czy ty Mam dość błędnego kodu, a załatwianie spraw zajmuje wieczność, a nowi faceci, z którymi rozmawiam, mówią mi, że muszę wszystko napisać od nowa!

Zgadza się, więc o co prosisz cholernego dzieciaka Arnolda? Utwórz stronę PHP, napisz jQuery, poproś PHP, aby wykonał podstawową CRUD z MSSQL i zmienił kolory tła.

Czy to brzmi jak zadanie doskonale dostosowane wyłącznie do najlepszych? Jestem pewien, że najlepsi mogliby to zrobić, ale prawdopodobnie każdy, kto ma odpowiedni zestaw umiejętności, który do tego pasuje, mógłby to zrobić.

Więc nie potrzebujesz tego, co najlepsze? Tak, po prostu potrzebuję kogoś z zestawem umiejętności, który spełni moje cele.

O. Tak.

Incognito
źródło
@ user1525, to nie jest aplikacja CRUD. To oprogramowanie inżynierskie.
Graviton
Nie zawsze. Wiele zadań tam nie wymaga znajomości struktur danych, algorytmów ani złożoności obliczeniowej. Oczywiście nie są to miejsca pracy w wyszukiwarce Google, ale istnieje na to ogromne zapotrzebowanie. Wystarczy spojrzeć na większość ogłoszeń na tablicach ogłoszeń: „Potrzebuję wtyczki jquery” lub „daj mi aplikację na iPhone'a, która wygląda jak te psd”. Ludzie albo chcą najlepszych, albo najtańszych.
Incognito
3

W tytule pytania jest mowa o „normalnej aplikacji komputerowej”, ale tekst mówi o potrzebie zastosowania wiedzy z zakresu geometrii obliczeniowej i programowania liniowego. Są to obszary zastosowań, w których powstały ogromne, wieloletnie programy badawcze z ogromnymi konsekwencjami społecznymi wszelkich postępów (przypominanie, alokacja zasobów programów liniowych ). W rezultacie istnieje wiele wyrafinowanych podejść do rozwiązywania problemów w tych obszarach, które działają bardzo dobrze.

Zły wynajem

  • być może nawet nie słyszałem o tych klasach problemów,
  • może nie znać typowych rozwiązań,
  • prawdopodobnie nie wiedziałby o lepszych rzeczach, które tam są (wskazówka: większość studentów nigdy nie słyszy o fantazyjnych rzeczach, jeśli w ogóle słyszy o problemach), i
  • prawie na pewno zajęłoby wieki wdrożenie takich rzeczy (biorąc pod uwagę, że widziałem, jak niektóre z nich prowadzą całe seminarium dla absolwentów na temat struktur danych, w tym profesora).

Innymi słowy, zastanów się, czy naprawdę pracujesz nad czymś dla pieszych. Jeśli tak, świetnie, zatrudnienie powinno być znacznie łatwiejsze. Jeśli tak nie jest, wyróżnij się na kogoś, kto może zrobić to, czego potrzebujesz.

Phil Miller
źródło
nie musisz przepisywać całej biblioteki geometrii obliczeniowej / programowania liniowego; wszystko, co musisz zrobić, jeśli chodzi o moją aplikację, to umieć rzutować problemy na odpowiednie obliczeniowe geometryczne / liniowe terminy programowania i wiedzieć, kiedy / jak korzystać z istniejących bibliotek.
Graviton
2

Na pewno nie jestem programistą gwiazd według standardów Joela. Niemniej jednak w ciągu 20 lat kariery programisty napisałem całkiem udane projekty. Mógłbym rozwiązać twoje pytania. Ale mniej z mojego doświadczenia w pracy, gdzie w rzeczywistości wiele bardziej skomplikowanych prac wykonuje się, prosząc o to bazę danych lub funkcję biblioteki.

Ale jeśli zdecydujesz się zatrudnić mniej doświadczonych ludzi, powinieneś rozważyć zastosowanie łatwych w obsłudze technologii. Na przykład, jeśli planujesz używać C ++ dla całego projektu, ogranicz część C ++ do bibliotek napisanych przez twoich najlepszych ludzi i pozwól innym zaimplementować interfejs użytkownika w Visual Basic.

Thorsten Müller
źródło
2

Zapisz wartości, których szukasz w pracowniku, który dołączy do twoich szeregów.

Kiedy jedyną docenianą wartością są kompetencje programistyczne, szybko znajdziesz się w otoczeniu ludzi, którzy właśnie to cenią. Ponieważ najbardziej prawdziwie kompetentni programiści mają bardziej rozbudowany system wartości, powstrzymają się od dołączenia do zespołu.

Jednak bardziej prawdopodobne jest, że szukasz innowacyjnych, kreatywnych, godnych zaufania, erudycyjnych, ciekawych, samouczących się, towarzyskich, kompetentnych i oddanych osób. Pokaż, że Twoja firma rozumie i szanuje te wartości i jest gotowa pomóc swoim pracownikom w ich dalszym rozwoju.

Zrozum i zaakceptuj wartości swoich obecnych pracowników i przekaż je w aplikacjach o pracę. Dobre firmy o zrównoważonym systemie wartości przyciągają dobrych pracowników.

Dibbeke
źródło
-1: jeśli powiedziałbyś (i OP mówił o) pieniądze, oczywiście, to miałoby sens. Nie rozumiem jednak, w jaki sposób ta odpowiedź mu by pomogła. Mówisz w zasadzie, że nie włożył wystarczająco dużo marketingu w swoją aplikację, jeśli dobrze rozumiem? Cóż, może to trochę pomogłoby, ale zwykle nie widzę wielu wysoce kompetentnych ludzi, którzy nie przykładają co najmniej rozsądnej wartości do… duh… kompetencji? .. jak powiedziałem, zastąp „kompetencje programistyczne” pieniędzmi, a twoja odpowiedź ma sens, ale przepraszam, że nie rozumiem.
n1ckp
Jeśli nie rozumiesz mojego komentarza, być może nie powinieneś go modyfikować. W każdym razie to, co mam na myśli, jest dość proste. Z czasem poznałem całkiem znakomitych programistów. Znają swoje języki, algorytmy, matematykę, fizykę ... Jednak to, co ich wyróżniało, to przede wszystkim zainteresowanie nie tylko rzemiosłem. Często cenią ciekawość siebie i innych. Widzą niezależną erudycję jako ważną cechę (lub wartość) lub są inspirowani przez kreatywnych ludzi wokół nich. Często wartości te są ważniejsze niż ich dochód.
Dibbeke
@Dibbeke: cóż, zmniejszyłem to również częściowo, ponieważ nie widzę, jak to się ma do pytania. Fajna rant i nie zgadzam się z twoim ostatnim komentarzem (chociaż twoja odpowiedź to coś innego), ale nadal nie rozumiem, w jaki sposób pomógłby OP lub odpowiedzi na rzeczywiste pytanie.
n1ckp
@ n1ck Kiedy powiedziałeś marketing, zacząłem się zastanawiać, czy oparcie procesu rekrutacji na podstawowych wartościach jest naprawdę takie samo. Nie wiem, ale zdaję sobie sprawę, że na budowę społecznościowej sieci zaufania i szacunku duży wpływ ma to. To z kolei wpływa na reputację Twojej firmy i pomaga przyciągnąć najlepszych programistów.
Dibbeke
@Dibbeke: nie jestem pewien, czy dostałem twój ostatni komentarz, ale myślę, że przynajmniej się z tobą zgadzam. Ale znowu, nie jestem pewien, czy jest to pomocne dla PO (chociaż teraz widzę, jak to się ma do pytania). Co sprawia, że ​​mówię, że nigdy nie mówił nic o swojej firmie, więc może to może być przyczyną, że jego firma ma złą reputację, ale myślę, że przeskakujesz do wniosków ...
n1ckp
1

W każdej organizacji masz osoby z większym doświadczeniem i osoby z mniejszą liczbą osób. Mało tego, ale ekspert w jednej dziedzinie może być nowicjuszem w innej. Pewnie, że entuzjastyczny amator może wyrządzić więcej szkody niż pożytku bazie kodu, ale tak właśnie się uczą - od naprawiania błędów i omawiania swoich doświadczeń z bardziej doświadczonymi kolegami.

Moja sugestia byłaby taka, że ​​zamiast próbować zatrudnić gwiazdy, starasz się zatrudnić ludzi, którzy są dość bystrzy, pasują do kultury Twojej firmy, chętnie się uczą i doceniają własne ograniczenia.

Mark Booth
źródło
1

Z pewnością powinieneś dążyć do zatrudnienia tylko najlepszych. Nie oznacza to automatycznie, że odniesiesz sukces - jest tylko tylu „najlepszych” do obejrzenia, a w bitwie znajdą się zwycięzcy i przegrani, aby ich przyciągnąć. Wiele z tego wynikać będzie z twoich umiejętności i chęci ciężkiej pracy nad problemem oraz dostępnych zasobów.

Rezygnacja przed rozpoczęciem jest najpewniejszym sposobem na przegraną.

Mark Ransom
źródło
1

Wyszukiwanie binarne jest interesującym problemem, ponieważ dobrze wiadomo, że większość programistów będzie miała trudności z napisaniem go poprawnie ( Bently pisze o tym w Programming Pearls ). Być może testowanie go nie jest takie złe, o ile nie wyklucza się kandydatów z powodu ich nierozwiązania. Jeśli rozwiążą go szybko i poprawnie, to przynajmniej wskaże, jakiego rodzaju programistą są, abyś miał więcej informacji w tym konkretnym przypadku.

Zaraz
źródło
1

musisz zatrudnić najlepszych. ale termin ten był wielokrotnie cytowany z kontekstu. musisz znaleźć najlepszego kandydata z umiejętnościami wymaganymi na tym stanowisku, a nie najlepszego programistę w sensie ogólnym. Rozwój oprogramowania jest szeroki i nie każda pozycja wymaga takiej samej wiedzy technicznej.

Zadaj sobie to pytanie (już to zrobiłeś ...): Jeśli masz innego inżyniera na tym samym stanowisku przez 5 lat, czy spodziewałbyś się, że pamięta serię Fibonanci i wyszukiwania binarne?

jeśli odpowiedź brzmi „nie”, zmień wzór rozmowy. Być może musisz znać kilkanaście algorytmów wyszukiwania, jeśli chcesz pracować z aplikacją wyszukiwania, taką jak Google lub Bing. Wszyscy inni po prostu używają map.get („”);

kierujcie swoje wywiady do tego, czego potrzebuje stanowisko, a nie dobrego programistycznego podręcznika.

Ojej
źródło
1

Jeśli naprawdę nie zależy Ci na jakości, sugeruję skorzystanie z jednej z witryn outsourcingowych i rozpoczęcie od małych projektów. Następnie możesz zapłacić im, jeśli mogą wykonać pracę, i mieć łatwy sposób na zwolnienie za kaucją, jeśli nie mogą.

Zastanawiam się jednak, czy w aplikacjach inżynierskich jest tak dużo rutynowego kodowania. Mogą być bardzo złożone, a większość programistów nie jest tak dobra w zarządzaniu złożonością. Możesz łatwo utworzyć wiele natychmiastowych, starszych kodów, które będą wiązać Twój zespół przez wiele lat. Zasadniczo pierwsi pracownicy nowego projektu są najważniejsi i nadadzą ton całemu projektowi.

Brian Ślesiński
źródło
0

Całkowicie zgadzam się z większością powyższych uwag dotyczących dopasowania osoby do problemu. Zwykle skutkuje to długoterminowym związkiem, a nie wynajęciem supergwiazdy do pracy nad regularnym problemem - co tylko frustruje go, że szybko odchodzi.
Powiedziawszy to, zawsze powinieneś próbować zatrudnić dla swojej firmy, a nie na konkretne stanowisko. Ponieważ ten sam facet prędzej czy później będzie przełączał się między zespołami z osobistymi kontaktami itp., A może okazać się martwy gdzie indziej. Upewnij się, że Twoja firma ma bardzo rygorystyczne wewnętrzne wytyczne dotyczące transferu i że masz jasny obraz tego, co będziesz robić w zespole przez następne kilka lat, zanim zatrudnisz osobę, która Twoim zdaniem może nie spełniać kryteriów firmy (ale rozwiąże bieżący problem ). Widziałem zbyt wiele przypadków, w których przeciętność programistów spowodowała, że ​​zespół bardzo ciężko pracował, aby się do nich dopasować.

Subu Sankara Subramanian
źródło