Temat: Fromewroki a ciężka praca
Andrzej K.:
A spójrzmy praktycznie, będzie Ci się chciało szukać w nim dziur? OK. Próbuj jak masz czas i ochotę, żeby potem włamać się do kilkudziesięciu serwisów. Tym bardziej, że do wyboru masz w tym samym czasie znaleźć dziurę w systemie, na którym stoi kilka (-set?) tysięcy na całym świecie.
Problem polega na tym, że ciężej znaleźć dziurę w czymś, co jest wykorzystywne codziennie przez setki tysięcy programistów, którym zależy na bezpieczeństwie i jakości swoich aplikacji, a więc dbają o to, aby wszelkie krytyczne bugi były natychmiast łatane, a co innego w przypadku rozwiązania, które jest wykorzystane przez zespół programistów. Sumarycznie mają oni dużo mniej umiejętności, wiedzy i (może przede wszystkim) czasu.
Znasz system bez dziur? Każdy ma a im większy system tym ich więcej.
I tutaj nie do końca się zgodzę, ale zarówno mój sprzeciw, jak i Twoje stwierdzenie nie będą opierały się na żadnych danych, ot, czyste przypuszczenia, które akurat popierają nasze wywody :)
Dlaczego się nie zgadzam? Z tych powodów, które wymieniłem wyżej.
To z czym pójdzie mu łatwiej. A nie jesteś w stanie powiedzieć, czy pójdzie mu prościej w przypadku czegoś własnego, czy czegoś otwartego. Tego w ogóle nie ma sensu porównywać, zbyt dużo zmiennych.
No właśnie. Pójdzie mu łatwiej z tym, co już zna, niż musi poznawać od nowa.
Z tym, że może być też tak, że to, co zna próbował już hakować na wszelkie znane sposoby i mu nie wyszło. Wtedy już wybór jest prosty :)
Piotr L.:
Oczywiście, ale chciałbym z tego miejsca przypomnieć główny temat. Pytanie padło od kogoś kto się uczy, czy warto uczyć się frameworków.
To ja też wrócę jeszcze do głównego wątku :)
Adrian G.:
poczytałem trochę o Zend Fromework i niby fajna sprawa tylko jak się w tym ogarnąć.
Pobrałem i zacząłem przeczesywać, kod napisany bardzo czytelnie ale jak połapać się w architekturze?
Nie przeczesuj kodu :) Ja z Zendem pracuję już kilka lat (największe doświadczenie mam co prawda z wersją numer 1, ale to kwestia drugorzędna) i do kodu zaglądałem tylko i wyłącznie wtedy, gdy musiałem. I zazwyczaj nie było to doświadczenie, które chciałem powtarzać :P
Po to stosujesz frameworki, żeby nie zastanawiać się jak wygląda każda linijka kodu.
Warto natomiast poznać pojęcia, które za tym stoją (np. MVC, Front Controller, autoryzacja, Acl) - dzięki temu Twoja wiedza nie będzie opierała się na konkretnej implementacji i tym łatwiejsza i swobodniejsza będzie dla Ciebie migracja do innych.
Wiem że mnóstwo programistów korzysta z fromeworków, a ja nie będę ukrywał, że w przyszłości zamierzam pracować zdalnie lub otworzyć własna działalność, a bez tego to widzę, że może być ciężko.
Jeżeli będziesz pracował nad cudzym kodem, to na początkach kariery możliwe, że przyjdzie Ci pracować z własnymi rozwiązaniami konkretnych firm (z niewiadomych mi powodów mniejsze firmy wolą coś takiego, ale zakładam, że wynika to z chęci przywiązania do siebie klienta) i nie jest to do końca złe doświadczenie. Jak nauczyś się przegrzebywać i odnajdywać w takim kodzie, to już nic Cię nie złamie :)
Im większe projekty, tym popularniejsze rozwiązania. Dlaczego? Bo są to projekty duże, a co za tym idzie - kosztowne i skomplikowane. I nikt nie ma zamiaru tracić czasu na wymyślanie od nowa np. acl, bo są dużo istotniejsze, mniej popuarne, a równie (o ile nie bardziej) skomplikowane problemy do rozwiązania.
Pytanie brzmi:
Czy są jakieś konkretne manuale ale takie od a do z?
Wszystko zależy od tego, czego chcesz się uczyć (osobiście teraz bym polecał albo Symfony 2 albo Zenda 2) i co rozumiesz przez pojęcie "manual od a do z". Jeżeli chcesz poznać podstawy, to są, jeżeli chciałbyś manual, który poprowadzi Cię za rękę przy tworzeniu skomplikowanego systemu to raczej wątpię :) Na upartego, to zawsze możesz podłączyć się do jakiegoś repozytorium na githubie i analizować commit po commicie, ale to raczej mozolny proces :P
I czy w ogóle nauka tego ma sens?
Jak najbardziej! Im więcej wiesz, tym szybciej rozwiązujesz problemy i tym łatwiej to rozwiązanie dostrzegasz.
Każdy nowo poznany framework, wzorzec, technika, język to kolejne narzędzie w Twoich rękach, a to pozwala Ci stać się dużo wydajniejszym. W końcu lepszy jest mechanik z całym warsztatem niż taki, który trzyma w ręku jeden śrubokręt :P
Czy lepiej pisać samemu wszystko porobić sobie jakieś szablony i na nich opierać swoją pracę, która często się powtarza tj np autoryzacja itd...
Jest to cholernie trudne zadanie. Jasne, jeżeli będziesz odpowiednio zdeterminowany to Ci się uda, ale boję się, że za jakiś czas może się okazać, że popatrzysz na swoje rozwiązanie, dostrzeżesz wszytkie błędy, które popełniłeś i dojdziesz do wniosku, że mogłeś sobie podarować.
Ja kiedyś "popełniłem" swój własny framework. Nie znałem jeszcze wzorców, SOLID'a, a sama znajomość abstrakcji i interfejsów opierała się na znajomości konstrukcji i ich struktury, a nie umiejętności ich wykorzystania. Efekt był taki, że coś powstało, nawet kilka serwisów + CMS na tym postawiłem, ale czy teraz uważam, że to było dobre?
Wydaje mi się, że więcej nauczyłbym się, gdybym od razu zaczął z istniejącymi frameworkami. Dlaczego? Bo patrząc na cudze rozwiązania możesz podpatrzyć dobre praktyki, pisząc natomiast coś swojego (oczywiście bez solidnej wiedzy) popełniasz błędy, których na początku nie widzisz, a to dlatego, że braki w wiedzy Ci na to nie pozwalają. Kiedy już nadrobisz braki może okazać się, że zabrnąłeś już tak daleko, że nic nie da się zrobić (niestety to jest najpopularniejszy scenariusz).
Osobiście uważam, że FW powinni pisać ludzie, którzy mają naprawdę sporo wiedzy. "Problem" jest jedak taki, że Ci ludzie już mają pracę, która z pewnością do trywialnych nie należy i nie mają czasu (a stworzenie czegoś dobrego naprawdę wymaga sporo czasu) na tworzenie czegoś od zera.