Wróć do bloga
2 min czytaniaAutor: Kamil Bartczak

Moje projekty poboczne nie powstawały, bo wciąż próbowałem je ulepszać

O tym, jak perfekcjonizm i przedwczesne refaktoryzacje zatrzymywały moje projekty — oraz o zasadach, które pomogły mi znów dostarczać efekty.

Dług technicznyProduktywność

Mam tę skłonność — zarówno jako developer, jak i w życiu. Lubię reorganizować, katalogować, restrukturyzować i przesuwać elementy, aż wszystko wydaje się ergonomiczne i uporządkowane. Przez długi czas mówiłem sobie, że to moja mocna strona. Nie zauważałem jednak, że robię porządki, zanim zdążyłem w ogóle narobić bałaganu.

Żaden system nie jest naprawdę idealny, wolny od błędów i gotowy na każdą przyszłą funkcję. Mój lęk przed długiem technicznym popychał mnie jednak do wielotygodniowego analizowania architektury prostego projektu. Logika wydawała się rozsądna: zbuduj od razu skalowalny fundament, a później oszczędzisz sobie bólu. Nadal wierzę, że struktura ma znaczenie, także w małych i średnich systemach.

Ale za każdym razem, gdy kończyłem refaktoryzację i zaczynałem implementować nową funkcję, dostrzegałem sposób, w jaki poprzedni projekt można ulepszyć pod konkretny przypadek. Zmieniałem więc klasy bazowe. Potem model bazy danych. I wkrótce prawie każda nowa funkcja była w jakiś sposób „zablokowana” przez kolejną refaktoryzację.

W pewnym momencie musiałem przyznać, że coś w moim procesie nie działa.

Nie narzędzia. Nie język. Nie framework. Sposób, w jaki pracowałem. Optymalizowałem pod kątem poprawności i elegancji zamiast postępu. A to postęp naprawdę ujawnia złe decyzje. Bez niego dyskutowałem jedynie z wyobrażonymi problemami przyszłości.

Zmieniłem więc zasady, które sobie narzucałem.

Oddzieliłem czas na refaktoryzację od czasu na dostarczanie. Refaktoryzacja stała się zaplanowanym działaniem. Wszystko inne dotyczyło wdrażania: nowych funkcji, drobnych ulepszeń, naprawiania błędów i zamykania zadań.

Stworzyłem plik TECHNICAL_DEBT.md. Gdy coś wydawało się niewłaściwe lub brzydkie, zapisywałem to zamiast od razu naprawiać. Co boli? Dlaczego boli? Co zmieniłbym, gdybym miał czas? Zaplanowałem w kalendarzu powtarzający się blok czasu na zajęcie się tym.

To zmieniło wszystko.

Praca stała się spokojniejsza. Decyzje — lżejsze. Przestałem walczyć z samym sobą podczas pisania kodu. Mogłem iść do przodu, nie udając, że każdy wybór musi być perfekcyjny. Dłużej zajęło mi zrozumienie, dlaczego ten schemat w ogóle powstawał. Znałem teorię. Wszyscy ją znają. Nadmierne komplikowanie projektu na początku jest błędem. Przedwczesna abstrakcja jest niebezpieczna. Należy pozwolić systemowi rosnąć.

Ale sama wiedza nie wystarczyła.

Mój perfekcjonizm robił coś bardziej toksycznego. Nie pozwalał mi w ogóle uznać istnienia długu technicznego. Zapisanie czegoś jako „niedoskonałego” wydawało się przyznaniem do porażki. Dowodem na to, że nie jestem dobrym developerem. Brak postępów w projektach prowadził mnie coraz głębiej w tę spiralę.

Uczę się teraz, że dobre systemy nie rodzą się czyste. Stają się takie dzięki użyciu. Dzięki błędom. Pod wpływem realnych użytkowników i prawdziwych ograniczeń. Kończenie rzeczy okazało się bardziej satysfakcjonujące niż projektowanie idealnych systemów. A akceptacja długu technicznego okazała się oznaką dojrzałości, a nie porażki.

KB / PRYWATNOŚĆ

Twoja prywatność. Twój wybór.

Strona działa tak samo niezależnie od Twojej decyzji. Statystyki są domyślnie wyłączone.

Jeszcze nie dokonano wyboru

Zapamiętanie wyboru

W przeglądarce przechowujemy wyłącznie Twoją decyzję i datę jej podjęcia (localStorage). Wybór obowiązuje przez 180 dni. To nie jest identyfikator reklamowy.

Dobrowolne statystyki

Po zgodzie GoatCounter na naszym serwerze zlicza odsłony, kliknięcia kontaktu, CV, projektów, linków zewnętrznych i pobrania Saldo oraz użycie przykładowych dem, widoczność sekcji i postęp czytania. Nie przesyłamy treści formularzy, wyszukiwania ani danych wpisywanych w demach. Przetwarzamy adres strony bez parametrów i fragmentów, tytuł, domenę źródła wejścia, przeglądarkę, system, język, szerokość ekranu i przybliżony kraj. Adres IP służy do obsługi połączenia i określenia kraju; nie zapisujemy go w statystykach. Nie korzystamy z cookies analitycznych ani nagrywania sesji. Dane statystyczne przechowujemy do 180 dni. Sygnały Do Not Track i Global Privacy Control wyłączają pomiar.

Zgodę możesz wycofać w dowolnej chwili przez „Ustawienia prywatności” w stopce. Wycofanie zatrzymuje dalszy pomiar; nie usuwa już zebranych zbiorczych statystyk. Odmowa nie powoduje wysyłania zdarzeń analitycznych.

Administratorem danych jest Kamil Bartczak Software Development, Czarnowo 100, 66-600 Czarnowo, Polska, NIP 9261697200. Pytania o prywatność: office@kamilbartczak.dev.