Zastanawiałem się od dłuższego czasu (a przez ostatni tydzień nawet aktywnie) co się stało, że... no właśnie, nic się nie stało. Kiedy zaglądam po długiej przerwie do swojego czytnika RSS w poszukiwaniu ciekawych polskich treści z Wielkiej Trójcy (HTML, CSS, JS) nie znajduję najczęściej nic. W Zamierzchłych Czasach, kiedy to 5 lat temu byłem początkującym developerem, było przecież (chyba) inaczej. Takie przynajmniej odnoszę wrażenie, kiedy sięgam pamięcią wstecz. Jeśli nawet jednak nie było, to czemu dzisiaj jest tak jak jest?
Winą za zastój w temacie obarczyłem brak społeczności zintegrowanej z jakimś miejscem w internecie. Tak mi się przynajmniej wydawało. Lubię należeć do społeczności i mieć podsunięte pod nos ciekawe tematy oraz móc się lansować samemu, więc postanowiłem poszukać odpowiedniego miejsca.
Zacząłem szukać takiego, na którym mógłbym się trochę powymądrzać na ciekawe tematy, bo wymądrzać się lubię. Moja wiedza dzisiaj jest też o wiele bogatsza niż kilka lat temu. W Zamierzchłych Czasach korzystałem w tym celu z Forum Mozilli gdzie dział standardów i technologii webowych kręcił się bardzo prężnie. Dzisiaj – w sumie pustki. Google też mi nie pomogło – trafiłem na forumweb, forum Webinside, forum Webhelp i ee... W sumie nigdzie więcej. Blipowicze też mi niczego więcej nie podsunęli. Po zagłębieniu się w treść tych forów stwierdzam, że średnio pojawiają się na nich 2 posty w interesujących mnie kategoriach dziennie bądź więcej, ale typu:
Chciałbym zrobić na stronie (wstaw dowolną frazę dla której Google pokazuje 100 wyników z rozwiązaniami), ale nie wiem jak to zrobić. Pomurzcie.
Jednym słowem – kaplica.
No to może jakieś portale społecznościowe czy newsowe? Z wyjątkiem nowo otwartego JSNews.pl, któremu kibicuję, nie znalazłem żadnych w swoim czytniku RSS, więc byłem znów zmuszony skorzystać z Google'a. I... Nawet nie chce mi się linkować do miejsc, które odwiedziłem. Jedynym portalem na jaki wrócę jest Webhelp gdzie znalazłem sporo ciekawej treści i aktywny blog newsowy. Nie potrafię jednak powiedzieć czy wokół tego miejsca "coś się kręci". Na pewno jednak jakościowo odróżnia się ono od wszystkiego co udało mi się znaleźć.
Osobną grupą są agregatory. Blogbox odpada, bo w kategorii technologia królują tematy zbyt ogólne. Tak samo na 10przykazań, o którym raz, że nie słyszałem nic od dwóch lat, dwa, że jest zbyt ogólny. Kiedyś coś ciekawego można było dorwać też na Wykopie jednak w tej chwili jest to już niemożliwe. Poza tym tam chyba nigdy nie było społeczności. Znam jeszcze webdevowy klon Wykopu, którym jest Develway, niestety po niezłym starcie portal umiera. Wciąż mu jednak kibicuję i zamierzam w przyszłości wrzucać tam nie tylko swoje wpisy, ale też wszystkie ciekawe, które znajdę. Was też do tego zachęcam.
Swoją drogą zastanawia mnie jedno. Dlaczego tak mało osób promuje swoje własne wpisy? Bo choć społeczności żadnej znaleźć nie mogę, to zapewne dużo ciekawych treści jest tworzonych. Tylko jak do Was, moi Drodzy Koledzy, trafić skoro nie da się Was znaleźć? Wielu pewnie uważa, że to inni powinni próbować nas promować, bo samemu jest głupio. Ja wcale tak nie uważam. Jeśli tworzę coś co uważam za ciekawe, to staram się by dotarło to do jak największego grona odbiorców. Jeśli się komuś nie spodoba link, który wrzuciłem na Blipa, to po prostu go nie kliknie bądź ucieknie ze strony. Jeśli się spodoba, to tym samym dzięki mojemu działaniu osoba ta zaoszczędziła czas, a ja może zyskam kolejnego odbiorcę. Tak więc promujcie swoje własne wpisy.
Ciekawym miejscem wciąż jest Techblog, czyli agregator technicznych wpisów z Joggera. Niestety, wraz z odejściem wielu osób z Joggera Techblog automatycznie też przymiera, a w związku z tym, że system blogowy jakim jest ten pierwszy raczej nie ma szans konkurować z WordPressami i innymi tej parze nie wróżę świetlanej przyszłości. W tej chwili jednak Techblog wciąż potrafi wygenerować kilkaset odwiedzin jednego wpisu, co jest wynikiem, jak na moje warunki, bardzo dobrym.
Idąc dalej należy wziąć pod lupę mikroblogi. Sam korzystam aktywnie z Blipa i jest to jedno z ciekawszych miejsc w naszym internecie. Dodatkowo zorientowanie serwisu na obserwowanie tagów oraz ograniczona ilość użytkowników powoduje, że łatwo tam z jednej strony trafić do odpowiednich odbiorców, z drugiej być tym odbiorcą. Mam też konto na Flakerze jednak nie korzystam z niego, bo bardziej przypada mi do gustu prostota Blipa. Nie potrafię więc powiedzieć co się na nim dzieje.
Oczywiście jest jeszcze Twitter, jednak to już jest społeczność międzynarodowa. Nie mogę się przekonać do jego aktywnego użytkowania, bo czuję się jakbym pisał w kosmos. Ludzi jest za dużo, a na dodatek ciężko trafić do nich tematycznie. No i ciężko trafić jedynie do polaków.
Na koniec zostały same blogi, bo wokół niektórych również potrafi rozkręcić się niezła społeczność. Niestety w tej chwili nasi lokalni guru w większości poznikali. I nie chodzi nawet o to, że uciekli z blogami za granicę, tylko po prostu przestali pisać. Jednocześnie nowym ciężko się wypromować, bo i gdzie mieliby to zrobić? Nie istnieje w końcu żadna większa społeczność do której można dotrzeć.
Swoją drogą zastanawiam się, czy mała ilość polskich blogów prowadzonych przez prawdziwych ekspertów nie wynika z tego, że frontend developer w Polsce to w znacznej mierze stanowisko dla tyracza i osoby, które naprawdę coś potrafią albo wyjechały za granicę (i piszą po angielsku), albo nie mają warunków finansowych i zawodowych, do poświęcania swojego czasu na pisanie. Nie znam zachodnich realiów (polskie w sumie też słabo) i jest to bardziej pytanie do Was niż stwierdzenie faktu.
Można się też zastanowić, czy w Polsce wciąż jest dostatecznie liczna grupa odbiorców, w szczególności bardziej zaawansowanych, dla których opłaca się pisać. Może po prostu większość potencjalnych czytelników przerzuciło się na serwisy anglojęzyczne i nie zagląda już na nasze podwórko? Nie wiem. Sam jednak, mimo że czytanie po angielsku nie sprawia mi problemów, wciąż interesuję się równie mocno tym co dzieje się w kraju. Nie sądzę też bym był odosobniony w swoich preferencjach.
Kiedyś było inaczej... lepiej
. Kiedy słyszę takie stwierdzenie od osoby ze starszego pokolenia zawsze pojawia mi się na ustach uśmiech. Teraz jednak sam jestem zmuszony tak napisać. Może to tylko moje złudzenie bądź w dzisiejszych czasach już tak musi być. Jednak nie tylko ja uważam, że coś tu jest nie tak. Niedawno Damian Wielgosik napisał o braniu sprawy w swoje ręce i co prawda nie robi on porównań do Zamierzchłych Czasów, ale również zauważa, że jest źle.
Jeśli już jesteśmy przy Damianie, to bardzo mu kibicuję. Jest, jak na nasze standardy, niezwykle aktywny (blog, newsy, kolejna konferencja, działalność szkoleniowa) i jest na pewno ekspertem w tym co robi.
Może ktoś spytać dlaczego sam nie spróbuję stworzyć jakiejś społeczności. W końcu nie ma co gadać, trzeba brać się do roboty. Owszem, racja. Nie widzę jednak sensu robić czegoś co już zostało zrobione. Sam więc w żadnym wypadku nie zamierzam pisać żadnego portalu, czy innego serwisu. Uważam, że odpowiednie już istnieją – potrzebują tylko naszego zainteresowania. I dlatego w najbliższym czasie zamierzam skupić się na Develway'u, na którego zacznę wrzucać ciekawszy content. Przyjrzę się też jak działa Webhelp i w jaki sposób mogę mu pomóc.
Ostatnia kwestia to czas i warunki. Sam studiuję, pracuję i... lubię pisać. Niestety to ostatnie robię zbyt rzadko, bo dwie pierwsze czynności i moje hobby zabierają mi za dużo czasu. Zauważyłem jednak ostatnio, że praca jaką obecnie wykonuję już nie rozwija mnie tak jak jeszcze rok temu (bo wciąż przerabiam te same tematy). Na dodatek mój pracodawca nie widzi sensu w prowadzeniu przez jego pracowników własnych projektów. Zredukowałem więc trochę ilość etatu na jakim pracuję i mam nadzieję mieć więcej czasu na pisanie. Czas pokaże.
Artykuł został przeniesiony na mój nowy blog – code42.pl.
Artykuł został przeniesiony na mój nowy blog – code42.pl.
Próbując zdobyć papierek inżyniera i tę odrobinę sensownej wiedzy, którą można znaleźć na studiach z informatyki (Politechnika Wrocławska) dotarłem do semestru piątego i kursu Projektowanie Oprogramowania. Jest to kurs z tych ciekawszych, bo w tym semestrze mam jeszcze np. Technologie Przetwarzania Mediów Cyfrowych (montowaliśmy reklamę radiową oraz słuchowisko, później robiliśmy retusz zdjęcia, a teraz fotomontaż - tak WTF?!), czy Informatyczne Systemy Sterowania (kurs dość zaawansowany, a więc zupełne przeciwieństwo TPMC, z tym, że wiedza przyda się może kilku(nastu) osobom).
Dwa miesiące pisania sztucznej specyfikacji i rysowania diagramików UML utwierdziło mnie jeszcze bardziej w przekonaniu, że nigdy w przyszłości nie będę chciał tego robić. Nasza specyfikacja na tym etapie obejmuje jedynie malutki wycinek systemu, a poświęciliśmy na jej przygotowanie kilka dni roboczych. I nie – nie projektujemy systemu bankowego, a uproszczoną księgarnię internetową. I tak naprawdę skupiamy się tylko na procesie składania zamówienia.
W tej chwili dotarliśmy do etapu kiedy już trzeba ogarnąć architekturę aplikacji. Co prawda większość studentów zaprojektuje zapewne jakiś tam sobie diagram komponentów, sekwencji i co tam jeszcze obejmuje ten etap kursu, kompletnie nie interesując się jak to będzie współgrało z frameworkiem/technologią którą później zastosują (narzucona z góry Java). Ja jednak tak nie potrafię. Zacząłem więc szukać Java'owego frameworka do aplikacji webowych, który później zastosujemy. I w tym momencie szczęka mi opadła.
Na początku semestru, kiedy dowiedziałem się, że będziemy projektować, a później w małej części kodować, aplikację webową poszedłem do prowadzącego spytać się czy jest z góry narzucony język. Dowiedziałem, się że prowadzący proponuje Javę, ale że nie – jeśli ktoś z nas chce coś innego, to może spróbować. Choć prowadzący nie polecał takich prób (szczególnie jak usłyszał o PHP :). Wtedy odpowiedziałem, że w trakcie semestru się zastanowię, bo dobrze znam symfony i byłoby mi łatwiej, a nie słyszałem o żadnym sensownym i otwartym rozwiązaniu w Javie. Prowadzący odpowiedział, że jest sporo dobrych i otwartych frameworków. Zrobiło mi się wtedy głupio, bo moja wypowiedź nie była poparta żadnymi głębszymi doświadczeniami. Po prostu – taki stereotyp Javy.
W trakcie semestru uświadomiłem sobie, że ten rodzaj betonowej specyfikacji nijak nie pasuje do symfony, ani Railsów, czy Django, które w większym/mniejszym stopniu znam. Że jestem zbyt słaby w UMLu, aby przenieść magię tego frameworka, do tych wszystkich diagramów, które musimy stworzyć. Postanowiłem więc się nie wyłamywać z tłumu i jak wszyscy pozostać przy Javie.
Wczoraj zacząłem research w poszukiwaniu odpowiedniego frameworka. Przejrzałem wiele stron na wiki i nieliczne porównania. Stwierdziłem, że najlepiej prezentuje się Spring 3. Został nieźle oceniony w porównaniu, a do tego w Google'ach potrafiłem znaleźć coś co przypominało stronę nowoczesnego projektu, a nie przedpotopowej, zapomnianej kobyły.
Przyzwyczajony jestem do świetnej dokumentacji typu "Get started" (sf, railsy, django), którą można zlokalizować na stronie domowej projektu w minutę, a która trzyma mnie za rączkę, aż do momentu kiedy jestem w stanie korzystać ze słabej (w przypadku symfony – bardzo słabej) dokumentacji API i tutorialów związanych z bardziej zaawansowanymi rozwiązaniami.
Tego samego szukałem na stronie Springa. Po 5 minutach wiedziałem już, że tak prosto nie będzie. Autorzy frameworka stworzyli 800 stronicowy podręcznik, w którym jest pewnie opisane wszystko, o czym 100 jego twórców myślało przez ostatnie dwa lata. Stworzyli też dziesiątki stron, w których chwalą się jakie to fajne rozwiązania wprowadzili do swojego dziecka. Nie znalazłem na stronie domowej projektu jednak nic dotyczącego Springa 3 (ta wersja ma już ponad rok) co pomogłoby mi go uruchomić.
Postanowiłem jednak się nie poddawać i rozpocząłem przeszukiwanie nie tylko strony domowej, ale całego internetu. W ciągu dwóch godzin trafiłem w kilka miejsc, jednak... sami popatrzcie – tu, tu, tu, tu (nawet nieźle), tu, czy tu. Jednym słowem wielki śmietnik. Postanowiłem spróbować z innym frameworkiem.
Kolejny, któremu chciałem się przyjrzeć, to JavaServer Faces. Tutaj było jeszcze gorzej. W Google'ach nie potrafiłem znaleźć nawet czegoś co można by było nazwać "jednolitą stroną projektu". Nie wiem jaka jest geneza (i już mnie to nie interesuje) tego frameworka, ale moim zdaniem to wręcz niepoważne. Polecam obejrzeć przykładowe strony, które są w pierwszej 10tce w Google'ach.
Po drodze był też JBoss. Strona na którą trafiłem wyglądała jak strona korporacji, więc po 5 minutach dałem sobie spokój. Żal coś pisać w tym temacie.
Pod lupę wziąłem też Strutsa. Najpierw się załamałem, bo strona projektu przypomina typową Apache'ową. Trzeba jednak być twardym. Documantation -> Get started -> Tutorials -> Getting Started i jest! Coś znalazłem. Nie jest to co prawda poziom znanych mi frameworków, ale daje radę. Jednak ścieżka jaką musiałem przejść żeby trafić do interesującej mnie strony bawi mnie dalej :).
Na koniec wróciłem zrezygnowany jeszcze raz do Springa i znalazłem cykl artykułów dla początkujących oraz Spring Roo. I choć na początku Spring mnie załamał, to w tej chwili wraz ze Strutsem i jedną sensowną książką do JSF jest moim ostatnim punktem zaczepienia w tym temacie.
Wspomniałem na początku, że zrobiło mi się głupio kiedy, nie mając podstaw, powiedziałem, że nie znam żadnego sensownego javowego frameworka. Zasiadając do poszukiwań szczerze wierzyłem w to, że skoro są miłośnicy Javy, wśród których są przecież świetni programiści, to musi istnieć jakaś sensowny projekt związany z sensownym frameworkiem.
Teraz już wiem – ze spokojem mogę mówić, że nie znam sensownego projektu. Nie mogę za to nic powiedzieć o samych frameworkach, bo aby je ocenić należy ich użyć. Możliwe, że każdy z frameworków, któremu się przyglądałem jest świetny. Ich autorzy zapomnieli jednak, że nie na kodzie i technicznym manualu Świat się kończy.
Zawsze drażnili mnie (a może bawili) programiści twierdzący, że taki stan projektów im odpowiada. To moja wina, że nie potrafię znaleźć interesujących mnie informacji. Moja wina, że nie zamierzam przeczytać 400 stron w książce aby choć w najprostszym zakresie potrafić użyć narzędzia. Moja wina, że za szybko się zniechęcam – generalnie jestem słabym programistą i nie umiem szukać oraz czytać ze zrozumieniem.
Dlatego tak bardzo zainteresowała mnie idea UCD – projektowania zorientowanego na użytkownika. Choć swoją popularność zdobyła głównie w związku z projektowaniem interfejsów, bądź ogólniej – interakcji człowieka z komputerem, to lubię ją aplikować do każdej sytuacji kiedy istnieje jakiś produkt i jego odbiorcy. Do nikomu niepotrzebnych usług, które według ich twórców są rewolucją, przedmiotów codziennego użytku, które przyprawiają nas o ataki szału, czy... no właśnie – nie przychodzi mi żaden produkt, przy opracowywaniu którego programiści nie mieliby swojego destruktywnego udziału.
Programiści i innego rodzaju osobniki, które pojęły sposób działania komputera (sieciowcy, administratorzy) to najbardziej zakute łby na naszej planecie. Wyłączam tutaj polityków, których ciężko ocenić, bo nigdy nie wiadomo kiedy kłamią. To natura informatyki, ze wszystkich dziedzin, najdalej odbiegła od natury człowieka. Dlatego osoby trudniące się pojmowaniem tej nauki są najbardziej aspołeczne. Nie mam tu na myśli sposobu ubierania się (bądź nie), zachowywania, czy poruszanych tematów rozmów. Mam na myśli sposób myślenia i wnioskowania.
Wracając do Javy od której to zacząłem. Jest to najbardziej odczłowieczony język jaki dany mi było poznać. Jego społeczność nie wywołuje we mnie żadnych uczuć. Nawet nie wiem czy istnieje. Nie znam żadnego programisty Javy, który by ten język lubił. Odnoszę wrażenie, że w ogóle wszyscy z niego korzystający zamknęli się w swoich bankowych, księgowych i ubezpieczeniowych gettach. Zaraz, zaraz. Przecież to właśnie te najbardziej nieprzyjazne człowiekowi systemy...
Oczywiście Java wpłynęła też na frameworki, które w niej powstały. Tak jak pisałem, znalazłem wiele artykułów napisanych przez autorów Springa ukazujących jakie wspaniałe wzorce projektowe zastosowali, jakimi dobrymi są programistami, jaki wspaniały techniczny podręcznik napisali. Zapomnieli jednak co jest wyznacznikiem jakości ich pracy.
Jest takie powiedzenie w piłce nożnej, że za podanie odpowiada podający, a nie jego odbiorca. Tak samo jest w w przypadku dokumentacji frameworków. To nie ja jestem głupi jeśli nie potrafię znaleźć interesujących mnie informacji i nie rozumiem tego co napisaliście. To Wasza wina. Ja oczywiście mogę szybciej pobiec do piłki i może jakimś cudem zdążę, ale tak naprawdę to wyście skopali swoją robotę tak beznadziejnie podając.
Dzisiejsza walka jeszcze głębiej utwierdziła mnie w przekonaniu, że Java jest smutna, zakuta i nieprzyjazna użytkownikowi końcowemu. Będę się dalej trzymał jak najbliżej frontendowych technologii webowych, aby mieć jak najbliżej do użytkownika końcowego. Dzięki temu mam nadzieję, że nigdy nie zapomnę dla kogo tak naprawdę co jest wyznacznikiem jakości mojej pracy. Zadowolenie użytkownika końcowego.