Častokrát sa stretávam so začínajúcimi PHP programátromi a takmer všetci trpia rovnakým syndrómom vlastného CMS. Každý z nich si myslí, že naprogramuje premakané CMS, ktoré bude lepšie ako všetky ostatné na trhu, pretože všetky sa mu zdajú po jeho prvom zoznámení s ním nevyhovujúce, tažko ovládateľné atď… Niektorí zase skôr programujú svoje CMS len pre vlastné potešenie, možno vlastný projekt a pre zlepšenie sa v programovaní. Obe tieto cesty sú podľa mňa úplný omyl. Ako hovorí jedno staré príslovie: “načo nosiť drevo do lesa…”

Keď som začínal s PHP, tak som takmer vždy chcel všetko naprogramovať sám, navrhnúť si veci po svojom, potom ich implementovať, testovať a jednoducho sa tešiť z tejto práce. Toto je myslím vec, ktorú každý prográmator prežíva a v skutočnosti všetci normálni programátori chcú veci programovať(tvoriť) a nie len používať už niečo naprogramované. Preto sa tomu až tak nečudujem, keď si každý chce naprogramovať vlastné CMS. Aký je však z toho reálny výsledok?

  • Programátor plný nadšenia začne robiť na svojom cms. Po veľmi krátkej dobe zisťuje, čo všetko by jeho CMS mohlo vedieť a aké by bolo skvelé a tak si spisuje všetko, čo ho napadne. Po chvíli má toho na stole toľko, že si začína uvedomovať, že to nemá šancu v blízkej budúcnosti dokončiť. Prvotné nadšenie vyprchá a CMS(hoci mohlo byť naozaj veľmi dobré a mohlo byť tak revolučné, že by prevalcovalo všetky ostatné) nikdy neuzrie svetlo sveta.
  • Druhým prípadom je, že sa programátor pozerá reálne, nedáva si nereálne ciele a CMS nakoniec dokončí. Niečo sa pri tom všetkom naučí, použíje to CMS na nejaký jeden projekt(pre ktorý to možno aj celé pripravoval) a potom zistí, že pre použitie v ďalšom projekte bude musieť ešte kopec veci doprogramovať a možno aj prerobiť a tak sa na to vykašle…
  • V prípade, že sa na to nevykašle tak ďalej vyvíja veci pre svoje CMS a lepí tak jednotlivé projekty a stále ho vylepšuje. Samozrejme strávil na vývoji enormne veľa energie a času a tak sa rozhodne si to CMS nechať len pre seba a ďalej v ňom lepí projekt za projektom
  • V prípade, že sa rozhodne svoje CMS zverejniť, povedzme ako open source projekt a dúfa, že ho všetci začnú používať lebo je podľa neho skvelé. To sa ale vačšinou nestane… Prídu ďalší ľudia, zistia že je to len ďalšie CMS, ktoré im neponúka nič viac ako ostatné CMS na trhu, ba dokonca sa možno zvláštne ovláda a nastavuje (keď bolo stavané jedným programátorom tak je to dosť pravdepodobné). Zistia že za CMS stojí len jeden človek, čo znamená že si hneď uvedomia, že prípadná strata záujmu o toto CMS týmto programátorom bude znamenať koniec CMS. Čiže ho nakoniec nepoužijú…
  • Úplne najkrajším scenárom by bolo samozrejme, že po zverejnení ho objavia programátori a používatelia a zistia, že je úplne revolučné a predstihuje všetku konkurenciu. Developeri zistia že sa do neho veľmi ľahko programujú nové moduly a tak za krátky čas vznikne CMS so silnou komunitou a používateľmi na celom svete.

Na koľko percent je podľa vás reálne, že nejaký začínajúci programátor dotiahne svoje CMS do posledného bodu a že jeho CMS bude lepšie ako iné CMS, ktoré vyvíja obrovská komunita ľudí a už v dnešnej dobe ho používajú stovky, alebo tisíce portálov?? Podľa mňa žiadna. Takže vo vačšine prípadov je programovanie vlastného cms úplná strata času.

Niektorí programátori si svoje CMS programujú len preto, aby sa niečo naučili, alebo možno do školy ako nejaké zadanie na jeden, možno aj naraz na viac predmetov ;-) Prečo je toto strata času a zbytočnosť? Samozrejme, vždy to CMS skončí už v prvej fáze a nikdy sa reálne nezačne používať. Takže jednoznačne to bude strata času. Uvažujme nad situáciou takto: Ak by sa programátor rozhodol radšej si preštudovať ako funguje nejake reálne CMS, ktoré používajú tisícky ľudí po celom svete a zistil ako sa to má fakt robiť. A následne na to by naprogramoval nejaký modul, možno dva a tie by zverejnil. O čo má vačšie šance, že jeho modul budú reálne ľudia používať? Podľa mňa neporovnateľne väčšiu. A každý programátor musí priznať, že ak jeho program niekto používa, tak má oveľa väčšiu motiváciu ho ďalej vyvíjat, resp. robiť na ďalších podobných veciach. Takže ak by sa tento človek na začiatku rozhodol pre rozširovanie už existujúceho cms, tak výsledok by bol oveľa lepší v prípade, že to, čo začne aj dokončí.

Tak prečo vlastne sa každý snaží programovať vlastné CMS??? Pretože je to jednoduchšia cesta…. Každý si myslí, že on to vie najlepšie. Nikomu sa nechce čítať nejakú dokumentáciu, pozerať cudzie kódy a prekonávať tieto prvotné problémy s novým CMS… Veď robiť niečo vlastné je predsa viac… :-(
Nerobiť vlastné CMS, ale rozširovať už existujúce je v podstate oveľa ťažšie ako sa vrhnúť do vlastného cms, ale efekt je omnoho, ale naozaj omnoho lepší. V tomto prípade sa výsledky určite dostavia. Preto odporúčam programátorom, ktorí chcú isť programovať vlastné CMS, aby sa radšej poobzerali a otvorili oči. Našli si CMS, ktoré si naštudujú a naprogramujú niečo pre komunitu. Komunita a používatelia to potom určite ocenia a ich čas nebude zbytočne vyhodený.

A ešte jedna vec. CMSka budú vždy vznikať nové. Ale programovať vlastné má naozaj význam len pre nejakú firmu, ktorá potrebuje spraviť nejaké CMS pre totálne špeciálny projekt a úplne špecifického klienta. A v každom prípade ho nebude programovať jeden prográmator, hoci by bol aj veľmi skúsený, ale v takomto špeciálnom projekte ich bude určite viac.
PRETO NESTRÁCAJTE SVOJ ČAS A NEPROGRAMUJTE VLASTNÉ CMS, JE TO STRATA ČASU!!!!!

UPDATE kolega napisal celkom zuajímavy blogpost ako reakciu na tento článok: http://blog.monogram.sk/pokojny/2008/03/22/re-preco-je-programovanie-vlastneho-cms-v-dnesnej-dobe-uplna-strata-casu/

10 Responses to “Prečo je programovanie vlastného CMS v dnešnej dobe úplna strata času”

  1. suhlas

  2. Napriklad ja jsem narocny a kdyz chci cokoli, tak pouze kvalitni. Zadny existujici CMS ktery jsem mel zatim moznost testovat a nahlednout mu do dokumentace / zdrojovych kodu nenabizi funkce, ktere jsou pro mne klicove a to je duvod, proc jsem si jeden vyhovujici napsal sam.

    Co se tyce newbies tak ti si pisi CMS / galerii / eshop protoze se snazi byt IN, jejich kod je ale k smichu, horsi nez WordPress.

  3. IMHO, ja mam vlastne CMS, ktore vyuzivam len pre svoje potreby … Dovod? Viem o jeho slabinach len ja a ked ho nepatchujem 5 mesiacov, rano mozem v klude vstat a mam 99% istotu, ze moj web nebol napadnuty, po dalsie poznam uz samotny kod a viem prisposobit web na dane potreby, taktiez web nebude tak robustny a pomaly ako v pripade Joomly, ktora ma prehnane vela JS a pod. viem taktiez, ze kde to rozbeham bez problemov, takze asi tolko … ;-)

  4. to eMDi: no to samozrejme tvoja vec, ale existuju cmska ktore pouziva po svete velmi vela portalov a tisice z nich su predpoklam omnoho zlozitejsie ako weby na tvojom cmsku. a myslim ze je to skor vyhodou ako nevyhodou a nebezpecenstvom, lebo vacsinou byvaju chyby opravene v tomto pripade velmi rychlo…
    co as tyka rychlosti a robustnosti, osobne radsej pouzijem nieco pomalsie ked mi to umozni lahko modifikovat a prisposobit na rozne specialne podmienky (samozrejme s mierou, nebudem lovit v lese kralika na tanku)

  5. My sme vo firme zacinali s Drupalom ale po case sme zistili, ze na projekty, ktore robime sa proste nehodi a napisanie vlastneho CMS je proste lacnejsie ako si prisposobovat Drupal. Vacsina firiem ma vlastne CMS vyvynute pre ich specificke projekty, ktore riesia a je to vyhodnejsie ako prisposobovanie uz existujuich rieseni.

    Osobne tiez jedno CMS vytvaram, aktualne z neho bude moja bakalarka, nie je to vsak cisto akademicky projekt, pouzil som ho uz na par weboch, teda cas investovany do jeho vyvoja sa mi vratil, nejde mi o to aby ho pouzivali tisice ludi a vznikla nejaka komunita, pre projekty, na ktore ma sluzit mi bude vyhovovat a budem spokojny.

  6. dnes je k dispozicii vela cmsiek a kazde ma svoje specifika a hodi s na rozne typy projektov, ako som pisal v pripade velmi specifickych projektoch je vlastne cms jedina cesta, ale mozno by stalo za to skusit aj ine cmska ako drupal. kupit nejake komercne cms je casto mozno lacnejsie ako investovat do vyvoja vlastneho v mnohych pripadoch…. alebo doplnit nejake free cmsko o veci ktore su potrebne pre dany projekt.

    na vlastne cmsko ti nemam co povedat ;-) o tom je tento clanok :-D

  7. nesuhlasim s tebou tomaj:o) … sice nie vo vsetkom .. trebarz: urcite to nie je uplna strata casu. Uz len z toho pohladu, ze pri tom naberies urcity skill, kt. pri zaciatkoch je nenahraditelny:)), este mam nejake bodiky .. ale tie nabuduce:P … uz len jedna dolezita vec.. pozeras sa na to uz zvacsej vysky, ako sa pozera zacinajuci koder -> takze pre teba to uz moze byt strata casu, ale pre neho moznostvo skusenosti ….

  8. taktiez s tebou niecelkom suhlasim. v phpku robim uz dlhsiu dobu a mam uz za sebou niekolko projektov takze nesom uplny zaciatocnik. ale mal som pripad kedy som mal asi 10 dni na to aby som naprogramoval kompletny herny portal. preto som (z donutenia ostatnych s odovodnenim ze je malo casu) siahol po joomle (taktiez odporucanie). sajtu som sice stihol spravit ale musel som vyrabat vlastne moduly co by nebol az taky problem - hlavny problem bol ten ze som sa musel priamo hrabat v zakladnych zdrojakoch joomly pre to aby som mohol spravit veci ktore joomla nemala (mozno mala ale nemal som kedy studovat celu dokumentaciu aby som to zistil detailne). takze vysledok bol taky ze som mal taku polo-joomlu s tym ze som bez sance na update na dalsiu verziu lebo by si to prinieslo neuveritelne vela zmien znovu do updatnuteho kodu s tym ze nemam zarucene ze to bude fungovat.. dalsiou vecou bola zataz ktora sa casom vysplhala na 100% (core 2 duo). myslim si ze to bolo z dovodu ze ja som potreboval veci ktore v joomle asi nikdy neboli ocakavane ze by ich niekto chcel a naopak velku cast veci ktore dokazala joomla som nikdy nepouzil.
    tym padom som sa pustil do vlastneho systemu ktory je presne sity na mieru a s rovnakym poctom dat klesla zataz asi na polovicu (pri ovela vacsej navstevnosti)

    takze ked to zhodnotim celkovo. vlastne cms je dobre hlavne vtedy ked sa jedna o velky, komplexny a ‘neobvykly’ projekt. pokial sa jedna o ‘projekt ako kazdy iny’ cize stanka zamerana na novinky, clanky a tot vsio tak je predrobene cms dostatocne. myslim ze v opacnom pripade je to nepouzitelne :)

  9. to qery: ja zase nie tak celkom s tebou suhlasim,
    uznavam ze programovat vlastne cms ma niekedy vyznam… ale podla mna naozaj len v krajnych pripadoch
    u teba podla mna bola zla volba na zaciatok… sam si asi zistil ze jomla nebola vhodna volba pre tvoj projekt (mozno bol naozaj na tolko specificky ze nijake “standartne” cmsko sa na neho nedalo pouzit…)
    a mozno bol u teba problem prave ten cas, za taky cas je tazke pouzit cmsko s ktorym si nikdy nepracoval a tiez za taky cas naprogramovat vlastne sa tiez nedalo… takze by som videl problem inde…

    clanok bol mysleny prave pre programatorov ktory sa bezmyslienkovite vrhaju do programovania “vlastnych cms” co je naozaj podla mna strata casu v drvivej vacsine pripadoch…

    byt tebou by som ale “nelamal palicu” nad cmskami pre velke a zlozite projekty ;-) su cmska ktore taketo veci zvladaju a co sa zataze tyka tak maju samozrejme vacsiu ale to uz je na inu debatu (rychlost vyvoja vs. rychlost behu aplikacie)

  10. Osobne si myslim, ze je to trochu komplikovanejsie.
    Ako tomaj vravi, v tom s nim suhlasim, pri rieseni projektov (a nejedna sa len o CMS) by som jednoznacne odporucal:
    1. zanalyzovat existujuce riesenia (nie nadarmo ma kazda slusna praca takto zacinat), pricom sa zameriat prave na specifickosti
    2. az potom sa rozhodnut spravit nieco vlastne
    Je to to iste ako s kniznicami jazyka. Stiahnem si nejaku hotovu, otestovanu, alebo si napisem vlastnu?

    Samozrejme specifickost, konkretne poziadavky a ine extremne pripady to je uz ina tema. Tiez som pracoval na projekte, kde sme pouzili existujucu kniznicu a nakoniec pri specifickostiach sme zistili, ze musime hackovat a vlastna kniznica by vysla casovo lepsie. O clanok ale nebol.

    Na to ale aby sme vedeli povedat, ci sa nieco v existujucom rieseni da alebo neda spravit je potrebne ho dokladne poznat. Mat s prostredim “doverny” vztah, co je casovo narocne. Rovnako, ak mi nevyhovuje jedno riesenie, moze vyhovovat ine. To tomaj v komentari tiez poznamenal.

    Na druhej strane, pisanie pre ucely ucenia by som nezavrhoval. Osobne som sa najviac naucil takymto sposobom. Osobne si myslim, ze pri pisani CMSka sa clovek nauci nieco uplne ine ako pri pisani modulu pre existujuci system/pouzivani existujuceho systemu. Obe veci daju cloveku nieco ine. Na jednej stranke, nespomeniem si kde, som cital o skusenosti pedagogov zahranicnej unierzity, ze ucenim programovania v Jave sa znizovala kvalita ludi. Islo o to, ze ludia sa ucili pouzivat kopec existujucich hotovych tried a mali problem s vymyslanim algoritmov. Je potrebne dobre ovladat frameworky, vediet ich pouzivat, vediet skladat veci dokopy. Avsak myslim si, ze tymto sa cibra ine zrucnosti. Pri pisani CMS od zakladu musi clovek vymysliet mechanizmy, architekuru, reprezentaciu dat, algoritmy spracovania a pod. Pri pozivani existujuceho, co funguje, clovek vidi ako sa veci spravne robia. Jedne aj druhe zrucnosti su podla mna pre dobreho programatora nevyhnutne.

Trackbacks/Pingbacks

Leave a Reply

You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>