Jaki jest najfajniejszy projekt dla programisty? Pewnie większość odpowie: NOWY! A kto ma przyjemność tworzyć NOWE projekty, tzw greenfield, w codziennej pracy? Ano… prawie nikt (ja akurat czasami mam ;) ).
Gro programistycznej pracy to utrzymanie istniejących systemów. Pół biedy jeśli jest to system sensownie napisany, ale często przecież siedzimy w bagnie po pachy, modląc się o to żeby nie wpaść jeszcze pół metra głębiej, bo nam to bagno uszami wytryśnie.
Co oznacza wieloletnia praca w takich okolicznościach? Czy ktoś babrzący się w takim syfie przez 5 lat może mówić, że ma 5 lat doświadczenia? Mówić w sumie może. Ale niewiele ma to wspólnego z rzeczywistością. Ayende kiedyś napisał, że to nie jest 5 lat doświadczenia, a jeden rok powtórzony pięciokrotnie. Ja bym nawet poszedł dalej: to nawet nie jest rok, a pewnie maksymalnie kwartał, w kółko i w kółko klepania tego samego.
Czy można coś zrobić, żeby z tej spirali kiły i mogiły się wyrwać? Można zmienić pracę, ale istnieje duża szansa, że trafimy do takiego samego kołchozu.
Można też usiąść wieczorkiem, odpalić VS, nacisnąć “New solution” i… jazda! Zacząć realizować jeden z pomysłów, które obijają się między uszami. Na pewno takie pomysły są, nie wierzę że nie.
Wyzywam Cię, I DARE YOU, zrób to!! Nie bój się, że zajmie Ci to tygodnie czy miesiące. Poświęć na ten eksperyment dosłownie 30 minut. A być może dowiesz się o sobie jako o programiście… bardzo wiele.
Zobacz, założę się, że w większości przypadków będzie to wyglądało tak:
Pierwsze pięć minut: wybór tego, co zacząć pisać. Jeżeli nie masz kompletnie żadnego pomysłu (RRRREEAALLLYYYYY??????) to wybierz coś z tej listy:
- web: “twitter compare” – strona przyjmująca 2 twitterowe usernames i wyświetlająca “zależność” między nimi (który którego followuje, wspólni “followersi” itd)
- mobile: “drink controller” – logowanie kiedy, ile i czego się wypiło oraz obliczanie aktualnego “stanu upojenia” na podstawie płci/wagi itd
- integracja: plugin “ulubione” do OneNote
- system do generowania faktur w PDF
- player audio/video
- komunikator internetowy
- … COKOLWIEK!!!!
Kolejne 10 minut: czekanie aż załaduje się VS, kliknięcie “New Solution”, zastanowienie “jak nazwać projekt?” oraz “gdzie go zapisać na dysku?”.
Ostatnie 15 minut: “fuck, co dalej?”
Co się okazuje? Po wyjęciu z tego swojego wielkiego pracowego projektu, w którym siedzisz zagrzebany, jesteś jak dziecko we mgle. Jesteś programistą “rozwiązującym problemy”, a nie wiesz jak zacząć rozwiązywać problem który sam wymyśliłeś. Nie mówię nawet o konkretnych rozwiązaniach – mówię o obsłudze IDE i po prostu jakimkolwiek starcie!
Dlaczego jestem przekonany, że tak właśnie będzie? Bo sam tak miałem. I wiem z rozmów, że inni tak mają gdy próbują zrobić “coś więcej” po raz pierwszy czy drugi.
Czy to coś złego? Tak. Ale też: to kompletnie normalne.
I co dalej? Trzeba pogodzić się z tym, że “nie umiem”. Że jedyne, co robię dobrze (o ile w ogóle to) znajduje się na pracowym komputerze. I że po prostu nie wypada tkwić w takim stanie rzeczy. Że trzeba to zmienić. Skoro już społeczeństwo postrzega Cię jako arystokratę i rozpieszczonego bachora to chociaż… zasłuż na te zaszczytne tytuły.
Wystarczy bardzo niewiele, naprawdę. Nie bój się, że nagle zabraknie Ci czasu dla rodziny czy na browara przed TV. Dosłownie kilka godzin rozłożonych nawet na miesiąc pozwoli pokonać tę początkową niemoc. Po prostu zacznij to robić. Usiądź i koduj. Jeśli coś zakodujesz źle – to nic! Robisz to dla siebie. A że realizujesz coś, co CHCESZ zrealizować, a nie coś, co zrealizować MUSISZ, to Cię to wciągnie. Poczujesz… pasję.
Kolejne kroki są równie ważne, jednak o wiele łatwiejsze. Uruchom to co stworzyłeś, nawet jeśli nie jest skończone. Podziel się tym z innymi. Niech to będzie proste, niech to będzie brzydkie, ale niech działa.
A potem… ciesz się, że jesteś lepszym programistą niż byłeś miesiąc wcześniej. Że w ciągu miesiąca rozwinąłeś się bardziej niż w ciągu ostatniego roku. Że zobaczyłeś coś poza dziubaniem w kółko tego samego.
Wszystko to piszę z własnego doświadczenia. Zrobiłem i wdrożyłem msmvp.pl. Zrobiłem i wdrożyłem parentingowe.pl. I po drodze kilka innych rzeczy, ale te dwie nadają się do demonstracji idealnie, ponieważ są – albo przynajmniej były na początku – banalnie proste! A mimo to dały mi bardzo wiele.
Sam kod to nie wszystko. Trzeba kupić domenę. Trzeba to jakoś “ubrać”. Trzeba to wdrożyć. Trzeba skonfigurować.
Gorąco do tego wszystkiego zachęcam. Piszcie, twórzcie, RÓBCIE! Do emerytury wcale nie tak daleko, wykorzystajcie ten czas produktywnie. Bez wypruwania sobie żył – ale ot tak, dla własnej frajdy, satysfakcji, rozwoju. Kiedyś wierzyłem, że programista musi robić jeden etat w pracy a drugi później, dla siebie. To mi przeszło. Ale nie trzeba drugiego etatu, aby wcale niemało osiągnąć. To jest niewielka inwestycja… która się zwróci. Zawsze, każda się zwraca.
DO ROBOTY!?
A kodem, jakkolwiek średni by nie był, podzielcie się na GitHubie ofcorz.
Deal?