Wpis z mikrobloga

#abstrakcjaprogramowania #naukaprogramowania #piszebomoge #rekrutacjawit

Wkurzaja mnie juz troche ciagle powtarzajace sie pytania w stylu "chcem na staz, 25k na reke o co mogom mnie pytac" - wiec postanowilem opisac sprawe nieco z mojej perspektywy.

A jest ona taka, ze w paru firmach zajmowalem sie rekrutacja - na roznym poziomie i w roznym stopniu, roznych ludzi i w roznyn wymiarze - jak i sam sie rekrutowalem tu i owdzie - i oto moj poglad na sprawe, czyli lista najwiekszych problemow ktore wystepuja przy rekrutacji, kolejnosc w sumie losowa:

1. Za przeproszeniem, sranie wyzej niz sie dupe ma, buta, chamstwo. Sytuacja na rynku wcale nie jest taka kolorowa jak sie wydaje ;) To jeszcze z czasow, gdy pracowalem w PHP, a wersja 5 byla calkiem swieza - szukalismy jakiegos flashowca - czasy swietnosci tej technologii, heh. Koles wiec wlazl do biura z rowerem, gadka szmatka. Costam umie podobno, ale portfolio nie ma, gotowych prac nie ma. Ostatni rok studiow chyba. Znajomosc PHP mierna, fotoszopa nie zna, cssy i htmle leża. Za taki pakiet zazyczyl sobie 7k na reke (ponad 10 lat temu!). Jak mu podziekowalismy to oburzony wyszedl, nie podajac reki i walac kolem od roweru w drzwi. ;) Inna sytuacja, calkiem swieza - gosc do programowania sieciowego (nie, nie webdev) - wszystkio fajnie, zajebiscie, wszystko obu stronom pasuje. Pytam go na koniec jeszcze - czy cos umie w JS albo innym HTMLu, bo team maly i moga sie inne zadania pojawic, firma mloda etc - koles odparl, ze on jest specjalista w swojej dziedzinie i od htmla to mozemy sobie zatrudniac hindusow. Chcielibyscie, np. bedac webdevami siedziec obok kogos, kto wami gardzi, heh?
To chyba takie dwa najciekawsze konkretne ekstremalne przypadki, ale sa i inne - sam mialem sytuacje, gdzie szukali kogos od Javy, zapytali mnie co sadze o PHP - a potem sie okazalo, ze tak naprawde to wiekszosc ludzi tam rzezbi wlasnie w PHP ;) Przypal. I to nawet nie o to chodzi co mysle o PHP, ale jak to wyrazam. Kultura jednak obowiazuje.
A szczegolnie smiesznie jest, jak ktos ma w CV codeacademy (nic zlego samo w sobie, nawet wskazane), a zgrywa seniora i oczekuje osobistej asystentki.
I tutaj uwaga - nie chodzi o NIE cenienie sie. To cos zupelnie innego i jest absolutnie wskazane. Ale jak ktos nie rozumie, ze dobry frontend to cos wiecej niz wyklikanie w dreamwaverze - no to coz.

Z tego co slysze od znajomych - banka rosnie coraz bardziej, tj. niektorym sie naprawde wydaje, ze przeczytanie ksiazki o javie do polowy to 10k, a do konca 15k od reki bez gadania. Dobrze wiemy, ze pieniadze sa tym biznesie - ale za darmo nikt ich nie daje. A rynek "gownoprogramistow" coraz bardziej nasycony... Generalnie nigdzie nie warto w zyciu sie sadzic ;)
A, i tutaj wpada tez "ale skonczylem studia" - o ile nie bylo to MIT, to dobrze wiesz jaka opinie maja studia w tym swiatku. Nie, ze studia sa zle - bron boze - tyle, ze traktowanie dyplomu jako dowodu ze cos sie umie w tej branzy raczej jest słabe.

2. Nieumiejetnosc myslenia. Tu chodzi przede wszystkim o to, ze wszyscy ucza sie jezyka. Do tego stopnia, ze nie maja pojecia jak dziala cokolwiek innego. Lezy i kwiczy znajomosc struktur danych, czasem nawet jak sa "wbudowane" w jezyk. Ogolnie jakakolwiek algorytmika ktora wykracza poza standardy (czyli sortowanie) - jest zle. Operacje grafowe to kosmos dla niektorych. Glupie trzymanie sie wzorcow z konkretnego jezyka - np. to, ze unit test zawsze musi testowac jedna i tylko jedna metode. Zbyt czeste poleganie na "magii" - slyszalem takie kwiatki, ze javowe foreach dziala tylko z wbudowanymi klasami albo np. ze iteratory to stara, juz nieuzywana metoda ;) Roznice miedzy listami a setami (to bardziej matematyka). Moim absolutnym "krolem" bylo pytanie jak policzyc pierwiastek z liczby bez uzywania wbudowanych funkcji sqrt. Na oko 70% ludzi robila sie biala, niektorzy dukali ze nie znaja sie na matematyce tylko sa programistami (tak tak) - jak sie domyslacie, nie chodzilo tu o podanie matematycznej formuly, a pokombinowanie - kazda odpowiedz, lacznie z brute-forcem byla "poprawna". Niestety, najgorzej brzmi - "eeeee, eeeee, eeee nie wiem, poddaje sie", zwlaszcza po 20 sekundach. Poza tym wypadaloby znac jakiekolwiek podstawy optymalizacj ;)

3. Testowanie. Lezy i kwiczy. Nie chodzi o formalne definicje "unit testu" ale o podstawy - a chodzi o poprawne pisanie kodu ktory da sie testowac. Malo ktos widzi cos zlego ze funkcja ma zhardkodowana operacje zapisu na przyklad. Kwiatki typu - "eee, no jak metoda ma byc testowana to musi byc publiczna". Mockowanie/stubowanie - a co to za magia? Testowanie wydajnosci - a co tam, opakowac kod w petle i wykonac 1000 razy. Ja rozumiem, ze testowanie nie jest seksi, ale to jednak czesc rzemiosla. A i trafiali sie tacy, co twierdzili, ze od testowania to sa testerzy a nie oni (patrz punkt 1) albo ze unity sa niepotrzebne, bo zabieraja czas :D Generalnie laczy sie to z punktem 2, no i troche z kolejnym, czyli

4. Narzedzia. Troche tak jak z Officem - to, ze umiesz zmienic kolor czcionki nie oznacza "znakomitej znajomosci Worda", tak samo umiejetnosc zrobienia commita nie oznacza "wysmienitej i doglebnej znajomosci GITa". Mozecie marudzic, ale nie kojarze firmy ktora apke produkcyjnie odpala klikajac strzalke w Eclipse albo wrzuca jary do katalogu obok apki. Ja wiem, ze to jeszcze mniej seksi niz testowanie - ale nadal to nic, czego nie mozna uzywac w domu nawet przy najmniejszym projekcie. Nikt nie oczekuje cudow, ale elementarna znajomosc, chociaz ze slyszenia i wiedzy do czego sluzy maven - to by sie jednak przydala, nie?.
Tutaj tez trafiaja wszelkie narzedzia typu debugger, profiler. Nie, println() nie jest dobra metoda debugowania. Nie, optymalizacja bez konkretnych danych nie przyniesie zysku. Slowem - warto znac swoje srodowisko.

5. Niedocenianie sie i niepokazywanie tego - przeciwnosc punktu 1 - ludzie pt "no tak, costam umiem, costam pisalem", czy - mam taki projekt, #!$%@? gierke, ale w domu na dysku etc. Chwalcie sie ludzie, ale z umiarem! Konto na githubie z DOBRYM projektem (dobrym technicznie, nawet jak wypisuje hello world). Jakies portfolio. Slowem - nie zgrywajcie przegrywa :P Ja wiem, ze to brzmi troche jak "nie badz za madry ani za glupi" - ale taka tez prawda. Raz trafilem na kolesia co przyniosl swoja apke na komorke - sciagala jakiestam obrazki (no to bylo w czasach gdy malo kto mial smartfona) - dobre pol godziny gadalismy o tym jak ja pisal (mimo, ze wtedy nie wiedzialem nic o pisaniu apek).
Slowem - chodzi o pokazanie, ze umie sie cos zrobic do konca.
A najlepiej - jak ma punkty 3 i 4, czyli testy i sensowne narzedzia.

tl;dr;

  • 44
  • Odpowiedz
@gienek_: Mimo że 90% czasu zajmuje się w pracy backendem strasznie mnie denerwuje jak muszę jakieś UI robić w swingu, a gdybym musiał w jakimś htmlu czy cssie grzebać to pewnie też szukałbym innej pracy.
  • Odpowiedz
@M4ks: wszystko fajnie i w ogóle zgadzam się, ale zastanawiam się jak ty te niepubliczne metody testujesz :P Znaczy no, da się, nie wiem, czy we wszystkich językach, w większości na pewno, ale chyba nie chciałbym pracować z kimś, kto puszczałby takie rzeczy na code review. No chyba, że czegoś tu nie rozumiem / nie dostrzegam.
  • Odpowiedz
Znaczy no, da się, nie wiem, czy we wszystkich językach, w większości na pewno, ale chyba nie chciałbym pracować z kimś, kto puszczałby takie rzeczy na code review. No chyba, że czegoś tu nie rozumiem / nie dostrzegam.


@sasik520: Możesz rozwinąć?
  • Odpowiedz
@kisi3l: jeśli testujesz niepubliczne metody, to robisz coś źle, np. masz za dużą klasę, obejrzałeś jakieś cycki na wykopie i zapomniałeś, co to są zależności i jak się je wstrzykuje, albo jesteś potwornie leniwy, żeby przenieść funkcjonalność. Wywołanie metody niepublicznej wymaga z reguły (zawsze?) brzydkich kruczków, lub zaciemniającego bloatu (w przypadku protected) a używanie jakichkolwiek brzydkich kruczków wymaga naprawdę solidnego usprawiedliwienia - którego najczęściej nie ma.

Jestem w stanie przystać
  • Odpowiedz
@M4ks: Spoko wpis ;) Mam zawsze grzane na mirko jak czytam, jak to każdy programista łapie 15k na rękę, a drugie tyle sobie trzaska po godzinach, jak akurat jakaś supermodelka nie robi mu loda ;)

A potem jeden z drugim zderzy się z faktami, straci klienta i okaże się, że miał szczęście, a nie że to standard, zmieni się technologia, moda, potrzeba, itd.. ;) Eh ;)
  • Odpowiedz
  • 0
@M4ks: nie jestem it, kompletny laik z programowania zapytam o te pierwiastki, mozna potegowac i sprawdzac czy zgadza nam sie z liczba pierwiastkowana?
  • Odpowiedz
temu programiscie co nie nie chciał nic robić w JS albo htmlu to się nie dziwie, facet miał w 100% rację. Równie dobrze można by jeszcze mu powiedzieć żeby posprzątał piętro czasem no bo mała firma i na sprzątaczkę nie styka.


@licho_nie_spi: no i zawsze moze odpowiedziec, ze dziekuje, nie?

Do webdeva nie zatrudniasz specjalisty od czego innego tylko raczej studenciaka albo kogoś kto nic innego nie potrafi. No albo hindusa ( ͡°
  • Odpowiedz
  • 0
@M4ks: w takim razie dla chłopaka bez studiów z informatyki, po roku samodzielnej nauki jakie są stawki? i po następnym roku jak jest ogarnięty?
  • Odpowiedz
@M4ks: myślę, że cała ta wasza metodyka rekrutacji jest nieprawidłowa. Gdybym wyzerował wszystkie terminy związane z programowaniem, które znam, usunął nazwy technologii itd., po otrzymaniu danego zadania, zajęłoby mi 3 minuty aby znaleźć rozwiązanie, posiłkując się dokumentacją/stackoverflow/google.
Powinniście jakoś testować zdolność myślenia, a nie terminologię lub kupę niepotrzebnych rzeczy które ktoś się obkuł jak do egzaminu na studiach. I do zdolności myślenia nie wliczam szybkości odpowiedzi, ponieważ kod nie jest pisany jak na teście z C++ na 2 semestrze w czasie kolokwium, ale ewoluujue, a ten proces wymaga czasu. Na olimpiadach informatycznych nie pisze się dobrego kodu, pisze się taki, żeby działał i żeby zdążyć.
Nie mówię, że z tego powodu zatrudniacie nie tych ludzi co trzeba, ale na pewno nie zatrudniacie najlepszego podzbioru, tracicie wiele dobrych kandydatów, wybierając na ich miejsce głównie bezmyślnych elokwentnych kujonów -.-

Przykład, rekrutacja do jakiegoś projektu C++
kandydat X: obkuł się TR1 na pamięć, jak testować, też z wiki, coś
  • Odpowiedz
Webdev w postaci HTMLa + CSS2 to byl wiele dobrych lat temu. Teraz jest to mocno skomplikowana, powstala wiec cala nowa galaz - wszelakie jasminy, karmy, grunty, angulary i tak dalej, responsywnosc, bootstrapy etc - optymalizacja wyswietlania strony (jakie cuda ludzie robia zeby np. przewijanie obrazkow bylo plynne, cala strona sie nie przerysowywala etc).


@M4ks: Czyli jednak do tego jest potrzebny kolejny specjalista, a nie ktoś kto poza swoimi obowiązkami
  • Odpowiedz
  • 0
@miqel: 25k na rękę, pisałem.

@to267224: a ja myśle, ze nie zrozumiałeś tego co pisałem. A pisałem właśnie i tym, by sprawdza myślenie a nie obkucie w ślepe definicje.
Dlatego pisałem o znajomosci narzędzi i rzeczy "naokoło" by właśnie uniknąć sytuacji jak pisałeś, ze ktoś potrzebuje pół roku by sie zaznajomić z projektem, bo pierwszy raz widzi mavena na oczy.
Poza tym znowu nie zrozumiałeś - nie chodzi o wymyślenie algorytmu na sqrt tylko o sprawdzenie czy ktoś potrafi pomysleć. To ma bardziej zachęcać do pokazania procesu myślowego niż do sprawdzania matematyki.
I przykro mi, ale tak, lepszy ktoś kto rozwiąże problem jakkolwiek niż napisze magiczny kod rodem z olimpiady którego nikt nie zrozumie i nie idzie poprawić. Tak samo wole kogoś, kto przetestuje metodę prywatna bo akurat trzeba niż powie bezmyślnie wierszyk, ze "nie
  • Odpowiedz
@M4ks: odpowiem krótko, jestem seniorem i leadem i z mojego doświadczenia mogę ci jedynie powiedzieć że wolałbym przyjąć kogoś, kto nie ma pojęcia o mavenie i innych technologiach, aniżeli kogoś kto zna milion frameworków i pojęć a nie potrafi samodzielnie myśleć. A umiejętność napisania na kolanie sqrt lub czegokolwiek innego co się da napisać w kilka minut wcale tego myślenia nie sprawdza ; ) Ale tam podałeś też lepszy przykład
  • Odpowiedz