1. Ścieżka kariery
Programiści również mają gradacje w zależności od kwalifikacji. Kiedyś używano takich pojęć jak „koder”, „programista” i „haker”, ale dziś wszyscy przeszli na angielskie nazwy zaczerpnięte z amerykańskiego IT.
Dla dewelopera jest 6 podstawowych poziomów:
- Intern Software Engineer
- Junior Software Engineer
- Middle Software Engineer
- Senior Software Engineer
- TechLead
- Principal Software Engineer
W zależności od kraju, a nawet firmy, niektóre parametry mogą się różnić, ale sedno jest podobne:
- 🌱 Intern Software Engineer — to stażyści. Są w trakcie nauki programowania, nie mają ani doświadczenia komercyjnego, ani doświadczenia w dużych projektach. Zwykle pracują pod okiem bardziej doświadczonych kolegów. Ich głównym zadaniem w pracy jest poznawanie bazy kodowej i podstaw tworzenia oprogramowania, wykonywanie prostych zadań programistycznych oraz udział w testowaniu.
- 🐣 Junior Software Engineer — to już programiści, ale bez poważnego doświadczenia komercyjnego lub z doświadczeniem krótszym niż rok. Pracują pod kierunkiem bardziej doświadczonych deweloperów, realizując części projektów i uczestnicząc w cyklach code review. Ten etap kariery koncentruje się na pogłębianiu umiejętności technicznych i rozumieniu zadań projektowych.
- 🦾 Middle Software Engineer (lub po prostu Software Engineer): mają większą samodzielność w podejmowaniu decyzji technicznych, odpowiadają za istotne obszary projektu, zaczynają mentorować mniej doświadczonych kolegów i aktywniej uczestniczą w dyskusjach architektonicznych. Zwykle mają 2–5 lat praktycznego doświadczenia.
- 🧑🔬 Senior Software Engineer: odpowiadają za projektowanie i implementację złożonych systemów, zapewniają mentoring i przywództwo w zespole, uczestniczą w strategicznym planowaniu projektów i często reprezentują zespół w kontaktach z klientami oraz innymi interesariuszami. Zwykle mają 5–10 lat doświadczenia.
- 🧠 TechLead: ponosi odpowiedzialność za końcowy rezultat techniczny projektu, kieruje pracami rozwojowymi, rozwiązuje najtrudniejsze zadania, dba o przestrzeganie standardów technicznych i koordynuje pracę deweloperów.
- 🏆 Principal Software Engineer: pracuje na najwyższym poziomie technicznym, często uczestniczy w kształtowaniu strategii technologicznej firmy, opracowywaniu innowacyjnych rozwiązań i ustalaniu standardów technicznych, jest głównym mentorem dla liderów technicznych i kluczowym ekspertem w złożonych kwestiach technicznych.
To ciekawe. W dużych firmach mogą istnieć dodatkowe role i podrole. Na przykład w Google są takie role:
- Staff Software Engineer (L6): ma znaczący wpływ na politykę techniczną swojego działu.
- Senior Staff Software Engineer (L7): pracuje nad dużymi i złożonymi projektami, wyznacza strategiczny kierunek rozwoju technologicznego w firmie.
2. Produkty LEGO
Dawno temu (w 1975 r.) Niklaus Wirth, twórca języka Pascal, napisał książkę „Algorytmy + struktury danych = programy”. Od tego czasu wiele się zmieniło. Współczesny produkt programistyczny nie jest tym, czym był 10 lat temu, a tym bardziej 20 lat temu. A o 1975 roku nawet nie ma co mówić — minęło już 50 lat ⏳
Współczesny programista nie pisze już programów ręcznie. Raczej składa je z gotowych części (bibliotek) i pisze kod, który pomaga tym częściom współdziałać🧩. Współczesne produkty programistyczne mogą składać się z dziesiątek, a nawet setek programów. Część z nich uruchamiana jest na komputerze użytkownika i jego urządzeniach mobilnych, ale większość — na serwerach w centrach danych.
Wiele z tych programów, jak serwer WWW czy baza danych, jest już napisanych. Wystarczy je poprawnie skonfigurować, aby działały jak należy. Choć z czasem sam proces konfiguracji bywa tak złożony, że w praktyce staje się programowaniem. 🤦♂️
Programiści ciągle walczą sami ze sobą. Zamiast po raz kolejny pisać podobny kod w różnych programach, tworzą biblioteki, które można konfigurować pod swoje potrzeby, a następnie po prostu podłączają je we wszystkich potrzebnych miejscach.
W ciągu ostatnich 20 lat powstało bardzo wiele bibliotek, frameworków i otwartych repozytoriów. Są ich dosłownie miliony. I dziś pisanie całego kodu od zera uchodzi za zły styl. Zamiast tego należy złożyć program z jakościowych, sprawdzonych rozwiązań — bibliotek, frameworków, paczek i modułów 🧱
Ale i takie podejście powoli się starzeje. Trend ostatnich 10 lat — to migracja do chmury, czyli duże centra danych, które dostarczają twoim programom wszystko, czego potrzebują. Chcesz bazę danych? Mamy ich setki do wyboru. Chcesz rzadki, unikatowy serwer WWW — też się znajdzie! Każda zachcianka za twoje pieniądze.
3. „Jestem inżynierem” © Elon Musk

Nie trzeba już samodzielnie pisać rzeczy trudnych i żmudnych. Jeśli potrzebujesz jakiejś funkcjonalności — są już do tego gotowe biblioteki i frameworki. Twoje zadania: a) wiedzieć o ich istnieniu, b) znaleźć właściwą opcję (odpowiedników bywa kilka, o różnej jakości i z różnymi niuansami), c) zrozumieć, jak zintegrować ją ze swoim projektem 🎓
Praca stała się dzięki temu jeszcze ciekawsza. Teraz możesz dodawać nową funkcjonalność do produktu nawet 10 razy szybciej. 30 lat temu, jeśli potrzebny był serwer WWW, pisało się go od zera. 20 lat temu — kupowało się go, instalowało i konfigurowało. A dziś — po prostu wchodzisz do portalu chmurowego Azure lub AWS i włączasz potrzebną usługę 🌐
To, nawiasem mówiąc, jeden z powodów popularności języka Java. Świetnie nadaje się on nie tylko do tworzenia dużych rozwiązań korporacyjnych, ale też do „sklejania” różnych komponentów — dzięki bogatemu ekosystemowi JVM istnieją integracje praktycznie ze wszystkim: bazy danych, mikroserwisy, REST API, systemy wymiany wiadomości, usługi chmurowe, platformy analityczne.
W konsekwencji zawód Java Software Engineer już dawno przekształcił się w Fullstack Java Developer. Współczesny deweloper powinien rozumieć, jak działa baza danych (PostgreSQL, MySQL/MariaDB, MongoDB itp.), aby poprawnie projektować integrację. Trzeba też rozumieć, jak zbudowany jest frontend (HTML, CSS, JavaScript/TypeScript, React, Angular), aby konfigurować wymianę z częścią backendową w Javie (Spring Boot, Micronaut, Quarkus). I oczywiście dziś bez Dockera ani rusz — to już standard branżowy 🐳.
Współczesne tworzenie oprogramowania w ogóle bardzo różni się od tego sprzed 20 lat. Programista pisze kod najwyżej przez 50% czasu — reszta idzie na czytanie dokumentacji, poznawanie nowych technologii, projektowanie oraz pracę zespołową na spotkaniach. Programiści-samotnicy to dziś raczej rzadki wyjątek.
GO TO FULL VERSION