Rynek pracy a programowanie

Dlatego tak na Krzyzaka naskoczylem, ze ma fatalne podejscie to tego problemu, poniewaz dwa lata temu szukalem pracy na stanowisku programisty Pythona. W tamtym okresie w Krakowie byly dwie oferty pracy: gra online oraz system stosowany w logistyce. W obu firmach spotkania wypadly bardzo dobrze. Firma pierwsza (gra) nie zgodzila sie na 3/4 etatu - druga dala taka mozliwosc, ale na to stanowisko bylo 16 kandydatow, wiec znalazl sie ktos lepszy ode mnie. Na chwile zaczepilem sie w firmie produkujacej ogromne oprogramowanie w perlu, a docelowo przegladalem oferty na stanowisko programisty java (ktorych bylo mnostwo w tym czasie) - i znalazlem prace w niemieckiej firmie w ciagu 2 tygodni.

Krzyzak wybacz ten atak, ale Twoje podejscie u mnie nie ma zadnych szans - mam zone i dwojke dzieci :slight_smile:

pozdrawiam
Slawek

[quote=filiptepper]Ruby / Rails w Polsce powoli staje się utrzymaniowym koszmarem. Bardzo ciężko znaleźć dostępnych ludzi z doświadczeniem. Jeżeli się znajdą - są bardzo drodzy.

Co ciekawe (patrząc z perspektywy szukania inwestora) fakt, że napisaliśmy Durszlaka w Railsach jest dla nas obecnie obciążeniem, a nie atutem.[/quote]
Polski rynek biznesowy aplikacji webowych, także działających na nim “inwestorów” (wybacz cudzysłów, ale kilku poznałem i nie potrafię tego słowa w tym kontekście używać na serio), należy traktować bardziej jako kuriozum czy lokalne zaburzenie niż cokolwiek wskazującego globalny trend.

Trudno znaleźć kompetentnych rubiowców także w Niemczech czy USA. Co nie powstrzymuje startapów przed powstawaniem w Railsach, a inwestorów przed inwestowaniem w nie.

Oraz: dobry pehapowiec (taki naprawdę dobry, z nawykami i kompetencjami dobrego railsowca) kosztuje niewiele mniej, jeśli w ogóle mniej.

ja wiem czy fatalne? poprostu wierzę, że będąc dobrym programistą, jesteś w stanie znaleźć pracę w prawie dowolnym języku.

i wydaje mi się, że tu jest problem. W mojej najbliższej okolicy są dwie firmy railsowe. Ciut dalej mam do kolejnej, lub dwóch. Do firm na tyle odległych, że codzienna praca w biurze odpada, ale istnieje możliwość przyjazdu do biura od czasu do czasu kolejnych… nie wiem - 2-3?
Mam natomiast dostęp do dziesiątek firm w Polsce, i setek na świecie, dla których praca zdalna jest OK.
Jasne, nie każdy ma warunki do pracy z domu (to akurat da się załatwić), nie każdy potrafi pracować w domu(to akurat faktycznie trudna umiejętność, ale warto ją posiąść), ale programiści jako jedni z niewielu mają tą ogromną zaletę, że mogą pracować dla ludzi z dowolnego miejsca na ziemi, więc czemu z tego nie korzystać?

argument rodziny mam rozumieć miał pokazać, że masz kogoś na utrzymaniu i potrzebujesz stałego, pewnego źródła dochodu. Wiem, że nie jest to łatwe, ale być może będziesz w stanie zwiększyć swój dochód pracując w zagranicznej firmie, po prawie zagranicznych stawkach, ale ze swojego domu?

Widzę temat się rozwinął.
MAcie rację - warto się uczyć wielu języków… ale ja nie popieram szkoly “lepiej większą ilość po łebkach niż jeden na maxa”.

Ktoś tutaj wspomniał o Objective-c… zastanawiam się czy moda na ten język nie jest tylko i wyłącznie uzależniona od mody na iPhona.
To może minąć.

Railsy są w chwili obecnej w fazie w której hype wygasł i ludzie dopiero teraz łapią się za głowę i krzyczą “co myśmy kurwa zrobili”. Znam osobiście 3 projekty które padły lub przeszły na php, tylko i wyłącznie dlatego że nie dało się znaleźć programistów Ruby on Rails którzy za sensowne pieniądze pracowali by nad produktem.
Więcej dowodów empirycznych dostarcza moja skrzynka odbiorcza, regularnie dostaje średnio kilka(4-6) propozycji pracy miesięcznie! Odsiewając bezsensowne zostaje nadal 1-2 propozycje które nie tylko oferują > 6000 zł netto to jeszcze są sensowne. Niczym niezwykłym są projekty po 10tys zł miesięcznie.

Rails jest naprawdę naprawdę beznadziejny jeżeli chodzi o utrzymanie. Brak sprawdzania typów, brak statycznej kompilacji, bardzo ubogie narzędzia do statycznej analizy kodu. Badania z lat 90 pokazały że 80-90% kosztów projektu jest zwykle alokowane w jego utrzymanie. W odpowiedzi na te badania powstała Ada która miała za zadanie zminimalizowanie kosztu utrzymania kodu poprzez rygorystyczne metody programowania i inzynierii.

Rails poszedł w zupełnie innym kierunku stawiając na jak najszybsze dostarczenie aplikacji. Wymusił to rynek który stawia teraz na “get big. fast” Wszystko by było w porządku jakby na tym się kończyło, niestety część tych aplikacji jednak odnosi sukces. I teraz jeżeli tamte badania nie kłamały to czeka cię wydanie jeszcze kwoty 4-8 razy większej już wtopionej w projekt.
A teraz kicker, te badania o których ciągle mówię zakładały w miarę statyczny rynek. Teraz wyobraź sobie ze musisz walczyć o programistów z innymi startupami, i ich cena rośnie i rośnie i rośnie.

Kolejny przykład anegdotyczny nie dalej jak wczoraj odezwał się do mnei rekruter proponując mi dwa stanowiska: .Net developer(senior) oraz Oracle pl/SQL programmer (też coś o seniorowatości było). Na moją odpowiedź że albo 8000 netto na umowę o pracę albo 10000 netto firma-firma albo nie mamy o czym gadać, odpowiedział że ma tylko jedną taką ofertę - w Ruby on Rails.

Programując w RoR akumulowanie długu technologicznego jest banalne jak nigdy dotąd więc każdemu kto pyta mówię wyraźnie zależnie od tego czy jest:
programistą - ucz się Rails, przy tylu projektach stworzonych, będziesz latami zarabiał na utrzymywaniu gówna napisanego przez innych
pracodawcą - nie zaczynaj kolejnych projektów w Rails. Zatrudnij kompetentnych phpowców. Dostaniesz 2 seniorów w cenie jednego łebka który przeczytał “programming with rails” i myśli że stoworzy aplikację w 15 minut.

[quote=leehooker]Ktoś tutaj wspomniał o Objective-c… zastanawiam się czy moda na ten język nie jest tylko i wyłącznie uzależniona od mody na iPhona.
To może minąć.[/quote]
In unrelated news, 2009 has been announced as the year of iPhone’s death.

Ten fragment na razie wygrywa w kategorii “największej bzdury napisanej w temacie” (także kategoria “ludzie którzy nie rozumieją skąd się wziął hajp na railsy w świecie zdominowanym przez php”), ale wątek jeszcze młody, ledwie druga strona :smiley:

Świstak: trolujesz? :slight_smile:

UPDATE:
trochę offtop, ale jak o PHP, to właśnie mi wpadł na twitterze taki link: http://jburrows.wordpress.com/2011/12/17/what-to-look-for-in-php-5-4-0/
Wygląda tak jakby PHP dążył do bycia fajnym językiem. Traitsy, closures, development server built-in. Gonią chłopaki, gonią.

Tomash ma wątpliwości wiec rozwinę temat:

Ruby on Rails sam w sobie zawiera 30 bibliotek jako zależności. Do tego cżesto w pierwszej kolejności instaluje się cancan-a devisea, i 3-4 inne standardowe biblioteki.

Problemem z którym najczęściej się spotykam w projektach Ruby on Rails są zależności. Ktoś kiedyś uznał że warto uniknąć NIH wrzucił w github.com kilka fraz i dostał bibliotekę która robiła to co potrzebował.
I ekstra, z tym jednym problemem, większość osób nie robi code-review bibliotek. Taka jest prawda taki jest fakt. Jestem pewien że są ludzie którzy tak robią, ale wiele ich nie ma. Nie wspominając że często porządny code review trwałby dłużej niż napisanie tego samemu, ale należy unikać NIH więc instaluje się bibliotekę.
Ćwiczenie: przejrzyj jakiś swój projekt większy, przejrzyj biblioteki i sprawdź ile z tych pluginów ma w ogóle testy? a ile z nich ma sensowne pokrycie?
Niestety najczęsciej co z oczu to z serca, skoro gemów nie widać, to nei ma znaczenia ile ich jest.

I teraz masz problem bo rok później musisz dodać funkcjonalność to albo kombinujesz z rozszerzeniem, albo forkujesz, albo wreszcie przepisujesz samemu. To jedna forma długu.

Druga forma długu istnieje w miejscach gdzie Railsy tracą swój szkielet. Cssy, javascripty itd. W pewnym momencie to zauważono i wersja 3.1 już poprawiła to bardzo mocno, ale te wszystkie projekty w rails 2.3 będą jeszcze straszyć latami.

I na sam koniec testy.

Teraz należy odróżnić dobrego programistę od złego programisty, oraz programistę z kręgosłupem od programisty bez, oraz programistę elokwentnego od standardowego.

Dobry, elokwentny programista z kręgosłupem powie: “Nie mogę zgodzić się na postulat żebyśmy odpuścili sobie testy. Rozumiem że deadline jest ciasny, ale z doświadczenia wiem że pisanie testów pozwoli nam nie tylko na dokończenie projektu przed deeadlinem, to jeszcze znacząco zmniejszy liczbę błędów w testach akceptacyjnych”

Głupi programista powie: “Nie potrzebuję testów, jestem przecież świetnym programistą, błędy zdarzają się innym”
Programista bez kręgosłupa powie: “Ok. Rozumiem że deadline jest blisko, myślę że możemy sobie odpuścić testy pod warunkiem że nadgonimy po releasie”
Programista nieelokwentny spróbuje powiedzieć to co elokwentny ale mu nie wyjdzie :slight_smile:

Tak więc teraz masz anegdotyczne szanse 1/6 że w ogóle testy będą pisane na bieżąco.

W pewnych warunkach na przykład przy instalcii bibliotek “ból” miał swój cel, miał zmusić programistę do zastanowienia się 2 razy czy na pewno potrzebuje tej biblioteki. Railsy + gemy + github zmniejszyły ból na tyle, że teraz na porzadku dziennym jest instalowanie kombajnów i dziesiątek bibliotek do robienia największych pierdół (a w jQuery to już w ogóle można znaleźć pluginy do robienia najmniejszej pierdoły, aż czekam kiedy się pojawi plugin do dodawania).

W konsekwencji Ruby on Rails akumuluje dług technologiczny na niespotykaną dotychczas skale ze względu właśnie na swoje zalety:

  • niesamowicie dobre zarządzanie zależnościami.
  • Wysoką integrację (z css i js jako przykładami).
  • Bardzo wysokie tempo tworzenia oprogramowania
  • Dynamiczną naturę.

Wszystko to jest niesamowicie przydatne gdy musisz wprowadzić aplikację na rynek, i cholernie problematyczne gdy musisz ją utrzymywać przez 5 lat.

@drogus: ani trochę.

Całkiem poważnie mówię.
Chcesz się uczyć programować i zarobić na tym pieniądze: Rails. Bo niesamowicie niska bariera wejścia, głód rynku oraz fakt że pracodawcy są świetni.
Chcesz stworzyc nową aplikację: Wszystko prócz Rails i node.js. Node.js ze względu na to że platforma jest gówniana, Rails ze względu na problemy kadrowe.

i co mamy 3 lata później?

W takim razie nigdy nie pracowałeś z projektami w PHP, jeśli absolutnie serio piszesz takie bzdury.

Jestem pewien że istnieje wszechświat równoległy w którym jest to poważny argument przeciw technologii, a nie za wyszkoleniem większej ilości kompetentnych użytkowników.

iphone 4 bijacego wszelkie możliwe rekordy sprzedaży?

W takim razie nigdy nie pracowałeś z projektami w PHP, jeśli absolutnie serio piszesz takie bzdury.[/quote]
Tylko jakieś 3 lata. Co ja tam wiem :wink:
Nie twierdzę że projekty w php są lepsze jako ogół. Mówię że mając obecny rynek pracy masz do wyboru świetnego programistę php za cenę średniaka w RoR. A w php tteż mozna pisać dobre aplikacjie, trzeba tylko chcieć.

Jestem pewien że istnieje wszechświat równoległy w którym jest to poważny argument przeciw technologii, a nie za wyszkoleniem większej ilości kompetentnych użytkowników.[/quote]
Niestety w tym świecie to też jest problem, i to całkiem realny.

Wiem bo sam startowałem firmę gdy nie było wystarczającej ilości railsowców. Możesz robić szkolenia, trenować ludzi ( i tak robiłem ), ale to zajmuje czas, a jak masz oddać aplikację za 3 miesiące to szkolenia odpadają.
Dodatkowo rynek jest tak suchy że teraz nawet jak kogoś chcesz wyszkolić i liczyć że będzie dla ciebie pracował taniej to się możesz przeliczyć. Gosc znajdzie fuchę i pójdzie w cholere, bo konkurencja nie traci czasu ani pieniędzy na szkolenia, dlatego może płacić 50% więcej.

Prawda jest taka że sam prowadząc firmę tak jak prowadzisz, czynisz z Polski raj na ziemi dla programistów. Jednocześniej upewniasz się że żaden polski startup z kapitałem na poziomie 30-50 tys. nie dostanie w swoje ręce dobrego programisty. Wszyscy pójdą do ciebie albo do jednej z wielu innych firm outsourcingowych.
Chwałą ci za to że jesteś tak świetnym pracodawcą. Co nie zmienia faktu że startupy powinny sobie odpuścić Railsy jako język, właśnie ze wzgledu na brak programistów oraz bardzo wysokie ich zarobki.

@Swistak: Pokaż mi srodowisko programistyczne gdzie

  1. wszystkie biblioteki są świetnie otestowane/udokumentowane po fantastycznym code-review
  2. testy są zawsze pisane na biezaco a wszyscy w zespole to dobrzy programisci lub tacy “z kręgosłupem”
  3. kilkuletnie aplikacje nie mają praktycznie żadnego długu utrzymaniowego (ponieważ ludzie którzy ją pisali przewidzieli wszystkie rzeczy, które mogą się wydarzyć i obecne utrzymanie i rozwój to w 99% przyjemność)

to jeszcze dzisiaj wykonam sudo rm -rf / na moim laptopie :smiley:

[quote=Świstak]Prawda jest taka że sam prowadząc firmę tak jak prowadzisz, czynisz z Polski raj na ziemi dla programistów. Jednocześniej upewniasz się że żaden polski startup z kapitałem na poziomie 30-50 tys. nie dostanie w swoje ręce dobrego programisty. Wszyscy pójdą do ciebie albo do jednej z wielu innych firm outsourcingowych.
Chwałą ci za to że jesteś tak świetnym pracodawcą. Co nie zmienia faktu że startupy powinny sobie odpuścić Railsy jako język, właśnie ze wzgledu na brak programistów oraz bardzo wysokie ich zarobki.[/quote]
Dzięki za miłe słowa, ale to nie do końca tak: startupowi nie jest potrzebny programista ogarniający wieloelementowe architektury na poziomie, przepraszam za słownictwo, enterpise’owym (a takie są projekty naszych klientów), do tego umiejący pracować w dużym zespole.
Startupowi jest potrzebny pełen entuzjazmu gość od przysłowiowego “wszystkiego”, który nie musi pisać najpiękniejszego i najbardziej wykręconego kodu na świecie.
Widzę bardzo niewielkie przekrycie pomiędzy ludźmi których zbieramy z rynku pracy, a ludźmi którymi zainteresowane są startupy. Zresztą chyba wszyscy tutaj robimy jakieś własne projekty na boku, przy o wiele mniejszej ich opłacalności na tym etapie (delikatnie mówiąc) – więc nie kupuję narracji o “zepsutych stawkami” programistach. Sam bym dołączył do jakiejś ekipy za ułamek mojej “komercyjnej” stawki godzinowej, tylko po prostu za sensowną współwłasność.

@hosiowiak:

Zupełnie pominąłeś moją tezę skupiajac się na argumentach.

Ja twierdzę że:

Ad 1. Ponieważ dodawanie bibliotek, ich wyszukiwanie oraz ilość bibliotek w RoR jest tak duża istnieje statystycznie większa szansa że trafisz na kiepską bibliotekę niż w innych językach programowania. Świetnym tego przykładem są biblioteki do autentykacji i autoryzacji, których nie tylko sa tony, to jeszcze regularnie ta która jest na “topie” się zmienia, dzisiaj jest to devise, rok-dwa temu restful_autentication, wcześniej acts_As_authenticated i dziesiątki innych.
Ad 2. Tu pewnie Tomash może cię zadziwić. Ale generalnie też duża część moich projektów w ciągu ostatnich paru lat.
Ad 3. Mylisz pojęcia. Dług technologiczny powstaje kiedy rozwiązania optymalne (w danym momencie) są zastępowane przez nieoptymalne “tymczasowe” z założeniem że zostaną poprawione w przyszłości. Osobiście pracowałem nad kilkoma projektami bez długu technologicznego. W ogóle. Każdy sprint kończył się kodem, dokumentacją i testami które spełniały wszystkie wymagania i przechodził code review by upewnic się że spełnia okreslone standardy.

Każda z tych trzech była świetna, w swoim czasie najlepsza (pokryta testami, sprawdzona w bojach, utrzymywana), a dzięki dość gęsto połączonej społeczności szybko się stawała de-facto standardem.

Serio, teksty o tajemnych pluginach które nie wiadomo kto skąd i kiedy zainstalował są takie 2009. Popatrz w Gemfile projektów z ostatnich dwóch lat. Ile jest tam “złych” bibliotek?

Z drugiej strony uwierzytelniania może lepiej nie pisać samemu jak nie jesteś pro :wink: W ostatnim projekcie napisaliśmy coś samemu, bazując na ActiveModelu, ze względu na dość specyficzne potrzeby, ale ogólnie nie widzę nic złego w pluginach akurat w tym celu. Gorsze są dla mnie setki pluginów z zajebistymi DSLami, kiedy można by to zrobić ładnie stosują OOP, bez żadnych udziwnień. Co do autoryzacji, to się nie wypowiadam, bo to moja Nemezis, nigdy tego nie zrobiłem dobrze, dlatego cieszę się, że w ostatnich 2 latach nie miałem projektów, które wymagały czegoś zaawansowanego w tym temacie :wink: (no może przesadzam, ale dalekie od prawdy to nie jest).

Co do sprawdzania kodu bibliotek, to ja zaczynam od tego jak chcę coś dodać do projektu i polecam to wszystkim. Co więcej, wydaje mi się, że czym lepszy programista, tym bardziej restrykcyjnie to robi. Jak miałem szczęście pracować z Jose Valimem, to zrezygnowaliśmy z jednego feature’a, bo używaliśmy resque i jedyny sensowny i szybki sposób na implementację wiązałby się z zainstalowaniem jakigoś rozszerzenia, które miało dużo kodu wyglądającego na ciężki w modyfikacji w razie potrzeby.