Co by měl chtít zadavatel po tvůrci jednoduchého webu nebo webové aplikace? Programátoři často trvají na virtuálních serverech, jazycích o kterých jste nikdy neslyšeli a různých složitostech. Když někdo chce jednoduchou věc, nenuťte mu k webu i správu serverů, framework co jste si sami napsali a databázi, kterou nikdo nezná. Dělejte jednoduché věci jednoduše.

Přestavte si, že máte nápad na web. Jednoduchou mapovou aplikaci, databázi čehosi, katalog. Nechcete nic okázalého ani komplikovaného. Nemá smysl v začátcích začít budouvat infrastrukturu pro desítky tisíc návštěvníků denně, když nevíte, jestli se to ujme. A potřebujete najít člověka, který web naprogramuje, rozpohybuje. Pokusil jsem se formulovat několik myšlenek, které bych předal onomu programátorovi dřív, než dojde na jakoukoliv práci.

Prostředí

Na malé věci by měl by stačit běžný hosting. Nevidím důvod řešit si vlastní virtuální stroj a natlačit se tak do správy serveru, dokud to není nezbytně nutné. Navíc je to úspora nákladů, zvlášť když už nějaký multihosting je použit pro další projekty. Výhodou je outsourcing updatu, zálohování, mailserveru, databáze. To jsou rozhodně věci, které bych nechtěl řešit a nechal na hostingu samotném. 

Hotový software - opensource

Jde použít něco, co už napsali jiní a dali k dispozici(zdarma)? Výborně, nepotřebujete vlastně ani programátora, spíš člověka co to dovede nainstalovat, nakonfigurovat, nalámat do šablony grafiku. Podívejte se, jestli vaše požadavky na web nedokáže splnit třeba WordPress, OpenCart, MediaWiki nebo jiný opensource. Základní funkcionalitu dovedete rozšířit tisíci pluginy a připadně si necháte napsat plugin na míru. O update zbytku softwaru se za vás postarají jiní.

Jazyk

Pokud si nevystačíte s hotovým opensource, nezbývá než se pustit do programování. Programovací jazyk by měl být PHP. Není sice nejproduktivnější, ale vývoj je levnější, běží to všude, není náročný na zdroje a existuje bezpočet různých knihoven a doplňků. Vývojář v PHP vás vyjde levněji, snáz jej nahradíte a pokud máte aspoň nějaké základy programování, pak snad i dovedete sledovat, co že to programuje a jak.

PHP už ale nějakou dobu není cool. A proto se vás budou snažit vývojáři přesvědčit, že Ruby, Python nebo Java je ten správný jazyk. Vy ale chcete jednouchou webovou stránku, na to bylo PHP stvořeno. Nekomplikujte si život do budoucna.Schválně se podívejte na jobsy, kolik je nabídek pro PHP vývojáře a kolik pro Ruby. Koho myslíte, že seženete pro pozdější úpravy snázeji? Reči o tom, jak je PHP nevýkonné a nedostatečné neberte v potaz. Na PHP běží wikipedie, facebook, yahoo, flickr, digg a pod. Zdá se, že s drobnými úpravami dovede utáhnout zátěž zhruba miliardy uživatelů. Myslíte, že to bude stačit? 

Framework

Ideálně aplikaci postavit nad běžným frameworkem pro PHP. Nette je takovým českým standardem a rozumnou volbou. Ale žádný z PHP frameworků vyjmenovaných zde není krok mimo. Pokud bude mít programátor zkušenosti s jiným, není problém. Nenechte si vnutit nějaký systém, co si vývojář napsal sám na koleni. Nenajdete nikoho, kdo to po něm převezme a dovede udržovat a rozvíjet. Nebo vás to vyjde pekelně draze. Frameworky programátora svazují a nutí mu nějaké konvence, standardy. Jedině dobře pro vás.

Databáze

Doporučuji MySQL. Není to žádný hit, ale opět je na každém hostingu, není záludná, všude je k ní webové rohraní + importy/exporty a zálohování. Dat nebude snad ze začátku tolik, aby bylo třeba řešit výkon. Cool jsou NoSQL databáze. Ale jen v případě, že přesně víte proč a jak je použít. Jinak se pouštíte do neprobádaných (a často záludných) vod.

JavaScript

Jako JavaScriptový framework bych určitě volil jQuery. Je to v podstatě standard posledních let. Mraky rozšíření, pluginy pro UI, testovaný na masách uživatelů. Natahnout ho z Googlí CDN ať nevytěžuje vlastní hosting. Umí s ním každej webař, práce je jednoduchá a pochopitelná.

Verzování

Bezpodmínečně nutné je veškeré změny kódu průběžně zaznamenávat v nějakém verzovacím nástroji dostupném online. Pro kontrolu, pro možnost vrátit se k předchozí funkční verzi, sledování historie. Nejspíš by nemusel být kód vidět bez přihlášení, aby nebylo možné zkopírovat celý projekt na pár kliknutí. Sám využívám free http://www.projectlocker.com/ a SVN. Pokud existuje lepší varianta, není problém. Jestli verzovat v GITu, SVN nebo Hg je skoro, pořadí zde ovlivňuje moje preference. Pokud nemáte problém s tím, že vaše zdrojáky bude moct číst kdokoliv, zvolte github, google code nebo bitbucket

Deploy

Na hostingu nebude asi možný řešit deploy vytažením změn z verzování(není to běžné ale hostingy to postupně začínají nabízet). Nevadí, stačí nějakej FTP upload. Změny a vývoj nejspíš může probíhat naživo venku, stejně na to z kraje nikdo cizí nepoleze. Případně omezit přístup na sadu IP adres a ostatním vracet nějakou “Zde pro vás připravujeme...” statickou stránku. Nepůjde debug PHP, ale na to jsou PHP vývojáři zvyklí a echo s var_dump jim stačí :-) Není to super, ale vy chcete jednoduché a rychlé řešení. Ne bezproblémový deploy pro stránku, kam nikdo z kraje nezabloudí.

KISS

KISS je zkratka ze slov Keep It Simple, Stupid. Jedná se o jednoduchý návrhový vzor, kdy se tvůrce snaží věc držet maximálně jednoduchou a minimaistickou. Taková věc je pak snadno dlouhodobě udržitelná. Detailní popis KISS si přečtete třeba na Wikipedii. Není KISS přesně to, co hledáte?

Závěrem

Tuším, že každý vývojář mě s takovýma radama bude hnát k čertu. Ale jde o to předem stanovit nějaké rozumné meze programátorovi, který to bude implementovat. A pokud chcete jednouchou věc, nenechte si ji hned z kraje zkomplikovat a prodražit. Programátoři mají rádi komplikovaná, složitá a náročná řešení. Tedy přesný opak toho, co hledá každý zadavatel projektu. To říkám jako vývojář, co má rád javu, složitý deploy, virtualizované servery, nerelační databáze a všechny novinky z IT. 

Žádná z rad pro vás nemusí vůbec platit, pokud víte co děláte. Software není neměnný, v budoucnu bude možné svá rozhodnutí změnit. Vybrat jinou databázi, dokonce celou věc přepsat do jiného jazyka, když to bude nutné. Neházejte si ale klacky pod nohy hned z kraje, když to není třeba.

Máte opačné zkušenosti? Podělte se prosím v komentářích. Rád se přiučím a svůj názor(i tenhle článek) klidně změním.