Skocz do zawartości

SzinekDev

  • wpisy
    4
  • komentarzy
    53
  • wyświetleń
    5 244

Programista bez studiów część 2.


Szinek

3 927 wyświetleń

Jestem programistą!

W końcu, siedziałem w biurze, była tylko sekretarka i jeden pracownik. Zaraz do tego wrócę, pokrótce opowiem o firmie: 15 osobowy software house, gdzie każdy developer jest all-in-one: frontend, backend, designer, architekt, tester, administrator serwerem. 5 osób pracowało w siedzibie, reszta u klientów w biurach. Stack technologiczny w moim projekcie to Java 8 (Spring Boot, JPA) oraz JavaScript + AngularJS. Ilość osób w zespole: ja i jeden student. xD Nieważne, wtedy mi to nie przeszkadzało, programowałem zawodowo!

Szef przyszedł jakoś godzinę później (około 10), dał mi używanego :| kilkuletniego :| laptopa HP. Sprzętowo klasyczna biurowa stacja robocza: 13", i5 + ssd. Odpalam, już większość potrzebnych narzędzi zainstalowanych przez poprzedniego użytkownika, ja ściągam tylko Eclipse'a i mam zczekałtować projekt. Pierwsza nowa rzecz: linia poleceń. Do tej pory korzystalem zawsze z GUI, ale w pracy wyszło, że CLI jest często znacznie szybsze i znacznie wygodniejsz. Nie bójcie sie tego, ze swojej strony polecam ConEmu.

Cały pierwszy dzień zszedł mi na przeglądanie kodu i granie w Mortal Kombat. Tak, mieliśmy PS2, PS3 i PS4 w biurze na których spędzaliśmy płatne 2 godziny dziennie :) Nic tego dnia tez ze stresu nie zjadłem, dopiero po wyjściu z pracy poszedłem do Maca ;a btw. przez pierwsze 2 tygodnie dojeżdżałem do Poznania 100km.

Sam projekt w którym brałem udział był rozmiarów MakeShota - ~30 tysięcy linijek. Obsługa podatników dla pewnego miasta, tak w skrócie, więcej nie moge :P 

Do komunikacji wewnątrz firmy używaliśmy Slacka, hostowanie repozytorium i bugtracking odbywał sie na Bitbuckecie.

Drugi dzień i powiem wam, że od drugiego dnia praktycznie każdy dzień był taki sam. Przyszedłem, popatrzyłem jeszcze w kod i zaczynałem się już nudzić. To szef mówi, żebym spróbował zrobić jakiegoś taska w Angularze. Spojrzałem co wisi na Bitbuckecie, zapisałem się do niego i szukałem miejsca w kodzie gdzie by naklepać. Jeszcze pokazali mi na czym mogę się wzorować i już byłem sam sobie. git commit, git push, "nice" od szefa i kolejny task. Zero code review, testów jednostkowych, kontroli jakości, ciągłej integracji, niczego ;a Kod w repo, nikt sie nie zastanawiał czy u klienta się nie wysypie.

I tak to było. Przychodziłem rano, kończyłem co wczoraj zacząłem lub brałem coś nowego. Z reguły zadania nie były wymagające, dodanie nowego widoku do strony, kontrolera do niej, odpytanie bazy danych, ew. jakieś łatwe operacje na danych. 

Nie narzekałem, aż do listopada, gdy wyoutsourcowali mnie częściowo do wielkiej korpo jako człowieka od klepania stronek w HTMLu :D Wtedy wiedziałem, że powoli zaczyna się stagnacja w rozwoju i czas na zmiany.

Pracowałem od maja do stycznia. Jak oceniam spędzony tam czas? Bardzo dobrze. Zobaczyłem jak wygląda programowanie komercyjne, minimum jakiego powinienem oczekiwać po kolejnej firmie.

Poszukiwania nowej firmy

Wysłałem sporo CV, zdecydowanie. Ale nie patrzyłem na to czy wymagają rok, dwa czy 5 lat doświadczenia. Słałem jak leci :) Nawiązując do głównego tematu, czyli studiów, tylko jedna firma, która sie ze mną skontaktowała, odrzuciła mnie z powodu ich braku - Capgemini.

Pierwsza firma z którą rozmawiałem to ponownie ~20 osobowy software house z gównoumową i gównopensją. Nie, dziękuje.

Odbyłem również rozmowę kwalifikacyjną w firmie ubezpieczeniowej, gdzie w wymaganiach mieli Jave, a okazało się, że szukają SQL developera xD Odpadłem po rozmowie z menedżerem działu, czyli na ostatnim etapie. W tej firmie nie miałem sprawdzanej wiedzy przez nikogo, posadzili mnie przy PC, dali test i miałem rozwiązać. Nikt mnie nie pilnował. Komputer internetu nie miał, ale mogłem spokojnie Googlowac z telefonu, lol. Zaprogramować proste algorytmy, napisac zapytania do bazy danych, aby wykonać jakieś polecenie. 90 minut.

Z kolejną firmą odbyłem screening telefoniczny - normalna rozmowa kwalifikacyjna z "java interview questions" oraz "sql interview questions", ale w zaciszu domowym. 

Dalej: ~300 osobowy software house. Spotkanie polegało na rozmowie o programowaniu, czy wiem co z czym sie je, zero ciśnienia na szczegółową wiedze - szukali ogólnego pojęcia. Dostałem się, ale praca u klienta w jakimś frameworku Liferay. Po wygooglaniu informacji o tym podziękowałem. Ale planuje też w przyszłym roku uderzyć do nich, bo fajny klimat, fajne biuro (w kamienicy, meega!), fajni ludzie.

Dalej: eurobank. Rozmowa z HRem, zadanie domowe: napisać symulator giełdy: Java z dowolnymi dodatkami, testy jednostkowe, pełna dokumentacja. 5 dni. Nie wyrobiłem sie. Kolejna moja rada: piszcie w domu testy jednostkowe. To przez brak ich praktykowania, czy to w pracy (nie idźcie do pracy bez testów!), czy w domu, nie dałem rady. Zabrakło mi wiedzy z tego zakresu.

Ostatnia firma: pewna duża korporacja związana z telekomunikacją. Nazwy nie zdradze ;a Rozmowa znowu z "interview questions", ale najpierw miałem do zrobienia Codility w domu: 3 zadania algorytmicznie, 30 minut każde. Spotkanie odbyło się z moim przyszłym przełożonym oraz z przełożonym systemowych architektów. Oprócz typowych pytań również pytali czego bym użył do zrobienia X albo jakie rozwiązanie bym zaproponował do czegoś innego. Czyli obycie w programowaniu i w technologii ogólnie.

Dostałem propozycje pracy na następny dzień. Zacząłem od lutego.

Jak to w tej korporacji jest, czyli...

Nie tak źle! Ba, jest świetnie. Mamy zakładane 5h pracy dziennie, bo reszta to obiad, kawa, herbata, przełączanie między kontekstami, blablalba ;) A jak ktoś chce to konsole i piłkarzyki są.

W projektach funkcjonuje pełny Scrum, zespoły po 3 developerów i 3 testerów/integratorów. Do dyspozycji cała wuchta specyfikatorów i architektów. Codebase w aktualnym projekcie wynosi jakieś 1.7kk linijek :v Rozwijany od ponad 10 lat. Na rozmowie kwalifikacyjnej pytali coś tam o webówke, okazało sie, że tejże praktycznie nie ma - większość to czysta Java SE w wersji 7. Chyba nawet mi pasuje, poznam core języka dobrze, a frameworków mogę się zawsze douczyć :) TDD, code review, clean code, continous integration, cztery poziomy jakości, ogólnie pełen wypas jeśli chodzi o cały proces rozwoju produktu, nic nie powinno się wysypać u klienta. A przynajmniej nie krytyczne elementy ;)

Dobra, robota w takiej kobyle to niekoniecznie jest coś przyjemnego - czasami trzeba poświęcić sporo czasu, żeby znaleźć miejsce w kodzie, przeczytać logi, zdebuggować, odpalić testy. To wszystko troche zajmuje, a gdy zobaczy się, że klasa istnieje od początku projektu i ma 7k linijek dokładanych po troche przez 150 osób ;a;a Z powyższej listy można wykreślić "clean code".

Ale ja na szczęście trafiłem do fajnego teamu, najstarszy stażem wymyślił mi zadanie, które rozwijam od 1.5 tygodnia, gdzie mocno mnie ciśnie z dobrych technik pisania kodu i jakości. Zdecydowanie się rozwijam tutaj!

Co mnie na poczatku przytłoczyło... Nie, nie polityka korporacyjna, nie papierkologia, nie żadne głupoty wielkich firm, ale ilość wiedzy domenowej. Pracuje zaraz 3 miesiące, a nadal czasami nie wiem o czym mowa między innymi pracownikami. Również od początku miałem sporo szkoleń z zakresu sieci telefonicznych, LTE, funkcjonowania stacji bazowych i tak dalej.

Również aktualnie jesteśmy maintenance teamem, czyli zajmuje sie na bieżąco wszystkimi błędami wykrytymi przez klientów na produkcji, wszystkimi wpadami i failami całego działu ;) Jest bardzo luźno aktualnie, bo nie mamy terminów. A jak mamy terminy i się spóźniamy (a to dzieje sie regularnie ;a), to też zawsze dostajemy 2-3 dni więcej, zeby nadgonić. Nikt nie bije.

Chyba nigdy nie usłyszałem "Pan" w tym miejscu. Wszyscy, łącznie z dyrektorami jesteśmy per Ty. Polubiłem to miejsce B) Przyznam, nie zamierzam długo tutaj się zasiedzieć, ale taka korporacja dobrze każdemu zrobi.

Stack technologiczny w projekcie: Java7, JEE (JAX-WS, JAX-RS, EJB, Servlet, JSF). Wymagana również znajomość Linuxa z CLI, bo wszystko jest na nich wirtualizowane.

Co dalej z Szinkiem?

Zostaję tutaj do przyszłego roku, następnie celuje w jakiejś średniej wielkości (< 500 osób) firmę. Koniecznie z jakimś nowym projektem, nowymi technologiami (marzenie: Java8/9, Spring, Hibernate, wstawki Groovy'ego, a później możliwość przejścia do projektu w Scali) i możliwością wpływu na rozwój produktu. Pójdę na jakieś gównostudia z zarządzania, będę sam uczył sie algorytmiki. W przyszłości chciałbym wyemigrować do Szwajcarii na jakiś kontrakt, a docelowo praca zdalna z jakiegoś kraju na południe od zimnej Europy ;) Czy to będzie kontynent, nie wiem. Mam nadzieję, że nie.

 

Żałuję, że wcześniej tego nie znałem: https://forum.4programmers.net/Kariera/261802-wasze_pytania_do_potencjalnego_pracodawcy - zdecydowanie tego użyję następnym razem.

Pytajcie pracodawce cokolwiek wam przyjdzie do głowy. Rekruterzy przychylniej spojrzą, że interesujesz sie ewentualnym przyszłym środowiskiem. Szlifujcie angielski, na każdej rozmowie do drugiej pracy miałem coś powiedzieć w tym język. Poza tym ćwiczcie logiczne myślenie, rozwiązywanie problemów i algorytmike - możesz znać tone frameworków, ale jeżeli nie będziesz w stanie przenieść prostego ciągu do kodu to nie wiem czy ktoś będzie ciebie chciał :P Polecam ksiązkę "Algorytmy + struktury danych = programy" Wirtha, a następnie "Wprowadzenie do algorytmów" Cormena. To drugie jest kobyłą i encyklopedią, ale jak już przez nią przebrniemy, to matematyczną  wiedzę ze studiów potrzebną do programowania mamy załatwioną :)

Jak macie jakieś pytania: walcie, postaram się odpowiedzieć ze 100% swoich możliwości B) 

  • Super 15

8 komentarzy


Rekomendowane komentarze

11 minut temu, Skipi napisał:

Za mało szczegółów i nie wiem o czym do mnie piszesz :blink:

czego nie rozumiesz :<

Odnośnik do komentarza

Co do SQLa i baz danych to zgadzam się. Warto to rozumieć.

Co do algorytmów, to właśnie teraz mam ten przedmiot na studiach i średnio mi to podchodzi. Rozumiem ideę pisania oszczędnego kodu i znajomości najszybszych rozwiązań dla danych problemów, jednak prowadzenie tego przedmiotu mi nie odpowiada. Prowadzący - bardzo inteligentny facet, powiedział nam na początku przedmiotu, że prawdopodobnie algorytmy przydadzą nam się w pracy, tylko gdy będziemy pracować jako ludzie właśnie od algorytmów. Książki które podałeś, są u nas jako literatura przedmiotu.

Możesz rozwinąć trochę swoje spojrzenie na znajomość algorytmów w zawodzie?

Czy masz na myśli, że w pracy (czy w rozmowie kwalifikacyjnej) przyda się znajomość rozwiązania np. takiego zadania z algorytmów http://pastebin.com/A3hxcgPX Czy po prostu znajomość podstawowych algorytmów typu CountingSort czy HoarePartition i wiedza jak je wykorzystać?

Odnośnik do komentarza

@Averem oprócz znajomości podstawowych rzeczy (typu jak zbudowana jest lista wiązana czy sort binarny jak działa) poprzez "algorytmy" rozumiem umiejętność rozwiązywania problemów. 

Nie przyda sie "znajomość rozwiązania" zadania co podałeś, ale umiejętność jego rozwiązania.

Odnośnik do komentarza

@Szinek Jaki masz nick na 4p? :) też przeglądam to forum, kopalnia wiedzy :) nawet pośrednio zacząłem temat, który podlinkowałeś :P

Edytowane przez somekind
Odnośnik do komentarza

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Ta strona korzysta z ciasteczek, aby świadczyć usługi na najwyższym poziomie. Dalsze korzystanie z witryny oznacza zgodę na ich wykorzystanie. Polityka prywatności .