Czy bycie Starszym Deweloperem posługującym się jednym językiem kwalifikuje Cię do bycia Starszym Deweloperem posługującym się innym językiem? [Zamknięte]

27

Jeśli pracuję jako programista w jednym języku (np. Java) i staram się o stanowisko starszego programisty, czy to kwalifikuje mnie do bycia starszym programistą na stanowisko w innym języku (np. Ruby)?

Philip
źródło
2
@Philip - to pytanie jest naprawdę kwestią graniczną na kilku frontach. Granica jest „zbyt zlokalizowana”, ponieważ naprawdę będzie miała dla ciebie wartość, a granica „nie jest konstruktywna”, ponieważ tak naprawdę nie spełnia wytycznych dotyczących zadawania pytań wymienionych w naszym FAQ. Jeśli możesz edytować to pytanie i zastosować się do wytycznych, warto zapisać pytanie.
Walter,
8
@ Walter - muszę się nie zgodzić z twoim pierwszym komentarzem na temat lokalizacji. Jest to ogólnie obowiązujące pytanie / odpowiedź dotycząca tego, czy bycie starszym programistą w jednym języku uprawnia cię do objęcia stanowiska starszego programisty w innym języku.
Craige,
1
@ Walter - usunięto problemy z lokalizacją, myślę, że teraz jest to prawdopodobnie rozsądne.
Jon Hopkins,
1
@Walker - Przepraszam, pytanie ma na myśli, jak mówi Craige. Właśnie napisałem to w ten sposób, ponieważ zakładam, że większość programistów uważanych za Junior chce kiedyś zostać Starszym Deweloperem. Wybór odpowiedniej pozycji Junior jest zatem kluczowy (lub nie)
Philip
11
To pytanie wydaje się zakładać, że „Starszy programista” ma jakieś ogólnie przyjęte znaczenie. Zazwyczaj jest to rodzaj tytułu zawodowego, a nazwa stanowiska jest czymkolwiek, na co ty i twój pracodawca możecie się zgodzić.
David Thornley,

Odpowiedzi:

33

Najlepszym sposobem na to jest sprawdzenie, jaka jest różnica między Deweloperem a Seniorem. Zakładając, że nie jest to tylko kwestia czasu, ogólnie oczekuję, że zarówno Programiści, jak i Starsi Programiści będą w stanie:

  • Napisz kod kompetentnie w językach wymaganych przez rolę
  • Diagnozuj i naprawiaj błędy
  • Napisz testy jednostkowe
  • Przestrzegaj standardów i rozsądnych najlepszych praktyk (kontrola wersji, dokumentacja)
  • Posiadać szerokie podstawowe kompetencje techniczne
  • Działaj profesjonalnie

Ponadto spodziewałbym się, że starszy programista będzie:

  • Mentor innych członków personelu w najlepszych praktykach
  • Być i potwierdzić punkt odniesienia dla przynajmniej niektórych języków używanych przez zespół
  • Aktywnie badaj i popieraj nowe obszary najlepszych praktyk
  • Przejęcie odpowiedzialności technicznej za bardziej złożone problemy / obszary kodu i zapewnienie solidnych rozwiązań

Powstaje zatem pytanie, czy spełniasz rozszerzone kryteria dla drugiego (lub trzeciego lub czwartego) języka? Sugeruję, że jeśli jesteś wystarczająco kompetentny technicznie w języku, do którego się przeprowadzasz, to tak, ponieważ większość rzeczy dla seniorów jest zbywalna.

Jon Hopkins
źródło
1
To naprawdę zależy od środowiska, zwłaszcza szefa. Niektórzy „Sr” uważają, że muszą wykazać się wiedzą na każdy temat, szczególnie tam, gdzie „jr” może mieć więcej wiedzy i doświadczenia na dany temat. Pewne poważne napięcie może narastać, gdy starszy z doświadczeniem w C ++ pracuje nad projektem C #. „Jr” może mieć większą bazę wiedzy dla tego konkretnego frameworka. Może to powodować zaciekłe bitwy, szczególnie gdy boss nasłuchuje.
P.Brian.Mackey,
@ P.Brian.Mackey - W porządku, istnieją dość duże różnice między różnymi zawodami o tym samym tytule. Poszedłem z tym, co uważałem za dość ogólną (i rozsądną) definicję, ale może ona wahać się od „ma ponad 30 lat” do „wie wszystko o wszystkim”.
Jon Hopkins,
1
powodzenia z tym drugim w jakimkolwiek języku bardziej skomplikowanym niż BF ... nawet C ma więcej ciemnych kątów, niż można się spodziewać!
SamB
„Niektórzy„ Sr ”uważają, że muszą wykazać się wiedzą na każdy temat”. Tych ludziom należy powiedzieć, żeby się wyluzowali. Nie możesz się niczego nauczyć, jeśli nie przyznasz, że są rzeczy, których nie wiesz. Zdolność do swobodnego przyznawania się do ignorancji czegoś jest oznaką siły, a nie słabości.
PeterAllenWebb
1
+1 Za wskazanie, że niektóre, ale nie wszystkie umiejętności są zbywalne. Świetny sposób na to.
Nicole,
5

Możesz ubiegać się o dowolne stanowisko w dowolnej firmie, którą lubisz, bez względu na swój obecny status.

Od ciebie, w swoim życiorysie / liście motywacyjnym / rozmowie kwalifikacyjnej, będzie zależeć, czy jesteś człowiekiem do pracy.

Gingerbreadboy
źródło
5

Po przeprowadzeniu wywiadu z Sr Developers szukam następujących cech.

  • Pracował w wielu językach
  • Ekspert w co najmniej jednym, kompetentny w co najmniej jednym innym, najlepiej w innym paradygmacie
  • Świadomy aktualnych technologii, najnowszego stanu techniki itp. W wybranym obszarze
  • Dobra podstawa CS, tj. (Algorytmy, kalkulacja kosztów, struktury danych itp.)
  • Możliwość przełączania między szczegółami konkretnego problemu a dużym obrazem
  • Wyraź, kiedy wszystko idzie w złym kierunku i dlaczego; a następnie być w stanie podążać w tym złym kierunku (aka profesjonalizm)
  • Zdolność do Mentora
  • Umiejętność pracy w zespole i z zespołem

Jest mnóstwo innych rzeczy, których szukam, ale to są główne punkty.

Chociaż zaleciłem zatrudnienie starszych programistów, którzy nie byli ekspertami w języku używanym w pracy, byli ekspertami w podobnych językach.

dietbuddha
źródło
3

Możesz złożyć podanie, ale przynajmniej gdybym zatrudniał, mógłbym cię zatrudnić lub nie.

Starszeństwo dotyczy (co najmniej) dwóch obszarów. Ogólna wiedza specjalistyczna w zakresie rozwoju i wiedza językowa / ramowa. (Celowo pomijam wiedzę o przestrzeni biznesowej) w chwili obecnej. Bycie starszym programistą w moich książkach obejmowałoby także poziom wiedzy z zakresu projektowania / architektury. Jak zbudować dobry / testowalny system itp.

Przejście do tego poziomu w Javie powinno dać ci dobrą pozycję w przypadku innych (podobnych / proceduralnych) języków.

Ale w erze oczekiwanej natychmiastowej produktywności mało prawdopodobne jest, aby wiedzieć o Ruby tyle samo co Java. Jak podzielić system na konstrukcje przyjazne dla Ruby zamiast na konstrukcje przyjazne dla Java. Prawdopodobnie znasz niektóre frameworki Java, a nie Railsy lub inne rzeczy specyficzne dla Ruby.

Gdybym miał poprosić cię o wykonanie kodowania tablicy w Ruby podczas wywiadu, czy mógłbyś to zrobić?

Wszystko to wpłynie na moją decyzję o zatrudnieniu ciebie, czy nie, na dowolnym poziomie; ale w szczególności dla wyższych ról.

Powodzenia

sdg
źródło
Dzięki za odpowiedź, tak, mógłbym napisać kodowanie tablicy w Ruby (to samo dla C ++, Java). Właściwie uważam się w tym momencie za jeszcze bardziej biegłego w Ruby niż w Javie, ponieważ od roku pracuję nad prywatnym projektem opartym na Ruby.
Philip
3

Nie.

To jedna z dużych różnic między naszym zawodem a innymi bardziej „formalnymi” zawodami. Jeśli pracujesz jako prawnik robiąc testamenty i nieruchomości przez 20 lat, będziesz miał wysoką stawkę, ponieważ masz 20 lat wiedzy zgromadzonej w tej dziedzinie .

Jeśli pracujesz w C ++ / Win32 / MFC od 15 lat, to tak naprawdę nie kwalifikuje cię do zajęcia wyższego miejsca jako programista Railsów, nawet jeśli nadal rozwiązujesz te same problemy w tej samej domenie ... powiedz medyczne na przykład fakturowanie.

Co gorsza, większość firm nawet nie weźmie Cię pod uwagę z grubsza podobnej pozycji ... Na przykład, jeśli pracujesz w C ++ / MFC przez 5-7 lat, powinieneś być w stanie nabrać prędkości na C # /.NET bardzo szybko, przynajmniej na komputery. Niestety większość firm nie widzi tego w ten sposób.

czerwony brud
źródło
4
Nie wiem, czy „większość” firm postrzega to w ten sposób. Problem w tej chwili polega na tym, że jest mniej dostępnych osób, które już znają (z twojego przykładu) C #, więc mogą zawęzić cię do wyszukiwania opartego tylko na liczbach.
Wonko the Sane
Myślę, że większość umiejętności i doświadczeń można przenieść. Nauka nowej składni jest łatwa. Niestety masz rację: nie chodzi o to, co myślisz, ale o to, co myśli osoba, która cię zatrudnia.
Nikt
3

To zależy

Wyjmij z tego „programowanie”. Udawaj, że jesteś profesjonalnym tłumaczem.

Załóżmy, że angielski jest Twoim pierwszym językiem, a także biegle władasz językiem francuskim. Najprawdopodobniej nauczysz się hiszpańskiego dość łatwo.

Jednak nie jest tak prawdopodobne, że szybko opanujesz wiele chińskich dialektów. Podczas gdy Twoje doświadczenie jako lingwisty pomoże Ci nauczyć się języka (języków), dając przewagę nad kimś, kto nigdy nie uczył się języka obcego, nadal zajmuje ci dużo więcej czasu, aby stać się „ekspertem” (tj. „Seniorem”) ) tłumacz w tym języku.

Wonko przy zdrowych zmysłach
źródło
2

Tak i nie.

Jeśli języki są podobne , powiedzmy C ++, Java lub Ruby, na pewno powinieneś się zastanowić. W zależności od elastyczności ludzi siedzących w tych biurach masz szansę na walkę.

Jeśli jednak języki są bardzo różne , a przez to mam na myśli, że jesteś facetem COBOL, który był podekscytowany Haskellem, to pomimo twoich ponad 10-letnich szans na COBOL, istnieje duże prawdopodobieństwo, że możesz nie być w stanie uzyskać nawet wywiadu.

PARA RZECZY, KTÓRE ZOSTANĄ W SWOJEJ WYSOKOŚCI W TAKICH SYTUACJACH:

  1. Jeśli znasz już wiele języków i masz doświadczenie w tym zakresie. Powiedzmy, że jesteś dobry w C ++, ale znasz też Perla, Tcl i trochę Ruby, z którymi chciałbym wziąć pod uwagę Javę. W rzeczywistości znam osoby, które mają CV w języku C ++ w swoim CV.
  2. Jeśli twoje doświadczenie jest w pokrewnej domenie, masz duże szanse na to. Na przykład, jeśli jesteś programistą gier w C ++, nie widzę powodu, dla którego nie możesz zostać zatrudniony do pracy w języku C #, która wymaga sporej wielowątkowości.
Fanatyk 23
źródło
1
Okej, muszę zapytać - jak Ruby jest jak C ++ lub Java? C ++ i Java są językami w stylu C, a Ruby pochodzi z Perla, Pythona i Smalltalk.
Craige,
Miałem na myśli OOP jako motyw przewodni.
Fanatic23,
2

Rzadko widuję tytuł „starszy” oparty na języku. Znam kilku starszych programistów systemów , kilku starszych programistów internetowych i jednego starszego programistę COBOL.

Programowanie jest wieloaspektowe i ma do zaoferowania sporo dyscyplin. Spodziewałbym się, że starszy programista (w tytułach, programista i programista wydają się być wymienni) będzie biegły w kilku popularnych językach używanych do tworzenia stron internetowych. Czy to czyni guru Pythona i PHP natychmiastowym ekspertem w C #? Nie. Z drugiej strony, nie wszyscy guru C # opanowali sztukę zarządzania projektami i przywództwa.

Pełniłem rolę CTO w firmie, oprócz tego, że byłem starszym programistą systemów. Z radością jednak odłożyłbym się do eksperta od programu lub LISP, gdybyśmy napotkali projekt, który wymagałby jednego z nich. Część bycia dobrym liderem jest zrozumienie własnych ograniczeń i braków pierwszy .

Nie jestem pewien, czy chciałbym pracować w firmie, a nawet w dziale, który koncentrował się na jednym i tylko jednym języku. To brzmi tak, jakby zrobił to, co zawsze mówili, palenie papierosów: zahamowanie wzrostu, gdy rzeczywistość jest znacznie gorsza.

Nie gonić za tytułami, gonić za wiedzą. Ale, żeby być uczciwym, twoja rola na wcześniejszym stanowisku kierowniczym prawdopodobnie zapewni ci dodatkową przewagę, pod warunkiem, że wykażesz się kompetencją w danym języku.

Tim Post
źródło
0

Myślę, że to zależy od tego, co postrzegasz jako starszy programista? Jeśli jest to raczej rola architekta, wiele zasad projektowania i wzorców projektowych będzie do Państwa dyspozycji na podstawie doświadczenia dewelopera, niezależnie od języka. To jest plus ;-)

Jednak patrząc na tworzenie aplikacji lub kodu w sposób możliwie najbardziej produktywny i łatwy w utrzymaniu (zwijanie bitów zapisanych), nie sądzę, abyś mógł przejść na tym samym poziomie doświadczenia przy zmianie języka, IDE i / lub frameworka.

Ale jak powiedział runrun, nie powstrzymuje cię to od ubiegania się o nic

Syg
źródło
0

Będzie to w dużej mierze zależeć od firmy, w której przeprowadzasz wywiad, ponieważ zazwyczaj wewnętrzne procedury kadrowe decydują o tym, jak zatrudniani są nowi pracownicy. Większe firmy wydają się być bardzo sztywne i jeśli twierdzą, że musisz mieć n- letnie doświadczenie w danym języku, aby zostać uznanym za wyższy poziom, może się okazać, że przyniosą ci tylko programistę średniego szczebla.

To powiedziawszy, nie powinno to jednak powstrzymywać Cię od ubiegania się o stanowisko, a jeśli przyprowadzą cię na rozmowę kwalifikacyjną, powinieneś o tym porozmawiać.

rjzii
źródło
0

Powiedziałbym, że im bardziej niski poziom lub język jest przyjazny dla maszyny, tym bardziej jesteś ekspertem.

Znajomość Java / C # jest mniej opłacalna niż znajomość ASM / C / C ++.

Te ostatnie języki zajmują się zarządzaniem pamięcią i innymi rzeczami, które faktycznie mają znaczenie podczas programowania.

Ale w przypadku innych „łatwych” języków konieczne byłoby szybkie porównanie funkcji, które sprawiają, że są one „łatwiejsze”, ale uważam, że jest to bezużyteczne. Doświadczenia z łatwymi językami są lepiej mierzone za pomocą CMS / innego gotowego kodu używanego do pracy, takiego jak zapalnik kodu lub django lub Apache lub RoR.

Dla mnie starsi programiści to ludzie, którzy programują jądra, systemy, wbudowany sprzęt itp. Programiści używający języków, które nie są przyjazne dla maszyn, nie są dla mnie seniorami. Po prostu wykonują robotę, ale to wszystko.

żart
źródło
Ciekawa opinia Zgadzam się, C ++ to znacznie więcej bólu. Z drugiej strony jest dużo bólu w C ++, ponieważ niektóre części (obecnego) języka są trochę przestarzałe. Nowsze języki mają znacznie więcej funkcji bibliotecznych, Lambdas, for-each-loop i mniej tajemniczą składnię dla wielu rzeczy. Problemy te mogą odwracać uwagę od koncentrowania się na rzeczach niskiego poziomu.
Philip
To ciekawa opinia. Z mojego doświadczenia wynika, że ​​starszy człowiek zajmuje się zarządzaniem, niekoniecznie dlatego, że nie koduje, ale dlatego, że ma większe doświadczenie w tłumaczeniu rzeczy niskiego poziomu na nietechnicznych. Z pewnością możesz szanować tę umiejętność, czy nie. Twój punkt widzenia rodzi pytanie w zespole 30 programistów, czy żaden z nich nie jest starszy, ponieważ nie umie napisać jądra? Nie ma dla ciebie znaczenia, czy pracowali nad mozaiką, czy właśnie ukończyli szkołę średnią?
Steve Jackson
30 programistów? DEWELOPERZY? Cóż, „starszy” oznacza dla mnie, że dana osoba koduje od dłuższego czasu lub jest w starszym wieku. Ale jeśli myślę, że „starszy” pod względem doświadczenia i wiedzy, która ma znaczenie, nie sądzę, że można to nazwać doświadczeniem programistycznym, jeśli używasz języka zbierającego śmieci.
Jokoon