środa, 30 września 2009

Re: Który framework wybrać?

przeczytalem ostatnio wypowiedz MajareQ na temat frameworkow i juz sam wstep zrobil na mnie piorunujace wrazenie:

"Jeśli się pytasz: “Który framework powinienem wybrać?” to popełniasz błąd logiczny. Zakładasz, że w ogóle potrzebujesz jakikolwiek framework."

moim zdaniem nie. bledem logicznym jest zakladanie, ze piszac w php nie potrzebuje frameworka :)


1) start
na dzien dzisiejszy osoba szukajaca frameworka, ktora nie zadala sobie juz wczesniej pytan zadanych przez MajareQ, to na 99% jest osoba, ktora nigdy nie pisala na prawde duzej strony i na 99% w najblizszym czasie jej bedzie robila. wiec nie szuka frameworka do pisania klonu Twittera, czyli bardzo, bardzo wysoka wydajnosc nie jest dla mniej priorytetem. i tu dochodzimy do punktu drugiego

2) pomijanie calkowicie roli w ktorej frameworki sprawdzaja sie najlepiej
rola polegajaca na szybszym, latwiejszym i przyjemniejszym pisaniu kolejnych aplikacji. frameworki pozwalaja zaoszczedzic duzo czasu, odwalaja za nas brudna robote zwiazana z autoryzacja, formularzami, walidacji itd. jesli 99% (ok, niech bedzie 90%) wykorzystania frameworkow to nie sa strony potrzebujace porad z High Scalability, to dlaczego mam nie uzywac frameworka, aby lepiej mi sie pracowalo? dlaczego mam pisac wlasne rozwiazania od podstaw i samemu dokonywac zmian na miare wlasnej wiedzy, skoro moge siegnac po cos co jest rozwijane przez osoby co najmniej, a zazwyczaj lepiej, orientujace sie w php? dlaczego nie mam skorzystac z faktu, iz bledy same sie poprawia, nowe funkcje same sie dodadza - wszystko niemal 'magicznie', calkowicie bez mojej ingerencji, po prostu 'pop' i mam kolejna wersje frameworka do sciagniecia. i tak dochodzimy do punktu trzeciego

3) praca i zabawa
czym innym jest praca, zarabianie z pisania w php, a czym innym bawienie sie w php, pisanie glownie dla przyjemnosci, bez terminow (ew. z odleglymi), rodziny itd. takie pisanie, kiedy po kilku godzinach siedzenia czlowiek ma duza satysfakcje, ze cos zrobil minimalnie lepiej niz bylo wczesniej, czesto po prostu cieszac sie faktem, ze cos sie zrobilo, dziala i jest tak samo funkcjonalne jak inne gotowe rozwiazania dostepne na sieci - ale to jest moje, moje i tylko ja to zrobilem, hoooray :) niestety, czesto pozniej zaczyna sie praca plus rodzina i albo skorzystam z gotowego, sprawdzonego, stabilnego, dzialajacego poprawnie rozwiazania i bede mial gotowa rzecz w 30 minut, albo poswiece najblizsze 4-5h na to aby zrobic to samemu, majac w perspektywie fakt, iz strona nad, ktora pracuje na 90% nie trafi na liste 'optimized by High Scalability'. w 90% przypadkow nie potrzebuje napisac czegos co bedzie musialo miec wydajnosc Twittera, wiec nie bedzie dla mnie roznicy w jakim frameworku to napisze (a roznice w wydajnosci moga byc miedzy nimi duze). i tu dochodzimy do punktu czwartego

4) framework jaki jest kazdy widzi
na pewno przed wybraniem frameworka trzeba wiedziec czego potrzebujemy, to nie ulega watpliwosci. problem w tym, ze dla 90% wykorzystania frameworkow, wszystkie liczace sie spelniaja te wymagania. maja wsparcie, sa rozwijane, maja obsluge wielu baz, maja mechanizmy wspierajace rozne silniki do cache`owania itd. dlatego wlasciwym kryterium jest to, w ktorym frameworku najlepiej mi sie pracuje. ktory dla mnie i tylko dla mnie jest najfajniejszy. dodatkowo jest jeszcze kolejne kryterium o ktorym warto pomyslec zanim zdecydujemy sie na jakies bardzo niszowe rozwiazanie. i tu dochodzimy do punktu piatego.

5) w kupie razniej
wlasne rozwiazania sa fajnie, ale jak jestem klientem i mam swoj sklep online napisany na czyims wlasnym silniku, to mam przesrane. tak po prostu. jak mi webmaster odejdzie, to zanim nowy sie polapie, to troche czasu minie - chyba kazdy kiedys robil cos w cudzym kodzie i wie jaka to jest 'przyjemnosc'. a jak wyglada sytuacja jesli mam framework? z nowym webmasterem nie ma problemu, po prostu szukam kogos kto zna dany framewok i sporo problemow z glowy. podobnie jesli mam firme z 20 ITmenami na wlasnym rozwiazaniu. przyjdzie nowa osoba, ile czasu bedzie musiala sie uczyc ? ile czasu bedzie sie uczyl nowy pracownik, ktory zna dany framework? a czas to pieniadz. analogicznie jesli szukam pracy, to znajde ja szybciej znajac gotowe rozwiazania czesto stosowane w firmach.

6) uwagi koncowe
przewaga frameworkow nad domowymi rozwiazaniami jest zazwyczaj bezpieczenstwo, optymalizacja, 'magiczne' naprawianie bledow i dodawanie nowych funkcjonalnosci, trzymanie sie ogolnie przyjetych standardow, mniejsze lub wieksze wymuszanie pisania zgodnie z MVC. jak dla mnie to wystarczajaca lista, aby zarzucic wlasne rozwiazanie i zajac sie czyms gotowym, czyms co w miare szybko dostosuje do wlasnych potrzeb i bede czul sie 'jak u siebie'. mozna samemu napisac framework, tyko nadal pozostaje jeden minus - samemu trzeba wprowadzac wszelkie poprawki, a majac gotowe rozwiazanie czas na to przeznaczony moge poswiecic na poza komputerowe hobby. nie sama praca czlowiek zyje.

konkluzja.
w 95% przypadkow korzystania z frameworkow z niczego nie trzeba rezygnowac czy chodzic na kompromisy. frameworki sprawiaja, ze praca jest szybsza i bardziej efektywna. sprawiaja, ze mniej czasu tracimy na wdrazanie sie w juz istniejace projekty, o ile sa oparte o znany nam framework. funkcjonalnosc frameworkow jest podobna, ale bardzo sie roznia miedzy soba jesli chodzi o detale - dlatego tak wazny jest wybor takiego, ktory nam bedzie odpowiadal i w nim bedziemy najbardziej wydajni. kazdy framework ma swoje plusy i minusy, dobrze jest tez znac podstawy kilku, aby miec realne pojecie o tym czego tak na prawde potrzebujemy. nawet jesli framework X jest ok, to nie znaczy, ze jak poznamy framework Y, nie zorientujemy sie nagle, ze filozofia mu przyswiecajaca jest dla nas bardziej naturalna i mamy dokladnie te same mozliwosci, ale znacznie lepiej dostosowane do naszych potrzeb. dlatego programujac w php nalezy znac jakis framework, a w zwiazku z tym jak najbardziej nalezy pytac o to jaki framework wybrac i wybierac go z glowa.

oczywiscie nie nalezy zakladac, ze z marszu napisze w symfony klon Twittera, bo to juz jest problem wydajnosci, a ona znacznie wykracza poza frameworki i jest tematem na osobna dyskusje.

na koniec odsylam do moich wczesniejszych wpisow w tym temacie:
- jaki framework wybrac - zanim zapytasz...
- dlaczego KohanaPHP

6 komentarze:

  1. Piszesz wydajnosc Twittera, to pewnie nie zdajesz sobie sprawy, ze frontend tejze aplikacji napisany jest w.. Ruby on Rails. A jesli wyjrzales nieco poza PHP to zapewne wiesz, ze RoR jest wygodny, ale wydajnoscia nie grzeszy..

    Wracajac do tresci posta. Notki MajereQ, na ktora odpowiadasz w ogole nie komentuje, bo jest napisana przez kogos, kto o temacie ma conajwyzej slabe pojecie. Twoja wypowiedz, konkluzja - zgadzam sie calkowicie. Chcesz pracowac wydajnie, to znajdz framework i korzystaj ze wszystkich jego mozliwosci.

    OdpowiedzUsuń na zawsze
  2. podpisuję się pod tym obiema parami kończyn :)
    swoją drogą majereq jak zwykle majaczy

    OdpowiedzUsuń na zawsze
  3. Właściwie taka sama konkluzja płynie z mojego wpisu. Nie rozumiem, dlaczego uważasz, że różnica nas jakaś dzieli ;p Rozwinąłeś temat i tyle. Ale nie martw się, niedługo odpowiem, na tego dissa ;)

    OdpowiedzUsuń na zawsze
  4. tak, ale konkluzja u Ciebie jest w zasadzie niczym nie poparta - po prostu piszesz, ze frameworki nie sa super, ze wcale nie sa potrzebne i nagle z nieba spada stwierdzenie "Ale tak nie jest" :) nie wiadomo skad, dlaczego nagle taka zmiana frontu - z racji tego, ze wiekszosc wypowiedzi byla oparta o przytoczone na wstepnie zdanie, skupilem sie na tym i rozwinalem temat, aby nie bylo watpliwosci, ze frameworki warto (trzeba?) znac.

    OdpowiedzUsuń na zawsze
  5. Poszedłem tylko inną skrótem myślowym.
    Nie pisałem, że nie są super, pisałem, że nie zawsze jest konieczność używania ich. Trzeba mierzyć środki na zamiary. Dlatego niezbędne jest zadanie sobie serii pytań, nie tylko tych, które zadałem w wpisie.
    Jak najbardziej, jeśli podchodzi się do programowania w PHP i zarabiania na tym pieniędzy, to niezbędne jest poznanie frameworków. Musisz jednak zrozumieć, że przecięty programista ma różne sytuacje i nie zawsze najlepszym wyjściem jest używania kombajnu do koszenia trawnika.
    Osobiście jestem wiernym użytkownikiem Kohany (lecz nie od wersji 3.0), jednak Symfony coraz częściej się do mnie uśmiecha i po zrealizowaniu kilku(nastu) projektów z wykorzystaniem właśnie tego frameworka, zaczynam się przerzucać. Lecz trapi mnie myśl, że bardziej przyszłościowa będzie inwestycja czasowa w Zend i inwestycja finansowa w egzamin na certyfikowanego Zend Engineera. Powiedziawszy - G.K.

    OdpowiedzUsuń na zawsze
  6. Giver w swoim wpisie poruszyl jedna istotna kwestie, ktora pominalem zarowno ja, jak i chyba MajareQ - nauke. prawda jest taka, ze frameworki sa dla osob, ktore umieja juz programowac i one na nich najwiecej skorzystaja. kazdy programista nie korzystajacy z frameworkow ma swoje wlasne klasy i rozwiazania, ktore mniej lub bardziej framework przypominaja i o takim programiscie pisze, ze lepiej jak by sie jednak za gotowe rozwiazanie zabral.
    nauke trzeba zaczac od podstaw, skladnia, algorytmy, wzorce, oop itd. pomysl aby uczyc sie php majac mierne podstawy jezyka i siegajac po framework jest li tylko smieszny. to, ze korzystamy z frameworka w zaden sposob nie przeklada sie ja jakosc kodu czy umiejestnosci programisty.

    OdpowiedzUsuń na zawsze