Vývoj webu je věc pro opravdové muže™

MyEgo.cz

home foto blogy mywindows.cz kontakt

Vývoj webu je věc pro opravdové muže™

webdesign

Vývoj webu je věc pro opravdové muže™. Zatímco dříve platilo, že skuteční programátoři dělají v assembleru, Cobolu či C++, tak dnes programují pro web. Pokusím se to vysvětlit.

Web je dnes směsice mnoha technologií, od primitivních značkovacích jazyků (XHTML, CSS), přes JavaScript/AJAX, programovací jazyky typu PHP či C#, až po SQL databáze. Připočtěte k tomu znalost různých XML formátů (RSS, Atom, Mobilní XHTML), základní konfigurace Linuxu, Apache, zabezpečení a výkonové optimalizace  a šíře záběru je neskutečná.

Programovat aplikační servery ve Forte C++ na Solarisu či Javové applety je oproti tomu brnkačka.

Pojďme se podívat, co dobrý webový vývojář (na LAMP platformě, na ASP.NET by to ale bylo principiálně podobné, jen MySQL zaměnit za MSSQL, PHP za C# a Apache za IIS) musí bezpodmínečně znát:

  • HTML / XHTML - samotné XHTML je triviální, jedná se o zhruba 80 elementů, složitější už je jejich propojení na CSS a (ne)podpora v různých verzích prohlížečů. Nestačí prostě znát jen W3C normy, ale také veškeré "lokální specifika" browserů.
  • CSS 2.x - CSS také není na první pohled principiálně složité, jedná se o stovky hodnot a atributů, horší to začne být, když začnete zjišťovat a řešit bugy IE6, IE7, Opery 9, Firefoxu 2, Safari a dalších prohlížečů a (ne)podporované části specifikace oproti W3C, a začít je obcházet.
  • JavaScript - interpretovaný jazyk, který díky AJAXu (XmlHttpRequest) a (a)synchronní komunikaci nabírá podstatně na složitosti, a hodně tomu přidává jeho odlišná implementace v IE versus Netscape / Mozilla prohlížečích. Ladění je navíc poměrně obtížné, i přes existenci nástrojů jako je Firebug.
  • PHP 5.x - programovací jazyk se zřejmě největším množství klíčových slov, v poslední verzi 5.x navíc i se slušným objektovým modelem. Obtížnost PHP spočívá v jeho historicky podivně nekoncepčním návrhu funkcí a procedur, jejich změně v čase a v jejich obrovském množství. Navíc si připočítejte existenci desítek různých PHP extensions a jejich různou konfiguraci na různých webhostinzích, a slušné bolení hlavy je na světě.
  • MySQL 5.x - znát základy SQL, JOINy, VIEWs, a dalších nestačí, přidává se potřeba triggerů a uložených procedur. Navíc ke každé verzi MySQL se přistupuje trošku jinak z PHP, ať už se jedná o mysql, mysqli či PDO funkce. ve starších verzích se muselo řešit i národní kódování.
  • SQLITE 2.x: základní databáze, s podporou velice omezené množiny SQL funkcí, přistupuje se k ní pomocí sqlite funkcív PHP. Je nutné dobře pochopit a znát její specifika a omezení.
  • SQLITE 3.x: větší množina funkcí než v2, opět některá specifika (třeba nutnost použít trigger na VIEW, neboť nejsou updatable), nutnost používat PDO:sqlite funkce pro přístup z PHP.
  • SEO - aneb optimalizace pro vyhledávače, znalost těchto pravidel je nutností pro kódování webu, který bude fungovat nejen pro lidi, ale také pro vyhledávače (ne, že by to nebylo propojené).
  • Apache 2.x: vlastní webový server, nutnost znát minimálně základy instalace, konfigurace httpd.conf, virtuálních serverů a zabezpečení, a to vše na Windows i Linuxu (x86 i x64 verzí).
  • Linux: většina AMP instalací běží na Linuxu, tedy LAMP, a je nutné rozumět jeho instalaci, zabezpečení, konfiguraci, a umět používat alespoň (Open)SSL, stunnel, SSH, serverové logy, umět "tunit" výkon databáze, httpd serveru a dalšího.
  • Adobe Flash a ActionScript: pro interaktivní prezentace je zde (zatím) Flash (do budoucna se zcela jistě bude více a více prosazovat lepší Microsoft SilverLight), a v tom je nutné také programovat a skriptovat, navíc za pomocí dalšího jazyka - ActionScriptu.
  • Adobe Photoshop / Illustrator - přestože grafický návrh nikdy nedělá webový programátor, často je nucen minimálně "nařezat" obrázek z PSD do JPEG/PNG/GIF, a udělat z něj šablonu a CSS, popřípadě provést menší grafické úpravy a změny. Základní znalost grafických programů od Adobe je tedy nutností.
  • Optimalizace výkonu - veškeré uvedené komponenty a jazyky a použité postupy je potřeba optimalizovat na výkon. Zatímco s aplikací v C++ běžně pracuje jeden člověk na jednom PC, tak s webovou aplikací typicky pracují tisíce lidí v reálném čase na jediném serveru. A to je zcela jiná dimenze.
  • Optimalizace zabezpečení - webové aplikace jsou neustále vystaveny útokům z vnějšku, jsou "otevřené a zranitelné", a jejich zabezpečení se dotýká opět správných programátorských postupů, použitých algoritmů, rutin, nastavení serverů, a samozřejmě rozsáhlého testování.

Pokud má web fungovat nejen technicky, ale i vydělávat, je samozřejmě nutné přidat i:

  • marketing, propagace a sales - prvotní analýza webu je pro jeho úspěch ještě důležitější než vlastní technické provedení. Pokud je web koncepčně špatně, klient se v něm neorientuje, není schopen nakoupit či dozvědět se podstatné informace, odchází.
  • copywriting - dobrá novinařina aneb úspěšné texty (jeden ze základů úspěchu MyEgo.cz) je nutností. Technici je samozřejmě z valné části nezvládají, přesto tuto práci někdy dělají.

Naprogramovat a udržovat v provozu například velkolepý Megablog.it (mimořádně rozsáhlý komunitní systém s více než 5.000 blogy, foto a video galeriemi, spoustou diskusních fór a dalšími komponentami pro zhruba 200.000 UIP denně) si prostě vyžaduje obrovské množství znalostí. Kde jsou ty doby, kdy se člověk naučil Borland C++ či Borland Pascal pro MS-DOS a vystačil si s tím pár let na profesionální úrovni :-)

Pokud se dnes člověk na webu neučí nové věci téměř denně, tak velice rychle zakrní. A stejně tak složité je sehnat špičkové zaměstnance, kteří toto všechno umí.

Ano, práce se dá rozdělit mezi lidi co umí XHTML, CSS, JavaScript, PHP, databáze, administraci serverů a Linuxu, ale pokud někdo nemá dobrý obecný přehled z celé této problematiky, výsledek jeho pracovní činnosti většinou nebývá moc uspokojivý. Špičkový web prostě potřebuje renesanční osobnosti.


Komentáře

  1. 1 Vladimír Jánský 01.03.08, 04:03:37
    FB

    A co třeba lidi, kteří programují mikrokontroléry (mikroprocesory)? Myslím tím opravdové profesionály, ne jen děcka, co se tím baví na škole. Profíci, třeba z http://forum.mcontrollers.com , kteří právě děckám radí, musejí zvládat assembler, Céčko a k tomu perfektně elektrotechniku. Tito lidé si říkají programátoři. Sice by bylo vhodnější jim říkat programátor a elektrotechnik, ale říkají si podle toho, čím tráví více času.
    Kvalitní znalosti elektroniky, elektrotechniky jsou mnohem více než popsaný záběr oborů.

  2. 2 Radek Hulán 01.03.08, 04:03:57
    FB

    [1] samozřejmě i v jiných oborech je potřeba kvantum znalostí. Web je ale specifický v tom, že se mnohem rychleji mění a je toho potřeba znát stále více, kdežto tranzistor funguje desítky let pořád stejně (už od dob, co jsem si podle Amatérského rádia sestavil a oživil první FM přijímač...)

    Na assembleru samotném jinak není nic složitého (pár desítek instrukcí a nějaký ten JMP), sám jsem si v něm psal už v roce 1988 ovladače pro českou klávesnici, VEGA kartu a další.

  3. 3 Michal Vácha 01.03.08, 05:03:14
    FB

    Souhlasím, velice zajímavý článek...na webu je asi nejhorší ta nekompatibilita (prohlížeče, verze PHP atd...) což je také jeden z důvodů, proč nemám rád FF (i IE má své bugy, ale stačí dát před vlastnost v CSS = a mám hodnotu jen pro IE...).

    PS: Celkem dlouho jsi nenapsal žádný článek o apple. Jo a zjistil jsem jednu zajímavou věc k macBokk airu - jak je ten vyklápěcí panýlek s konektory, tak tlustší flahku nebo normální jack od sluchátek nejde připojit (je tam hrozně málo místa a prostě se tam nevejde)

  4. 4 Eduard Veleba 01.03.08, 06:03:37
    FB

    Jo jo, kdo vyvíjí slušně weby, musí mít opravdu velký záběr. A co teprve, když je architektura webovky složitější, než jen lamp, např. backend v C++, webovka v pythonu, hromada maintenance scriptů kolem, nějaká ta reverzní proxy, půlka webu přes AJAX... A to, co platí dnes, bude za rok třeba úplně jinak..

  5. 5 Palo Habera 02.03.08, 12:03:49
    FB

    Prečo práve PHP a nie JavaEE? Je potrebné brať do úvahy, že PHP je skriptovací jazyk a oproti Jave je menej bezpečný(preto je take dobré rozšírenie JavyEE medzi bankami, i keď možno som mal štastie proste len na java weby). Takisto mám pocit, že Java ponúka oveľa väčšie množstvo možností. Napríklad pokial chcete tak viete pracovať s requestom či session na nízkej úrovne avšak pokiaľ nie tak použijete niektorý z frameworkov. JavaEE respektíve JSP ponúka napr custom tagy alebo expression language atp. Som zvedavý prečo použit teda PHP skôr ako JavuEE?

  6. 6 mpx 02.03.08, 01:03:46
    FB

    [6] PHP je dnes prakticky na každém hostingu, JavaEE moc rozšířená není a pokud ji člověk potřebuje, tak si víceméně asi někam musí šoupnout vlastní server. Další výhoda/nevýhoda PHP je, že lze

    Taky mi tam pár položek "nesedí" - třeba proč Sqlite? Nikdy jsem ho nepotřeboval, na jednodušší SQL stačilo MySQL, ale už jsem párkrát potřeboval zase PostgreSQL, Sybase a Oracle, které na seznamu nejsou. A třeba Adobe Flash (a ActionScript) bych osobně vyhodil úplně, většina webů se dá postavit i bez něj.

    Ale řekl bych, že je to dobrý orientační seznam - zcela přesný bude nejspíš jen pro autora článku, ostatní weboví programátoři si tam pár technologií přidají a nebo naopak zase uberou.

    Dobrý programátor se hlavně musí umět učit a přizpůsobit. Když mu přijde požadavek, aby další projekt byl třeba v Ruby on Rails, tak se s tím musí nějak vypořádat.

    A věci jako copywriting, marketing, propagace a sales řeší člověk pouze pokud programuje něco sám pro sebe. Jinak tohle obvykle řeší zadavatel. Třeba za sebe bych místo těchhle věcí spíš přidal nějaké ty základy účetnictví (nepracuji pro jiné zadarmo :)

  7. 7 Radek Hulán 02.03.08, 02:03:23
    FB

    [7] webová prezentace je o propagaci, marketingu a prodeji, a člověk, který dělá počáteční analýzu by měl mít znalosti nejen z těchto oblastí, ale také z IT, aby byl schopen navrhnout optimální (cena, čas, uživatelský prožitek) řešení.. Pro "renesanční osobnosti" je prostě vždy místo, a výsledek je lepší, než spolupráce 5 "nedouků" (majících znalosti jen ze své oblasti).

  8. 8 Palo Habera 02.03.08, 03:03:31
    FB

    [7]
    Je pravda, ze pre Javu nie je lahko zohnatelny free hosting, ale ja sa skor zameriavam na vecsie projekty, pri ktorych sa pouziva klasicky plateny hosting.

  9. 9 Ondilla Miloslav 02.03.08, 03:03:57
    FB

    Lidí, kteří zvládají vše v článku uvedené a na velice slušné úrovni (tu slušnou úroveň zdůrazňuji) je minimum. No, ani v renesanci jich více nebylo;)
    Myslím, že dnes je výhodnější se specializovat, ale základy musíte mít opravdu ze všeho. Bohužel to většina "webdesignerů" nechápe. Sám dělám grafiku, HTML a CSS šablonu a Javascript, ale dokážu se zorientovat i v ASP a drobné věci upravit, pokud zrovna není programátor k dispozici, nebo ho nechci otravovat s prkotinou...
    Pochybuji však, že existuje člověk, který by vše zvládal na špičkové úrovni.

  10. 10 Kamil 13.03.08, 04:03:09
    FB

    [1] Rovnaký názor, članok dobre sumarizuje komplexnost weboveho biznisu, k renesačnemu záberu to však ešte má dosť ďaleko. Renesančný muž by zároveň úspešne maľoval, venoval sa diplomacii, medicíne a pod. Aj obyčajný sochár by si potom mohol povedať, že je renesančný muž, musí mať základy maľovania, statiky, práce s rôznymi materiálmi, musí byť aj zvárač, mať znalosti marketingu, pracovať s galériami na predaji svojich vecí ... a stále je len sochár.

  11. 11 dd 30.05.08, 10:05:49
    FB

    [1] Souhlasím s tím,že elektrotechnici musí mít daleko více znalostí a dovedností než programátoři,neboť web a programování je jen velice malá část jasně vyhraněného oboru,kdežto elektrotechnika je matematika a fyzika a tyto discipliny jsou nekonečné a navíc zahrnuje tato oblast dnes i programování.
    U tohoto oboru platí základní pravidlo: Programátora může dělat každý elektikář ale elektrikáře nemůže dělat žádný programátor :-))))