Nie lubię gotowców



Nie lubię gotowców. Sprawiają, że człowiek ma 5 razy więcej roboty. Mimo, że obiecują co innego.

Mnóstwo czasu zajmuje często:

  • szukanie gotowca
  • rozgryzanie jak on działa (dużo gotowców jest trudnych w obsłudze)
  • ewentualna modyfikacja, kiedy okazuje się, że nie jest to, czego oczekujemy i trzeba czasem duuużo się nakodzić i dużo bardziej okrężną drogą niż by się to robiło samemu.
  • a często natrafiamy na ścianę i okazuje się, że coś trzeba robić od nowa, i że dany gotowiec się okazuje być słaby (często się to okazuje po fakcie, kiedy już włożyliśmy w to masę pracy)

Dlatego zwykle staram się najpierw rozwiązać jakiś problem samemu, a szukanie gotowców uważam za ostateczność.

Nie zrozumcie mnie źle. Często korzystam z frameworków czy przydatnych bibliotek. Przez gotowce mam na myśli raczej:

  • gotowe kawałki kodu, które bardzo łatwo jest napisać samemu, i w zasadzie można je napisać samemu, i należałoby chyba, o ile nie ma szczególnych powodów, żeby użyć gotowca.

    Np. slajdery/carousele, proste efekty, paralax scrolling etc. Można to bez problemu zrobić szybko samemu i nie widzę powodu, żeby ściągać dodatkowe 300kB na coś, co można napisać od ręki w krótkim czasie (a po napisaniu można sobie zachować gdzieś ten kod na przyszłość do ponownego wykorzystania).

  • gotowe CMSy, które są kobylaste i mają pełno ograniczeń.
    tj. nie jestem przeciwko gotowym CMSom, sam czasem korzystam z chociażby Wordpressa.
    Raczej chodzi o to, że często lepiej jest zrobić dedykowane rozwiązanie niż korzystać na siłę z CMSa, który albo ma za mało opcji, albo ma tych opcji za dużo. To znaczy:
    • jeśli projekt jest duuuuży i w miarę złożony albo nietypowy (np. aplikacja internetowa, która "coś robi"), to raczej nie wystarczy "postawić CMSa", tylko trzeba i tak to zaprogramować. Czasem są to długie miesiące roboty. Nawet jeśli postawimy CMSa, to potem i tak będzie się słabo integrować z całą resztą aplikacji. Więc lepiej jest od razu zrobić dedykowane rozwiązanie, dopasowane do potrzeb danego projektu.
    • jeśli projekt jest z kolei prosty, np. strona z kilkoma podstronami, to CMS w stylu Joomli to jak strzelanie z armaty do wron. Lepiej już napisać te parę stron samemu (szczególnie, że korzystając z frameworków typu Django czy generatorów stron statycznych jak Jekyll nie jest to dużym problemem).

  • gotowe szablony, o ile mają być mocno zmodyfikowane - to znaczy: gotowe szablony są dobre dopóki nie trzeba będzie nanieść większych modyfikacji na nie. Jeśli natomiast mamy szablon, który i tak musimy mocno przerobić, to myślę, że lepiej go zrobić od początku samemu. Szczególnie biorąc pod uwagę, że gotowe szablony są zwykle kiepsko napisane pod kątem HTMLa, nawet jeśli wyglądają dobrze. Więc przerabianie ich to często masakra.

  • frameworki, które okazują się niewystarczające. Ale tutaj zależy o jakiej działce piszemy. Jeśli chodzi o tworzenie stron internetowych to akurat lubię frameworki.

    Bardzo lubię chociażby Angulara (oraz na backendzie Django albo Expressa z wtyczkami). Wydaje mi się, że pozwalają one na dużo i w krótkim czasie. Jednak z drugiej strony jestem zawiedziony stanem frameworków do gier przeglądarkowych (często mają toporne api, mało opcji związanych z logiką gry, małe możliwości konfiguracji etc.). Dlatego pracuję nad własnym frameworkiem do gier.
Co więc proponuję? Czy robienie wszystkiego od zera samemu?
Nie.
Nie mam nic przeciwko korzystaniu z gotowych rozwiązań, ale jeśli nam służą i jeśli bez problemu możemy różne rozwiązania połączyć w całość. Zintegrować jakoś. Ponieważ sam naciąłem się nieraz na gotowych rozwiązaniach (i myślę, że nie tylko ja), to podchodzę do nich nieco sceptycznie.
Nie uważam, że jak się chce coś zrobić, to trzeba najpierw poszukać gotowca bo tak będzie szybciej, a dopiero jak gotowca nie ma to można pisać coś samemu. Really? Czyli co? Chcę np. zrobić efekt paralax scrolling na swojej stronie. Z zegarkiem w ręku zajęło mi to 10 minut, wraz z postawieniem szkieletu strony i przeszukaniem dokumentacji jQuery i MDN na temat tego, jak to mam zrobić.
Ale nawet gdyby komuś innemu zajęło to kilka godzin nauki, i tak lepiej chyba się nauczyć raz, a potem umieć zrobić to w kilka minut za drugim razem, niż za każdym razem kiedy chce się jakiś efekt, dogrywać kolejne kilkaset kilobajtów z kolejna niepotrzebną wtyczką.
Dlatego myślę, że najpierw warto spróbować zrobić coś samemu (a nuż okaże się to prostsze?), a potem dopiero szukać gotowych rozwiązań, a nie odwrotnie.
Chyba, że chcesz zrobić coś, co wiadomo, że jest trudne, a są dostępne sprawdzone rozwiązania (np. Google Maps do map. Disqus jako wtyczka do komentowania. Jakieś gotowe czaty, edytory WYSIWYG na stronę etc.). Raczej mam na myśli sytuację, kiedy ktoś próbuje zrobić coś trywialnego (prosta animacja) i szuka do tego wtyczki.

update 20 lutego 2015:

jakby się zastanowić, to nie ma nic złego w używaniu bibliotek do wymyślnych animacji czy do innych teoretycznie prostych rzeczy (sam w tej chwili bawię się taką jedną biblioteką do animacji). Problem zaczyna się dopiero wtedy, kiedy efekt jest odwrotny do zamierzonego - jeśli znalezienie i nauka biblioteki zajmuje więcej czasu, niż zajęłoby napisanie własnego rozwiązania, albo jeśli strona zaczyna wolno działać przez nadmiar animacji/gadżetów.

Komentarze

  1. Bardzo fajny artykuł, zwłaszcza zainteresowało mnie narzędzie Jekyll nigdy o nim nie słyszałem; a teraz na pewno się nim pobawię :) dzięki za inspirację :)

    OdpowiedzUsuń
  2. Dzięki. Fajnie czytać, że kogoś zainspirowałem :) Myślę o dodaniu nowego wpisu, chociaż na razie szukam odpowiedniego tematu.

    OdpowiedzUsuń

Prześlij komentarz

Popularne posty z tego bloga

Ściemy z ogłoszeń o pracę

Jak nie sprawdzać wiedzy technicznej: platformy online

Jak zrobić prostą grę w JavaScript?