Pokud jste četli nadpis jako „Proč si nepsat vlastní…“, pak si jej přečtěte znovu a pozorněji. Opravdu se zabývám tím, pro by si každý programátor měl napsat svůj vlastní Framework, CMS a nebo e-shop.
Jakmile se student programovacího jazyka dostane dostatečně daleko od prvního „Hello world“, přijde první nabídka na vybudování nějakého rozsáhlejšího systému – například e-shopu. Mladý programátor je už otrkaný, ví že stále dokola řeší opakující se problémy a tuší, že by měly vyřešit nějak centrálně – a tehdy poprvé stojí před vnitřním dilematem: Použít hotový a léty prověřený systém, nebo si vytvořit svůj vlastní?
Já tvrdím:
Každý, kdo si někdy položil tuto otázku, by si měl napsat svůj vlastní systém.
Jedině tak na vlastní kůži pozná, co je za tím práce a kolik pastí je třeba překonat – přičichne si k nejhrubšímu meritu problému a otevře si tím svoje oči. Naučí se na věci pohlížet z různých stran, bude lépe předvídat možné budoucí požadavky a rozpoznávat potenciální problémy ještě dříve, než se projeví. Bude o věcech přemýšlet.
Je to jako s auty: Řidič se po své první autonehodě stává mnohem lepším řidičem. Dokud totiž neuslyší mačkání plechů, má tendenci podceňovat nebezpečí, neumí bleskurychle odhadnout, co je důležité (lidský život nad hmotnou škodou) a v krizových situacích má tendence k zbrklým činům. Zvláštní skupinou jsou tzv. sváteční řidiči, kteří v zájmu opatrnosti zásadně nepřekračují rychlost 30 km/h – jejich rčení „za celý život ani škrábnutí“ jsou pověstná.
A tehdy student sám pochopí, že stejně objevuje Ameriku. Jeho systém nedělá nic víc, než mnoho OpenSource projektů – kromě toho, že se mu navíc podařilo obohatit svůj systém o množství chyb, nedostatků, pastí a „až jednou bude čas, tak to dodělám“ věcí. Kromě toho si během prací jeho duše rozdělila systém na části, které má rád a ty, které odbývá v rámci nucených prací, stejně tak znalosti a zkušenosti dokážou plně pokrýt jen některé bloky, jiné naopak fungují někde na pomezí teorie nepravděpodobnosti.
To je ten správný čas připustit si, že svět už má Nette/Wordpress/Magento. Ne dříve ne později. Dříve byste nedokázali vnímat problematiku do hloubky a naopak později by se vám mohlo stát, že vám váš vlastní systém vezme svobodu a budete zajati molochem, který už nemůžete hodit přes palubu, protože by vás stáhl s sebou.
Zkuste o tom přemýšlet.
Kubo, skvělý článek!
Naprosto s Tebou souhlasím – je určitě dobré, když si programátor vyzkouší a sám napíše něco pěkně rozsáhlého. Jak víš, sám jsem si napsal vlastní e-shop. Zkušenosti, které jsem tím získal jsou velmi cenné, avšak děsím se každé změny, kterou tam musím dnes udělat.
Důležité je pochopit právě onu rozsáhlost a náročnost. Když si uvědomím, kolik práce se skrývá za kdejakou „prkotinou“ => jsem motivován k tomu, NEpsat si to sám. Totiž on o těch „prkotinách“ už někdo přemýšlel, už se někdo spálil a někdo to vyřešil… Opravdu, vymýšlet Ameriku je zbytečné!
Pro používání frameworků mluví i fakt, že kolem nich existuje komunita. Skupina lidí, kteří jsou ochotni poradit a pomoc s případným problémem, doporučit řešení nebo ho prostě napsat :) Nejste na to tedy sami. Navíc, pokud je FW pravidelně aktualizovaný, objevují se nové funkce spolu s novými trendy – to usnadňuje práci.
A ke zmíněné analogii při havárii v autě: to je přesné! Podle mého by každý řidič měl mít za sebou nějakou bouračku nebo alespoň pořádný šťouchanec! Pak si člověk uvědomí, jak rychle se to vlastně semlelo a fakt, že „nečekal jsem, že budu bourat!“.
Je to zkušenost, která otevírá oči…
Ne, že bych úplně nesouhlasil. Určitě je lepší, když si člověk vyzkouší i vlastní řešení. Jenže.
Wordpress a Magento je primárně pro lidi co tomu nerozumí ani ň nebo nechtějí investovat do vývoje (ať už peníze nebo čas). Prodávat weby postavené pod wp nebo jiným systémem je trochu prasárna, ale budiž.
Nette je však trochu něco jiného a člověk který s programováním začal po něm asi sotva sáhne. Už proto, že používat jej znamená aspoň základní znalost objektů pod php. A to jsou věci které z tutoriálů nejspíš nikdo neokouká. Takže bych ho zrovna do tohohle nezatahoval :)
Ale jinak ok. Spíš mě rozhodil ten popis u tweetu.
Jeník: Je úplně jedno, jestli si za proměnnou WordPress/Nette/Magento nasadíš jiný systém, který ale sám nevyrobíš.
Prodej webu postaveném na WP není prasárna – tedy pokud klientovi nebudeš účtovat nic víc, než práci, kterou jsi skutečně provedl (nasazení, costumizace, šablony, seznámení klienta se systémem). Pokud je zadáním klienta vytvořit blog, nebo jednoduchý redakčák, je mnohokrát efektivnější nasadit WordPress a tento vyladit k potřebám klienta, než prosazovat vlastní systém, za který budeš navíc účtovat jakési poplatky, které ti splácí dřívější zdlouhavý vývoj. V tomto případě je WordPress lepší pro tebe i pro klienta – ty máš efektivnější práci a klient nevydává zbytečné náklady a ve výsledku získá otevřený systém, který mu bude moci spravovat leckdo.
Ta narážka s prasárnou byla možná zbytečná :D Jde mi spíš o to, že znám firmy, kde za nasazení stránek pod wp účtujou stejnou práci jako ostatní. Grafika je přitom často templatová (případně mí(ze)rně upravená) a sám moc dobře víš, že se vším ostatním (pokud nevyvíjíš nějaký echt složitý plugin, což už dnes snad v té záplavě ani není potřeba) není až tak moc práce. Toliko k tomu. Byl to spíš osobní povzdech a asi tam neměl co dělat.
Přesto pořád trvám na tom, že Nette do toho seznamu nepatří. V principu Ti jen usnadňuje práci tam, kde samotné php prostě nestačí nebo je neefektivní. Ale vyvíjet si pod nette nějaký cms/eshop/… je přeci daleko složitější. O to mi jde.
Znovu ale říkám, že se zbytkem souhlasím. Rozšířím to tvé připodobnění na auta – je lepší když bude čerstvý řidič ze začátku jezdit ve Škodě 120. Ale časem když už ví co a jak, tak nevidím důvod proč by si něměl sednout do auta s posilovačem a 50 airbagy. Ale je hloupé aby si sedl první do auta, které má automatickou převodovku, tempomat a zaparkuje mu samo.
Základní rozdíl mezi světem a Čechy: Sebevědomí v prvním případě, předem poraženecká nálada v druhém.
Naopak – po 25 letech praxe si píšu svůj systém a je to radost. Už vím jak to psát aby to odsýpalo. Často je rychlejší napsat vlastní systém, než se prasit s nedostatky jiných.
A v PHP se vyskytují nejhorší programátoři, na rozdíl od mnoha jiných jazyků je tam velmi snadné napsat framework o třídu lepší. Je tam mezi frameworky velmi nízká laťka.
Navíc PHP je relativně vysokoúrovňový jazyk, takže to odsýpá. V zásadě po určitých zkušenostech víte, že problém dobrého frameworku je pouze v tom dobře navrhnout API. Pokud ho máte v hlavě, zbytek je prkotina a velmi rychlá práce.
Chápu, že pro začátečníka je dobré si zkusit vůbec něco napsat, aby přišel na to co nedělat. Ale mezi programátory je mnoho velmi zkušených lidí – i když často do PHP komunity nenakukují.
Upřímně, když vidím jak před 20 lety lidé psali velké projekty doslova za pár týdnů a dnes někdo vyhrožuje s tak směšnou věcí jako je psaní PHP frameworku, pak je asi něco špatně. Možná že dříve programátor potřeboval znalost teorie a algoritmizace dříve, než sedl a začal psát hello world program – a pak neodpadnul a neodešel poraženecky s každou maličkostí, ale znalosti teorie mu poradily či řada kolegů.
Když si takhle sednul Stroustrup a vyšvihnul svůj kompilátor C++ do C. Nebo Stallman a vyšvihnul svůj emacs. Napsat vlastní okýnkový systém za pár dní udělal také kdekdo. Proč se ksakru bát?
Dnešní knihovny, frameworky apod. jsou tak špatné, že v mnoha projektech jsem si napsal vlastní – a ušetřil jsem spoustu času. Asi nejvíc extrém je databázová knihovna wxOdbc ve wxWidgets. Napsáním vlastní náhrady jsem ušetřil jistě mnoho času, nervů i peněz.
Proč ksakru ta poražeecká nálada v článku? Proč? A proč jí vidím jen na českých webech?