Thursday, March 25, 2010

Dlaczego liczy się jakość implementacji?

Programowałem już w kilku frameworkach. Jeszcze kilka przede mną.Czy zgodzicie się, że wszystkie frameworki są takie same? Nie - wszak różnią się między sobą... To inaczej. Czy zgodzicie się, że robią to samo? Inaczej, że próbują osiągnąć ten sam cel? Moim zdaniem każdy framework (wszak nazywa się frameworkiem) ma za zadanie:
  • stworzyć środowisko pracy charakterystyczne dla prac webdeveloperskich
  • zapewnić bezpieczeństwo aplikacji charakterystyczne dla webserwisów
  • ułatwić utrzymywanie projektu poprzez separację - na przykład z użyciem wzorców projektowych
Każdy framework realizuje te cele na swój własny sposób. Jest jakaś warstwa obsługi bazy danych, tworzony jest jakiś wzorzec do udostępniania funkcji klientowi (MVC, REST, EDA), proponowany jest system wprowadzenia nieinwazyjnie logiki do warstwy HTML (szablony, widoki). Realizacja tych celów mogłaby stanowić pewną definicję frameworka.
W tym świetle frameworki nie różnią się od siebie. Wszystkie realizują swoje cele. Django czy Pylons, Rails, CakePHP, Symfony, Kohana albo Web2Py, Lift - wszystkie z definicji realizują te cele. Którego użyć do prostego projektu, który da się zrealizować w każdym z nich?

Wielu może dziwić, drażnić postawa często prezentowana przez Jarka Zabiełłę - zachwytu nad perfekcją programistów tworzących konkretny framework. Technologiczną doskonałością Merba, geniuszem z jakim zakodowany jest Lift. U mnie ta postawa znalazła w końcu grunt.
Lepsza jakość kodu i restrykcyjne coding standard (np. w Merb) oznacza wiele dobra: prostsza refaktoryzacja, mniejsza ilość potencjalnych błędów, znacznie zwiększone bezpieczeństwo, posunięty performance. Taki jest właśnie Merb.

Ponawiam pytanie: "Jaki framework wybrać do prostego projektu, który można stworzyć w każdym z nich?" odpowiedź - najdoskonalszy technologicznie. Jaki framework wybrać aby mieć pewność największego bezpieczeństwa? Najdoskonalszy technologicznie? Jaki framework wybrać aby moja aplikacja była możliwie najszybsza? Najdoskonalszy technologicznie.

Tak. Frameworki różnią się między sobą: dostępnymi wtyczkami, architekturą, możliwościami, językiem programowania. Do momentu, w którym którykolwiek z tych składników odgrywa rolę - walka między frameworkami nie jest równa i w konkretnych przypadkach wybór jednych przeważa nad drugimi. Jednak dla prostych projektów, gdy nie masz bariery poznania nowego języka programowania tylko doskonałość technologiczna może przeważyć nad użyciem jednego ponad drugim.

Mam nadzieję, że udało mi się oddać moje ostatnie przemyślenia, na których znalazło grunt podejście Jarka Zabiełły, który często rozwodzi się nad doskonałością techniczną pewnych rozwiązań :) Wszak dla najlepszych przestaje być ważne, że potrafią coś zrobić, a zaczyna być ważniejsze jak to zostało wykonane.

Skoro coś można zrobić na wiele sposobów to czemu nie ma budzić uznania i szacunku i być przez nas wybieraną technologia, która została zrobiona w sposób genialny i najlepszy?

2 comments:

zur887 said...

chyba jakość ;)

Unknown said...

Jeee!!! Wreszcie w miarę zrozumiałam o czym piszesz! :D :D