Inżynieria oprogramowania to toksyczne środowisko
Nie udawajmy, że branża inżynierii oprogramowania to dalej ta spokojna branża pełna podobnie myślących, spokojnych ludzi. Może kiedyś tak było, ale iluzja pęka jak bańka. Wszystko się zmieniło i zmierzamy w kierunku kultury zapie***lu, która wymaga od nas zajmowania się programowaniem nie tylko jako pracą, ale także jako hobby. Oczekuje się od nas, że będziemy robić projekty poboczne, znać najgorętsze i najlepsze frameworki, brać udział w projektach typu open-source i przechodzić przez niezliczoną ilość rozmów kwalifikacyjnych.
Rozmowy kwalifikacyjne
Wszyscy o tym słyszymy, a niektórzy nawet doświadczyli tego na własnej skórze, jak wygląda proces rozmowy kwalifikacyjnej w dużych firmach, takich jak Google, Meta, Microsoft itp. Mogą przeprowadzać wiele rund rozmów kwalifikacyjnych, rozmowę behawioralną, techniczną, kolejną techniczną, a następnie rozmowę z menedżerem, co oczywiście jest wyczerpujące dla uczestników, którzy włożyli dużo czasu i wysiłku, a potem nie wiedzą nawet, czy im się to opłaci, czy nie. I jeśli wydaje ci się, że 5 rund rozmów kwalifikacyjnych to za mało czasu, to wyobraź sobie, że musisz konkurować z setkami innych, top of the top inżynierów oprogramowania, którzy wszyscy chcą pełnić tę samą funkcję, więc robisz wszystko, co w twojej mocy i poświęcasz miesiące na przygotowanie i naukę do rozmowy kwalifikacyjnej.
Typowa techniczna rozmowa kwalifikacyjna ma niewiele wspólnego z normalną, codzienną inżynierią oprogramowania, a jest jedynie testem ze struktur danych czy algorytmów. Ponieważ większość inżynierów oprogramowania nie używa tych koncepcji na co dzień i nie zna ich na pamięć, muszą się dużo uczyć. Zazwyczaj ludzie zapisują się na LeetCode, platformę online przygotowującą do rozmowy kwalifikacyjnej, i przygotowują się przez miesiące. W przeciwnym razie szanse na zdobycie pracy w takiej firmie są niewielkie.
I szczerze mówiąc, to samo w sobie nie jest aż tak dużym problemem, ponieważ wielu inżynierów po prostu pracuje w mniejszych, średnich firmach i nawet nie próbuje dostać się do tych firm z wielkiej piątki. Ale kwestia jest taka: Wielka piątka wyznacza trendy, dlatego mniejsze firmy przyjmują u siebie ich proces rozmowy kwalifikacyjnej. Dlatego mamy coraz więcej firm, które wymagają konkretnych rzeczy i staje się to normą.
Przykładowo, kiedyś ubiegałem się o rolę juniora w małym startupie, w którym pracowało mniej więcej 10 programistów, a ich proces kwalifikacyjny składał się z pięciu rund. Natomiast w drugiej rundzie dostałbym zadanie do domu, które byłoby omawiane w kolejnej rundzie na zasadzie code review. Chcesz wiedzieć, co zrobiłem? Po tym, jak powiedzieli mi, że muszę przejść przez te wszystkie procesy, straciłem wszelkie zainteresowanie tą firmą i na tym się zatrzymałem.
Kultura papier***u
Branża inżynierii oprogramowania to ciągle zmieniająca się branża z ogromnym krajobrazem technologii. Nadążanie za najnowszymi schematami i technologiami to zawracanie sobie głowy, ale i konieczność w pewnym zakresie. Kiedy zdecydujesz się zostać inżynierem oprogramowania, w zasadzie zapisujesz się na karierę, w której będziesz musiał uczyć się nowych rzeczy. I to jest w porządku!
Ale to, co nie jest w porządku, to oczekiwania wobec inżynierów oprogramowania, że muszą znać wszystkie najnowsze, najgorętsze frameworki, programować w wolnym czasie i brać udział w co najmniej 10 projektach typu open source. Szaleństwo?
Tak? Dzięki Bogu jesteś na tej samej stronie co ja i rozumiesz co oznacza work-life-balance.
Nie? Ok, nie ma problemu, ale pozwól, że wyjaśnię, dlaczego jest to ogromny problem. Nie ma nic złego w tym, że ludzie robią projekty poboczne, ale w tym momencie stało się to oczekiwaniem i w wielu rozmowach domagano się nawet, żebym pokazał takie projekty poboczne. Pracuję 40 godzin tygodniowo nad zamkniętym oprogramowaniem i kiedy wracam do domu, chcę się skupić na sobie, robić rzeczy, które sprawiają mi przyjemność poza pracą, i być osobą zdrową.
Czy kiedykolwiek zapytałbyś księgowego podczas rozmowy kwalifikacyjnej, czy w wolnym czasie zajmuje się księgowością jako hobby? Prawdopodobnie nie, więc i my nie powinniśmy.
Nawet z punktu widzenia firmy powinno być oczywiste, że posiadanie pracowników z dobrym work-life-balance jest świetną sprawą. Potrzebujemy ludzi, którzy nie są pracoholikami i nie wypalają się. Potrzebujemy zdrowych ludzi, którzy pracują nie tylko nad kodem, ale także nad sobą, swoimi zainteresowaniami i osobowością. Pracujemy z maszynami i sami nie możemy stać się maszynami.
Stackoverflow
Prawie co tydzień spotykam się z czymś, co jest dla mnie zupełnie nowe. Coś, czego muszę się nauczyć w krótkim czasie i zastosować to w moim projekcie. Nie jest to oczywiście wcale trywialne, dlatego nierzadko zdarzają się błędy lub po prostu nie wiem co z tym zrobić. I co z tym robię? Wstawiam post na Stackoverflow z nadzieją, że jest tam ktoś, kto mi z tym pomoże.
Co niestety przykre, Stackoverflow stał się forum, na którym zbierają się najbardziej toksyczni inżynierowie oprogramowania, aby wspólnie być ze wszystkim na nie i lekceważyć pytania innych inżynierów. Naturalnie, jest wiele niezbyt dobrych pytań, ale zamiast ignorować pytania, społeczność powinna skupić się na szerzeniu pozytywnych emocji poprzez bycie przyjaznym, co może oznaczać pomocne wskazówki.
Przy okazji, świetną alternatywą dla Stackoverflow, z której ostatnio korzystam, jest Reddit i GitHub. Wyszukaj odpowiedni Sub-Reddit i utwórz post lub utwórz problem GitHub na stronie repozytorium projektu. Obiecuję ci, że ludzie w tych społecznościach będą o wiele bardziej pomocni i podnoszący na duchu.
Wnioski
Chociaż kultura zapier***u staje się coraz bardziej powszechna, to nadal kocham inżynierię oprogramowania i ze względu na kreatywność, która się z nią wiąże. Nadal będę polecał wielu osobom, aby zajęły się tą dziedziną, ale powiem tylko, że my, jako społeczność, musimy zwracać uwagę na work-life balance i nasze zdrowie.