fbpx
devstyle.pl - Blog dla każdego programisty
devstyle.pl - Blog dla każdego programisty
6 minut

O pet projects


09.03.2015

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?

Nie przegap kolejnych postów!

Dołącz do ponad 9000 programistów w devstyle newsletter!

Tym samym wyrażasz zgodę na otrzymanie informacji marketingowych z devstyle.pl (doh...). Powered by ConvertKit
Notify of
trackback

O pet projects | Maciej Aniserowicz o programowaniu…

Dziękujemy za dodanie artykułu – Trackback z dotnetomaniak.pl…

Łukasz
Łukasz

Podzielam powyższy wpis. Choć mało tutaj jest (znacznie więcej na dysku) to dzielę się: https://github.com/duszekmestre/ :)

Radek
Radek

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 ;)

Mateusz
Mateusz

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. ;)

Adam
Adam

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.

Jacek

Podpisuję się obiema ręcyma pod tym wpisem. Już prawię od pół roku dłubię sobie przy takim projekcie. Rezultat? Jest publiczny. Jeżeli uda się gdzieś wdrożyć byłoby super :)

https://github.com/vircung/yamem/
http://yamem.org/

eugeniusz
eugeniusz

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 :)

Szymon Pobiega

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.

Adam
Adam

Maciek – jaki lib do obsługi pdf polecasz?

Przemek Walkowski

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/

Wojtek

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.

Marcin

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 :)

Rafał B

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…)

leto
leto

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… Read more »

leto
leto

>>>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… Read more »

Karol
Karol

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

Michał

Jeśli ktoś nie ma pomysłów na projekty to polecam robienie zadań np. z Euler project https://projecteuler.net/. Jest ich ponad 500, od prostych do bardzo skomplikowanych.

Moja książka

Facebook

Zobacz również