Jak odpowiadać na pytania o projekty, gdy dopiero uczysz się programowania

0
48
Rate this post

Nawigacja:

Cel kandydata: po co w ogóle uczyć się mówić o projektach

Osoba, która dopiero uczy się programowania, zazwyczaj ma jeden cel: nie skompromitować się na rozmowie, gdy padnie pytanie o projekty. Chce umieć odpowiedzieć uczciwie, bez ściemniania, ale też bez umniejszania sobie, nawet jeśli jej doświadczenie to głównie zadania z kursów, małe aplikacje z bootcampu albo projekty z uczelni.

Drugi, równie ważny cel to przełożenie swoich pierwszych projektów na język rekrutacji IT. Czyli: jak opowiadać o prostym CRUD-zie, todo-apce czy generatorze raportów w taki sposób, żeby pokazać sposób myślenia, a nie tylko to, że umiesz złożyć kod z tutoriala.

Skąd to pytanie o projekty i co tak naprawdę chce usłyszeć rekruter

Dlaczego pytanie o projekty pada nawet przy totalnym braku doświadczenia

Pytanie w stylu: „Proszę opowiedzieć o swoich projektach” pada prawie zawsze, niezależnie od tego, czy aplikujesz na staż, juniora, czy stanowisko mid. Nawet jeśli w CV napisałeś wyraźnie, że nie masz doświadczenia komercyjnego, rekruter i tak spróbuje zobaczyć, jak używasz tego, czego się uczysz.

To nie jest test na wielkość projektu, tylko próba odpowiedzi na kilka prostych pytań:

  • Czy umiesz myśleć zadaniowo (problem → rozwiązanie → efekt)?
  • Czy potrafisz użyć technologii w praktyce, a nie tylko rozwiązywać pojedyncze zadanka?
  • Czy umiesz opowiedzieć o swojej pracy tak, żeby druga strona coś z tego wyniosła?

Mit, z którym wiele osób startujących do IT się zmaga, brzmi: „skoro nie mam projektów dla klienta, to nie ma o czym mówić”. Rzeczywistość jest inna: dla juniora „projektem” jest każde sensownie domknięte zastosowanie kodu – nawet jeśli użytkownikiem jesteś tylko ty sam.

Co bada rekruter, gdy pyta o projekty: proces, nie tylko kod

Większość początkujących skupia się na tym, żeby pokazać jak najwięcej technologii: framework, baza danych, trzy biblioteki do UI, deploy na Vercel i jeszcze Docker. Tymczasem rekruter znacznie częściej analizuje:

  • Jak definiujesz problem – czy potrafisz powiedzieć, po co w ogóle powstał projekt?
  • Jak dobierasz rozwiązania – czy wybierasz narzędzia z sensem, czy „bo były w kursie”?
  • Jak radzisz sobie z trudnościami – bugi, brak wiedzy, nieznana biblioteka.
  • Jak mówisz o błędach – czy uciekasz, czy potrafisz przyznać: „tu zrobiłem głupio i już wiem, jak lepiej”.

Techniczne szczegóły oczywiście też się liczą, ale dla juniora są bardziej tłem niż głównym bohaterem. To, że użyłeś Reacta czy Django, jest mniej interesujące niż to, jak rozbiłeś problem na kroki i co z tego zrozumiałeś.

Perspektywa HR, lidera technicznego i przyszłego współpracownika

W dużej firmie możesz mieć do czynienia z trzema różnymi osobami lub rolami, które słuchają twojej opowieści o projektach:

  • Specjalista HR / rekruter nietechniczny – interesuje go, czy umiesz mówić o tym, co robisz, czy potrafisz budować logiczną historię i czy nie uciekasz od trudnych tematów.
  • Lider techniczny / senior developer – patrzy na to, jak myślisz o kodzie, jak rozwiązujesz problemy, czy znasz podstawowe wzorce i czy nie powielasz krytycznych błędów.
  • Potencjalny współpracownik – ocenia, czy da się z tobą dogadać przy zadaniu, czy nie sparaliżuje cię pierwszy trudniejszy bug.

Dlatego opowiadając o projekcie, dobrze jest mieć w głowie trzy warstwy:

  • warstwę ludzką: kto, po co, jaki problem,
  • warstwę techniczną: język, framework, architektura,
  • warstwę procesową: jak pracowałeś, jak testowałeś, jak debugowałeś.

Osoby techniczne będą dopytywać głębiej o drugą i trzecią warstwę, HR raczej zostanie przy pierwszej. Umiejętność przełączania się między nimi robi bardzo dobre wrażenie, nawet jeśli projekt jest prosty.

Mit „bez komercyjnych projektów nie ma sensu iść na rozmowę” a rzeczywistość

Popularny, szkodliwy mit brzmi: „Najpierw muszę mieć komercyjny projekt, potem mogę iść na rozmowę”. Problem polega na tym, że pierwszy komercyjny projekt zdobywasz zazwyczaj dzięki… rozmowie.

Rzeczywistość w wielu firmach jest znacznie prostsza:

  • Szukając juniora, rzadko oczekuje się doświadczenia komercyjnego, ale oczekuje się dowodu działania – właśnie w postaci małych projektów, repozytoriów, testów umiejętności.
  • Rekruterzy wiedzą, że projekty z kursu to standard, nie wada. Wady zaczynają się dopiero wtedy, gdy kandydat nie umie o nich sensownie opowiedzieć.
  • Lepszy jest dobrze rozumiany projekt z kursu, o którym potrafisz mówić godzinę, niż spektakularna aplikacja, której kodu prawie nie kojarzysz, bo zrobił go mentor.

Mit polega głównie na porównywaniu się do seniorów z LinkedIna. Senior ma projekty komercyjne, ty masz pierwsze projekty programistyczne. To nie jest ta sama liga i nikt rozsądny nie oczekuje, że będzie.

Patrzenie na swoje mini-projekty oczami rekrutera

Uczeń widzi: „mała todo apka z kursu”. Rekruter może zobaczyć coś zupełnie innego, jeśli mu w tym pomożesz:

  • rozwiązywany problem: organizacja zadań, priorytety, terminy,
  • podstawowe pojęcia: CRUD, formularze, walidacja, obsługa błędów,
  • logika: filtrowanie, sortowanie, przechowywanie danych,
  • proces: jak testowałeś, jak debugowałeś błędy, jak refaktoryzowałeś.

Różnica między uczeniem się a rekrutacją polega na tym, że na rozmowie liczy się opowieść o procesie. Ten sam projekt można sprzedać jako „banalną apkę z tutoriala” albo jako „małe środowisko do eksperymentów z architekturą frontendu i zarządzaniem stanem”. To w dużej mierze kwestia sposobu, w jaki o nim opowiesz.

Rekrutacja do pracy w IT, kandydat na rozmowie w nowoczesnym biurze
Źródło: Pexels | Autor: Tima Miroshnichenko

Jakie projekty „się liczą”, gdy dopiero się uczysz

Szeroki katalog: co można uznać za projekt na poziomie juniora

U początkujących programistów powtarza się jeden błąd: zaniżanie wartości własnych projektów. „To tylko zadanie z kursu”, „to tylko skrypt do excela”, „to tylko projekt na studiach”. Z perspektywy rekrutera to nadal może być pełnoprawny materiał do rozmowy.

Za projekt na potrzeby rozmowy można uznać m.in.:

  • Prostsze zadania z kursów i bootcampów, jeśli mają wyraźny cel i użytkownika (np. aplikacja budżetowa, kalkulator rat, prosty sklepik).
  • Mini-aplikacje z samodzielnej nauki: skrypt do masowego zmieniania nazw plików, generator raportu CSV, scraper ogłoszeń.
  • Projekty z uczelni informatycznych: system rezerwacji sal, gra tekstowa, baza danych dla biblioteki, aplikacja do ankiet.
  • Hackathony i konkursy, nawet jeśli aplikacja jest surowa, ale była efektem pracy zespołowej.
  • Projekty wolontariackie: strona dla fundacji, prosta automatyzacja obsługi maili, panel zgłoszeń.
  • Automatyzacje „do domu”: bot do powiadomień, skrypt porządkujący pliki, generator planu treningowego.

Kluczowe pytanie brzmi: czy umiesz opowiedzieć o tym jak o projekcie – a nie tylko jak o ćwiczeniu z rozdziału 3.

Czym projekt różni się od „zadanka z kursu”

„Zadanko z kursu” to najczęściej oderwany fragment problemu: funkcja licząca VAT, pętla wypisująca liczby, mały komponent UI. Projekt to już kombinacja kilku takich elementów, która prowadzi do jakiegoś rezultatu dla użytkownika.

Jeśli masz prosty moduł z kursu, możesz go „podnieść do rangi projektu”, gdy:

  • łączysz kilka funkcji w cały przepływ – użytkownik coś podaje, kod coś liczy, wynik jest prezentowany, zapamiętywany lub wysyłany dalej,
  • dodajesz choć minimalny interfejs (CLI, web, prosty formularz),
  • projekt ma początek i koniec – możesz pokazać ekran startowy, jeden lub kilka ekranów działania oraz rezultat,
  • dołączasz opis w README, który wyjaśnia, o co w tym chodzi.

Różnica jest subtelna, ale krytyczna dla rekrutera: projekt pokazuje, że umiesz łączyć elementy, a nie tylko implementować pojedyncze instrukcje.

Cztery cechy minimalnego projektu rekrutacyjnego

Nawet bardzo prosty projekt może świetnie sprawdzić się w rozmowie, jeśli ma kilka cech:

  1. Jasny cel – potrafisz w jednym zdaniu odpowiedzieć: „Po co to zbudowałem?”
  2. Określony użytkownik – ty, kolega, użytkownik końcowy, wykładowca, mentor.
  3. Prosta, ale rzeczywista logika – coś się przelicza, filtruje, waliduje, zapisuje.
  4. Widoczny efekt końcowy – aplikacja działa, coś generuje, wyświetla, automatyzuje.

Jeżeli twoje obecne projekty tego nie spełniają, często wystarczy drobnymi poprawkami je do tego poziomu doprowadzić: dopisać interfejs, dodać zapis do pliku, opisać scenariusz użycia.

Łączenie drobnych rzeczy w mini-portfolio

Nie każdy początkujący ma jeden „wielki projekt” – i nie musi. Dużo lepiej wygląda zestaw kilku mniejszych, ale domkniętych aplikacji, niż jedno niedokończone monstrum, którego nie umiesz uruchomić.

Dobre mini-portfolio juniora może wyglądać tak:

  • Aplikacja A – prosty frontend (np. React + API publiczne) do przeglądania danych.
  • Aplikacja B – mały backend (np. Node/Express, Django, Spring) z jedną bazą danych.
  • Skrypt C – narzędzie konsolowe rozwiązujące realny problem (parser, konwerter, automatyzacja).

W trakcie rozmowy możesz powiedzieć: „Nie mam jednego wielkiego projektu, ale stworzyłem mini-portfolio trzech aplikacji: frontend, backend i narzędzie CLI. Każde z nich wykorzystuje inne elementy ekosystemu i pozwoliło mi sprawdzić coś innego”. To brzmi dojrzale, mimo że projekty są małe.

Mit „muszę mieć jedno duże, genialne rozwiązanie” kontra realne oczekiwania

Często po bootcampach ludzie dopychają kolanem „projekt końcowy”, który ma robić wszystko: logowanie, płatności, powiadomienia, admin panel, chat, integrację z trzecim systemem. Po terminie obrona, repo rozlatuje się, połowy funkcji nie umiesz wyjaśnić.

Mit: „Rekruter oczekuje od juniora czegoś spektakularnego”.

Rzeczywistość: rekruter oczekuje od juniora czegoś zrozumiałego. Mały, ale spójny projekt, gdzie wiesz, co się dzieje w każdym pliku, jest dużo bardziej wartościowy niż wielka, niedomknięta aplikacja z kursu, w której 80% zrobił ktoś inny.

Porządkowanie własnych projektów przed rozmową – szybki audyt

Tworzenie listy wszystkich potencjalnych projektów

Zanim zaczniesz trenować odpowiedzi, zrób inwentaryzację. Dużo osób ma projekty porozrzucane: trochę w folderach na dysku, trochę na GitHubie, coś na GitLabu, coś na Bitbuckecie, jeszcze coś w Google Drive.

Praktycznym krokiem jest stworzenie prostej listy (w notatniku, Excelu, Notion, gdziekolwiek), np. w takiej formie:

  • Nazwa projektu.
  • Gdzie leży (link / ścieżka).
  • Język/technologie.
  • 1–2 zdania opisu.
  • Status (ukończony, MVP, szkic).

Sam proces spisywania pomaga zobaczyć, że masz więcej materiału niż się wydaje. Zadanko, które pamiętasz jako „głupią pętlę”, po sprawdzeniu okazuje się ciekawą automatyzacją dla znajomego.

Proste kryteria selekcji: co zostawić, co odpuścić

Nie każdy projekt musi trafić do portfolio. Kilka pytań pomaga zdecydować:

Decyzja: projekt główny + 1–2 rezerwowe

Kiedy masz już listę, czas zdecydować, co realnie „niesiesz na rozmowę”. Najprościej wybrać:

  • 1 projekt główny – taki, o którym możesz opowiadać najdłużej i najspokojniej.
  • 1–2 projekty rezerwowe – krótsze przykłady do pokazania szerszego zakresu technologii.

Projekt główny nie musi być „najbardziej zaawansowany”. Lepiej sprawdzi się coś, co:

  • dobrze pamiętasz – co, gdzie, po co,
  • robi konkretną rzecz od początku do końca,
  • pokrywa technologie z ogłoszenia (albo przynajmniej część),
  • ma historię – były błędy, decyzje, zmiany.

Mit: „Muszę pokazać najtrudniejszy projekt, bo inaczej wyjdę na słabego”. Rzeczywistość: trudny, ale słabo zrozumiany projekt jest idealnym materiałem, żeby się na rozmowie wyłożyć na najprostszym pytaniu „co się dzieje w tym pliku?”.

Szybki audyt techniczny: czy to się w ogóle da pokazać?

Druga rzecz to sprawdzenie, czy projekt jest w stanie „stanąć na nogi” przed rozmową. Kilka prostych testów:

  • Czy projekt się uruchamia? – odpal go na czysto, najlepiej na innym komputerze lub w świeżym środowisku (np. nowy katalog, nowe wirtualne środowisko, czysty kontener).
  • Czy instrukcja uruchomienia działa? – jeśli nie masz, dopisz w README kilka kroków: instalacja, komenda startowa, dane testowe.
  • Czy nie ma krytycznych błędów – jeden warning to nie dramat, ale crash przy pierwszym kliknięciu już tak.
  • Czy dane wrażliwe są usunięte – hasła, klucze API, dane osobowe znajomych z arkusza Excela.

Rekruterzy są przyzwyczajeni, że projekty juniorów bywają surowe, ale jeśli nie da się ich nawet odpalić, to sygnał, że nie domykasz rzeczy. Tego lepiej unikać.

Porządkowanie repozytorium: mała kosmetyka, duży efekt

Nawet przy prostym projekcie możesz w godzinę zrobić porządki, które bardzo zmieniają odbiór:

  • Dodaj zwięzłe README – 3–5 sekcji: opis, technologia, funkcje, jak uruchomić, przykładowy scenariusz użycia.
  • Usuń śmieci – pliki tymczasowe, nieużywane obrazki, stare backupy typu final_v2_kopia.
  • Popraw nazwy – pliki newNewTest2.js nie wyglądają najlepiej w repo.
  • Zadbaj o strukturę katalogów – frontend, backend, skrypty pomocnicze rozdzielone sensownie.
  • Sprawdź commity – nie muszą być idealne, ale „asdf”, „naprawa”, „kolejna naprawa” w serii po sobie robią słabe wrażenie.

Mit: „Jak projekt jest słaby, to makijaż nic nie da”. Rzeczywistość: mały, ale schludny projekt, z którym obcować jest łatwo, pokazuje szacunek do pracy i do osoby, która ją ogląda. To cecha, której szuka się w juniorach.

Przygotowanie „ściągi projektowej” przed rozmową

Dobrą praktyką jest mieć krótkie notatki o każdym projekcie. Nie esej – raczej kartkę, która odświeży pamięć 10 minut przed rozmową:

  • krótkie streszczenie (2–3 zdania) – co to jest i dla kogo,
  • stack technologiczny – wersje frameworków, baza, narzędzia,
  • 2–3 decyzje, z których jesteś zadowolony,
  • 1–2 rzeczy, które dziś zrobiłbyś inaczej,
  • przykład trudniejszego buga, którego szukałeś dłużej niż godzinę.

Jeśli przed rozmową denerwujesz się tak, że głowa się zacina, taka ściąga to ratunek. Możesz zerknąć jeszcze w poczekalni i przypomnieć sobie szczegóły.

Młoda kobieta w garniturze robi notatki podczas rozmowy rekrutacyjnej
Źródło: Pexels | Autor: Anna Shvets

Jak opowiadać o projekcie krok po kroku – prosty schemat odpowiedzi

Pięć kroków, które porządkują każdą odpowiedź o projekcie

Zamiast improwizować, możesz trzymać się prostego szkieletu. Działa niezależnie od technologii i poziomu skomplikowania:

  1. Kontekst – skąd się wziął projekt.
  2. Cel i użytkownik – co ten projekt miał dać i komu.
  3. Twoja rola – co konkretnie robiłeś.
  4. Rozwiązanie techniczne – najważniejsze kawałki.
  5. Wnioski – czego się nauczyłeś, co byś zmienił.

Na rozmowie można to powiedzieć w 2–3 minuty i dopiero potem wchodzić w szczegóły, o które dopyta rekruter.

Krok 1: Kontekst – jedno zdanie, które ustawia scenę

Zamiast zaczynać od technologii, zacznij od okoliczności. Przykłady:

  • „To był mój projekt końcowy na bootcampie, robiony w trzyosobowym zespole przez miesiąc.”
  • „Napisałem ten skrypt dla znajomej, która co tydzień ręcznie obrabiała raporty z Excela.”
  • „To był mój pierwszy projekt w React – samodzielnie zrobiony po obejrzeniu podstawowego kursu.”

Kontekst mówi, jakie były ograniczenia: czas, ludzie, dostępne narzędzia. Rekruter od razu wie, czego się spodziewać.

Krok 2: Cel i użytkownik – odpowiedź na pytanie „po co”

Tu dobrze działa prosta formuła: „Chciałem ułatwić X osobie Y, przez zrobienie Z”. Na przykład:

„Chciałem ułatwić sobie organizację wydatków, więc zbudowałem prostą aplikację budżetową, która kategoryzuje transakcje i pokazuje wykresy miesięczne.”

Dzięki temu projekt nie brzmi jak suchy eksperyment, tylko jak narzędzie rozwiązujące problem – choćby mały.

Krok 3: Twoja rola – co dokładnie było w twoich rękach

Przy projektach zespołowych to kluczowy fragment. Zamiast mówić ogólnie „zrobiliśmy aplikację”, doprecyzuj:

  • „Byłem odpowiedzialny za logikę koszyka i komunikację z API płatności.”
  • „Zająłem się strukturą bazy danych i endpointami do rejestracji użytkowników.”
  • „Po mojej stronie była część UI: lista produktów, formularz dodawania i obsługa walidacji.”

Mit: „Jak powiem, że robiłem tylko część, to wyjdę na gorszego”. Rzeczywistość: jeśli rzetelnie opisujesz swój udział, pokazujesz uczciwość i świadomość zakresu. To dużo lepszy sygnał niż udawanie, że ogarniałeś wszystko.

Krok 4: Rozwiązanie techniczne – wybierz to, o czym chcesz rozmawiać

Zamiast próbować omówić cały projekt, wybierz 2–3 elementy, które:

  • najlepiej znasz,
  • mają coś wspólnego z wymaganiami z ogłoszenia,
  • są choć trochę ciekawsze niż „tu robimy console.log”.

Możesz ułożyć to w prosty opis:

  • „Backend jest w Node/Express, używam MongoDB do przechowywania użytkowników i transakcji.”
  • „Frontend to React z prostym zarządzaniem stanem przez Context API, bez dodatkowych bibliotek.”
  • „Do komunikacji używam REST API, a walidację formularzy zrobiłem najpierw ręcznie, potem przerobiłem na bibliotekę Yup.”

Jeśli rekruter wejdzie głębiej w szczegóły – super. Jeśli nie, i tak pokazałeś, że myślisz o projekcie jako całości.

Krok 5: Wnioski – co ci to dało jako programiście

Ostatni element to krótkie „co z tego wyniosłeś”. Zamiast ogólników typu „dużo się nauczyłem”, lepiej podać 2–3 konkrety:

  • „Zrozumiałem, jak bardzo ważne jest logowanie błędów – po kilku godzinach szukania bugów w ciemno dodałem logger i poszło dużo łatwiej.”
  • „Początkowo wszystko było w jednym pliku; refaktoryzacja do mniejszych modułów sprawiła, że łatwiej mi teraz poruszać się po kodzie.”
  • „Przekonałem się, że pisanie testów nawet do prostych funkcji naprawdę oszczędza czas, kiedy zaczynam coś zmieniać.”

Ten fragment pokazuje, czy po projekcie zostało ci coś więcej niż tylko kod – na przykład jakaś trwała zmiana w sposobie pracy.

Przykładowa odpowiedź w całości

Dla porządku, całość może brzmieć tak:

„To była moja pierwsza aplikacja w React, robiona samodzielnie przez około trzy tygodnie po pracy. Chciałem mieć prosty sposób na śledzenie wydatków, więc zbudowałem webową aplikację budżetową, z której korzystam ja i moja partnerka.

Moja rola była pełna – od postawienia projektu, przez logikę dodawania transakcji, po prostą autoryzację na podstawie tokenów JWT. Frontend jest w React z Context API do zarządzania stanem, backend napisałem w Node/Express z MongoDB. Dłużej pracowałem nad walidacją formularzy i filtrowaniem danych po kategorii i dacie.

Najwięcej nauczyłem się przy obsłudze błędów i strukturze folderów – początkowo wszystko było w jednym komponencie, potem rozbiłem na mniejsze i to bardzo ułatwiło rozwijanie funkcji. Kolejny raz od razu zaprojektowałbym strukturę komponentów na kartce, zanim coś napiszę.”

Co mówić, gdy „nie mam projektów” – strategie awaryjne

Doprecyzuj: naprawdę „zero”, czy tylko „nic spektakularnego”?

Bardzo często „nie mam projektów” po krótkim dopytaniu zamienia się w:

  • „robiłem kilka ćwiczeń na kursie, ale to chyba się nie liczy”,
  • „napisałem skrypt do pracy, ale to tylko parę linijek”,
  • „na studiach był projekt, ale stary i w brzydkim kodzie”.

Czyli projekty , tylko kandydat nie traktuje ich jako materiału do rozmowy. Wtedy pierwszym krokiem jest przeklasyfikowanie tych zadań na pełnoprawne mini-projekty – zgodnie z wcześniejszymi kryteriami.

Gdy naprawdę startujesz z pustą kartą

Zdarza się, że ktoś jest na całkowitym początku: zna syntax, zrobił kilka zadań z pętli i funkcji, ale nie ma nic, co można pokazać. Nawet wtedy nie jesteś bez szans, ale musisz:

  • szczerze to nazwać,
  • pokazać, że już nad tym pracujesz,
  • pokazać plan na najbliższe tygodnie.

Przykładowa odpowiedź:

„Na dziś nie mam jeszcze projektu, który mógłbym pokazać – jestem na etapie przerabiania podstaw Pythona i robiłem głównie małe ćwiczenia. W tym tygodniu uruchomiłem repozytorium na GitHubie i zacząłem przekształcać te ćwiczenia w mały projekt: chcę zbudować prosty skrypt do porządkowania faktur PDF. Pierwsza wersja ma być gotowa za dwa tygodnie.”

Nie jest to idealna sytuacja, ale pokazuje kierunek i inicjatywę, zamiast samego „nie mam”.

Mini-projekt „last minute” przed rozmową

Jeśli rozmowa jest za kilka dni, wciąż da się zrobić coś sensownego – byle realistycznie. Celem nie jest teraz „apka marzeń”, tylko bardzo mały, ale domknięty projekt, o którym możesz mówić.

Kilka pomysłów, które da się ogarnąć w 1–3 wieczory:

  • skrypt do generowania raportu z pliku CSV / Excela (np. podsumowania sprzedaży, godzin pracy),
  • prosty CRUD w wybranym frameworku (lista zadań, lista książek, lista treningów),
  • mała strona wizytówkowa z jedną „dynamiczną” funkcją (formularz kontaktowy, zapisywanie subskrypcji do pliku lub bazy).

Rekruterom nie przeszkadza, że projekt jest świeży. Bardziej interesuje ich, czy w ogóle potrafisz doprowadzić coś od pomysłu do działającej wersji.

Odwołanie do doświadczeń spoza programowania

Jeśli naprawdę nie masz jeszcze nic kodowego, pozostaje oparcie rozmowy o inne doświadczenia – ale w sposób, który pokazuje podobne kompetencje:

  • projekty z poprzedniej pracy (np. wdrożenie nowego procesu, usprawnienie raportowania),
  • projekty z uczelni nietechnicznych (np. badania, praca zespołowa nad prezentacją),
  • organizacja wydarzeń, wolontariat, prowadzenie małego biznesu.

Jak mówić o „miękkich” projektach, żeby brzmiały sensownie dla rekrutera IT

Przy projektach spoza programowania kluczowe jest przetłumaczenie historii na język, który coś mówi o tym, jak będziesz działać jako programista. Nie chodzi o to, czy organizowałeś konferencję na 300 osób, tylko jak to pokazuje twoje podejście do pracy.

Możesz trzymać się podobnego schematu jak przy projektach technicznych:

  1. Kontekst – gdzie i kiedy to było, w jakich realiach.
  2. Cel – co chcieliście osiągnąć, po czym poznawaliście sukces.
  3. Twoja rola – za co realnie odpowiadałeś.
  4. „Technika pracy” – jak to zorganizowałeś, jakich narzędzi/procesów użyłeś.
  5. Wnioski – czego to cię nauczyło, co zabierasz do IT.

Przykład skróconej odpowiedzi:

„W poprzedniej pracy prowadziłem projekt wdrożenia nowego sposobu raportowania sprzedaży. Celem było skrócenie czasu przygotowania raportu z kilku dni do kilku godzin.

Po mojej stronie było zebranie wymagań od zespołu sprzedaży, dogadanie szczegółów z działem IT i pilnowanie terminów. Używaliśmy prostego boardu w Trello i cotygodniowych statusów. Po drodze mieliśmy kilka wpadek – np. raz po wdrożeniu raport pokazywał błędne wartości, więc nauczyłem się wprowadzać checklisty do testowania. To doświadczenie przenoszę teraz do nauki programowania: rozbijam zadania na małe kroki i staram się testować po kawałku, zamiast „odpalać całość na końcu”.”

Mit bywa taki, że „jak zacznę mówić o czymś nietechnicznym, to wyjdę na mniej technicznego kandydata”. W praktyce, jeśli opowiadasz konkretnie i łączysz to z programowaniem („teraz robię podobnie w kodzie”), zwykle budujesz obraz osoby, z którą da się coś dowieźć w zespole.

Jak uczciwie przyznać „nie mam projektów” – i nie spalić szansy

Najgorsza wersja odpowiedzi to krótkie „nie mam” i cisza. Dużo lepiej działa trójskładnik:

  • krótkie przyznanie, gdzie jesteś,
  • co już konkretnie robisz, żeby to zmienić,
  • co będzie kolejnym krokiem w najbliższym czasie.

Na przykład:

„Na ten moment nie mam jeszcze projektu, który mógłbym sensownie opisać – jestem na etapie przejścia z ćwiczeń w coś bardziej praktycznego. W tym tygodniu wybieram jeden pomysł, który mnie realnie boli w życiu codziennym i chcę go zamknąć jako mały projekt do końca miesiąca. Mam już repozytorium na GitHubie i checklistę funkcji, które chcę tam zrealizować.”

Takie zdanie nie robi z ciebie seniora, ale pokazuje kierunek działania. Różnica między „nie mam” a „nie mam jeszcze, ale tu jest plan” bywa decydująca, bo rekruter widzi, że bierzesz odpowiedzialność za swoją sytuację zamiast się usprawiedliwiać.

Młoda kobieta pewnie siedzi przy biurku podczas rozmowy rekrutacyjnej
Źródło: Pexels | Autor: Tima Miroshnichenko

Trudne pytania o projekty i jak na nie odpowiadać bez ściemniania

„Widzę na GitHubie dużo tutoriali. Co jest naprawdę twoje?”

To pytanie pada coraz częściej, bo rekruterzy dobrze znają repozytoria typu „react-course” czy „python-tutorial”. Zamiast się tłumaczyć, można odpowiedzieć prosto i konkretnie:

  • oddzielić „surowe” kursy od własnych rzeczy,
  • pokazać, co z tych kursów wyniosłeś i jak to przeniosłeś na swoje projekty.

Przykładowa odpowiedź:

„Na GitHubie faktycznie widać kilka repozytoriów kursowych – tam ćwiczyłem podstawy składni i frameworków. Natomiast za swoje projekty uważam te, gdzie sam definiowałem wymagania i sam łączyłem różne elementy, np. tę aplikację do budżetu i prosty backend w Node do zapisów na newsletter.

Z kursów zostało mi głównie zrozumienie narzędzi, a moje projekty to miejsce, gdzie łączę to w całość. Chętnie skupię się na tych dwóch własnych repozytoriach, bo tam faktycznie podejmowałem decyzje techniczne.”

Mit: „jak przyznam się do kursów, to mnie skreślą”. Rzeczywistość: większość osób zaczyna od kursów. Problem jest dopiero wtedy, gdy ktoś udaje, że copy–paste z tutoriala to jego złożony projekt.

„Ile czasu zajęło ci zrobienie tego projektu?”

To pytanie nie służy temu, żeby wyśmiać: „jak to, trzy tygodnie na todo-listę?”. Rekruter raczej chce zorientować się, ile realnej pracy potrafisz włożyć w coś swojego i jak szybko się uczysz.

Dobra odpowiedź pokazuje:

  • przybliżony czas,
  • czy robiłeś to „po godzinach”, czy w pełnym wymiarze,
  • jak ten czas wyglądał od środka (np. ile zajęło debugowanie, ile nauka).

„Pierwsza wersja powstała w około dwa tygodnie po pracy, mniej więcej po 2–3 godziny dziennie. Dużo czasu zajęło mi wtedy ogarnięcie samego środowiska i konfiguracji webpacka. Drugi tydzień to głównie dopisywanie funkcji i poprawki błędów, które zgłaszała mi partnerka, kiedy korzystała z aplikacji.”

Jeśli projekt jest mały, a czasu było sporo, można to od razu „rozbroić”: pokazać, że dziś zrobiłbyś to szybciej, bo część rzeczy już znasz.

„Patrząc z perspektywy, dziś zrobiłbym to pewnie w kilka dni, bo nie musiałbym drugi raz przebijać się przez konfigurację narzędzi.”

„Z jakiej części projektu jesteś najmniej zadowolony?”

To pytanie testuje dwie rzeczy: czy widzisz wady własnego kodu i czy potrafisz o nich mówić bez zrzucania winy na wszystko wokół. Najgorsza odpowiedź to „ze wszystkiego jestem zadowolony” albo atak na kolegę z zespołu.

Można tu połączyć szczerość z pokazaniem rozwoju:

  • konkret: co nie gra,
  • dlaczego tak wyszło,
  • co byś dziś zrobił inaczej lub co planujesz poprawić.

„Najmniej zadowolony jestem z warstwy komunikacji z API. Na początku nie rozumiałem dobrze obsługi błędów, więc skończyło się na dużej ilości powtórzonego kodu i mało czytelnym logowaniu. Wiem już, że można to było wydzielić do jednej funkcji i lepiej obsłużyć statusy HTTP. Planuję to przerobić przy najbliższej okazji, bo przy kolejnym projekcie chcę mieć już prostszy wzorzec do użycia.”

Różnica między „to jest złe” a „to jest złe i wiem, jak to poprawić” jest dla rekrutera bardzo wyraźna. W drugim przypadku pokazujesz, że potrafisz się uczyć na błędach, a to często ważniejsze niż „idealny” kod na starcie.

„Jak poradziłeś sobie z problemami, na które trafiłeś?”

Większość rozmów schodzi w końcu do wątku: „co robisz, kiedy coś nie działa”. Tutaj rekruter chce zobaczyć twój proces, a nie listę linków do Stack Overflow.

Dobry opis problemu można zbudować tak:

  1. Krótki opis problemu – np. „aplikacja wywalała się przy logowaniu”.
  2. Twoje pierwsze kroki – co zrobiłeś sam, zanim poprosiłeś o pomoc.
  3. Źródła – z czego korzystałeś: dokumentacja, fora, znajomi.
  4. Rozwiązanie – co ostatecznie zadziałało.
  5. Co zapamiętałeś – np. checklista na przyszłość.

Przykład:

„Miałem problem z logowaniem użytkownika – po wpisaniu poprawnych danych dostawałem błąd 500 z backendu. Najpierw przejrzałem logi i dodałem kilka dodatkowych console.logów po stronie serwera, żeby zobaczyć, gdzie dokładnie się wywala.

Okazało się, że źle obsługiwałem sytuację, kiedy użytkownik nie istniał – rzucałem wyjątkiem, którego nie łapał middleware do obsługi błędów. Przeczytałem dokumentację Expressa o middleware’ach, porównałem z przykładem z jednego artykułu i dodałem jeden globalny handler błędów. Od tej pory w każdym projekcie zaczynam od prostego loggera i globalnej obsługi błędów, żeby nie szukać po omacku.”

Mit: „jak przyznam, że miałem problem, to wyjdę na słabego”. Rzeczywistość jest odwrotna – jeśli twierdzisz, że w projekcie „nie miałeś żadnych większych problemów”, często brzmi to mniej wiarygodnie niż opis dwóch–trzech konkretnych potknięć i tego, jak je rozwiązałeś.

„Na ile samodzielnie robiłeś ten projekt?”

Tu pojawia się pokusa, żeby trochę podkoloryzować. Zwłaszcza gdy projekt był robiony na kursie, z mentorem albo ze znajomym, ktoś może chcieć zbudować obraz „samotnego wilka”, który wszystko ogarnął sam.

Bezpieczniejsza i korzystniejsza długofalowo jest szczera odpowiedź z doprecyzowaniem czego dokładnie się uczepiłeś samodzielnie.

„Projekt powstał w ramach bootcampu, więc mieliśmy mentora, który sugerował ogólną architekturę i czasem podsuwał kierunek rozwiązania. Natomiast implementację poszczególnych modułów – np. logikę koszyka i integrację z API płatności – robiłem samodzielnie.

Kiedy utknąłem, najpierw szukałem odpowiedzi w dokumentacji i na GitHubie, a dopiero potem dopytywałem mentora o wskazówki. Staram się tak pracować też teraz: najpierw sam szukam ścieżki, a dopiero potem korzystam z pomocy innych.”

Rekruter szuka zwykle kogoś, kto w razie problemu najpierw spróbuje sam, a potem poprosi o pomoc w sensowny sposób – nie „zrób za mnie”, tylko „tu utknąłem, to zrobiłem, tego nie rozumiem”. Uczciwy opis tego, jak korzystasz z czyjegoś wsparcia, buduje zaufanie.

„Masz tylko małe projekty. Jak wyobrażasz sobie pracę przy dużym systemie?”

To pytanie pojawia się często przy juniorach, którzy mają za sobą kilka mini-apek i boją się, że to „za mało poważne”. Zamiast się bronić, można pokazać, że rozumiesz różnicę między małym a dużym projektem i że masz już pierwsze nawyki, które pomagają skalować pracę.

W odpowiedzi możesz odnieść się do:

  • tego, jak utrzymujesz porządek w kodzie już teraz,
  • jak dokumentujesz to, co robisz,
  • jakiego masz doświadczenia z czytaniem cudzych projektów (nawet open source).

„Moje projekty są na razie niewielkie, ale już przy nich widzę, jak szybko robi się bałagan, jeśli wszystko wrzucam do jednego folderu. Dlatego od pewnego momentu zacząłem trzymać się prostych zasad: osobne moduły dla logiki, osobne dla warstwy prezentacji, proste README z opisem uruchomienia.

Poza własnym kodem regularnie przeglądam też repozytoria open source – np. małe biblioteki w Node – i próbuję zrozumieć, jak są zorganizowane. Wiem, że w dużym systemie kluczowe będzie czytanie istniejącego kodu i dostosowanie się do ustalonych konwencji, a nie wymyślanie wszystkiego od zera.”

Tu przydaje się choćby jedna anegdota w stylu: „kiedyś zrobiłem X, potem zobaczyłem, że to nie skaluje, więc zmieniłem na Y”. To pokazuje, że potrafisz myśleć o kodzie w dłuższej perspektywie niż „żeby tylko działało teraz”.

Najważniejsze wnioski

  • Pytanie o projekty pada nawet przy zerowym doświadczeniu komercyjnym, bo rekruter chce zobaczyć, jak myślisz: czy umiesz przejść drogę problem → rozwiązanie → efekt i zastosować technologię w praktyce, a nie tylko „klikać” zadanka z kursu.
  • Mit: „Nie mam komercyjnych projektów, więc nie mam o czym mówić”. Rzeczywistość: dla juniora projektem jest każde sensownie domknięte użycie kodu – od todo-apki po generator raportów – o ile potrafisz pokazać, jaki problem rozwiązuje i czego cię nauczyło.
  • Rekruter techniczny, HR i przyszły współpracownik patrzą na projekt z różnych stron: ludzkiej (kto i po co tego używa), technicznej (języki, frameworki, architektura) i procesowej (jak pracujesz, testujesz, debugujesz). Umiejętność przełączania się między tymi perspektywami daje ci dużą przewagę, nawet przy prostych projektach.
  • Dla słuchacza ważniejszy jest proces niż lista technologii: jak zdefiniowałeś problem, dlaczego dobrałeś takie narzędzia, jak rozwiązywałeś błędy i co dziś zrobiłbyś inaczej. Sam fakt użycia Reacta czy Django bez zrozumienia decyzji projektowych nie robi wrażenia.
  • Mit: „Projekty z kursu się nie liczą”. Rzeczywistość: projekty kursowe są standardem na poziomie juniora; problem zaczyna się dopiero wtedy, gdy kandydat nie potrafi o nich opowiedzieć inaczej niż „to taka prosta apka z tutoriala”, zamiast pokazać logikę, testowanie i naukę na błędach.
  • Źródła informacji

  • Cracking the Coding Interview: 189 Programming Questions and Solutions. CareerCup (2015) – Przykłady rozmów technicznych, pytania o projekty i sposób ich omawiania
  • Programming Interviews Exposed: Coding Your Way Through the Interview. Wiley (2019) – Jak prezentować doświadczenie projektowe na rozmowach rekrutacyjnych IT
  • The Complete Software Developer's Career Guide. Simple Programmer (2017) – Budowanie portfolio, omawianie projektów i oczekiwania wobec juniorów