Jaką firmę wybrać na początku kariery programisty?

Paweł Dedio Programowanie 2018-08-25

Witajcie w siódmym odcinku naszej serii! Dzisiaj przedstawię Wam kilka rodzajów firm programistycznych oraz podpowiem, jaką najlepiej wybrać na start. Pamiętajcie, że to co tutaj przeczytacie, to nie jest jakaś prawda objawiona. Są to przede wszystkim spostrzeżenia moje oraz znajomych programistów ze zdecydowaniem większym doświadczeniem. Przed podjęciem pierwszej pracy pomyślcie przede wszystkim samodzielnie, czy akurat ta firma będzie Wam odpowiadać.

Moja historia

Na początku chciałbym opowiedzieć jak to wyglądało u mnie. Pierwszą pracę rozpocząłem w wakacje po maturze w małym software housie. Po roku zmieniłem ją na ogromną, międzynarodową korporację, w której spędziłem dokładnie rok i 3 miesiące. Obecnie – od prawie roku – pracuję w firmie, która pod względem wielkości znajduje się pomiędzy korporacją a małym startupem. Równolegle pracowałem nad kilkoma projektami pobocznymi jako freelancer. Jak widzicie, pracowałem już w kilku różnych miejscach i mogę z własnego doświadczenia opisać różnice. Jednak najpierw zacznijmy od teorii.

Rodzaje firm

Osobiście dzielę firmy pod na podstawie dwóch czynników: wielkości oraz rodzaju projektów. Jeśli chodzi o pierwszą kwestię, to sprawa jest oczywista. Wyróżniam firmy małe (startupy), średnie oraz ogromne korporacje. Odnośnie rodzaju projektów, dzielę firmy na dwa rodzaje – firmy z jednym projektem oraz software house’y. Skoro wymieniłem rodzaje firm, to teraz wypadałoby je omówić, nie? To lecimy!

Małe firmy

Małe firmy bardzo ciężko wrzucić do jednego worka. Większość z programistów, z którymi rozmawiałem pracowało choć w jednej malutkiej firmie. Najczęściej powtarzającą się cechą wspólną była luźna atmosfera i zgrany zespół. W takich firmach każdy każdego zna przez co łatwo znaleźć partnera do rozmów lub jakiegoś wypadu po pracy. Dzięki temu można odczuć wręcz rodzinną atmosferę. Kolejnym ważnym aspektem jest prostota załatwiania różnych spraw. W takich firmach nie ma rozbudowanych procedur – większość rzeczy można załatwić kilkoma minutami rozmowy. Również podejście do pracownika jest inne, niż w większych firmach. Nie ma tutaj sztywno określonych widełek płacowych lub celów rocznych. Jeśli szef widzi, że się starasz i przynosisz zysk firmie, to nie będziesz miał problemu, aby uzyskać podwyżkę. Niestety takie firmy mają mniejsze budżety, niż korporacje, więc nie spodziewaj się super atrakcji w biurze. Wyjścia integracyjne także nie są organizowane z takim rozmachem, jak w większych firmach. Jeśli chodzi o samą pracę, to w start-upach będziesz miał okazję sporo się nauczyć. Zespoły są małe, przez co będziesz musiał pracować w większości czasu samodzielnie. To przekłada się również na odpowiedzialność, bo w większości od Ciebie będzie zależała jakość napisanej aplikacji 🙂

Międzynarodowe korporacje

Zanim zacząłem pracować w korporacji myślałem, że atmosfera jest tam bardzo nerwowa i ciągle ktoś mnie będzie poganiał. Okazało się zupełnie odwrotnie. Obecnie korporacja kojarzy mi się z niesamowitym luzem i brakiem odpowiedzialności. W tak ogromnej firmie jesteś jak ziarenko piasku, takich jak Ty są tysiące. W takim środowisku łatwo jest rozmyć odpowiedzialność za jakiś błąd. Niestety taki system pracy niesie za sobą ogromne zagrożenie – w korporacji bardzo łatwo jest kompletnie nic nie robić. Może na początku wydaje się to fajne, ale na dłuższą metę sprawia, że się rozleniwiasz i nie nabierasz więcej doświadczenia. Sam przez to przechodziłem – na szczęście w porę się zorientowałem, co się dzieje i zmieniłem pracę. Oczywiście są też korporacje, które są nastawione tylko na ilość wytworzonego oprogramowania, a nie na jego jakość. Niestety w takim przypadku nie ma mowy o luźnej i bezstresowej pracy. Przeważnie taka sytuacja występuje w korporacjach, specjalizujących się w realizowaniu przetargów rządowych, bo tam liczy się niska cena i szybkość wykonania. Kolejną wadą korporacji są dziwne procedury. Nie ma tutaj miejsca na niestandardowe zachowania. Czasami traciłem kilka dni na załatwienie jakieś bzdury, jak na przykład dodatkowy kabel do monitora. Na szczęście korporacje mają też zalety. Największą zaletą jest to, że takie firmy mają niewyobrażalne ilości pieniędzy i wydają je na głupoty. Częste podróże kosztujące po kilka tysięcy złotych czy imprezy integracyjne za kilkadziesiąt tysięcy to dla nich coś normalnego. Również korporacje, poza wysoką płacą, zapewniają sporo dodatkowych benefitów. Jednak pod względem nauki i możliwości rozwoju wypadają one gorzej od małych firm. Tutaj zespoły przeważnie są duże i raczej nie będziesz samodzielnie implementował jakiś bardzo ambitnych rzeczy. Tempo rozwoju produktu również będzie dużo wolniejsze, niż w małej firmie

Średnie firmy

Średnia firma łączy cechy start-upów i korporacji. Jest zorganizowana w taki sposób, że biura są dość małe, a jednocześnie posiada ogromny budżet, pozwalający na przykład na fajne, zagraniczne konferencje. Oczywiście taka firma łączy nie tylko zalety, ale też i wady. Tak więc biura są dość skromne, ale za to procedury są prawie tak rozbudowane, jak w korporacji. Jeśli chodzi o naukę i rozwój to uważam, że taka firma to najlepszy możliwy wybór. Zespoły są przeważnie małe, dzięki czemu masz wpływ na ogromną część tworzonej aplikacji. Jednocześnie firma zapewnia odpowiednie zaplecze do nauki i najlepszy sprzęt.

Firmy z jednym produktem

Są to najczęściej mniejsze firmy, które wypuściły jakiś produkt, osiągający sukces. Taką firmą jest na przykład Slack lub swego czasu był Instagram – do czasu kupienia przez Facebooka. Osobiście nie jestem przekonany do takiej firmy. Będąc w korporacji przez większość czasu pracowałem nad jedną aplikacją i strasznie mnie to męczyło. Pracując tylko nad jednym projektem, jesteś na niego skazany. Niestety tutaj nie będziesz mógł zmienić projektu, gdy poczujesz, że się wypalasz. Jedynym wyjście będzie tylko zmiana pracy.

Software house

Nie lubię, gdy ktoś na siłę używa zwrotów po angielsku i sam staram się używać tylko polskich słów, jednak tego zwrotu nie da się dobrze przetłumaczyć. Software house to taka firma, która nie ma swoich projektów – wykonuje je jedynie dla zewnętrznych klientów. Moim zdaniem jest to najlepszy wybór dla programisty. Tutaj masz pewność, że się nie znudzisz jednym projektem, bo przeważnie są one dość krótkie. Również w razie problemów z projektem zawsze możesz go zmienić. Jedyną wadą jest to, że często będziesz musiał współpracować bezpośrednio z klientem, a nie z kimś z Twojej firmy.

Jaka firma najlepsza na początek?

Na to pytanie niestety nie jestem w stanie odpowiedzieć. Każdy z Was musi to przeanalizować samodzielnie. Jeśli jednak ktoś pyta mnie o poradę, to zalecam rozpoczęcie kariery w jakimś startupie. Z perspektywy czasu widzę, że dzięki pracy w małej firmie zrobiłem ogromny postęp i naprawdę sporo się nauczyłem. Nie radzę natomiast zaczynać od korporacji, bo tam tempo nauki jest bardzo wolne. Dzięki za przeczytanie tego artykułu. Mam nadzieję, że już wiesz jaką firmę wybrać. Za tydzień opowiem trochę o tym, jak wyglądają rozmowy kwalifikacyjne i na co patrzą pracodawcy. Do zobaczenia za tydzień!

Zapraszam również na największe w Polsce Forum dla programistów Android. Jeśli macie pytania odnośnie kariery jako programista – zapraszam do działu Kariera programowanie.

Poprzednie odcinki:

  1. Typowy dzień pracy programisty
  2. Wady pracy programisty
  3. Zalety pracy programisty
  4. [FAQ] Wszystko, co powinieneś wiedzieć jeśli interesuje Cię praca programisty
  5. Co mnie zdziwiło w programowaniu?
  6. Motywacje – w jaki sposób nie stracić zapału do programowania?


  • guziaster

    Mylisz trochę pojęcia – generalnie startup to nie mała firma – startup to rodzaj działalności, której finansowanie bierze się od sponsorów, inwestorów, nie ma nic wspólnego z jej rozmiarem. Niekoniecznie musi to być mała firma. Sam pracowałem w firmie, które miała 20 osób a nie była start upem, tylko pracowała nad własnymi produktami, znam startupy, których wielkość zbliżona jest do firm typu software house. Ale zgodzę się, że najszybciej można nauczyć się różnych technologii i poznać ciekawe projekty w agencjach interaktywnych i firmach typu software house, gdzie wpadają różne projekty, które trwają przeważnie do roku czasu, gdzie jest możliwa rotacja między projektami. Tam kod jest powiedzmy na optymalnym poziomie, podobnie z wiedzą i wiele można nauczyć się w krótkim czasie. W korporacji może być fajnie lub nie(niby każdy o tym wie, ale jakie jest tego główny powód) – zależy do jakiego produktu trafimy, jeśli produkt jest głównym oczkiem w głowie, to zarobkowo i projektowo będzie fajnie, jeśli będą to tylko jakieś poboczne rzeczy, umrzemy z nudów a i o podwyżki będzie ciężko. W małych firmach istnieje pewien problem – jeśli nie trafisz w „swoje” środowisko, lub trafisz do grupy ludzi, która zna się prywatnie, możesz mieć ciężko się dostosować, lub będziesz marginalizowany ze względu na prywatne znajomości(sam doświadczyłem takiego czegoś), więc w takich firmach jest fajnie, o ile trafisz w łaskawe środowisko. Dużo łatwiej „znaleźć” sobie zaprzyjaźnione osoby w firmach, które liczą te 60-100 osób 🙂

  • Marcino

    Nie poruszyłeś najważniejszej kwestii w temacie software house vs firma produktowa. Pracując nad wieloma projektami w SH jesteś w stanie zobaczyć różne podejścia do pisania kodu, wzorców projektowych, przykłady dobrego/złego kodu, wiele technologii. Zmieniasz zespół, czasem trafi się lepszy, czasem gorszy. Jest to bardzo potężne narzędzie (szczególnie na początku nauki), ale może prowadzić do pułapki. Zmieniając projekt co kilka miesięcy (standard w SH) nie widzisz długoterminowych konsekwencji tego, w jaki sposób piszesz kod. To potrafi skutecznie zahamować dalszy rozwój.

    >Pracując tylko nad jednym projektem, jesteś na niego skazany.
    Przedstawiasz to jako minus, jednakże na pewnym etapie rozwoju jako programista jest to coś pożądanego. Niewielu jednak dochodzi do tego etapu.

    Poza tym, świetny artykuł. Dzięki 🙂

    • Paweł Dedio

      Dzięki za konstruktywny komentarz. Pisałem to ze swojej perspektywy, osobiście bardziej cenie sobie krótsze projekty. Główną ich zaletą jest łatwość używania zawsze najnowszych technologii (nie utrzymujemy starego kodu). Jednak to co opisałeś jest również bardzo ważne. Być może na pewnym etapie moje podejście się zmieni i będę sobie bardziej cenił stabilizację.

  • Jak zwykle świetnie się czytało. Czekam na kolejny odcinek!