Dlaczego większość ofert pracy jest przeznaczona dla programistów <tutaj dla języka>, a nie dla programistów w ogóle? [Zamknięte]

10

W idealnym świecie:

W doskonałym artykule Nie nazywaj się programistą i innymi poradami zawodowymi Patrick McKenzie wyjaśnia między innymi, że język nie ma znaczenia:

  • Deweloper to ogólnie osoba, która rozwiązuje problemy. Deweloper nie jest osobą, która pisze kod w określonym języku.

  • Firmy nie dbają o języki, które znasz. Jeśli będą musieli zatrudnić programistę do projektu napisanego w określonym języku i mają kandydata, który ma duże doświadczenie, ale nigdy nie napisał wiersza kodu w tym języku, nadal byłby zatrudniony.

Zgodnie z moim doświadczeniem zarówno jako programisty, jak i osoby, która musiała zatrudnić innych programistów, obserwacja jest bardzo podobna:

  • N-letnie doświadczenie w Javie lub N-letnie doświadczenie w C # nie ma znaczenia. Liczy się to, że kandydat wie, jak rozwiązywać problemy, zna różnicę między kodem spaghetti a czystym kodem z dobrze przemyślaną architekturą itp.

  • Nie dbam o języki, których używałeś wcześniej. W przypadku projektu w języku C # wolę zatrudnić profesjonalnego programistę, który spędził całe życie na pisaniu kodu Java, Python i Ruby on Rails , niż początkującego, który zna tylko język C # i zna go źle.

  • Wiedza i doświadczenie zdobyte podczas posługiwania się jednym językiem są w większości przydatne w dowolnym innym języku.

    Doświadczony programista, który wykorzystywał Ruby on Rails do programowania stron internetowych i resztę swojej kariery pisał aplikacje Java na komputery stacjonarne przy użyciu Oracle, doskonale pasuje do projektu ASP.NET MVC przy użyciu Microsoft SQL Server. Ponieważ ta osoba już wie wszystko, czego potrzebuje do tej pracy , pomijając kilka konkretnych rzeczy i różnice w składni.

    Z drugiej strony osoba, która wykonała tylko kilka małych witryn ASP.NET MVC, w ogóle nie pasuje, ponieważ może nie do końca rozumieć architekturę MVC, może wiedzieć, co to jest profilowanie SQL, i może brakować innych istotnych elementów wiedza, umiejętności.

    Nie mów mi, że nie jestem w stanie rozwiązać małego problemu ze stroną PHP korzystającą z CodeIgniter tylko dlatego, że nigdy wcześniej nie korzystałem z CodeIgniter.

W praktyce:

W praktyce, kiedy szukam wolnych zawodów i kiedy ogólnie widzę oferty pracy, są one bardzo specyficzne dla danego języka.

Niektórzy szukają programisty PHP z dwuletnim doświadczeniem w Magento. Inni będą szukać osoby z doświadczeniem VB.NET od co najmniej trzech lat, a jeśli wyślesz im wzmiankę o tym, że tworzysz C # przez sześć lat, ale bez wzmianki o VB.NET, nie będą się tym przejmować odpowiedzieć. Jeśli poprosą o osobę z doświadczeniem w Firebird, nie będą słuchać o twoim dziesięcioletnim doświadczeniu z Oracle.

Dlaczego istnieje taka różnica między teorią a tym, co Patrick McKenzie i ja określamy jako zdrowy rozsądek, a prawdziwym światem ofert pracy?

Arseni Mourzenko
źródło
12
Don't tell me that I'm unable to fix a small problem with a PHP website which uses CodeIgniter just because I never used CodeIgniter before.Chociaż jesteś w stanie rozwiązać problem, jeśli główną przyczyną jest CodeIgniter (jedno z kilku dziwactw frameworka lub jedno z wielu otwartych błędów), to zajmie ci znacznie więcej czasu, aby rozwiązać problem.
yannis
12
Zapomniałeś niektórych tagów: <rant>...</rant>. Poważnie, czy jest tu prawdziwe pytanie?
Cyklop
6
„Nie dbam o języki, których używałeś wcześniej. W przypadku projektu w języku C # wolę zatrudnić profesjonalnego programistę, który spędził całe życie na pisaniu kodu Java, Python i Ruby on Rails zamiast na początkującym, który zna tylko język C # i zna to źle ”. - Weź tego strawmana! To jest fałszywa dychotomia. Twój rant jest odpowiedni dla początkujących, ale NIE dla pozycji wymagających głębokiej znajomości konkretnej platformy.
Jim w Teksasie
1
Ktoś, kto ma doświadczenie w posługiwaniu się językiem, wykona tę pracę znacznie szybciej i bardziej czysto, myśląc inaczej, jest to tylko złudzenie.
Thomas Bonini
Kiedy jestem osobą, która zatrudnia, mogę być tym, który ma naprawdę długą listę „Musiałem użyć Technobabble Terminy X, Y i Z”. A jeśli uda mi się znaleźć tę osobę, mogę ją zatrudnić. Kiedy jestem osobą, która szuka pracy, mogę oburzyć się, że nie patrzą na mnie, ponieważ mam tylko mnóstwo mózgów, a nie dokładnie to, czego chcą, ale gdybym miał dokładnie to, czego chcą, oczekiwałbym zostać zatrudnionym na miejscu. W końcu to ich wezwanie i tak powinno być.
Warren P

Odpowiedzi:

16

Ponieważ wiele firm ma rekrutację dronów HR, którzy nie mają pojęcia o żadnej z nich. Kiedy HR mówi „Jakich kwalifikacji potrzebuje kandydat?” o wiele łatwiej jest powiedzieć „sześć lat C #” niż powiedzieć „pisze dobry kod”. Ten dron nie ma pojęcia, jak wygląda „Pisanie dobrego kodu” ani jak filtrować CV według tego, czy potrafią napisać dobry kod. Mogą jednak szybko przeczytać CV i zobaczyć „Pięć i trzy czwarte roku C #” i je wyrzucić.

DeadMG
źródło
3
Dokładnie. nie-programiści i kierownictwo mogą patrzeć na ciebie pytająco, jeśli mówisz, że szukasz kogoś o podobnych umiejętnościach, ale na początku musiałby nauczyć się sporo (np. konkretnej składni, a nie pojęć), chyba że się z tym zgadza.
Michael Durrant
Myślałem, że nazywają się małpami HR ... Całkowicie się zgadzam, ale dobrym pomysłem jest mieć guru w tym zespole.
Łukasz Madon
3
Umieszczenie w reklamie słowa „pisze dobry kod” jest kompletnym nonsensem. Wszyscy myślą, że piszą dobry kod. A najbardziej przekonani o ich doskonałych umiejętnościach pisania kodu są zwykle ci, którzy piszą najgorszy kod.
nikie
1
@nikie: To uproszczenie. Oczywiście nie umieściłbyś tego dokładnie w reklamie.
DeadMG
3
Nie sądzę, że jest to główny powód, ponieważ małe startupy bez działu HR robią dokładnie to samo.
J. Maes,
22

Myślę, że nadszedł czas, aby uśpić ten mit, że programista z X-letnim doświadczeniem w języku Y może bezproblemowo przenieść się na język Y2. To nie tak działa.

Jeśli potraktujesz język jako tylko jego składnię i typowe wzorce, to znajomość, powiedzmy, Java da ci ogromną przewagę przy przejściu do C #. Nie przygotuje cię jednak na WCF, WPF, Click Once, różne biblioteki wątków, Linq, i na pewno nie przygotuje cię na rzeczy, które według broszury działają, ale w praktyce nie.

Widzisz, że nie mówisz o języku, ogólnie mówisz o platformie. A tam gdzie platforma .NET jest dobrym przykładem, obsługuje wiele języków, ludzie mają tendencję do zbierania według preferowanego wyboru.

Kiedy więc pytam o programistę w języku C #, reklamuję programistę platformy .NET, który ma doświadczenie w projektach w języku C #. Są to zazwyczaj projekty serwerów .net, projekty winforms / wpf.

Ian
źródło
Zgadzam się. To oczywiście możliwe, ale trudne. Składnia rodziny C łatwo przenosi, ale prawdziwe zrozumienie pełnej platformy i zestawu narzędzi zajmuje dużo czasu. Radzę młodszym programistom / programistom / analitykom / programistom radzić sobie z nowymi technologiami w swoim własnym czasie, podczas gdy wszyscy są jeszcze początkujący. Ludzie, którzy zagłębili się w tworzenie HTML5, iOS i Android dwa lub trzy lata temu są teraz w dobrej formie. Oczywiście można zgadnąć źle (zapytaj mnie o Flex), ale to nie koniec świata.
Jim w Teksasie
Wynika to głównie z tego, że Java -> C # jest podobny do C -> C ++ - technicznie mogą być zbudowane na tych samych podstawach, ale C # zawiera o wiele więcej funkcji, których naprawdę chciałbyś użyć. Odwrotna transformacja byłaby znacznie łatwiejsza, przechodząc z C # na Javę.
DeadMG
11

Mogę wymyślić kilka powodów:

  1. Pracownik kontra konsultant - Jeśli zatrudniam konsultanta, chcę, aby był na bierząco na stosie technologii, którego używamy. Oczekuje się, że konsultanci będą działać bardzo szybko, ponieważ nie są tak długo, aby amortyzować naukę.
  2. Podaż / popyt - Jak powiedział Doktor, jeśli wybiorę najbardziej doświadczonego kandydata, jakiego potrafię. A stos technologii ma tam znaczenie dla uznanych technologii. Jeśli szukam osoby, która mogłaby się rozwijać w Go (wybierając język, który niewielu zna), prawie nikt nie ma z tym doświadczenia i wróciłem do umiejętności jako programista.
Jeanne Boyarsky
źródło
4

Nie wszystkie zadania programistyczne są takie same. Moja obecna praca z pewnością pasuje do twojego modelu. Wymaga to dużej analizy danych ad hoc, a my w razie potrzeby zbieramy i odkładamy narzędzia. Zostałem zatrudniony częściowo, ponieważ miałem doświadczenie w szybkiej pracy dzięki nowym narzędziom.

Z drugiej strony istnieją miejsca pracy, gdzie poszukują specjalistycznej wiedzy technicznej. W latach 90. pracowałem dla małego sklepu z oprogramowaniem i potrzebowaliśmy szybkiego rozwoju wiedzy w C ++. Mimo że w naszych reklamach wyraźnie prosiliśmy o znajomość C ++, większość wnioskodawców znała mniej C ++ niż ja. „Ale mogę szybko nauczyć się C ++!” wszyscy powiedzieli. No tak, jestem pewien, że mógłbyś, ale ja też mogłem i inni ludzie już tam byli. Szukaliśmy kogoś, kto już naprawdę znał C ++, więc będziemy mieli własne źródło wiedzy specjalistycznej, gdy reszta z nas przyspieszy. Posiadanie kolejnego początkującego w zespole naprawdę by nie pomogło.

Charles E. Grant
źródło
1
+1: ZESPÓŁ może sprawić, że niektórzy, a nawet większość deweloperów będzie nowicjuszem w tym języku, ale bardzo pomaga posiadanie ekspertów językowych, którzy mogą uczyć wszystkich innych.
DRZEWO
3

Firmy nie dbają o języki, które znasz. Jeśli będą musieli zatrudnić programistę do> projektu napisanego w określonym języku i mają kandydata, który ma duże doświadczenie>, ale nigdy nie napisał linii kodu w tym języku, nadal byłby zatrudniony.

Powiedzmy, że szukasz kandydata do pracy w .NET / C #. Jeśli masz dwóch kandydatów do pracy, obaj wydają się być równie doświadczeni, ale pierwszy zdobył doświadczenie w ekosystemie Java, drugi w ekosystemie .NET - który jest twoim ulubionym?

Inni będą szukać osoby z doświadczeniem VB.NET od co najmniej trzech lat, a jeśli wyślesz im wzmiankę o tym, że tworzysz C # przez sześć lat, ale bez wzmianki o VB.NET, nie będą się tym przejmować odpowiedzieć.

Kto może powiedzieć, dlaczego nie otrzymujesz odpowiedzi? Być może było wystarczająco doświadczonych programistów VB.NET ubiegających się o pracę? Być może dział zasobów ludzkich wykorzystuje język programowania jako filtr, aby zmniejszyć liczbę podań o pracę ze 100 do 10. Być może właśnie rozmawiałeś z niewłaściwymi firmami (chyba w mojej firmie wysłalibyśmy odpowiedź w przykładowym przypadku opisałeś powyżej).

Doktor Brown
źródło
2

W większości projektów praca jest potrzebna szybko, a ludzie muszą jak najszybciej generować zyski.

Osoby, które są w stanie zaspokoić te potrzeby i nie są związane z konkretnym językiem (językami), są rzadkie, a przez to zbyt drogie. Ci ludzie są zatrudniani tylko przez duże firmy, które proszą o niesamowite umiejętności.

Ludzi, którzy potrafią rozwiązać problem, ale nie potrafią szybko nauczyć się określonego języka, jest mniej. Wciąż kosztują dużo pieniędzy i mają dodatkowy koszt czasu potrzebny na naukę określonego języka.

Ten dodatkowy koszt czasu jest zredukowany przez prośbę o programistę konkretnego języka. Nauczył się już wymaganych umiejętności i może szybko osiągać wyniki.

Krótko mówiąc, projekt, który należy wykonać w JAVA, nie potrzebuje drogiego, niesamowitego programisty, ani też przeciętnego programisty .net, który będzie potrzebował czasu na naukę języka / frameworka. Potrzebuje natychmiastowych rezultatów za najmniejszą sumę pieniędzy, którą zapewnia facet, który ma już doświadczenie w JAVA i ma stosunkowo dobre umiejętności rozwiązywania problemów.

Jak zawsze chodzi o pieniądze i jak największy zwrot z inwestycji

J. Maes
źródło
2

Myślę, że po prostu źle interpretujesz standardowe wyrażenie „<język tutaj> programista”. Firmy nie umieszczają tego wyrażenia w reklamie, aby zniechęcić programistów, którzy mają doświadczenie w innym języku. Dlaczego mieliby odstraszać zdolnych programistów? Z punktu widzenia pracodawcy im więcej kandydatów, tym lepiej. Zawsze nie mogą zapraszać osób, którymi nie są zainteresowani.

Prawdziwym celem tego zdania jest poinformowanie czytelnika, co pociąga za sobą oferta pracy. I to ma sens, IMHO. Czy starałbyś się o pracę w języku asemblera Z80? A może COBOL? A może Fortran?

I oczywiście, jeśli firma ma dwóch kandydatów, którzy w przeciwnym razie wydają się równie mądrzy, wygrywa ten z doświadczeniem <język tutaj>. Nic dodać nic ująć. (Istnieją szczególne przypadki, w których ludzie są zatrudniani tylko do jednego projektu lub do projektu, który jest już spóźniony, lub do pierwszego projektu, który firma rozwija w <język tutaj>, gdzie naprawdę potrzebujesz doświadczenia w tym języku od samego początku, ale nie sądzę, że to reguła.

Nawiasem mówiąc, moja firma napisała kiedyś reklamy, które sugerowałeś (w końcu wydaje się , że to ma sens). Wyniki były druzgocące. Ludzie, którym naprawdę zależy na ich pracy, po prostu pominęli reklamę. Tylko zdesperowani, którzy aplikują na każdą otwartą pozycję, aplikują. Nigdy więcej tego nie próbowaliśmy.

nikie
źródło
1

Cofnij się i pomyśl o założeniu. Chcesz, aby ktoś wykonał trochę pracy w sieci .net. Umieszczasz to w opisie swojej pracy i szukasz kandydatów z tą umiejętnością! To tylko zdrowy rozsądek.

Z pewnością zgadzam się z twoimi bardziej szczegółowymi filozofiami, dlaczego to może nie być dobry pomysł, ale większość ludzi będzie po prostu reklamować się, wymagać i szukać kandydata z umiejętnościami, których potrzebują teraz. To jest tak proste, więc myślę, że to odpowiada na tytuł twojego pytania, dlaczego.

Jeśli nie mogą w ogóle zdobyć żadnych kandydatów lub przejść przez kilku złych, mogą się trochę przestudiować i być bardziej podatni na szczegóły, które opisujesz. W rzeczywistości w obszarze, w którym się znajduję (Ruby on Rails) jest teraz DUŻO reklam mówiących „nie wymaga doświadczenia, przeszkolimy cię” itp. W rzeczywistości niektóre z najlepszych organizacji Ruby on Rails to bardzo otwarci na kandydatów „bez złych nawyków”, których mogą trenować. Dlatego niektóre organizacje stosują właściwe podejście.

Pamiętaj też, że większość reklam pochodzi od zewnętrznych rekruterów lub od nietechnicznych wewnętrznych rekruterów, którzy po prostu nie mają wystarczającej wiedzy, by „iść na boki”, jak to opisujesz.

Michael Durrant
źródło