Mam 22 lata, mieszkam w Radomiu i jeżdżę taksówką po dziesięć, dwanaście godzin dziennie. Wieczorami piszę oprogramowanie. Robię to od czternastu miesięcy bez ani jednego wolnego tygodnia i nigdy nie dostałem za to złotówki.
To jest uczciwa pozycja wyjściowa i celowo stawiam ją w pierwszym akapicie, bo większość takich tekstów zaczyna się od wyniku i cofa do początku. Tutaj nie ma jeszcze wyniku. Jest zapis.
Poniżej jest ten zapis: każdy miesiąc, co działo się w życiu obok tego, co działo się w kodzie, z datami, które można sprawdzić w publicznym repozytorium i publicznym changelogu. Piszę to, bo trzy lata temu szukałem dokładnie czegoś takiego i nie znalazłem. Każda relacja, na którą trafiałem, kończyła się albo ofertą pracy, przez co była opowieścią o szczęściu, albo rezygnacją, przez co była ostrzeżeniem. Prawie nikt nie publikuje środka, a środek jest miejscem, w którym większość ludzi faktycznie się znajduje.
Zanim cokolwiek się zaczęło: dwanaście martwych projektów
Mój tata umarł, zanim byłem dorosły. Nie załamałem się w tamtym tygodniu. Załamywałem się powoli przez następne dwa albo trzy lata i to jest ta część, przed którą nikt nie ostrzega, bo nie ma momentu, w który da się wskazać palcem i powiedzieć: tutaj.
Potem był pogrzeb, który przyszedł za wcześnie, i życie, które musiało ruszyć szybciej, niż byłem gotowy. Trzy lata w Wojskach Obrony Terytorialnej, od młodego wieku. Technikum, INF.02 na papierze i niewiele za tym. Taksówka. Magazyn. Cokolwiek, co płaciło.
Gdzieś w tym wszystkim zacząłem i porzuciłem dwanaście projektów. Tłumaczenia gier, małe narzędzia, skrypty, o które nikt nie prosił. Ciekawe jest miejsce, w którym umierały. Nie na starcie, kiedy jest trudno i nudno. Wszystkie umarły gdzieś między siedemdziesiątym a osiemdziesiątym piątym procentem, w tej wygodnej strefie, w której coś działa na Twojej maszynie, a myśl o pokazaniu tego drugiemu człowiekowi wydaje się niemożliwa.
Każdy zaczynał się od energii i kończył, kiedy energia się kończyła, bo dyscypliny nie było jeszcze na tyle, żeby ją zastąpiła.
Trzynasty jest tym z tej strony. I chcę być dokładny co do tego, dlaczego przeżył, bo każda historia indie, jaką czytałem, zaczyna się od pasji, a moja nie.
Czternaście miesięcy, miesiąc po miesiącu
Czerwone kropki to miesiące, w których prowadziła praca albo życie. Zielone to te, w których prowadził kod.
Przeprowadziłem się z Polski do Holandii do pracy w magazynie. Order picker. Piętnaście do dwudziestu kilometrów chodzenia na zmianę, a jednego dnia telefon pokazał 23 847 kroków. Umowa przez agencję, mieszkanie od agencji, transport od agencji. Przez dziewięć miesięcy oznaczało to cztery różne prace i siedem różnych miejsc do spania.
To nie praca prawie mnie wykończyła. Ciężka praca nikogo nie łamie. Łamie trwała tymczasowość, a robi to bardzo konkretnie: w pierwszym miesiącu jesteś optymistą i zaczniesz kodzić w przyszłym tygodniu. W trzecim wracasz o szóstej, siadasz na łóżku i patrzysz w ścianę przez dwadzieścia minut, a potem scrollujesz do ósmej. W piątym przestałeś otwierać GitHuba i zacząłeś myśleć, że może to po prostu dorosłość, może ambicja była naiwna.
Nie walczyłem ze zmęczeniem. Walczyłem z przyzwyczajeniem. Ambicja nie znika, ona przygasa, tak jak bateria degraduje się na tyle stopniowo, że zauważasz dopiero przy sześćdziesięciu procentach.
Zaczynam pisać wieczorami monitor systemu na laptopie z 2014 roku, który po dwóch minutach od włączenia dochodzi do 77 stopni, zanim jeszcze otworzę VS Code, ze świeżą pastą termoprzewodzącą. Do 94 dochodzi, kiedy każę mu myśleć poważnie, i robi to nieprzerwanie od czternastu miesięcy.
Pomysł nie jest skomplikowany. Nie mów mi, że procesor jest na 87 procentach. Powiedz mi, że Chrome bierze z tego 43, Discord 22, a w tle chodzi aktualizacja Windows, o której zapomniałem. Różnica między monitorowaniem a rozumieniem.
Robię to z powodu, który nie jest ambicją. Boję się zniknąć. Nie fizycznie. Tak, że gaśniesz i nikt tego nie zauważa, łącznie z Tobą.
Tutaj umierało poprzednich dwanaście projektów: nowość minęła, nic nie działa dobrze, nikt nie patrzy. Zamiast tego ten przechodzi trzy pełne przebudowy.
Pierwsza wersja wyglądała jak Windows 95 podczas ataku paniki. Emoji wszędzie, nieskończone przewijanie, zero hierarchii. Działała, technicznie, i byłem z niej dumny przez jakieś dwa tygodnie, aż użyłem jej jak normalny człowiek i zrozumiałem, że działające i dobre to dwa różne słowa.
Druga to była architektura dla samej architektury. Zdarzeniowa, modularna, profesjonalna i okropna w użyciu. Spędziłem dwa tygodnie na automatycznym sterowaniu wentylatorami z krzywymi przeciąganymi myszą, wydałem to, a potem skasowałem w całości, bo jedna zła krzywa potrafi uszkodzić sprzęt, a to jest funkcja, która dobrze brzmi na liście i fatalnie w zgłoszeniu użytkownika.
Trzecia zadała inne pytanie. Nie co mogę dodać, tylko co człowiek naprawdę musi zobaczyć.
Ci sami ludzie, którzy uśmiechali się do mnie od tygodni, dalej uśmiechnięci: nie przeszedłeś okresu próbnego, jutro do widzenia i wyprowadzka. Walizki stały przy drzwiach, zanim skończyłem rozumieć to zdanie. Dwa psy czekające w innym kraju. Mniej więcej miesiąc pieniędzy. Projekt na jakichś siedemdziesięciu procentach, 680 godzin w środku.
Tej nocy musiałem stanąć na korytarzu i wykrzyczeć człowiekowi, że nie jestem terrorystą, bo budynek miał certyfikat, znałem swoje prawa, a on obstawiał, że ich nie znam. To najbardziej absurdalne zdanie, jakie wypowiedziałem na głos.
Potem wróciłem do środka, otworzyłem laptopa i zacząłem przebudowę numer cztery.
O drugiej w nocy dziewczyna przyniosła energetyki, a ja byłem na siódmej kromce tosta. O trzeciej kasowałem całe podsystemy zamiast je refaktorować, bo aplikacja mówiła mi wciąż to samo: nie jestem gotowa, żeby ktoś mnie używał. Zdanie, którego nie mogłem wyrzucić z głowy, brzmiało gdybym był użytkownikiem, zamknąłbym to w pięć sekund, a ja byłem użytkownikiem. O piątej rdzeń był przebudowany. Kiedy światło weszło do mieszkania, otworzyłem to i po raz pierwszy nie pomyślałem od razu o rzeczach do zmiany.
Bez pracy, w domu i po raz pierwszy w stanie pracować nad tym za dnia. To jedyny miesiąc w całym zapisie, w którym projekt dostał moje najlepsze godziny zamiast ostatnich, i widać tę różnicę w logu.
Plan był taki, żeby naprawić system danych wykresów w jeden dzień. Wyszła przebudowa.
25 marca zaczynam publikować trzy razy w tygodniu: w poniedziałek co planuję, w środę jeden bug rozebrany porządnie, w piątek co wyszło i ile kosztowało. Od tamtej pory nie przestałem i opuściłem dokładnie jeden post.
Dwa dni później uruchamiam git push --force i zamieniam 130 commitów w jeden. Osiem miesięcy publicznej historii znika. Odzyskuję z tego około 90 z gałęzi o nazwie archive, którą trzy tygodnie wcześniej stworzyłem przypadkiem, żeby przechować kilka starych plików.
Zaczynam pracę w sklepie. Dziewięć godzin na zmianę, rower o wpół do piątej rano. Pierwszy tydzień uczy mnie czegoś, czego nie wziąłem pod uwagę: ambitne plany tygodniowe zakładają stałą energię, a nowa praca oznacza, że jej nie ma. Dowożę mniej więcej połowę tego, co obiecałem, i piszę o tym zamiast to ukrywać.
27 kwietnia publikuję post, który zaczyna się od zdania „Most developers never ship an .exe". Prawie go kasuję przed wysłaniem, bo wydaje mi się zbyt konfrontacyjny jak na uprzejmą bańkę technologiczną. Dociera do 25 700 osób. Wcześniej moje posty docierały do 170 do 330.
We wtorek rano mam już inny problem. Odświeżam analitykę co piętnaście minut zamiast pisać kod, a o jedenastej łapię się na tym, że nie zrobiłem nic poza sprawdzaniem telefonu. Patrzenie, jak licznik rośnie, jest bardziej natychmiastowe niż debugowanie czytnika rejestru, i dokładnie dlatego jest niebezpieczne. Zamykam kartę, otwieram edytor.
Też w kwietniu: nieznajomy pobiera mój plik wykonywalny i zanim go uruchomi, przepuszcza cały kod przez pełny audyt bezpieczeństwa. Potem przysyła mi wyniki. Chyba spodziewał się paniki. Zapytałem, czy mogę zobaczyć pełny raport. Wyszedł czysty, a on został testerem.
Dwadzieścia osiem osób odpowiada na pytanie, co zapytaliby AI mieszkające w monitorze systemu, i każde z tych pytań staje się w tym tygodniu prawdziwym kodem. Zaczynam program Google przez SGH.
25 maja post dociera do 46 904 osób, co do dziś jest największą liczbą, jaką wyprodukowałem. Wrócę do tego, ile była warta.
Pieniądze znowu się kończą. Biorę pracę przy spawaniu plastików w zakładzie napraw, w pomieszczeniu, które zawsze jest za ciepłe i które czuć na ubraniach wieczorem. Praca fizyczna w dzień, kod w nocy. Ten sam rytm co w Holandii, inny kraj.
Ta praca nauczyła mnie czegoś, czego nie spodziewałem się przynieść do domu. Dobry zgrzew plastiku jest nudny. Nie pamiętasz go dlatego, że wyglądał sprytnie. Pamiętasz go, bo pół roku później element nadal się trzyma. Nie znalazłem lepszego opisu kodu, który chcę pisać.
W tym samym okresie: kładę się o trzeciej w nocy z tą cichą pewnością, że nikogo to nie obchodzi. To nie jest nastrój, to brzmi jak fakt. Następnego ranka post ma 44 000 wyświetleń. Godzinę wcześniej i cała ta noc wyglądałaby inaczej. Nie sprawdziłem, więc nie wyglądała. To jest ta wersja budowania w publicznym rytmie, której nikt nie publikuje.
Mój artykuł trafia też na pierwsze miejsce trendów na HackerNoon. Moją pierwszą myślą nie jest „udało się". Jest nią „a jeśli to przypadek".
1 lipca PC Workman trafia do Microsoft Store. Rok wcześniej to zdanie było ostatnią linijką roadmapy napisanej przez kogoś, kto zabił dwanaście projektów i nie wierzył, że trzynasty przeżyje. Microsoft odrzucił go wcześniej dwa razy i żadne odrzucenie nie dotyczyło kodu. Rozmyta ikona kafelka i link do polityki prywatności, który prowadził do polityki bezpieczeństwa.
Tego dnia nic w repozytorium się nie zmieniło. Te same pliki, te same błędy, nadal moje. Zmieniło się to, że ktoś, kogo nigdy nie spotkam, mógł nacisnąć Zainstaluj i uruchomić to na maszynie, której nigdy nie zobaczę. Przestałem czytać ten projekt jak prywatny warsztat.
Pierwszą rzeczą, która na mnie spojrzała, był plik na 6 533 linie z 96 handlerami odpowiedzi. Nie stał się absurdalny w jeden dramatyczny weekend. Dziesięć linii tu, piętnaście tam, helper na dole, bo i tak byłem w pliku. Żaden pojedynczy commit nie wyglądał nieodpowiedzialnie i tak właśnie wygrywa dług techniczny: przychodzi jako seria rozsądnych skrótów. I dalej działał, co było najgorsze, bo zepsuty plik domaga się uwagi, a działający uczy Cię, żeby go zostawić w spokoju. Plik, który boisz się otworzyć, to plik, który już przestałeś ulepszać.
Store nie zmienił mojego kodu. Zmienił to, co byłem gotów ignorować. Rozbiłem ten plik na siedem, a testów przybyło z 21 do 194 w dziesięć dni.
Później w tym samym miesiącu przychodzi pierwsza recenzja na jedną gwiazdkę: interfejs zbyt techniczny, krzywa uczenia stroma. Czytam ją trzy razy i zgadzam się z każdym słowem. Zbudowałem to dla kogoś dokładnie takiego jak ja, a większość ludzi mną nie jest.
28 lipca zaczynam jeździć taksówką po dziesięć, dwanaście godzin dziennie, bo to finansuje wyprowadzkę.
Rezerwuję sobie siedemdziesiąt godzin jazdy w jednym tygodniu, więc weekend przed nim spędzam na tym, żeby nic, na czym mi zależy, nie potrzebowało mnie, kiedy mnie nie będzie. W piątek tamtego tygodnia kończę zmianę, siadam, otwieram plik, patrzę na niego i zamykam laptopa. Dwadzieścia jeden tygodni, sześćdziesiąt trzy posty i pierwszy, którego nie napisałem.
Piszę o tym w poniedziałek, zamiast cokolwiek antydatować, bo passa nie jest sensem, a udawanie jest gorsze niż opuszczenie.
W tym samym miesiącu odkrywam, że mój lokalny klon śledził niewłaściwą gałąź od marcowego odzyskiwania i był po cichu 1081 commitów w tyle przez pięć miesięcy. Byłem jedną komendą od skasowania 145 201 linii, które istniały wyłącznie na GitHubie.
Ile to naprawdę kosztowało
Czternaście miesięcy, cztery prace, dwa kraje, ani jednego wolnego tygodnia. Tu jest część, którą łatwo pominąć.
Najpierw sen. Bez romantyzowania. Były tygodnie czterogodzinnych nocy, które dały dobrą robotę, i pisałem wtedy, że to działa raz, może dwa, i że nie da się na tym budować. To była prawda i i tak robiłem to dalej, więcej niż dwa razy.
Ciało, które pracuje fizycznie. Piętnaście kilometrów na zmianę w magazynie. Dziewięć godzin na sklepie. Pomieszczenie, które zawsze jest za ciepłe. Dwanaście godzin w samochodzie. Nic z tego nie jest metaforą dyscypliny, to po prostu było tym dniem, a kod dostawał to, co zostało.
Brak recenzenta i konkretna cena tego. Umiem wskazać co najmniej dwadzieścia cztery osobne sytuacje, w których wydałem coś, co działało bez zarzutu i nie dostarczało niczego, a każda z nich była niewidoczna od środka. Nic się nie wysypało. Kolega zza biurka złapałby kilka z nich w jednym zdaniu. To nie jest narzekanie na pracę w pojedynkę, tylko realny, mierzalny koszt takiej pracy, i spisałem cały ten katalog, żeby przynajmniej komuś się przydał.
Uwaga do liczby z tytułu. Cztery to liczba rodzajów pracy dziennej przez te czternaście miesięcy: magazyn, sklep, zakład napraw plastików, taksówka. Prawdziwa liczba jest wyższa, bo sama Holandia to były cztery osobne skierowania z agencji i siedem różnych adresów w dziewięć miesięcy. W tytule użyłem mniejszej liczby celowo. Zaniżanie jest jedynym kierunkiem, w którym bezpiecznie jest się mylić.
Co zadziałało, a co nie
Mam pięć miesięcy analityki z publicznej strony tego wszystkiego i uczciwy odczyt tych danych przeczy większości rad, jakie dostawałem.
Zasięg i efekt są u mnie odwrotnie proporcjonalne. Moje trzy największe posty dotarły do 46 904, 23 095 i 7 860 osób. Ich wskaźniki zaangażowania wyniosły 0,21, 0,25 i 0,25 procent, czyli trzy najgorsze wyniki w całej mojej historii, i razem nie przyniosły niczego, co umiałbym wskazać. Post o mojej realnej sytuacji dotarł do 2 597 osób przy 4,74 procent i przyniósł jedną rozmowę o pracę oraz trzy osoby, które przekazały moje CV dalej.
Powód okazał się widoczny w danych, kiedy w nie spojrzałem. Ludzie, którzy mnie obserwują, są w Warszawie, Krakowie, Wrocławiu i Gdańsku, w firmach, które zatrudniają pythonowców w Polsce. Ludzie, do których dotarły viralowe posty, byli zupełnie gdzie indziej, na innym etapie kariery, na innym kontynencie. Duże liczby znalazły publiczność bez związku z tym, czego naprawdę potrzebuję.
Regularność biła jakość częściej, niż się spodziewałem. Nie dlatego, że słabe posty szły dobrze, tylko dlatego, że te dobre trafiały na publiczność, która istniała, bo wcześniej pojawiałem się przez dwadzieścia tygodni.
Publikowanie porażek działało lepiej niż publikowanie sukcesów, za każdym razem. Posty o katastrofach, recenzja na jedną gwiazdkę, funkcje, które nic nie robiły. Nie robiłem tego jako strategii. Robiłem to, bo alternatywa wydawała się kłamstwem. Okazało się, że to jedyna rzecz, przez którą ktokolwiek uwierzył w liczby wtedy, gdy były dobre.
Co nie zadziałało: proszenie. Dwie platformy, w które włożyłem realne godziny, oddały prawie nic, a ja ciągnąłem to z uporu, nie z dowodów. I przez długi czas optymalizowałem pod zasięg, bo zasięg jest liczbą, którą łatwo zobaczyć, i dokładnie dlatego jest tą niewłaściwą.
Gdzie to jest teraz i czego chcę
PC Workman jest w Microsoft Store, na licencji MIT, podpisany przez Sigstore, z CodeQL działającym przy każdym commicie. Ma 331 testów automatycznych, w pełni lokalnego asystenta ze 110 rozpoznawanymi intencjami po polsku i angielsku, bibliotekę 521 definicji procesów, offline'ową bazę zgodności sprzętu z 340 wpisami i 25 poradników diagnostycznych w dwóch językach, darmowych i bez żadnej ściany mailowej.
Obok istnieje teraz drugi projekt, gra strategiczna o prowadzeniu laboratorium AI, trzy tygodnie stara, z 718 testami automatycznymi i formatem zapisu, który przemigrował 36 razy bez zepsucia żadnej kampanii.
I nadal nie mam doświadczenia komercyjnego. Aplikacje wychodzą. Większość milczy. Taki jest prawdziwy stan na sierpień 2026 i nie zamierzam tego ubierać, bo cała wartość tej strony polega na tym, że nie jest ubrana.
To, co wniósłbym do zespołu, jest na tej stronie, a nie w akapicie o moich mocnych stronach. Szukam awarii, która się nie zgłasza. Buduję narzędzie, które ją znajduje, zamiast obiecywać, że następnym razem będę uważniejszy. Zapisuję, ile to kosztowało, publicznie, z datą, łącznie z tygodniami, które poszły źle. Robię to w dwóch językach.
Python i aplikacje desktopowe. Lokalne AI bez zależności od chmury. Wnętrze Windowsa. Wydawanie przez Microsoft Store. Dyscyplina testowa nauczona drogą kosztowną. Otwarty na role developerskie, pythonowe, IT support i ścieżki pokrewne, zdalnie, hybrydowo albo na miejscu w Krakowie, Warszawie lub Wrocławiu.
Jeśli zatrudniasz za to, co ktoś potrafi zbudować, a nie za to, co już stoi w CV, wszystko tutaj da się sprawdzić, a moja skrzynka jest otwarta.
Reszta zapisu. Pełny katalog cichych awarii razem ze skryptami wykrywającymi jest tutaj. Cotygodniowe posty żyją w poniedziałkach, środach i piątkach. Sama aplikacja jest darmowa i otwartoźródłowa.