TL;DR: Software Engineer, biuro przyjemne, proces ciężki i debilny, więcej siedzisz pisząc testy niż programujesz, ludzie marni, dobra opcja żeby się nie narobić jak nie masz ambicji, stawki poniżej rynkowych.
PROJEKT:
- Pracowałem jako Software Engineer w latach 2017/2018.
- Projekt 70 osób w Polsce, około 40 USA.
- Kod relatywnie nowy (start projektu około 2009), ale ma sporo długu technicznego.
- Na jeden produkt składają się komponenty pisane w C#, C++, Java.
- W projekcie jest kompletny brak specjalizacji (ani ze względu na technologię, ani ze względu na obszary funkcjonalne). Nietrudno się domyślić jak to wpływa na jakość kodu i szybkość pracy.
- Architektura produktu jest tak generyczna i modularna, że aż niezdatna do używania i przeszkadzająca.
- Produkt jest powolny jak cholera, skaluje się ze złożonością około x^3.
- Projekt duży, skomplikowany, jest sporo dokumentacji.
- Pokrycie Unit Testami bardzo średnie.
- Pokrycie Testami Integracyjnymi - o ile w ogóle są testy, to zwykle pokryty jest "happy path", a nie warunki brzegowe.
- Testy i środowisko testowe są tak niestabilne, że padające testy są powtarzane do 5-10 razy, a dopiero później analizowane.
- Jedyne "liczące się" testy przy akceptacji historii to testy integracyjne ("UT są dla developerów"), wykonywane zawsze na GUI, tworzone w środowisku graficznym autorstwa RA poprzez przeciąganie magicznych zwojów.
WARUNKI FIZYCZNE PRACY:
- Nowe, ładne, schludne, wygodne miejsce pracy.
- Open Space. Ciężko się skoncentrować, bo w Rockwellu inżynierowie więcej chodzą / rozmawiają / spędzają w kuchni, niż pracują.
- Piłkarzyki, konsole do gier, itp.
- Obrzydliwa stołówka (Olimp) w cenie 40 zł/kg.
LUDZIE:
- Co do programistów z USA nie mam zastrzeżeń.
- Stanowiska (Junior/Regular/Senior/Project) rozdawane na podstawie lat pracy w branży, nie na podstawie umiejętności.
- Prywatnie ludzie w Polsce spoko, ale jako inżynierowie są w przeważającej większości mierni, bierni, ale wierni (a raczej wygodni).
- Pensje niższe niż u konkurencji, przede wszystkim nieadekwatne do umiejętności.
- Lepiej na starcie wynegocjuj dobrą stawkę, bo podwyżka roczna ma limit 7%, a czekanie na decyzję "z góry" potrafi trwać ponad 6 miesięcy i dalej jej nie ma.
- Osoby, które się do czegoś nadają i chce im się pracować - uciekają jak najdalej.
PROCES / ORGANIZACJA PRACY / HIGIENA INŻYNIERSKA PRACY:
- Proces mega ciężki, 5 narzędzi w których trzeba wpisywać te same dziesiątki ton danych/opisów/numerów/statusów. Wszystko sformalizowane do granic absurdu.
- Na umowie o pracę masz wpisany "zadaniowy czas pracy", żeby można było wyznaczyć "zadanie" udziału w spotkaniu w późnych godzinach i wymagać udziału. Ale jak wykonasz swoje zadania szybciej, to robisz za innych.
- Prawie cała praca programisty to pisanie testów, potem testy, próby uruchomienia w marnym środowisku i czasami trochę programowania.
- Programowanie to prawie zawsze modyfikacje już istniejącego kodu / lekkie rozszerzanie. W półtora roku napisałem może 2 nowe małe klasy (!), reszta to analiza, a później rzeźbienie w istniejącym kodzie / naprawa bugów.
- Jeśli po roku pracy myślisz, że napotkałeś już wszystkie 200 możliwych problemów technicznych i nic Cię nie zaskoczy, to dzisiaj natrafisz na nowy.
- Pisz maile, bo ludzie się wyprą swoich słów jak przyjdzie co do czego. Im więcej papieru, tym (usunięte przez administratora) czystsza.
- Pracuje się na mega powolnych maszynach wirtualnych na przeładowanym serwerze (odinstalowanie lekkiego programu może momentami trwać 40 minut).
- Klonowanie repozytorium czy pobieranie potrzebnych bibliotek (nie będę wchodzić w szczegóły) potrafi trwać godzinami, a często "chwilowo" nie działa.
- Twoja wygoda i higiena pracy nie mają absolutnie żadnego znaczenia. Spodziewaj się takich absurdów jak np. zablokowany schowek między maszynami w celu "ochrony" własności intelektualnej. Dane do maila przepisz sobie ręcznie.
- Metodologia pracy SAFe: zespoły Scrum'owe po 7 osób - 5 developerów + 2 testerów (choć w Rockwellu ta proporcja powinna być odwrotna).
- Planuje się pracę na następne 11 tygodni (2 i pół miesiąca!), podzielone na 4 sprinty. Planowanie trwa 3-5 dni, wcześniej nie masz pojęcia co będziesz robić, więc nie jesteś w stanie refine'ować zadań, żeby je zrozumieć, doprecyzować, znaleźć luki, rozwiązać zależności. 3 dni na zaplanowanie prawie 3 miesięcy pracy to trochę słabo, a w trakcie planowania historie są przerzucane między zespołami jak się kierownictwu spodoba.
- Ze względu na SAFe, wyceny historii powinny być znormalizowane (spójne) między zespołami, ale powszechnym jest przecenianie zdań, żeby się nie narobić.
- Scrum Master jest Twoim Managerem, który ma inne interesy niż pilnowanie zasad Scrum'a/Agile.
- Zmiany w tracie sprintu są na porządku dziennym.
Ogólnie polecam na emeryturkę lub ewentualnie w trakcie obijania się w RA mieć dodatkową pracę zdalną dla innej firmy - co dwie pensje to nie jedna :)