2/10/2016
Vložil: Jakub
1126
Sdílet: Facebook

Programátor VS písař

Co je prací programátora

Ač to tak možná na první pohled nevypadá, hlavní práce programátora není vysloveně psaní zdrojového kódu. Nejdůležitější prací programátora je přemýšlet. Hlavním úkolem je vlastně napsat kódu co nejméně, pokud možno co nejvíce logicky strukturovaně. Čím méně kódu člověk napíše, tím v něm (logicky) udělá méně případných chyb.

Chytrý programátor má zaběhnuté ověřené postupy, které pravidelně inovuje a doplňuje. Samozřejmě jde o to mít vše, co možná nejvíce připraveno řekněme ve formě polotovaru. Tyto připravené fragmenty kódu (v mém případě pluginy) poté implementuje do nových projektů a neustále je vylepšuje, aby toho uměly víc, byly rychlejší, či v logice kódu jednodušší.

Můžeme to tedy uzavřít tím, že správný programátor hodně přemýšlí a méně píše. I když každý má rád rutinní práci, velmi málo se programátorovi opravdu poštěstí dělat něco rutinního, jelikož ideálně vše vyrábí jen jednou.

Jak vypadá písař

Za svůj život jsem se potkal se spoustou písařů. Dalo by se říct, že každý programátor je někdy zpočátku písař. Písař je programátor, který má rád rutinu. Nejraději by programoval neustále dokola to samé. Není to ten typ člověka, který by rád vymýšlel nové věci a byl nějakým způsobem inovativní. Mnohem raději by psal pořád dokola neustále ten samý kód. Písaře často poznáte i podle toho, že se chlubí tím "jak velký jsem napsal textový soubor".

Kdysi jsem znal jednoho programátora, který jelikož příliš nevěřil Google se rozhodl si sám napsat vlastní knihovnu jQuery. Jeho největší chlouba byla, že si sám napsal to samé jako jQuery a knihovna měla zhruba 1.2MB. Myslím, že žádný aspoň trošku střízlivý člověk by takhle velkou věc sám nepsal, zvláště pokud už úplně stejná věc existuje a zpracovávaly jí desítky profesionálů.

Ve skutečnosti se může zdát práce písaře na počátku jednoduchá. Na první pohled to vypadá, že vám to jde rychle a dobře. Kód rychle přibývá...,ale realita je jiná. Jeden z problémů je, že písař má potřebu "si všechno vyrobit sám podle svého". Pravdou je, že čím více kódu píše jeden jedinec (který tomu navíc až tak dobře nerozumí, když dělá tohle) vznikají v aplikaci nebezpečná místa, která mohou při sebemenších změnách v jiných částech aplikace, či nedej bože změnách v databázi, vyvolávat chyby. Velmi častá je pak situace, kdy přidání jedné funkce do aplikace vytvoří 10 nových bugů ve stávajících částech aplikace.

V reálnem životě písař nemívá dlouhé životnosti. Pokud jde o rozumného člověka a dostane se pod vedení opravdového programátora, má slušnou šanci se z tohoto problému dostat. Pokud však písař setrvá písařem nastanou existenční problémy. V tom lepším případě člověk s programováním prostě skončí a bude dělat jinou práci. V tom horším případě se na programátora začnou sypat problémy z předchozích projektů, začne být vzhůru do 4 do rána každý den, pít desítky litrů kávy, kouřit 3 krabičky cigaret denně, pít alkohol (a programátoři často dělají horší věci) a nakonec často takový programátor končí na léčení. Oba dva tyto konce už jsem v životě několikrát viděl. Věřte že nechcete být písařem.

Jak se pozná písař?

Za dobu co v tomto oboru pracuji již umím poměrně snadno rozeznat písaře. Jeden ze základních znaků je, že tento programátor vždycky pracuje výhradně sám. Nikdy nepracoval ve větším týmu vývojářů. Nikdy neměl žádného nadřízeného vývojáře. Nikdy nepracoval v žádné firmě, která se zabývala vyloženě vývojem, či v horším případě tam pracoval, ale byl jediný programátor a neměl žádného lektora, ani nadřízeného, který by byl schopen určit správný směr vývoje.

Dalším průvodním jevem je těžká forma prokrastinace. Myslím, že drtivá většina programátorů má problém s prokrastinací. Pravdou je, že jako nadřízení těžko poznáte prokrastinaci hned, zvláště pokud programátor pracuje z domova. Nicméně ve chvíli kdy zjistíte, že má programátor zadanou práci na týden od neděle, první email vám pošle ve čtvrtek, a pak vám píše každý den ve 4 ráno, jak na tom je, že doufá že to stihne, víte jistě na čem jste. Prokrastinátoři obyčejně nestíhají termíny zhruba o jeden až dva dny. Nicméně musím upozornit, že nestíhání termínů samozřejmě nemusí způsobovat jen prokrastinace, ale také nečekané požadavky klientů, či vysoké nároky od nadřízených.

Poslední z věcí podle které si můžete být skálopevně jisti, že jste narazili na písaře je to v čem dané aplikace či zdrojový kód tvoří. Téměř každý písař vůbec neví co je to framework, nemá tušení co je MVC struktura a téměř vždy má buď "vlastní redakční systém", nebo si "všechno vždycky píše sám přímo na míru".

Je dobré si někdy v životě vytvořit aspoň primitivní vlastní redakční systém, aby si člověk uvědomil, kolik práce taková věc obnáší a jakou hodnotu má takový kód. Nicméně tyto produkty nejsou trvale udržitelné. Pokud to člověk chce vylepšovat, časem se to jednoduše řečeno začne sypat.

Netvrdím, že nikdo z vás, kdo čte tento článek nemá kvalitní redakční systém, ale pokud to tak opravdu je, tak tento systém stojí na nějakém inteligentním frameworku a máte s programováním velké zkušenosti. Pokud to tak není, sami si sáhněte do svědomí, co všechno by se dalo na vašem redakčním systému vylepšit (a myslím, že přijdete na to, že asi úplně všechno).

Další z věcí, podle které můžete poznat snadno písaře je to, v čem vlastně daný kód píše. Ať už má Windows, Linux nebo MAC, písaři v 99% používají nějaký relativně jednoduchý textový editor, který umí zvýrazňovat syntax - často se tedy používá PSPad (český editor, poměrně kvalitní, vyvinutý v Borland Delphi), na MACu se používá Sumblimetext, a na linuxu je těchto editorů spousta, nejznámnější jsou asi Gedit, či mnou oblíbený Kate. Jelikož písařovi aplikace mají "relativně jednoduchou" strukturu, písař nikdy nepotřeboval žádnou inteligentní aplikaci. Čili písař vám řekne, že používá pokročilý textový editor. Opravdový programátor používá tzv. IDE - aplikaci určenou speciálně pro vývoj. Osobně používám na světě asi nejpoužívanější a multiplatformní (čili na všech operačních systémemch dostupné) NetBeans. Celé je to trochu pomalé, resp. náročné na hardware, protože je to psané v Javě, nicméně si bez toho už svoji práci neumím představit. Spousta uživatelů GNU/Linuxu používá také populární IDE jménem Eclipse. Najdou se i různá dobrá (ale placená) IDE, kterých je nepřeberné množství. Každé IDE má stovky, možná tisíce funkcí, ale základní rozdíl mezi IDE a textovým editorem je, že IDE opravdu zdrojovému kódu rozumí, je schopné ho za běhu překládat a hledat chyby v syntaxi. Textový editor umí syntaxi zvýrazňovat podle definovaných klíčových slov, ale ve skutečnosti vlastně zdrojovému kódu vůbec nerozumí.

Proč si některé věci nepsat sám?

V programování, zvláště pak webových aplikací existuje tzv. MVC struktura. Zjednodušeně řečeno je to struktura aplikace, která vám dovolí segmentovat kód do určitých částí, které jsou odděleny. V praxi to tak znamená, že máte stoprocentní přehled o tom, kde který kód je, kde by měl být, co která část aplikace dělá atp.

U písařů je velmi běžné, že existuje v jejich aplikaci jeden hodně velký PHP soubor (u mě se kdysi jmenoval classes.php) který obsahuje úplně všechno. To je samozřejmě špatně a úplně proti logice věci. Pro malý jednoduchý prezentační web s jednoduchou databází, ideálně o jedné tabulce a bez redakčního systému, je to ještě myslitelné, nicméně jakmile je databáze složitější a aplikace má více funkcí než samotná prezentační vrstva stává se to neudržitelné.

Čili MVC struktura je při tvorbě online produktů naprosto zásadní a bez diskuzí je potřeba, od programátora, který neví, co to je, dejte ruce pryč. Druhou naprosto zásadní věcí je framework. Framework můžeme popsat jako předpřipravenou knihovnu nástrojů. Obsahuje funkce, které používá každý web - připojení databáze, práce s daty v databázi, nástroje pro autentizaci, či např. nástroje pro cachování.

Frameworků existuje poměrně velké množství. V ČR je nejpoužívanější framework (za mě bohužel) Nette. Říkám bohužel, protože nejsem o jeho kvalitě zrovna dvakrát přesvědčen. Dle mého názoru se tento framework v téhle zemi ujal jen kvůli tomu, že o něm v češtině vyšla relativně pěkná kniha. Rovnou vám všem klidně řeknu, že knihy o programování v českém jazyce jsou velmi pozadu oproti realitě. Je to vhodné pro studování teorie, ale praxe potom bývá často jiná. Najdete i spoustu dalších frameworků, např. Symphony, Code Igniter, či mnou preferovaný a dle mého názoru nejlepší framework CakePHP.

Proč zrovna CakePHP?

CakePHP má geniálně jednoduché členění. Adresářová struktura je takřka dokonalá. Navíc i každý plugin pro aplikaci, který napíšete má stejnou adresářovou strukturu jako samotná aplikace (akorát je zanořený). CakePHP je strukturovaný tak, že napsat tam nesprávně ošklivý kód je mnohem složitější, než to celé napsat správně. Tento framework také obsahuje velmi pokročilé cachování, které pomůže opravdu velmi účinně snížit výpočetní nároky na server, a tím běh celé aplikace urychluje. Jsou zde též velmi pokročilá bezpečnostní opatření proti všem možným druhům prolomení. Databázová struktura, kterou používá CakePHP je naprosto logická a vychází v podstatě jen z velmi jednoduché angličtiny.

V neposlední řadě musím říct jednu věc. Pokud dělá matematickou práci člověk je pravděpodobné, že ve velkém množství kódu udělá někde chybu. Pokud je možné, co největší množství práce přesunout na počítač, tak víme jistě, že počítač v tom žádnou chybu neudělá, pokud je dobře napsaný program, prostě nemůže. Drtivá většina frameworků se snaží být lehce minimalistická a nutí nás si psát soubory ručně. CakePHP má tu dokonalou vlastnost, že pokud opravdu dobře sestavíte databázový model, je možné pomocí aplikace Bake, která je součástí CakePHP vygenerovat v podstatě kompletní MVC strukturu aplikace (čili na základě kvalitně postavené databáze aplikace vytvoří základní modely, controllery a views). Pak už je jen na vás, jak moc bude vaše aplikace složitá, co vše bude potřeba do aplikace připsat, nicméně ze zkušenosti vím, že toto generování šetří nejen velké množství času, ale hlavně zajistí, že nevznikne nekonečné množství chyb zaviněných lidským faktorem.

ZPĚT

David Rubek - sídlo - Žižkova 346, 273 09 Kladno -Švermov, IČO: 616 39 133, Zapsán u: Magistrát města Kladna / odbor obecní živnostenský úřad. Kladno 272 52, Starosty Pavla 44

Tento web k poskytování služeb, zabezpečení Vašich dat a anlýze návštěvnosti používá soubory cookies. Jeho používáním s tím souhlasíte. Rozumím