Jak przekonać drogich programistów?

33

W naszej firmie musimy robić wiele pozornie nieskomplikowanych rzeczy, takich jak tworzenie mobilnego interfejsu użytkownika.

Powiedzmy, że doświadczeni programiści kosztują nas 4x tyle, co początkujący.

Oba są w zasadzie w stanie wykonać pozornie proste rzeczy w tym samym czasie.

Różnica polega na tym, że doświadczeni programiści produkują mniej błędów, a ich kod jest bardziej stabilny itp. Początkujący programiści marnują dużo czasu na innych (PM, klienci itp.). Ale są znacznie tańsze.

Argument przeciwny polega na tym, że przygotowanie tabeli w HTML zajmuje doświadczonym i początkującym tyle samo czasu. Dlatego luksusem jest zatrudnianie doświadczonych programistów, co mogą osiągnąć również początkujący programiści.

Czy powinniśmy inwestować w coraz więcej lepszych programistów, czy więcej i lepiej PM, biorąc pod uwagę, że różnica między doświadczonym i nowym programistą w naszej dziedzinie może wynosić 4x.

użytkownik1721135
źródło
18
Doświadczeni programiści będą tworzyć kod szybciej i przy mniejszej liczbie błędów, ale szybko się nudzą, pracując nad prostymi projektami.
david25272
18
Let's say the experienced programmers costs us 4x as much as the beginners.- To mało prawdopodobne. Stosunek jest bardziej podobny do 2x lub 3x. Jeśli tak słabo płacisz programistom, to naprawdę zatrudniasz amatorów i szkolisz ich do wykonywania pracy, której potrzebujesz, tylko po to, aby opuścili Twoją firmę na bardziej ekologiczne pastwiska, kiedy zdobędą minimalną ilość doświadczenia.
Robert Harvey
4
Both are basically able to complete the seemingly simple things in the same amount of time.- Cóż, doświadczony programista na dłuższą metę oszczędza sporo czasu, ponieważ nie musiałeś udzielać mu bardziej szczegółowych instrukcji, co dokładnie robić.
Robert Harvey
8
@jules: Aby zlecić na zewnątrz / offshore, musisz napisać bardzo szczegółową specyfikację, proces, który może zająć tyle czasu, ile doświadczeni programiści zajęliby pisanie programu. Nie wierz mi na słowo, porozmawiaj z każdym, kto próbował offshoringu. Mam.
Robert Harvey
2
@Ewan: Podaj przykład dużej firmy, która opuściła Londyn w ciągu ostatnich dwóch lat, aby znaleźć tańszych programistów w innym miejscu w Wielkiej Brytanii.
gnasher729

Odpowiedzi:

60

Mam doświadczenie z pierwszej ręki obu teorii wypróbowanych w prawdziwym świecie - w rzeczywistości w tym samym projekcie.

Przed moim przyjazdem podjęto decyzję o zatrudnieniu droższych licencjatów i bardzo tanich programistów - chodziło o to, aby specyfikacje dobrej jakości były niewolniczo przestrzegane przez bardzo młodszych programistów.

Po ponad 6 miesiącach kręcenia się wokół głównego projektu objąłem stanowisko kierownika ds. Rozwoju. Gdy naprawiłem kilka czynników higieny, problem z jakością kodu pozostał. Miałem trochę wolnego budżetu i zatrudniłem bardzo doświadczonego programistę (cóż, bardziej architekta rozwiązań) z nieszablonowymi umiejętnościami komunikacyjnymi i wcześniejszym życiem jako trener w C # (języku, w którym napisano projekt). Chodziło o to, aby poprawić jakość innych programistów, zapewniając mentoring i skutecznie bezpłatne szkolenie.

Po miesiącu lub dwóch stało się boleśnie oczywiste, że nawet to nie zadziała, więc pierwotny zespół został usunięty z projektu i dodano jeszcze kilku programistów z najwyższej półki. Dostarczyli projekt, którego pierwotny zespół kompletnie nie dostarczył przez ponad 8 miesięcy prób w 3 jednomiesięcznych sprintach, zaczynając od zera, ponieważ oryginalny kod był nie do naprawienia.

Jeśli twoje wymagania są bardzo podstawowe, możesz uciec od korzystania z bardzo młodszego programisty, ale prawdopodobieństwo jest, że w dłuższej perspektywie będą kosztować znacznie więcej. Czasami „proste” wymagania zmieniają się w wielką złożoność.

Gdybym nie dokonał trudnego wyboru zmiany kierunku, prawdopodobnie nadal by nad tym pracowali :) - Co ważniejsze, w tym przykładzie brak komunikacji i kompetencji ze strony oryginalnego zespołu oznaczał, że nie będą zgłaszać problemów z specyfikacji, ale po prostu spróbują zrobić wszystko, o co ich poproszono, czy ma to sens architektoniczny, czy nie. Bardziej doświadczony i pewny siebie programista zadał pytania i zapoznał się z podstawowymi wymaganiami i dlatego po raz pierwszy opracował właściwe rozwiązanie.

Och, jeszcze jedna rzecz. Nie zakładaj, że możesz natychmiast zatrudnić świetnego programistę. Istnieje wielu ludzi z wieloletnim doświadczeniem przeciętności, która zapewni prawie tak zły wynik jak junior, ale będzie kosztować tyle samo, co supergwiazda (czasami nawet więcej). Mam bardzo dobry „współczynnik trafień”, ale to ma doświadczenie i mam dużo. To temat zupełnie innej rozmowy, która jest tutaj nie na temat ...

TL; DR Dobrzy programiści to okazja. Trudno jest je znaleźć i stworzyć wystarczająco atrakcyjne środowisko pracy, aby je zachować.

Mcottle
źródło
3
Zamienię „Doświadczony” na „Dobry” w twoim tl; dr z powodów, które wskazałeś tuż nad nim. Ponadto jest całkiem możliwe (ale nadal trudne) znalezienie dobrych programistów z relatywnie niewielkim doświadczeniem zawodowym lub bez niego. Przyznaję jednak, że odblokowanie potencjału tych programistów wymaga uwodzenia i jest bardzo prawdopodobne, że firma PO nie ma odpowiedniej kultury do tego. Jedną z korzyści posiadania dobrego programisty jest bycie wzorem do naśladowania dobrych zachowań i praktyk oraz kontrastowanie ze przeciętnością.
Derek Elkins
1
@Derek Elkins - Dobra sugestia, gotowe. Zgadzam się z drugim punktem. Przy jednej pracy byłem bardzo ograniczony budżetem i nadal udało mi się zebrać bardzo dobry zespół z jednego doświadczonego programisty i 3 bardzo młodszych programistów (bez stopni naukowych, bardzo mało doświadczenia) jako nowych pracowników - z których jedno było wyjątkowo wyjątkowe. Ale „wydałem” dużo pieniędzy, przeglądając niektóre przygnębiająco złe CV, zanim je znalazłem, oraz więcej czasu / pieniędzy na ich szkolenie, wykonując małe zadania na odpowiednim poziomie i pozwalając im na posiadanie własnych rozwiązań i świętowanie ich osiągnięć.
Mcottle,
Tak, moje doświadczenie jest podobne, choć uważam, że przygnębiająco złe CV młodszych dzieci jest o wiele mniej przygnębiające niż przeprowadzanie wywiadów z „starszym” deweloperem z 15-letnim doświadczeniem SQL, który nie wie, co to jest zewnętrzne dołączenie. Istnieją jednak pewne korzyści z kosztu szkolenia w zakresie dopasowania firmy, lojalności, ogólnie poprawionego morale, i szczerze mówiąc, po ich wyszkoleniu są prawdopodobnie lepsze i tańsze niż „typowy” starszy programista. Zdecydowanie jest to jednak inwestycja, a czas do wypłaty może być zbyt daleko, aby był użyteczny, nawet jeśli w przeciwnym razie byłby to wygrana netto.
Derek Elkins
Świetny post +1. Chciałbym tylko dodać zastrzeżenie, że czas dostawy jest bardzo tępym narzędziem do oceny jakości dewelopera. Mieliśmy kontrahenta „superstar”, który początkowo był bardzo poszukiwany ze względu na jego szybkość rozwoju. Gdy ludzie próbowali podnieść jego sprzęt, koła wkrótce odpadły - hacki, kodowanie na sztywno, kod monolityczny, brak testów jednostkowych - wkrótce wysłano mu pakowanie pośpiesznie ...
Robbie Dee
Co więcej, programiści premium spędzają znacznie mniej czasu na kodowaniu niż ich juniorzy, ponieważ są bardzo poszukiwani do pomocy innym, przeglądów kodu, architektury, deweloperów, sesji brązowych toreb, warsztatów, szkoleń itp.
Robbie Dee
19

Jeśli masz obszerne statystyki wydajności, możesz zrobić uzasadnienie biznesowe z matematyki. Mogłyby one wykazać, że szybkość rozwoju zrekompensowałaby wzrost ceny, a nawet lepiej, że solidna konstrukcja mogłaby zaoszczędzić więcej na konserwacji i rozwoju kolejnych wersji. Niestety takie dane nie są dostępne tak często - szczególnie w przypadku nowszych technologii.

Kolejnym argumentem może być czas wprowadzenia na rynek. Jest to łatwiejsze do zrozumienia dla wyższej kadry zarządzającej. Jednak jeśli czas nie jest tak naprawdę krytyczny, to nie pomoże.

W ostateczności znajdź zdjęcie Red Adaira , słynnego strażaka, który został wezwany w poważnej katastrofie po kilku nieudanych próbach mniej doświadczonych facetów. Jego słynny cytat:

Jeśli uważasz, że zatrudnienie profesjonalisty jest drogie, poczekaj, aż zatrudnisz amatora.

... zasługuje na wydrukowanie w kolorze i wyeksponowanie go na drzwiach biura, aby wszyscy zrozumieli, o co w tym chodzi ;-)

Christophe
źródło
Myślę, że to najlepsza odpowiedź, jaką widziałem, a ponieważ jest już wiele odpowiedzi, dodam, że wartością starszego profesjonalnego programisty nie jest wykonywanie tej samej powtarzalnej czynności przy mniejszej liczbie błędów. Chodzi o to, aby znaleźć kogoś, kto może wyeliminować powtarzalną pracę i podnieść poziom abstrakcji oraz mentora i przewodnika młodszych członków zespołu. Potrzebujemy większego mieszania starszych i młodszych osób w fazie rozwoju, aby wyjść z ciągłego recyklingu starych złych pomysłów, które nie działają na dłuższą metę.
JimmyJames,
Myślę, że poszukiwanie łatwych do złożenia statystyk do oceny jakości programistów zostało już dawno odwołane, niezależnie od tego, czy chodzi o linie kodu, liczbę wad, złożoność cykliczną, pokrycie kodu itp. Złota gęś jest predyktorem właściwej mieszanki deweloperów, którą można zmontować za najmniejszy koszt, aby wyprodukować wystarczająco dobry produkt.
Robbie Dee,
@RobbieDee Nie ma potrzeby idealnego modelu: tylko pragmatyczne podejście. Na przykład, jeśli systematycznie szacujesz punkty fabularne odpowiadające zadaniom programistycznym, czas realizacji i poziom starszeństwa programisty odpowiedzialnego, z czasem zbierzesz bardzo interesujące średnie. Oczywiście statystyki te będą istotne tylko przy szacowaniu podobnych działań przy użyciu tej samej technologii. I są to tylko średnie, a nie kryształowa miska. Możesz jednak uzyskać dane, które pomogą pokazać trend i uzasadnić stosunek ceny do stażu pracy.
Christophe
@Christophe Story Story służy do porównywania złożoności jednego zadania z innym - nie są przeznaczone do pomiaru czasu, chociaż są w ten sposób masowo wykorzystywane (2 punkty = 1 dzień itp.).
Robbie Dee,
@RobbieDee o to mi chodzi: jeśli chcesz statystyk wydajności, musisz porównać czas wykonania zadania i złożoność zadania. Trudność polega na uzyskaniu dokładnej oceny złożoności. Statystyka jest wykonalna w praktyce tylko wtedy, gdy można łatwo uzyskać przybliżenie. Jeśli używany jest FP, jest bardzo dokładny. Ale ocena FP jest czasochłonna i niezbyt przyjazna. Punkty fabularne są mniej obiektywne, ale łatwiej je zdobyć. Oczywiście masz rację: jeśli chcesz uzyskać średnie, musisz zlinearyzować skalę. W zarządzaniu projektami takie podejście nazywa się „szacowaniem parametrycznym”.
Christophe,
10

Lubię i głosowałem za odpowiedzią Mcottle'a, ale chcę przedstawić inne dynamiki i argumenty, których inne odpowiedzi jeszcze nie poruszyły.

Po pierwsze, w odpowiedzi mcottle ukryty jest fakt, że poniżej pewnego poziomu umiejętności niektóre problemy są po prostu niemożliwe. Niestety, sposób, w jaki się o tym dowiadujesz, polega na tym, że twój zespół próbuje i kończy się niepowodzeniem, co jest bardzo ważnekosztowny. Po porażce można wyciągnąć z tego dwie lekcje. Jedną z opcji jest to, że dowiadujesz się, że potrzebujesz bardziej kompetentnych programistów, więc zatrudniasz ich i realizujesz projekt znacznie przekraczając budżet i przekraczając harmonogram, ale przynajmniej jesteś przygotowany w przyszłości. Inną opcją jest to, że taki projekt jest „zbyt trudny” dla twojego zespołu i nie należy próbować takich rzeczy w przyszłości, tj. Rezygnujesz z projektu i skutecznie podobnych. Oczywiście rzadko będzie to wyrażone jako „jesteśmy zbyt głupi, aby to zrobić”, ale zamiast tego zostanie zracjonalizowane, ponieważ „nasze systemy są bardzo złożone” lub „mamy dużo starszego kodu” lub niektórych innych. Ten ostatni pogląd może znacznie wypaczyć perspektywę firmy na to, co jest możliwe i jak długi / drogi powinien być rozwój. „

Jedno pytanie brzmi: jaki dokładnie jest plan twojej firmy? Ok, wynajmą tanie, młodszych programistów. Minęły trzy lata, a teraz co? Co robią z programistami, którzy byli z nimi przez te trzy lata? Czy po prostu nigdy go nie podnieśli? Dostępne są tutaj następujące opcje:

  • Podnoszą stawki w sposób konkurencyjny, aby zatrzymać pracowników. W takim przypadku dlaczego mieliby teraz problem z płaceniem stawek dla starszych programistów? Wrócę do tego.
  • Mają stagnację, co oznacza, że ​​ostatecznie „sprowadzą się” do pracowników, którym brakuje popędu i / lub umiejętności.
  • Bardziej aktywnie usuwają więcej starszych pracowników.

Drugie dwa przypadki wiążą się z dużą rotacją pracowników, co oznacza utratę wiedzy firmy i ciągłe wynagradzanie pracowników. W drugim przypadku wybierasz złych programistów, więc koszty będą rosły w postaci rosnących harmonogramów. Sposób, w jaki to się potoczy, polega na tym, że wszystko idzie dobrze w projekcie X, aż nagle Jim odchodzi, który był jednym z lepszych programistów, ponieważ nie dostał podwyżki od dwóch lat, teraz projekt „zrozumiale” potrwa znacznie dłużej, ponieważ musisz zatrudnić i przeszkolić nowych młodszych programistów, którzy (prawdopodobnie) nie będą tak dobrzy jak Jim. W ten sposób rekalibrujesz oczekiwania.

Nawet w przypadku zapewniania podwyżek konkurencyjnych, jeśli wszystko, co masz, to młodsi programiści, gdzie i jak mają się uczyć? Zasadniczo masz nadzieję, że jeden z nich samodzielnie nauczy się dobrych praktyk, pomimo swojego środowiska pracy, i ostatecznie będzie mentorem dla innych (zamiast wychodzić na zielone pastwiska). Bardziej sensowne byłoby „zalanie pompy” niektórymi dobrymi programistami. Bardziej prawdopodobne jest, że rozwiniesz kulturę początkujących ekspertów . W efekcie płacisz wyższe stawki programistom osobom, które są tylko nieznacznie lepsze od młodszych programistów i są toksyczne kulturowo.

Jedną z korzyści, szczególnie bardzo dobrych programistów, której nie dziwi nikt inny nie wspomniał, jest to, że mogą one z łatwością stać się czynnikiem multiplikatywnym . Może się zdarzyć, że młodszy programista i starszy programista poświęcą tyle samo czasu na przygotowanie stołu. Dobry programista tego jednak nie zrobi. Zrobią generator tabel, który skróci czas, aby każdy mógł zrobić tabelę. Alternatywnie / dodatkowo podniosą pułap tego, co jest możliwe dla wszystkich . Na przykład programiści, którzy wdrożyli platformę MapReduce Google, byli prawdopodobnie wyjątkowo wykwalifikowani, ale nawet jeśli użytkownicyMapReduce nie są w stanie samodzielnie stworzyć masowo rozproszonej wersji swojego algorytmu, teraz z łatwością mogą to zrobić dzięki MapReduce. Często ta dynamika jest mniej rażąca. Na przykład lepsza kontrola źródła, testowanie i praktyki wdrażania sprawiają, że wszyscy są lepsi, ale odnalezienie konkretnej osoby może być trudniejsze.

Aby trochę się kłócić po drugiej stronie, być może wyższe raty mają rację. Być może bardziej doświadczeni programiści nie są potrzebni. Jeśli tak jest, wydaje się, że rozwój nie jest znaczącą częścią firmy. W takim przypadku po prostu całkowicie wyeliminowałbym programistów i korzystałbym z gotowego oprogramowania lub wynajmowałem kontrahentów na żądanie. Warto zastanowić się, dlaczego nie korzystają tylko z kontrahentów, a nie z wewnętrznego zespołu. Jeśli i tak będziesz mieć dużo pracowników, to zwiększanie liczby kontrahentów nie powinno stanowić problemu.

Derek Elkins
źródło
Wykonawca może być bardzo realną odpowiedzią na ten PO, jeśli potrzebuje poziomów umiejętności seniora, ale nie stać go na całoroczne wynagrodzenie w pełnym wymiarze godzin. Znajdź lokalną firmę kontraktową, która jest godna zaufania. Powiedziałbym, że pomysł wykonawcy powinien zostać rozszerzony na własną odpowiedź.
rwong
6

To nie jest sytuacja ani.

Zwłaszcza w przypadku większego projektu dość rutynowo masz kilku stosunkowo doświadczonych ludzi na wyższych stanowiskach i kilka mniej doświadczonych osób na niższych stanowiskach. W ten sposób osoby starsze mogą nie tylko pomóc bezpośrednio w projekcie, pisząc kod i pomagając w podejmowaniu trudniejszych decyzji, ale mogą również pośrednio pomagać mentorując juniorów.

Z pewną ostrożnością może to również pomóc zapobiec szybkiemu wypaleniu się starszych inżynierów, prosząc ich o ciągłą pracę, która nie jest dla nich wyzwaniem ani zainteresowaniem. Przynajmniej z mojego doświadczenia, nawet trochę czasu mentoring dla entuzjastycznych ludzi na poziomie młodszym (lub nawet na poziomie wewnętrznym) może sprawić, że sprint będzie o wiele ciekawszy.

Szczerze mówiąc, powinienem dodać, że tego rodzaju stanowisko prawdopodobnie nie będzie pasować do wszystkich starszych inżynierów. Wymaga to znacznie większego nacisku na architekturę i projekt, komunikację, dokumentację itd. Szczególnie wcześnie często wymaga to dużej dyscypliny - dla kogoś, kto zajął się pisaniem kodu, kusi go, aby po prostu wskoczyć do pisania kodu, zamiast uczyć młodszego inżyniera, jak to robić. Często kuszące jest też całkowite przepisanie od podstaw, gdy kod nie jest tak, jak osobiście wolisz - nawet jeśli jest to całkowicie odpowiednie do zadania.

Jeśli jednak naprawdę nie może przekonać zarządzania iść z mieszaniną poziomach doświadczenia, nie ma w zasadzie żadnych wątpliwości w ogóle, że mają iść do bardziej doświadczonych. Jeśli zostawisz projekt w całości dla młodszego personelu, są całkiem spore szanse, że po prostu nigdy nie dostaniesz użytecznego produktu. Co gorsza, nie zdadzą sobie sprawy, że to, co robią, nie zapewnia żadnego rzeczywistego postępu w kierunku użytecznego produktu, więc będą kontynuować pracę w wybranym kierunku długo po tym, jak bardziej doświadczona osoba zorientuje się, że dokonała fundamentalny błąd na wczesnym etapie i trzeba wykonać kopię zapasową, przegrupować się, obrać orientację i rozpocząć nowy kierunek, aby mieć nadzieję na dotarcie do sensownego miejsca docelowego.

Jerry Coffin
źródło
5

Każdy projekt w realnym świecie jest napędzany popytem klientów, a zatem obejmuje zadania o niskiej złożoności (np. Budowanie formularzy CRUD) i wysokiej złożoności (np. Budowanie systemu powiadomień sterowanego zdarzeniami). Jedynym sposobem na wykonywanie zadań o niskim stopniu złożoności jest powtarzanie klientom słowa „nie”, czego nie chciałby żaden dział sprzedaży, o którym słyszałem.

Jeśli masz tylko programistów na poziomie młodszym, oznacza to, że będziesz w stanie wykonywać zadania o niskiej złożoności, a zatem będziesz w stanie zbudować produkt o niskiej wartości i trudniej walczyć na rynku, aby wyróżnić swoje produkty. Jeśli chcesz różnicować, musisz zbudować funkcjonalność o wysokiej wartości, co nieuchronnie przekłada się na zadania o dużej złożoności. W końcu, gdyby było to łatwe, nie byłoby cenne. Oznacza to, że potrzebujesz ludzi do wykonywania zadań o wysokim stopniu złożoności i potrzebujesz programistów wyższego szczebla.

Jeśli masz tylko programistów wyższego szczebla, zmarnujesz ich umiejętności na pracę o niskiej wartości, będziesz miał problemy z zatrzymaniem ich podczas zmuszania ich do wykonania wspomnianej pracy, a także ryzykujesz, że odejdą do architektury astronomicznej, próbując wykonać proste zadania więcej ciekawe do pracy. Oznacza to, że musisz mieć także niedoświadczonych programistów, którzy podejmą się tych zadań.

Zdrowy zespół pracujący nad produktami zorientowanymi na klienta to zwykle mieszanka. Stosunek między młodszymi i starszymi programistami zależy od stosunku między zadaniami o niskiej złożoności i wysokim stopniu złożoności, a to zależy od strategii biznesowej. Jeśli aktywnie poszukujesz dużych ilości łatwych do zrozumienia, łatwych do wycinania plików cookie, nie będziesz mieć wielu zadań o dużej złożoności i prawdopodobnie zatrudnisz głównie programistów młodszego poziomu. Jeśli aktywnie dążysz do rozróżnienia niedocenianych nisz i ukierunkowania ich na wyższe marże zysku, będziesz mieć wiele zadań o dużej złożoności i poszukasz głównie programistów wyższego poziomu.

Joeri Sebrechts
źródło
3

W mojej odpowiedzi twierdzę, że starsi programiści niekoniecznie kodują szybciej niż młodsi programiści. W rzeczywistości najszybsi programiści to przeciętnie faceci, którzy właśnie opuścili uniwersytet.

Znajomość domen to klucz do starszego programisty. Dobry starszy programista powinien mieć dużą wiedzę w tej dziedzinie, czego młodszy programista może nie mieć. Doświadczeni programiści rozumieją problem, co należy rozwiązać i jak go rozwiązać. Mogą rozwiązać bardziej skomplikowany problem dla firmy niż większość młodszych programistów.

Programowanie jest stosunkowo tanim zestawem umiejętności, liczy się wiedza ekspercka.

SmallChess
źródło
2

Nie próbuj „uzasadniać sprawy” Rynek ustala cenę dla pracowników. Jeśli rynek jest skłonny zapłacić 4x więcej za doświadczenie, to dlatego, że firmy jako całość doszły do ​​wniosku, że istnieje wzrost wydajności 4x.

Teraz oczywiście rynek może się mylić, może jego 3.5 lub 5x, ale jeśli nie jesteś agencją cyfrową, konkurowanie z rynkiem lub coś takiego niuanse nie są ważne.

Twoim prawdziwym problemem jest to, czy jesteś wystarczająco dobry w przeprowadzaniu wywiadów, aby móc odróżnić dobrego doświadczonego programistę od starego, który go oszukuje.

Twoje drugie pytanie dotyczące PM a budżetu programisty. Powiedziałbym, że programista może obejść się bez PM, ale PM nie może obejść się bez programisty. Najpierw posortuj silnik programistyczny, a następnie poproś o PM, aby zdjął administratora z ich rąk.

Ewan
źródło
Chociaż może to być poprawne z ekonomicznego punktu widzenia, rynki w odizolowanych obszarach, np. Małych miasteczkach, obszarach wiejskich, mogą być bardzo wypaczone. Miasta uniwersyteckie mogą być lepsze.
rwong,
to prawda, ale Twoja firma jest w jednym miejscu.
Ewan
2

Nie znajdziesz nikogo we własnym kraju za ćwierć kosztu naprawdę dobrego programisty. Możesz znaleźć kogoś za połowę pensji, a to będzie absolutnie początkujący. Dla kogoś za jedną czwartą pensji musisz wyjechać za granicę, a wtedy będziesz miał problemy z komunikacją, osoby, które na ślepo przestrzegają specyfikacji, i wszelkiego rodzaju problemy.

Państwo potrzebują jednego dobrego programistę. Jeśli dodasz więcej młodszych programistów, potrzebujesz jednego dobrego programisty z silnymi umiejętnościami komunikacyjnymi, który będzie chętny i zdolny mieć oko na młodszych. Bez jednego dobrego programisty jesteś zgubiony. Możesz mieć szczęście, znajdując niezwykłego utalentowanego początkującego, ale kiedy on lub ona odkryje, że są dobrzy, będą chcieli wyższego wynagrodzenia.

Jeśli nie masz jednego dobrego programisty, nie ma nikogo, kto widziałby większy obraz, i nikogo, kto mógłby rozwiązać problemy, których nie można rozwiązać za pomocą przepływu stosu. Będziesz miał kod, który cuchnie i jest niemożliwy do utrzymania, ponieważ młodsi programiści nie wiedzą, jak utworzyć kod, który można utrzymać. Mogą się tego nauczyć, ale nie obejdą się bez dobrego programisty w zespole.

gnasher729
źródło
1

Jest kilka przeszkód, które Twoja firma musiałaby pokonać, zanim zdecydujesz, czy zatrudnienie lepszych programistów byłoby opłacalne. Przepraszam, jeśli przyjmuję negatywne założenia dotyczące miejsca pracy, ale nie jestem przekonany, czy wiedzą, co robią.

  1. Czy dokładnie ocenili, jak złożone jest oprogramowanie, które budujesz? Wygląda na to, że nie uważają, że to, co robisz, jest bardzo trudne, więc po co zatrudniać lepszych ludzi? Czy popełniłeś przypadek, w którym popełniane są błędy i jak lepsze rozwiązania i wydajność przyniosłyby pieniądze? Oszczędność czasu jest świetna, ale wiele firm wolałoby marnować cały tydzień na programistę niż dawać pieniądze na zakup podkładki pod mysz.
  2. Czy Twoja firma jest atrakcyjna dla dobrych programistów? Czy potrafią je zidentyfikować? Nic gorszego niż zatrudnienie starszego dewelopera, zapłać im więcej pieniędzy, a oni ściągną cały zespół z powodu braku umiejętności i / lub przywództwa.
  3. Czy Twoja firma może korzystać z dobrego programisty? Jeśli wszystko, co zamierzają zrobić, to rzucić na nich tandetne specyfikacje i po prostu powiedzieć im, żeby po prostu je zbudowali, o co chodzi? Czy dadzą im jakąkolwiek swobodę robienia rzeczy po swojemu? W końcu dobry programista z definicji wie, jak lepiej wykorzystać swój czas. Wpływają na otoczenie i powodują poprawę w innych programistach. Wprowadzają lepsze projekty i architektury, na których opiera się reszta, dzięki czemu produkt jest o wiele lepszy.

Przykro mi, ale wydaje mi się, że Twoja firma nie wiedziałaby, co zrobić z dobrym programistą, więc możesz przekonać ich, aby najpierw zatrudniali lepszych menedżerów i rozwiązali te wewnętrzne problemy.

JeffO
źródło