Byłem ostatnio na „targach pracy” i byłem zaskoczony, widząc, jak duży nacisk w pracy zdają się przykładać do języków programowania, które znają kandydaci.
Z mojego (co prawda ograniczonego) doświadczenia, podczas gdy prawdziwe opanowanie języka programowania może zająć lata, nauka go na rozsądnym poziomie jest dość prostą sprawą dla kogoś, kto ma już doświadczenie z innymi językami i na pewno może zmieścić się w ramach czasowych, które pracodawcy zwykle przeznaczają na początkowe przyspieszenie.
Sądzę, że pracodawcy bardziej zależy na tym, ile języków / paradygmatów znam, lub jakie są moje doświadczenia w projektowaniu algorytmów / oprogramowania, w przeciwieństwie do konkretnej technologii, którą znam w tej chwili.
Powiedzmy, że już znam Java, C ++, Smalltalk i Prolog ... czy miejsce pracy oparte na Objective-C naprawdę powinno uważać mnie za niewykwalifikowanego, ponieważ brakuje mi doświadczenia w tym języku? Czy to wada metodologii rekrutacji, a jeśli tak, to co mogę zrobić, aby przekonać to miejsce pracy, że mój brak doświadczenia z celem C nie powinien mieć znaczenia? Pytam hipotetycznie, a nie konkretnie o wspomniane języki programowania.
Alternatywnie, moje doświadczenie jest ograniczone i przyznaję, że coś mi umknęło. Czy wcześniejsze doświadczenie z językiem programowania jest ważniejsze niż to, co myślę? Czy robi to różnicę, jeśli jest to pozycja młodsza lub wyższa? Czy powinno to mieć znaczenie?
Odpowiedzi:
Wbrew informacjom prasowym jest to teraz rynek pracodawcy .
Oznacza to, że mogą być po prostu wybredni w zakresie swoich wymagań. Oznacza to, że mogą wymagać doświadczenia w .NET 4.0, a nie tylko 3.5 ... Oznacza to, że mogą wymagać doświadczenia z Django, a nie tylko Pylonów itp.
Pewnie, możesz nauczyć się wszystkiego, co musisz wiedzieć o Ruby w ciągu kilku tygodni, a Rails może zająć kilka miesięcy (tylko zgadywanie), aby uzyskać biegłość w ...
Ale pracodawca może przeglądać CV osób już biegle w Ruby & Rails.
TL; DR: Econ 101 ... Nie wierz w szum o braku programistów .
źródło
Głównym problemem jest to, że nikt tak naprawdę nie wie, jak zatrudnić dobrych programistów. Drugi problem polega na tym, że miejsca pracy związane z programowaniem przyciągają wielu kandydatów.
Biorąc pod uwagę dużą liczbę CV, byłoby bardzo miło móc je przeczesywać i wybierać dobrych programistów, ale nikt nie wie, jak to zrobić. Sposób działania większości firm, początkowy sortowanie odbywa się zazwyczaj według działu zasobów ludzkich. Osoba z działu HR nic nie wie o Smalltalk ani C ++, z wyjątkiem wymienionych na liście wymagań, w przeciwieństwie do osoby, która mogłaby pomyśleć „C ++ ORAZ Smalltalk - ten facet nie będzie miał problemów z Objective-C”.
Nawet jeśli stos trafi do menedżera ds. Rekrutacji, jest bardzo prawdopodobne, że jest zbyt gruby, aby przesłuchać wszystkich, więc kierownik ds. Rekrutacji musi z jakiegoś powodu wyrzucić CV. Jeśli jest to praca w C ++ i jest więcej osób z ponad 5-letnim doświadczeniem w C ++, niż menedżer uzna za praktyczną rozmowę kwalifikacyjną, kierownik może rzucić wszystkie CV, w których nie ma C ++. Nie jest to sposób na pozyskanie absolutnie najlepszych ludzi, ale nikt nie wie, jak zatrudnić absolutnie najlepszych ludzi, a jeśli masz ograniczone możliwości podejmowania decyzji na podstawie CV, osoby z doświadczeniem w C ++ są co najmniej nieco lepsze zakłady
źródło
Odwróćmy to - gdybyś znał cel C, czy byłbyś użyteczny jako programista C ++? Powiedziałbym, nie, nie, języki są zbyt różne. W przypadku nawet prostych języków, takich jak C, chciałbym zobaczyć 6 miesięcy doświadczenia, zanim kogoś zatrudnię, na C ++ kilka lat.
Kilka lat temu nauczyłem się PHP. Powiedziałbym, że minęło kilka miesięcy, zanim zacząłem w tym dobrze, mogłem poruszać się po bibliotece, rozumieć popularne idiomy itp. I znałem już wiele języków.
źródło
To zależy od różnych aspektów kontekstu. Nie tylko poziom roli, ale także stan projektu i firmy.
Na najprostszym poziomie, każdy imperatywny język nawiasów klamrowych jest prawie taki sam jak każdy inny.
Jeśli potrafisz kodować w trybie rozkazującym, możesz kodować w trybie rozkazującym. Czy to Java, C #, C, C ++, a nawet javascript. Biorąc pod uwagę przyzwoitą książkę referencyjną (i być może trochę bojlera), powinieneś być w stanie wybić mały program w dowolnym innym po południu.
Bez względu na historię, wiesz o gałęziach i funkcjach pętli, a ich składnia jest prawie taka sama dla wszystkich. Jeśli twoja historia to OO, wiesz także o obiektach, klasach i interfejsach.
Jednak widziałem zbyt wielu programistów, którzy mają tylko imperatyw, trudność z pisaniem prostych programów w językach deklaratywnych lub funkcjonalnych. Gdybym prowadził sklep Erlang, zdecydowanie wolałbym kogoś z Erlangiem, a przynajmniej Prologiem, niż kogoś z C ++.
Jak to zależy od poziomu roli:
Rekrutacja do młodszej roli:
Gdybym wybrał programistę do pracy w C ++, istnieją pewne pułapki, których chciałbym być pewien, że kandydat jest w stanie uniknąć, na przykład konieczność zwrócenia uwagi na pamięć lub długości tablic, po prostu, aby nie nie strzelają sobie (i mnie) w stopę. Jeśli nigdy nie zrobili C lub C ++, musiałbym to wypracować w wywiadzie.
I na starszą rolę:
Jednym z kluczy do skutecznego programowania jest wiedza, czego nie powinieneś pisać sam. Kluczem do tego są biblioteki standardowe (i de facto standardowe). Kluczem do tego jest doświadczenie. Nie możesz po prostu usiąść z „Naucz się Java” przez tydzień i natychmiast zmienić się z 10-letniego programisty C ++ w 10-letniego programistę Java.
Jak to zależy od stanu projektu / firmy
Biorąc pod uwagę projekt Java, który jest czystym kontem. Chciałbym, aby nowy pracownik wyższego szczebla miał dużą wiedzę na temat ekosystemu Java i mógł doradzać w zakresie różnych dostępnych technologii.
Biorąc pod uwagę dojrzały projekt Java, z przyjemnością rozważę doświadczonego programistę C ++, który nie ma doświadczenia w Javie na starszej roli Java lub nie ma go wcale. Większość decyzji dotyczących ekosystemu zostanie już rozstrzygnięta, a nowy najemca będzie mógł zdobyć doświadczenie w zakresie bibliotek Java, a firma wykorzysta doświadczenie programisty w tworzeniu oprogramowania OO.
źródło
To zależy od miejsca pracy. Jeśli są bardzo zajęci, mogą nie mieć czasu, aby poczekać, aż uda Ci się dotrzeć do celu, w którym możesz funkcjonować w Celu C - mogą chcieć, aby ktoś, kto uderzy o ziemię, biegł.
Niektóre miejsca pracy mogą chcieć zaryzykować, jeśli widzą, że znasz inne języki, a także masz solidne podstawy i znajomość dziedziny biznesu. To naprawdę będzie zależeć od tego, jak są otwarci i jak dobrze potrafisz przekonać osobę rekrutującą do podjęcia takiego ryzyka.
źródło
Zatrudnianie jest trudne; zatrudnianie dobrych ludzi jest jeszcze trudniejsze. Zrobiłem zatrudnienie tam, gdzie miałem do czynienia ze stosem ponad 500 CV. Oczywiście, odfiltrowaliśmy osoby z najmniejszym doświadczeniem w zakresie tego, co chcieliśmy zmniejszyć do stosu. Czy to jest sprawiedliwe wobec doskonałego kandydata, który nie zna tego języka, prawdopodobnie nie. Ale jeśli uda mi się znaleźć 100 osób, które mają kwalifikacje, których szukam, tak naprawdę nie zamierzam spędzać dużo czasu na 400, którzy tego nie zrobili - bez względu na to, jak są dobrzy.
Teraz w zatrudnieniu mogę mieć długą listę wymagań, ale zwykle tylko jeden lub dwa są przełamujące. A jeśli nie znajdziesz nikogo z początkową listą kwalifikacji, z którymi chciałbyś przeprowadzić rozmowę kwalifikacyjną (lub później, jeśli wszyscy oni nie udadzą się na rozmowę, którą widziałem), to zwykle będą wracać i patrzeć na osoby, którym brakuje niektórych mniej krytycznych kwalifikacji lub ludzi, którzy mają coś podobnego, ale nie to samo. W takich przypadkach często szukasz czegoś na temat doświadczenia danej osoby, które sprawi, że będzie ona lepsza do pracy niż osoba posiadająca wszystkie kwalifikacje techniczne. Na przykład rozważałbym analityka danych z doświadczeniem w innej korporacyjnej bazie danych, gdyby miała doświadczenie w mojej domenie biznesowej (w rzeczywistości ta osoba prawdopodobnie dokonałaby pierwszego cięcia, gdybym zobaczyła wszystkie CV). To samo z czymś takim jak C # i Java. Jeśli osoba wykonuje pracę o podobnym stopniu złożoności, a zwłaszcza w podobnej dziedzinie biznesowej, może być bardzo dobrym kandydatem, nawet jeśli zna inny język.
Jednakże, o ile nie będę miał dość formalnego programu szkoleniowego dla osób na poziomie podstawowym, mniej prawdopodobne byłoby zatrudnienie osób, które nie spełniły mojego minimalnego zestawu umiejętności językowych. I prawie nigdy z grupy, która nie miała nic z tego, czego szukałem. Ludzie bez doświadczenia mają mniej do zaoferowania pod względem niektórych równoważących kwalifikacji i mniej osiągnięć, aby udowodnić, że mogą wykonywać pracę na poziomie profesjonalnym w dowolnym języku. Mają wystarczająco dużo do nauki podczas pierwszego profesjonalnego koncertu, nie rozumiejąc najważniejszego języka, którego używamy. A ich zatrudnienie stanowi większe ryzyko, że miną miesiące, zanim będziesz mógł uzyskać od nich użyteczną pracę.
Kolejny punkt pojawia się w przypadku, gdy osoba zatrudniona przenosi zespół do nowej technologii. Jeśli nikt w zespole nie jest naprawdę ekspertem w dziedzinie technologii i muszę też zatrudnić kogoś nowego, będę szukał kogoś z taką wiedzą specjalistyczną, jaką mogę znaleźć w tej technologii, ponieważ mają oni pojęcie, gdzie „miny lądowe” „których należy unikać.
Wreszcie, ubiegaj się o pracę, którą jesteś zainteresowany, nawet jeśli nie spełniasz wszystkich podanych wymagań (ale staraj się je spełnić, zatrudnianie urzędników nie lubi marnować czasu na osoby, które nigdy nie zostałyby zatrudnione). Nigdy nie wiadomo, jaką konkurencję będziesz mieć na pracę lub co zrobi największe wrażenie na ludziach przeglądających CV lub przeprowadzających rozmowy kwalifikacyjne. To, co może dać ci wywiad w firmie A, może być dokładnie tym, co uniemożliwia ci uzyskanie wywiadu w firmie B, nawet jeśli mają podobne wymagania na papierze. Ponadto mogą mieć pracę, która lepiej odpowiada Twoim kwalifikacjom, której jeszcze nie zareklamowali. Ale nigdy nie będziesz brany pod uwagę, jeśli nie będą o tobie wiedzieć.
źródło
Powinien ? Nie. Czy to? Tak niestety Jest to syndrom „fioletowej wiewiórki”: firma chce mieć ciastko, zjeść je i zdobyć kandydata, który może zrobić wszystko pod słońcem, czego potrzebuje lub może potrzebować. Często, ale nie zawsze dzieje się tak dlatego, że albo A) Nie mają pojęcia, co naprawdę pociąga za sobą rozwój, i po prostu zakładają, że ktoś spełniający wszystkie ich kryteria może wykonać zadanie, B) Są wybredni, ponieważ mogą sobie z tym poradzić lub C) Planują złożyć H-1B / Zieloną Kartę / Promować od wewnątrz, ale muszą sprawić, że będą wyglądać, jakby reklamowali prawdziwą pracę.
źródło
Jeśli masz ponad 20 lat doświadczenia w 3 lub 4 językach, które mają podobne cechy do Celu C, prawdopodobnie zatrudnię cię do wykonania Celu C i oczekuję, że będziesz produktywny w ciągu 6-8 tygodni. (jest to oparte na moich osobistych doświadczeniach z nauką Celu C kilka lat temu).
Jeśli po ukończeniu szkoły jesteś zielony i nie masz żadnego praktycznego doświadczenia praktycznego, prawdopodobnie nie zostaniesz zatrudniony do zrobienia czegoś, czego nie znasz.
Cel C to interesujący człowiek ze słomy. Wymaga to bardzo dobrej znajomości języka C, wymaga bardzo dobrej znajomości analizy i projektowania obiektowego, w większości przypadków wymaga znajomości języka C ++ w nietypowym stopniu, ponieważ istnieją biblioteki C ++, z którymi prawdopodobnie będziesz chciał się komunikować.
Wymaga to zrozumienia ręcznego zarządzania pamięcią, a także działania automatycznego zarządzania pamięcią / wyrzucania elementów bezużytecznych i kiedy należy stosować każdą technikę w tym samym programie.
Nie tylko Objective-C musisz znać Kakao i POSIX, ponieważ spójrz na to Objective-C jest do wszystkich praktycznych celów bezużyteczny poza środowiskiem Apple i musisz także znać Cocoa.
A kiedy Cocoa Cię zawiedzie, musisz wiedzieć, które interfejsy API POSIX mają być używane, gdy nie możesz robić tego, co chcesz z opakowaniami Cocoa.
Oznacza to również, że powinieneś znać Uniksa również w pewnym nietrywialnym zakresie.
źródło
Zależy od języka / osoby.
Jeśli jestem C # i ktoś z doświadczeniem JAVA / J2EE ma zastosowanie, dam szansę. Składnia między C # i JAVA nie jest TAKA inna. Kodowanie to kodowanie i myślę, że kiedy przyzwyczają się do niektórych różnic, wszystko będzie dobrze.
To samo dotyczy JAVA -> C #.
Teraz, jeśli jesteś osobą C # i ubiegasz się o pracę w C ++, chcę zobaczyć doświadczenie. Różnic jest zbyt wiele.
Tak, to zależy od sytuacji
źródło
Chociaż myślę, że OP nie wie, jak programista mający wiele paradygmatów może z łatwością dodać jeszcze jeden, wszystko sprowadza się do niechęci pracodawcy do ryzyka. Potencjalny najemca, który nie zna swoich narzędzi, jest dziką kartą; mogą być naprawdę świetne, ale mogą też być flopem, a ankieterowi będzie trudniej niż zwykle powiedzieć różnicę, jeśli nie będą mogli zadać szczegółowych pytań na temat używanych przez nich technologii.
Zdecydowanie nie twierdzę, że jest to właściwy sposób patrzenia na to, ale tak robią niektórzy pracodawcy. Sprytni wykorzystują to i zdobywają niesamowitych programistów z 30-letnim doświadczeniem w C ++, a głupi odrzucają ich, ponieważ brakuje im wymaganego 15-letniego doświadczenia w Ruby on Rails. Programiści mogą to również wykorzystać, unikając zatrudnienia u pracodawców, którzy są tak źle poinformowani. W końcu kto chce pracować w miejscu, które systematycznie podejmuje złe decyzje o zatrudnieniu?
źródło
Po części chodzi o rzucanie przez HR modnych słów na opis stanowiska, ponieważ tak naprawdę nie rozumieją roli. Dlatego od czasu do czasu możesz spotkać się z komiczną sytuacją w opisie stanowiska pracy, określającą 3-letnie doświadczenie w technologii istniejącej tylko przez 6 miesięcy.
Jeśli chodzi o to, czy powinno to mieć znaczenie, tak naprawdę zależy to od roli i zaangażowanych osób. Prawie wszyscy menedżerowie zatrudniający (z pewnością wszyscy inteligentni) poinstruują HR, aby przekazać im kandydatów, którzy mają dużą siłę w większości dziedzin, nawet jeśli brakuje im jednego lub dwóch punktów w opisie stanowiska. Jednak ogólnie nie dotyczy to niedawnego absolwenta; Mówię o ludziach z dużym doświadczeniem zawodowym w kontaktach z klientami lub wiodącymi zespołami.
źródło
Czy kiedykolwiek spojrzałeś na wszystkie elementy, które składają się na twój zestaw deweloperski? Na przykład, jakie IDE, środowisko testowe, ciągła integracja, kontrola wersji, metodologia programowania i paradygmaty kodu, które tworzą środowisko, z którego ktoś korzysta do tworzenia oprogramowania. Może to być szereg narzędzi, które niektóre firmy mogą chcieć, aby ktoś już wiedział, zamiast odbierać od zera. punkt ironcode na temat rynku pracodawcy jest tutaj kolejnym czynnikiem, ponieważ mogą istnieć przypadki, w których istnieje duża konkurencja o pozycję, a więc firmy mogą celować w niebo i ewentualnie je zdobyć.
Aby podać bardziej konkretny przykład tego środowiska, oto co mam tam, gdzie pracuję: Visual Studio 2008 robi ASP.Net przy użyciu C # głównie, nUnit, Cruise Control.Net, Subversion, Agile / Scrum, z mieszanką procedur, OO i funkcjonalny w zależności od tego, gdzie się patrzy. Gdybym chciał przejść na Javę, może to oznaczać przyzwyczajenie się do nowych narzędzi dla wielu z tych funkcji, które mogą nie być tym, co pracodawca chce pochłonąć kosztem zatrudnienia mnie w tej roli. Mogą być też pewne trudne punkty, które osoby z doświadczeniem w tej wersji mogą wiedzieć lepiej niż inni i unikać pułapek, które w innym przypadku mogłyby sprawić, że ktoś odejdzie: „Dlaczego zbudowali to w ten sposób?”.
źródło
Nie, patrz. Wymagania te nie są zestawiane przez informatyków. Są one składane przez pracowników działu HR. Sposób, w jaki pracownicy działu HR zdobywają wymagania, polega na zadawaniu pytań pracownikom działu IT, którzy chwiejnie chodzą do ekspresu do kawy.
Więc mówią: „Czego potrzebujesz?” a przypadkowy shmuck, który kończy odpowiadanie, mówi: „Programista. Potrzebuje kilku lat doświadczenia. Na przykład, nie wiem, 4? I byłoby dobrze, gdyby znał .Net”. Rozsądna odpowiedź.
Ale to przekłada się na „4-letnie doświadczenie w .Net 4” i jest to .Net 4, ponieważ kiedy będziesz korzystać z Google .Net, pierwszy link przeniesie Cię na stronę, która mówi o .Net 4.
Istnieje również możliwość, i natknąłem się na to kilka razy, że mają określony wymóg językowy, ponieważ chcą iść w tym kierunku i sądzą, że pójdzie gładko, jeśli będą mieli doświadczoną osobę na personelu.
źródło