Some of posts from this blog has been moved to dywicki.pl. You will be automatically redirected to new blog if you would submit comment.
New posts are published on dywicki.pl, this blog contains old content and it is not continued.

Niektóre posty z tego bloga zostały przeniesione do dywicki.pl. Zostaniesz automatycznie przekierowany jeśli bedzięsz chciał dodać komentarz.
Nowe posty sa publikowane na dywicki.pl, ten blog zawiera stare treści i nie jest kontynuowany.

Pragmatyzm kontrolowany

Filed under Ogólne,Wiadomości by

Jakiś czas temu postanowiłem zmienić myśl przewodnią bloga. Zapewne nikt nie zauważył tego, że zniknął tekst “żubr powstaje z jęczmienia” na rzecz “Pragmatyzmu kontrolowanego”. Czym było to podyktowane? Ano tym by tą gromadę różnych not, nie zawsze łączących się ze sobą tematycznie, podeprzeć myślą, jaką jest poszerzanie horyzontów i dzielenie się zdobytymi z biegiem czasu doświadczeniami.

Krótki wstęp do pragmatyzmu

Definicja pojęcia wyciągnięta ze słownika PWN:

Postawa polegająca na realistycznej ocenie rzeczywistości i podejmowaniu jedynie takich działań, które gwarantują skuteczność

Practices of an Agile Developer: Working in the Real WorldW tej nocie skupiam się między innymi na tym jak budować swój “techniczny” światopogląd na bazie zdobytych doświadczeń. Często jest tak, że swoje opinie opieramy na tym co przeczytamy w sieci, usłyszymy od kolegi z pracy. Wynikiem tego jest sytuacja, gdzie przyjmujemy ich opinię jako swoją. Obrazowo wygląda to tak, że w chwili gdy opinio-dawca powie, że jest głodny my też jesteśmy głodni, jeśli po chwili stwierdzi, że chce jeść my reż raczej będziemy chcieć coś jeść. Przyznacie, że jest to irracjonalne. Jeśli ktoś jest syty nie znaczy, że ja również muszę być. Oczywiście trzeba przyjąć pewną granicę.

Gdyby próbować wszystkiego czego się nie poznało stracilibyśmy wiele czasu. Jak więc można wybrnąć z takiej sytuacji? W sprawie technik i technologii należy być sceptycznym i stosować wcześniej wspomniane podejście pragmatyczne, czyli bazować na doświadczeniu. Często warto jest sprawdzić i upewnić się, czy dane narzędzie rzeczywiście jest wartościowe i czy jego użycie daje wymierne zyski. Jeśli nie mamy możliwości bądź czasu pozostają autorytety, którymi opiniami można się wspierać. Warto wówczas zaznaczyć, “nie mam własnej opinii, aczkolwiek czytałem, że …”. Dajemy wówczas swojemu rozmówcy informację jaka jest opinia obiegowa nie sugerując mu wyboru naszą postawą. Zwróćcie uwagę, że traktowanie wypowiedzi, którą ktoś wygłosił osobiście traktujemy zgoła inaczej niż oznajmioną.
Pierwsza opinia:

Sądzę, że Python to język miły, który od pewnego czasu powoli, ale sukcesywnie poszerza swoje grono zwolenników. Może świadczyć o tym rosnąca popularność Django jak i stopniowa (czyżby liniowa?) migracja części programistów w tym i tych, którzy pisali w PHP.

Druga opinia:

Z tego co się orientuję obiegowa opinia głosi, że Python to język miły, zwiększający grono swoich zwolenników. Według statystyk migruje do niego coraz więcej programistów piszących również w PHP. Warto odnotować, że Django również święci triumfy. Niestety sam, nie mam wyrobionej opinii, ponieważ nigdy nie pisałem niczego większego w samym języku i frameworku.

Kluczowe jest tutaj ostatnie zdanie, gdzie podkreślamy, że nie mamy wyrobionego stanowiska. Po prostu, powtarzamy to, czego się dowiedzieliśmy, bez dodawania subiektywnych ocen. Taką postawę możemy przyjąć gdy mamy zbadaną daną technikę/technologię i zdanie, które posiadamy powstaje z praktyki:

Moim zdaniem Propel to bardzo wygodne narzędzie, które znacznie ułatwia pracę programisty. Z doświadczenia wiem, że nie tylko zwalnia go z klepania zapytań i warstwy dostępu do danych ale umożliwia tworzenie złożonych mechanizmów tj CRUD, dzięki którym tempo tworzenia aplikacji odczuwalnie wzrasta. Nie daj się zniechęcić tym, że konfiguracja jest w XML. To nie jest problem, jest nim natomiast tworzenie złożonych zapytań i mapowanie ich do obiektów. Polecam Ci Propela do małych i średnich projektów, gdzie wydajność nie jest najważniejszym z wymogów.

Pragmatyzm i ja

Przyznam, że od pewnego czasu przestałem stosować podejście pragmatyczne na rzecz krytycznego surowo oceniając różne rzeczy na bazie suchych faktów. Czasami się to sprawdza a czasami nie. Myślę, że jednym z wielu błędów, które popełniłem było skreślanie Ruby oraz Ruby on Rails. Tzn akceptowałem je jako takie, ponieważ sam język jak i framework ma swoją niszę, ale skreślałem je na podstawie swojego słabo określonego punktu zaczepienia, bazującego po prostu na “nie podoba mi się”. Swoją drogą, zauważyłem, że dawniej więcej kręciłem się po sieci w poszukiwaniu jakiś nowinek, chociażby dla PHP. Tak też trafiłem na PDO, Creole jak i Propela, Mojavi. O ile pierwsze z wymienionych narzędzi nie jest przeze mnie używane o tyle pozostałe były do tej pory podstawą aplikacji webowych, które tworzyłem w PHP.

Myślę, że w przypadku rozwiązań budowanych w oparciu o PHP krytycyzm jest i był po prostu relatywistyczny, chociaż, jak mi się wydaje moje punkty zaczepienia (jakość kodu w połączeniu z dokumentacją wykładnikiem jakości projektu) są dość mocne. Aluzja do noty “Pomyłki i ja.” jest jak najbardziej wskazana. Niestety.
Pragmatyzm to nie jest zamykanie się tyko na sprawdzone rozwiązania ale i otwartość na rzecz nowości i nieznanego.

Lekarstwo na wszystkie problemy?

Czy pragmatyzm jest lekarstwem na spotykane przez nas dotychczas problemy?
Bez wątpienia pragmatyzm jest postawą pewną, bazującą na rzeczy niezbywalnej, jaką jest doświadczenie. Mając doświadczenie masz jasną i klarowną wizję tego jak można coś zrobić. Bazując na tym, co robiłeś wcześniej jesteś w stanie określić miejsca, w których pojawiały się problemy bądź duplikował się kod. Pamiętajcie, że zarówno programista i jego kod powinien ewoluować. Być może nie doczekacie się zysków od razu, ale traktujcie to jako waszą inwestycję, która z biegiem czasu nabiera coraz większej wartości, która przełoży się wcześniej czy później na Wasze zarobki.

Życzę wam powodzenia w poznawaniu nowości jak i poszerzaniu swojej wiedzy z zakresu już poznanych technologii! :)
Ja zacząłem od Django i Grails. Być może za jakiś czas pojawią się jakieś informacje o tym co w tych frameworkach piszczy, ponieważ najprawdopodobniej nowy code house będzie oparty o jedno z tych rozwiązań.

Ps. Jakiś czas temu trafiłem na ciekawy blog, którego autorem jest Ross Lawley (notabene używający między innymi Agavi) traktującą o tym jak wyprzedzać koszty tworzenia aplikacji, czyli płacić za nie nim się pojawią.

3 responses so far

3 Responses to “Pragmatyzm kontrolowany”

  1. Ross says:

    I had a friend translate for me – so if my comment is off topic I apologise!

    Any decent developer should be on the path of constant learning. Experience is great, but its limited – in that it takes time to gain. Learning from others is crucial in any programmers development.

    That means taking an interest in new technologies and not being afraid to test them or at least understand the problems they are trying to solve. Closing your mind to new technologies / methodologies will only limit your development.

    As developers we seem to love risk, so the only word of caution I have is, you should always objectively analyse the risk when adopting new technology in mission critical areas.

  2. x^k says:

    Splatch, postarałeś się… Notka naprawdę dobra i godna polecenia, trzeba tylko ją przeczytać “od deski do deski” :)

    Przyznam się szczerze, że nigdy nie przeczytałem wcześniej żadnego podobnego artykułu, ale przykład z opiniami jest mi dziwnie znajomy.

    Wspaniałe podejście do sprawy , jednak czasami bywa tak, że technologie zostają narzucane w mniej przyjemny sposób (odgórnie), a to co jest polecane żadko ma odzwierciedlenie w tym jak to działa, bądź działać powinno. Dziwne rzeczy zaczynają się dziać w polskim internecie, o czym ADI wspomniał już na blogu i ja zamierzam poruszyć niebawem.

    Co do ponoszenia pewnego ryzyka Ross (mam nadzieje, że i tym razem ktoś przetłumaczy), to nie tylko cecha deweloperów ale bardziej cecha charakteru, czasami nabyta, czasami poprostu wrodzona. Nie mniej jednak bardzo ważna. Deweloperzy których nie stać na rozwój, lub bojących się otworzyć oczy na inne/nowe technologie stają się mniej atrakcyjny dla potencjalnych pracodawców, a Ci którzy robią to bez chwili zastanowienia stają się zagrożeniem dla nas wszystkich :)

  3. Whisller says:

    Bardzo fajna notka…i tyle powiem no :)

Leave a Reply