
Newsletter #14: „Projekt Poboczny – coś dla siebie”
Coffee & Code | 8 lipca 2026
Cześć!
Kawa lodowa (bo upał nieznośny), dzieci szaleją, mam chwilę dla siebie i czuję się jak wygrałam los na loterii.
Tydzień temu stało się coś nieoczekiwanego: zaczęłam projekt który… nie ma celu biznesowego. Nie jest dla portfolio. Nie jest dla klienta. Nie pomoże mi dostać pracy.
Robię go bo chcę. Bo jest fun. Bo mogę.
I zapomniałam jak to jest – kodować dla czystej radości.
📚 Learning: Projekt który robię tylko dla frajdy
Genesis projektu:
Siedzę wieczorem, dzieci śpią, myślę „co zrobić”. Normalnie bym otworzyła React tutorial albo pracowała nad Expense Tracker.
Ale zamiast tego pomyślałam: „Co bym chciała zrobić? Co brzmi FUN?”
Odpowiedź: Generator losowych rekomendacji książkowych (Random Book Recommendation Generator).
Dlaczego to?
- Czytam dużo, mam problem z wyborem „co teraz przeczytać”
- Mogę użyć Google Books API (nowe dla mnie)
- Frontend w React (practice)
- Można dodać ciekawe funkcje (losowe nastroje, gatunki, przycisk „zaskocz mnie”)
- Zerowe ciśnienie – jeśli nie wyjdzie, nic wielkiego.
Tech stack – tylko dla zabawy:
Frontend: React (bo się uczę)
API: Google Books API (free, łatwe)
Stylizacja: CSS z gradienty i animacje (bo ładne!)
Wdrożenie: Netlify (bezpłatne i szybkie)
Żadnego backendu. Żadnej bazy danych. Żadnej autoryzacji.
Postaw na prostotę. Niech będzie zabawnie.
Dzień 1 – Podstawowa struktura:
function BookRecommender() {
const [mood, setMood] = useState('');
const [book, setBook] = useState(null);
const [loading, setLoading] = useState(false);
const moods = [
{ name: 'Happy', genre: 'humor' },
{ name: 'Thoughtful', genre: 'philosophy' },
{ name: 'Adventurous', genre: 'adventure' },
{ name: 'Romantic', genre: 'romance' },
{ name: 'Scared', genre: 'thriller' }
];
const getRecommendation = async () => {
setLoading(true);
// Google Books API call
const response = await fetch(
`https://www.googleapis.com/books/v1/volumes?q=subject:${genre}&maxResults=40`
);
const data = await response.json();
// Pick random book
const randomIndex = Math.floor(Math.random() * data.items.length);
setBook(data.items[randomIndex]);
setLoading(false);
};
return (
<div className="recommender">
<h1>What should I read today? 📚</h1>
<div className="moods">
{moods.map(m => (
<button
key={m.name}
onClick={() => setMood(m.genre)}
className={mood === m.genre ? 'active' : ''}
>
{m.name}
</button>
))}
</div>
<button onClick={getRecommendation}>
Surprise me!
</button>
{book && (
<BookCard book={book} />
)}
</div>
);
}
Uczucie: RADOŚĆ. Czysta radość. Żadnego ciśnienia. Żadnego „czy to wystarczająco „efektowny dla portfolio”.
Dzień 2 – Upiększanie:
Dodałam CSS z animacjami:
.book-card {
animation: slideIn 0.5s ease-out;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
border-radius: 20px;
padding: 2rem;
color: white;
box-shadow: 0 10px 40px rgba(0,0,0,0.2);
}
@keyframes slideIn {
from {
opacity: 0;
transform: translateY(20px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
.mood-button {
transition: all 0.3s;
cursor: pointer;
}
.mood-button:hover {
transform: scale(1.1);
box-shadow: 0 5px 15px rgba(0,0,0,0.3);
}
Czy to niezbędne? Nie.
Czy to zabawne? Absolutnie.
Dzień 3 – Ciekawe funkcje:
- Przycisk „Zaskocz mnie WIĘCEJ” – losuje z innego gatunku literackiego
- Zapisywanie ulubionych (localStorage – tak, łamię własną zasadę, ale to mój fajny projekt!)
- Udostępnij rekomendację (skopiuj link)
- Dark mode toggle (bo czemu nie)
Bugs i nie-idealne rzeczy:
- Czasem API zwraca książki bez okładki
- Randomizacja nie jest idealnie rozłożona
- Responsywny projekt mógłby być lepszy
- Kod mógłby być czystszy
Czy naprawiam? Może. Albo nie. To NIE ma być IDEALNIE. To ma być FAJNE
Czego się dowiedziałem (ku mojemu zaskoczeniu):
- Praca z zewnętrznymi interfejsami API – Google Books API, obsługa odpowiedzi, błędy
- React animacje– CSS transitions, keyframes
- Zarządzanie stanem – kiedy używać useState, a kiedy useEffect
- Zabawa > perfekcja – robiąc „dla zabawy” projekt, eksperymentuję więcej
Wyciągnięta lekcja:
Projekty poboczne bez presji uczą INACZEJ niż projekty pod portfolio. Nie boję się próbować różnych rzeczy. Nie boję się ponieść porażkę.
Wdrożono:
Wrzuciłam na Netlify. Działa. Pokazałam dzieciom.
Syn: „Mamo, to jest ładne! Możesz mi znaleźć książkę?”
Kliknęła „awanturniczy”. Dostała „Percy Jackson”. Idealnie
Radość z tego momentu > radość z ukończony projekt portfolio.
💼 Freelancing: Dlaczego nie wszystko musi zarabiać
Wyznanie:
Przez długi czas myślałam: każdy projekt = sposobność zarobku albo portfolio albo CV.
Jeśli nie służy żadnemu z tych celów – strata czasu.
To była błędna logika.
Dlaczego projekty poboczne dla zabawy mają sens:
1. Eksperymentowanie bez ryzyka:
Projekt klienta: Nie mogę próbować ryzykownego podejścia. Musi działać. Musi być stabilny.
Projekt poboczny: Mogę spróbuj szalonego pomysłu. Jeśli zaliczę niepowodzenie – to brak konsekwencji.
Przykład: W Book Recommender próbowałam nowej biblioteki do aminacji (Framer Motion). W projekcie klienta bym się nie odważyła. Tu? Dlaczego nie!
2. Nauka bez presji:
Projekt portfolio: „Musi być imponujący. Musi pokazać umiejętności.”
Fajny projekt: „Zobaczę co się stanie. Może nauczę się czegoś.”
Paradoks: Nauczyłam się WIĘCEJ z projektu dla zabawy, bo nie było ciśnienia, presji.
3. Kreatywność:
Klient: „Chcę niebieskie przyciski, ten dokładny układ, do konkretnej funkcjonalności.”
Ja: „Ok.” (wykonuję specyfikację)
Fajny projekt: „Co jeśli przyciski będą pulsować? Co jeśli gradient background? Co jeśli…”
Kreatywność rozkwita, gdy nie ma ograniczeń.
4. Przypomnienie o radości:
Freelancing = opłacanie rachunków. Portfolio = znalezienie pracy. Fajny projekt = przypomnienie, że dlaczego zacząłem kodować.
Bo jest fun.
Poważna rozmowa – zarządzanie czasem:
„Ale czy nie lepiej użyć tego czasu na uczenie się React systematycznie? Albo projekt freelancerski za pieniądze?”
Może. Ale też:
- Zdrowie psychiczne
- Regeneracja kreatywności
- Prawdziwa przyjemność
- Długoterminowa stabilność
4 godziny na fajny projekt ≠ marnować. To inwestycja w moje samopoczucie.
Perspektywa klienta:
Czy klienci muszą wiedzieć o pobocznym projekcie? Nie.
Czy poboczne projekty robią mnie lepszym developerem? Tak.
Lepszy programista = lepsza praca dla klientów.
Więc pośrednie – projekty rozrywkowe pomagają biznesowi.
Równowaga:
NIE sugeruję że wszystko powinno być dla radochy.
Ale stosunek:
- 70% praca, która się opłaca/pozwala rozwijać karierę
- 20% ustrukturyzowane uczenie się
- 10% czysta zabawa
Te 10% utrzymuje Cię przy zdrowych zmysłach. Utrzymuje Cię w kreatywności. Utrzymuje Cię w miłości do tego, co robisz.
Wyciągnięta lekcja:
Nie wszystko wymaga zwrotu z inwestycji. Czasami radość JEST zwrotem.
📖 Książka: „Wielka magia. Odważ się żyć kreatywnie” – Elizabeth Gilbert
To książka o kreatywności. O tym jak żyć życiem twórczym. Od autorki „Jedz, módl się, kochaj”.
Dlaczego czytam to jako developer:
Bo programowanie to praca twórcza. Nie tylko techniczna. Twórcza.
I czasem zapominamy o tym.
Główna idea:
Kreatywność potrzebuje radości. Ciekawość. Pozwolenia na eksperymentowanie bez strachu.
Fragment, który mi utkwił w pamięci:
„Czy masz odwagę wydobyć na światło dzienne skarby, które kryją się w Tobie?”
W kontekście kodowania: Mam odwagę, żeby zrobić ten zwariowany projekt, który mnie interesuje? Albo tylko bezpieczne, rzeczy warte portfolio?
Praktyczne zastosowanie:
Zezwolenie na zabawę:
Gilbert mówi: traktować kreatywność jak zabawę, nie jak poważny biznes.
Mój Book Recommender = zabawa. Nie poważny element portfolio.
I czułam się winna. „Powinnam robić coś użytecznego”
Teraz myślę: Zabawa jest przydatna. Utrzymuje mnie w zaangażowaniu. Zapobiega wypaleniu.
Strach kontra ciekawość:
Gilbert: Strach mówi „to nie będzie idealne, więc nie zaczynaj.”
Ciekawość mówi: „to wygląda interesująco, zobaczmy co z tego wyjdzie!”
Moje podejście do projektów pobocznych było napędzany strachem (musi być imponujący).
Nowe podejście: napędzany ciekawością (to wygląda ciekawie, spróbuję!).
Fragmenty o treści „zrobione jest lepsze od doskonałego”:
„Perfekcjonizm to strach w eleganckich butach.”
Uff. Zrozumiano.
Ile projektów nie zaczęłam, bo „nie będzie idealnie”?
Book Recommender jest DALEKO od ideału. Ale istnieje. Przynosi radość.
Czy polecam:
Tak, ale nie jako instrukcja obsługi. Raczej jako poświadczenie pozwolenia.
Zezwolenie na:
- Eksperymentować
- Ponieść porażkę
- Robić rzeczy dla zabawy
- Nie brać się zbyt poważnie
Specjalnie dla programistów:
Przypomnienie, że kodowanie może być sztuką, nie tylko rzemiosło. Można dodać piękno, zabawa, nieoczekiwanie.
👩👧👦 Real Talk: Radość z kodowania vs kodowanie dla pieniędzy
Dwa typy sesje kodowania – porównanie:
Sesja 1: Projekt klienta (konserwacja WordPressa)
- 9:00: Otwieram projekt
- 9:15: Przeczytaj wymagania klienta (zmień ten plugin, napraw ten błąd)
- 9:30:Zacznij pracować
- 10:00: Stack Overflow, bo nie pamiętam składni
- 11:00: Naprawiono błąd
- 11:30: Testowanie
- 12:00: Gotowe. Faktura: 400 zł.
Poczucie: Spełnione. Profesjonalna. Płatny. Ale… mech.
Sesja 2: Book Recommender (projekt dla radochy)
- 20:00: Otwieram projekt
- 20:15: „Co jeśli dodam animację?”
- 20:30: Wypróbuj Framer Motion
- 21:00: „Wow, to wygląda cool!”
- 21:30: „Co jeśli dodać dark mode?”
- 22:00: „Oooh, gradienty!”
- 23:00: Zdaję sobie sprawę że minęły 3 godziny. Faktura: 0 zł.
Odczucie: PEŁEN ENERGII. Podekscytowany. Kreatywny. Szczęśliwy.
Różnica jest ogromna.
Pytanie: Czy mogę robić tylko projekty dla zabawy?
Odpowiedź: Nie, bo rachunki.
Lepsze pytanie: Czy mogę znaleźć równowagę gdzie są i pieniądze i radość?
Może.
Strategia freelancingu – dodaj trochę zabawy:
Nawet w projektach klienckich, próbuję znajdź chwile kreatywności:
- Sugerować niestandardowe rozwiązanie (jeśli klient otwarty)
- Dodaj mały ozdobnik (animacja, ładna kolorystyka)
- Implementuj w ciekawy sposób (nawet jeśli klient nie widzi)
Przykład:
Klient chciał podstawowy formularz kontaktowy. Zrobiłam podstawowy formularz kontaktowy. Ale też dodałam subtelne animacje przy przesyłaniu, miłe komunikaty potwierdzające, płynne przejścia.
Klient zauważył: „Wow, to wygląda profesjonalnie!”
Ja czułam: chwila dumy, a nie tylko wykonanie zadania.
Równowaga w nauce:
Nauka ustrukturyzowana (kursy, samouczki) = ważne. Daje fundamenty
Zabawna nauka (zabawne projekty) = też ważne. Daje radochę.
Tylko strukturalny = wypalenie.
Tylko zabawa = brak kierunku.
Obydwa = zrównoważony wzrost.
Największe objawienie lipca:
Spędziłam 10+ godzin na Book Recommender. Zero korzyści finansowych.
Ale po tych sesjach czułam się WIĘCEJ energii do pracy z klientem. Bardziej kreatywna. Bardziej zaangażowana.
ROI był pośrednie ale rzeczywiste.
Perspektywa syna:
Pokazałam mu Book Recommender i Expense Tracker.
On: „Który lubisz bardziej?”
Ja (automatycznie): „Expense Tracker, bo jest bardziej ważniejszy dla portfolio.”
On: „Ale który LUBISZ?”
Ja (pauza): „…Book Recommender.”
On: „To dlaczego nie robisz więcej rzeczy, które lubisz?”
Z ust dzieci.
Wyciągnięta lekcja:
Radość ma znaczenie. Nie wszystko musi być strategiczne. Czasami „bo chcę” jest wystarczającym powodem.
Jestem developerką. Ale też człowiek. Człowiek potrzebuje radochy.
Postanowienie letnie:
Jeden projekt poboczny miesięcznie. Cokolwiek. Żadnych zasad. Żadnej presji. Czysta zabawa.
Bo życie jest za krótkie, żeby kodować tylko dla pieniędzy.
🔗 Zasoby i narzędzia
- Google Books API – darmowy, łatwy w użyciu, świetny do praktyka.
- Framer Motion – Biblioteka animacji React, z którą można się świetnie bawić
- Netlify – darmowy hosting, superłatwe wdrożenie
- CodePen – szybkie eksperymenty, natychmiastowe rezultaty
P.S.
Book Recommender link? Może w przyszłości. Może nigdy. Może zostanie tylko dla mnie i dzieci.
I to jest OK. Nie wszystko potrzebuje publiczności. Czasami projekt jest kompletny po prostu, kiedy jest używany przez Ciebie.
Do zobaczenia za 2 tygodnie (ostatni newsletter przed urlopem!)
P.S.2: Book Recommender polecił mi „Project Hail Mary” Andy Weir. Kliknęłam „Zaskocz mnie” 5 razy żeby dostać różne rekomendacje. Wszystko wyglądały dobrze. Algorytm działa? Może. Zabawa? Zdecydowanie.
P.S.3: Całkowity koszt Book Recommender: 0 zł (wszystko free). Wartość całkowita: Przypomnienie dlaczego kodowanie jest niesamowite. Bezcenne.
