O pet projects

19

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?

Share.

About Author

Programista, trener, prelegent, pasjonat, blogger. Autor podcasta programistycznego: DevTalk.pl. Jeden z liderów Białostockiej Grupy .NET i współorganizator konferencji Programistok. Od 2008 Microsoft MVP w kategorii .NET. Więcej informacji znajdziesz na stronie O autorze. Napisz do mnie ze strony Kontakt. Dodatkowo: Twitter, Facebook, YouTube.

19 Comments

  1. Pingback: dotnetomaniak.pl

  2. Ja akurat mam tyle szczęścia, że kolega podsyła mi czasem ciekawe tematy – np. ostatnio robiłem crawler emaili z ebay’a w NodeJS. Strasznie fajna sprawa, zajęło mi to godzinę a przyjemność nieporównana do tej z pracy.

    I chyba muszę się podzielić na GH ;)

  3. Dokładnie! Niedawno zdałem sobie z tego sprawę. Poproszono mnie o kawałek kodu, a pod ręką miałem tylko jakieś cerowanie niezbyt ładnych systemów. Napisałem coś swojego nocami, wdrożyłem. Ale kurczaczek coś chyba nikt w necie nie jest tym zainteresowany. ;)

  4. Tak też robię. Pod przykrywką pracy magisterskiej stworzyłem portal społecznościowy dla ludzi uprawiających sporty siłowe fitness i inne, pozwalający na znalezienie partnera do wspólnych treningów. Też się podzielę: https://www.fitkumpel.pl. A za niedługo aktualizacja całego systemu.

  5. eugeniusz on

    A ja mam na odwórt, ale to chyba cecha ‘początkującego programisty’ :) Wcześniej robiłem co chciałem i sie uczyłęm czego chciałem ok. roku, napisałem kilka aplikacji, ale od kiedy zacząłem pracować normalnie na etacie jakieś półtora miesiąca temu to czuje, że rozwinąłem się dużo bardziej niż przez ten rok samemu. A może to i konsekwencja tego, że system w którym pracuje jest rzeczywiście sensownie zrobiony, a ludzie ogarnięci i pomocni :)

  6. Zgadzam się z Procentem w 100%. Sytuacje, kiedy człowiek więcej się uczy na etacie, niż kodująć po godzinach to utopia, do której warto dążyć. Niestety zdecydowaną większość kariery programista spędza w trybie grzebania w goo.

    Uważam się za szczęściaża, bo z moich 10 lat kodowania zawodowego może połowę czasu spędziłem w trybie rozwoju na etacie. Pozostałe 5 lat byłoby definitywnie stracone, gdyby nie fakt, że kodowałem po godzinach.

  7. Czyli co, istnieją programiści, którzy nie programują w domu po przyjściu z pracy? Nie wierze! ; ) Fakt jest taki, że bardzo trudno znaleźć balans pomiędzy programowaniem a rodziną. Jak nie mam warunków na kodowanie to oglądam jak inni kodują : ) http://www.watchpeoplecode.com/

  8. W pełni zgadzam się z treścią wpisu. Pamiętam jak musząc zbudować narzędzie do dużego projektu nie wiedziałem od czego zacząć. Niby wiedziałem co chce zrobić, tylko nie bardzo wiedziałem jak. Skąd wziąć niezbędne biblioteki, jak to połączyć, jak skonfigurować. Teraz jednak wiem, że był to czas dobrze spędzony.

  9. No to ja apropo tego zrobiłem sobie swoją stronkę : http://mgadziejewski.com
    Było trochę kombinowania jak stworzyć mechanizm bloga. Wyszło nieźle, gdyby nie jeden szczegół.
    Otóż tematy na blogu da się wyszukiwać, natomiast nie da się ich wyklikać w wyszukiwarce dzięki mojej “superkoncepcji” :) może kiedyś to poprawię, ale fun jest :)

  10. No i elegancko, nie musi być super, nie musi być idealnie – wszystko ciągnie nas do przodu.
    Ale oglądanie innych jak kodują to już jak dla mnie zakrawa o zboczenie :).

  11. Mnie regularnie nachodzi chęć zakodowania czegoś własnego (zwykle na wiosnę i właśnie znowu czuję “to coś” :) ). Od małego przynajmniej parę miesięcy w roku poświęcałem na tworzenie jakiegoś mniejszego lub większego kawałka softu według własnego pomysłu (zwykle go nie kończąc). Nawet nie edukacyjnie – dla czystej przyjemności tworzenia. I to niezależnie czy byłem akurat uczniem, zawodowym programistą czy – jak ostatnio – pracując w innych rolach w IT. Z ostatnich lat tutaj jest trochę źródeł:

    https://github.com/rafalb
    https://www.codeplex.com/site/users/view/rafalb

    (a na dysku takich projektów jeszcze kilkadziesiąt…)

  12. Trochę się nie zgadzam z tym postem.

    Co to oznacza, że programista nie ma możliwości tworzyć nowych programów ?
    To znaczy, ze albo jest politycznie za slaby żeby przekonać odpowiednie osoby do dania mu możliwości tworzenia czegoś
    nowego lub po prostu większej autonomii.

    Programiści nie są zatrudniani dlatego, ze pracodawcy lubią mieć geekow w około ale po to żeby ich praca zmniejszała koszty lub zwiększała dochody. Jeśli nowy projekt obniży koszty lub zwiększy przychody, to takowy powstanie.

    Po drugie, pet projekty są przydatne zeby się nauczyć czegoś nowego ale zwykle trzeba wybierać miedzy poświeceniem się pracy lub
    projektowi pobocznemu. Na pewno trudno jest być A-playerem w firmie, osiągać dobre wyniki i tworzyć wartościowy projekt na boku.

    Wiem, ze większość programistów myśli, ze nasza branża to merytokracja. Tak naprawdę nią nie jest, polityka w firmie i znajomości wciąż się liczą, same umiejętności nic nie znaczą.

    Sorry, ze zabrzmiałem trochę negatywnie ale obserwuje twojego bloga od kilku lat i wiem, ze masz bardzo pozytywne podejście do programowania. Jednakże uważam, że brakuje bardziej ogólnego podejścia do całej branży IT w Polsce w której programiści tak naprawdę maja niski status.

    Dowód: ‚hejt’ w artykule o IT arystokracji w artykule na Temat, cały management zarabia więcej i tez siedzą w IT, ale są już postrzegani przez innych ludzi jako poważni biznesmeni.

  13. leto,
    No co ty gadasz, jak programista ma przekonać firmę że potrzebuje nowego projektu jeśli tak nie jest? :)
    Co do poświęcania i wyboru między pracą/rodziną a pet-project – podkreśliłem w poście, że to wcale nie musi wymagać tak dużo czasu. I ten projekt nie musi być wartościowy w sensie ogólnym bo robisz go dla siebie. Dla siebie – każdy jest wartościowy.
    Znajomości – oczywiście że się liczą. Ale nie zgodzę się z tym że umiejętności nic nie znaczą.
    Z kolei z tym że programiści mają niski status zgadzam się jak najbardziej :). Dlatego niejednokrotnie piszę o programistycznej kopalni, bo tym właśnie jesteśmy w IT – robolami.

  14. >>>Co do poświęcania i wyboru między pracą/rodziną a pet-project – podkreśliłem w poście, że to wcale nie musi wymagać tak dużo czasu. I ten projekt nie musi być wartościowy w sensie ogólnym bo robisz go dla siebie. Dla siebie – każdy jest wartościowy.

    Pytanie w jakim celu robimy ten pet projects. Jeśli tylko żeby mieć fun i nauczyć się czegoś nowego to jest ok. Natomiast jeśli jest to
    substytut ciekawych projektów, bo w pracy jest tylko maintenance lub klepanie nudnych feature’ów do CRUDa to w tym wypadku widzę błąd. Uważam, że w takim przypadku lepiej zainwestować w umiejętności grania w politykę biurową i dostać się do lepszego projektu. Tak jak napisałem, merytokracja w IT jest złudna.

    >>>Znajomości – oczywiście że się liczą. Ale nie zgodzę się z tym że umiejętności nic nie znaczą.

    Nie napisałem, że nic nie znaczą ale, że nie zawsze grają taką dużą rolę. Każdy zna senior deva który ma problemy z programowaniem prostych rzeczy.

    >>>Z kolei z tym że programiści mają niski status zgadzam się jak najbardziej :). Dlatego niejednokrotnie piszę o programistycznej >>>kopalni, bo tym właśnie jesteśmy w IT – robolami.

    Dlatego uważam, że brakuje w firmach podejścia tzw. ‘open allocation’ czyli programiści decydują nad czym pracują.

  15. Ja do w/w postu dodałbym jeszcze “Kreatywne” podejście w pracy. Często jest tak, że problem da się rozwiązać na więcej niż 1 sposób. Zamiast przykrywać problem kawałkiem kodu można zagłębić się w analizę ;] Żaden tutorial nie nauczy tyle co rozwiązany problem … Baaa, a jaka satysfakcja ;]

    Pozdrawiam

Newsletter: devstyle weekly!
Dołącz do 1000 programistów!
  Zero spamu. Tylko ciekawe treści.
Dzięki za zaufanie!
Do przeczytania w najbliższy piątek!
Niech DEV będzie z Tobą!