Programování: Srdce by bylo, chybí mozek

Disclaimer: Můj korektor si teď užívá v Maďarsku, takže bych prosil shovívavost.

Možná pozdě, možná brzo dumat nad svou kariérou, ale tahle myšlenka mi začala poslední dobou v hlavě bloumat víc a víc, až jsem si musel z toho ublognout. Nebudu tady hodnotit, jak jsem spokojen s tím, co dělám, ale spíš to bude takové zamyšlení či povzdechnutí nad tím, co dělám a nad tím, co bych doopravdy dělat chtěl.

Jsem zkrátka „ajťák“ jako vyšitý z The IT Crowd nebo z jakékoholi rádoby „ajťáckého“ vtipu. Sedím zkrátka ve sklepě a víceméně se modlím, aby se něco někde neposralo. A když už se někde něco posere, tak holt jdu a opravím to. Prostě „ajťák“. Správce, sysadmin, podpora. Jak chcete. Tuhle roli v koloběhu informačních technologií jsem si vybral protože mě to baví (bavilo, chcete-li). Přicházím tak do styku s hardwarem i softwarem, uděluji své cenné rady a uplatňuji konečně všechny ty tisíce hodin vědomostí, které jsem za ty léta posbíral. Jenže také přicházím do styku s lidmi, kteří tisíce hodin u počítače nestrávili samostudiem a objevováním, ale obyčejnou prací a počítač je pro ně pouhý nástroj. Tady právě začíná ta horší kapitola z mého já, protože jsem od přírody cholerik a introvert. A asi chápete, že mít IT support, který se s vámi nechce bavit a pak vás seřve do ticha, není asi to pravé ořechové, že…

A taky právě (ale nejen) proto jsem vždy ve skrytu duše chtěl být programátorem. Nebo „alespoň“ webdesignerem. Chtěl jsem zkrátka tvořit něco funkčního, něco co pěkně vypadá a co se bude lidem líbit. Probudilo se to ve mně někdy ve 12(?) letech, kdy jsem si zaregistroval prostor na Atlasu, tehdy se to ještě jmenovalo Můjweb, a v poznámkovém bloku jsem utvořil první tabulkový layout, který jsem nazval svými webovými stránkami. Už si upřímně vůbec nepamatuji, jak to vůbec vypadalo a co to mělo tehdy za obsah, ale postupně jsem se učil a učil, až jsem se naučil XHTML a CSS, s čímž jsem začal dělat teprve profesionální weby! To byste koukali! No kdo chce, ať se klidně podívá. A moc se nesmějte, všichni jsme jednou byli mladí a nerozvážní :)

Se značkovacími jazyky jsem si vyžil ještě jakou dobu (inu doteď), ale pořád ve mně byla touha posunout se konečně dál a naučit se alespoň to PHP. Ale ať už jsem se snažil jak jsem chtěl, nikdy jsem nikam pořádně nepokročil. Abych pravdu řekl, nekoupil jsem si žádnou knihu a spoléhal jsem se na výukové seriály více či méně renomovaných IT stránek. Nikdy jsem ale nepřešel přes první formulář, kdy mi buďto došla nálada, čas, nebo jsem to prostě už přestával chápat celkově.

Jak se naučím programovat jsem si plánoval na středoškolská léta. Od druhého ročníku byla každý týden dvojhodinovka programování ve Visual Basicu. Pravda, ne zrovna v jazyce, po kterém bych se já osobně utloukl. Kdybychom se alespoň učili v nějaké nové verzi (.NET), ale my jsme se patlali ve verzi 6, což nás vracelo do roku 1998. Další vadou byla cvičení, která jsme prováděla. Chápu, že asi je nejlepší osahat si všechny funkce na nějakých „hloupých“ příkladech, ale naprogramovat button tak, aby podle stisku tlačítka na myši přebarvovala form, fonty a tlačítko? A šestkrát do roka. Nemluvě o profesorovi, který nám toho upřímně taky moc nevysvětlil. Ovšem i tato hloupá cvičení mi dávala zabrat a leckdy jsem se sám dobral sotva k napůl funkčnímu programu. Kdyby byly na naší škole maturity z IT ještě po staru a my bychom museli 4 hodiny programovat, nevím, jak bych odmaturoval…

Další programovací epizodky přišly a hned zase odešly. Jednou jsem to myslel opravdu vážně a koupil jsem si za tři stovky učebnici pro C. Četl jsem ji se vší vervou, vnímal jsem každý řádek, každý náčrtek jsem do sebe nekompromisně vpil a nechal zapracovat. Nicméně asi tak v polovině knihy se text pomalu měnil na norskou veršovanou pohádku o poníkovi Jagurnovi a zbytek učebnice jsem dočetl spíš už z povinnosti, než že bych se něco přiučil. Knížku jsem pak zavřel, nikdy na ni nesáhl a v C už nikdy nic nenapsal. Das Ende.

Krom této velice seriózně myšlené sebeedukace jsem pak několikrát opět klopýtl o PHP, později o Python a přičichl jsem dokonce i k Ruby. Všechno ale skončilo v prázdnu, kdy jsem to po pár pokusech a neúspěších většinou svedl na nekompetentní výukové materiály a celou mou snahu zahodil.

Mám zkrátka problém v tom, že si sice dokáži představit, jak ten program má fungovat, jak mu mám říct, co má dělat, ale už to nedokáži zformulovat do kódu. Nedokáži to už přenést z hlavy na klávesnici a dál, aby to fungovalo.

Před nějakou dobou jsem začal přemýšlet o Flashi. Má široké využití a když se zabalí do AIRu, tak funguje všude. Ale obávám se (a nejspíš mám pravdu), že to neskončí lépe, jak dříve.

A protože vím, že můj blog čte spousta programátorů, tak bych se chtěl zeptat na to, jak jste začínali vy. Co vás nakoplo, co jste četli, odkud jste se vše naučili, kam nejraději chodíte. Ptám se vás na rady jak začít, kde a s čím.

Chtěl bych za sebou nechat něco pěkného a funkčního. Ne jen shluk několika lidí, kterým jsem nainstaloval ovladače, promazal registry a zrestartoval počítač.

Share
  • http://twitter.com/redhead_cz Radek Ježdík

    Nazdar, nazdar!
    Já začínal stejně u webových stránek a přecházel na php. Stačilo mi opravdu jen články na netu (pro začátek). Na konec jsem si půjčil knihu pro lamy (100 stránek?) a na konec bibli Mistroství PHP 5 (620 stránek?). Bylo taky dost těžké se u toho udržet (když něco nechodilo, jak mělo), ale na druhou stranu, když se něco fakt povedlo, měl jsem z toho hroznou radost a už už jsem chtěl dělat něco novýho. Také podle mě záleží, v čem to píšeš (Pozn. blok vs. chytře napovídající a chyby oznamující IDE jako NetBeans, Eclipse)
    Jinak ti doporučím:
    http://polopate.jakpsatweb.cz/index.php?page=uv…
    http://programujte.com/
    Mám stále knihu PHP pro lamy (můžu půjčit).
    Co se týče jazyků. C/C++ bych pohřbil (sice základ, ale naprosto v dnešní době zbytečný a složitý). Podlě mě jedině C#, Java, Ruby nebo PHP (i toho PHP bych se vzdal, páč ho začínám upřímně nenávidět).
    Good luck :D

  • http://woko.snedl.net/ woko

    Óh, děkuji všemohoucí, hned se na ty linky podívám. Na Programujte.com jsem se učil zrovna Python :)
    Na jednu stranu se chci to PHP naučit, na druhou stranu ho už všichni zatracujou, jakej je to sráč. Uvidim uvidim!

  • Ondřej

    V PHP dělá každej, ale jen málokdo dobře a správně (snažim se najít ten chytrej citát, ze kterýho čerpám). Důležitější než výběr jazyka je naučit se programovat a přemýšlet jako programátor. Až budeš umět to, tak je třeba vybrat správné zbraně. Neobjevovat každej den kolo, ale naučit se pracovat s dobrými frameworky, v dobrym editoru a hlavně se na veřejnosti ohánět programátorskými výrazy, abys zněl víc kůl a in.

    Články na webu často stačí, mě nejvíce osvítil seriál o OOP v PHP5, už bohužel nevím, kde to bylo.

    Jinak za mě můžu zapůjčit knihu Pokročilé programování v PHP5 (min. doba zápůjčky je 28 let). Jestli ji najdu.

  • http://twitter.com/redhead_cz Radek Ježdík

    OOP +1
    Frameworky +1 :)

  • http://twitter.com/mamuf Adam Hošek

    Nevim, jestli mi pomohly knihy. Trochu asi ano, ale spoustu věcí jsem se nějak naučil sám. Vlastně úplně první základy mě naučil kamarád. To bylo ještě na nižším gymplu, mohlo nám být tak 12-13. Sice to byl Quick Basic, ale pochytil jsem základy strukturovaného programování s cykly a podmínkami. Procedury byly tehdy neznámá :-). Pak jsme zkoušeli Visual Basic, měli jsme i nějakou literaturu, ale obecně to za moc nestálo.

    Pak jsem se nějak přimotal k PHP (v té době byla čestvě verze 4, myslím). S PHP mi pomohla kniha od Jirky Koska. Zkrátka učebnice v klasickém stylu. Šmudlal jsem si vlastní stránky a PHP mi pomáhalo zautomatizovat repetitivní úkoly/operace. Později jsem se dostal ke kódu jednoduchého RS, ze kterého jsem okoukal nějaké základní principy modularity a šablonování webovek.

    Pak přišlo C a Učebnice jazyka C od Pavla Herouta. Moc pěkná knížka. V C jsem chvíli cosi šmudlal, ne že by mi to nešlo, ale nakonec z toho nic nebylo. Tak jsem se vrátil zpět k PHP a začal jsem psát vlastní RS. Sice myšlenkovým základem byl stále ten původní RS, ale všechen kód byl můj. Nakonec se to zvrhlo v psaní nových a nových verzí šablonovacího enginu. Jedna z verzí fungovala dokonce tak, že při prvním použití šablony vygenerovala PHP kód, který se uložil na disk, takže nebylo nutné šablonu parsovat neustále znova. Dokonce na jedné z posledních verzí toho RS běží jeden web :-).

    No a pak jsem šel na VŠ a vrhnul se aktivně do Javy, u které dosud zůstávám a posledních pár let mě živí.

  • http://twitter.com/mamuf Adam Hošek

    Tak a teď k Tvému problému :-). Předem napíšu, že si nejsem jistý, jestli je tenhle prostor dostatečný k nějakému ultimátnímu rozřešení. Teda pokud s tím vážně chceš něco dělat a pokusit se někam pohnout.

    Upřímně si myslím, že jestli Tě to nechytlo hned napoprvé, tak buď tahle profese pro Tebe jednoduše není (a na tom není nic špatného), nebo je potřeba se víc snažit. Je to něco jako s hudebním nadáním. Někdo má talent a bez větší námahy zvládá cvičení levou zadní, jiný musí roky dřít, aby perfektně zahrál světoznámou skladbu.

    Jestliže si umíš dobře představit, jak má program fungovat, jak má vypadat abstrakce problému a jeho řešení, určitě jsi na dobré cestě. Jestliže to neumíš převést do kódu, bude tam někde mezera mezi abstrakcí myšlenkovou a strojovou. Třeba jsi jen zatím nepochopil některé praktiky/metody programování. Já sám spoustu věcí zatím neznám, nebo je znám jen okrajově. To platí hlavně pro OOP a další hustodémoviny (funkcionální programování snad ani nezmiňuju, s tím se běžný smrtelník asi nesetká ;-)).

    No, jestli můžu doporučit nějakou chytrou literaturu, UJC od Herouta a knihy od Rudolfa Pecinovského (OOP/Java) jsou výborné učebnice nejen programování, ale především myšlení. Někdo jiný by určitě doporučil kvalitní literaturu k Pythonu či Ruby. Když nepomáhají knihy, tak pořád zbývá ještě jedna možnost. Číst cizí kód (samozřejmě rozumné kvality, ne od teenagera patlajícího webovky v PHP za litr ve stodole ;-)).

    Mj. kdyby ses nudil, klidně zavítej třeba na kanál ##java.cz na freenode (opravdu 2x #). Poflakuje se tam pár nerdů včetně mě a s programováním Ti určitě někdo poradí.

  • http://woko.snedl.net/ woko

    Děkuji za obsáhlou reakci! Já mám právě problém v tom, že když mi něco nejde z fleku, tak se na to hned většinou vyseru a už na to nesahnu. Jak si zmiňoval tady hudební nadání, tak já mám hroznou touhu hrát na kytaru jak mistr světa, ale jsem doteď rád, když si zahraju nějakou metalovou békanici, u které není tolik poznat, když to mrvim.

    Stejnej blok mám právě i s učením se z internetu. Když jsem chtěl začít programovat, tak jsem vše četl na netu, ale protože mi to nešlo, vinil jsem z toho právě tuhle moji neschopnost číst „e-booky“. Musel jsem si tedy koupit knihu, kterou jsem celou přelouskal jedním dechem, ale chybí mi jakékoli programovací základy. Ty totiž začínají a končí u if/then/else a podobných, pro vás jistě, směšných prvků :) Nějaké funkce a cykly, to je pro mě strašný tajemství.

    Děkuji nicméně za rady s literaturou, pokud se k tomu již skutečně rozhoupu, tak se budu dívat po nich.

  • http://twitter.com/mamuf Adam Hošek

    Aha. Tak teď mám o něco lepší představu, na čem jsi. Jestli zatím nedáváš ani cykly, bude to chtít jít zpět na začátek. Jen mě teď z hlavy nenapadá nic, co by udeřilo hřebíček do hlavičky. Teda kromě standardních učebnic, kde tyhle věci prostě nějak vysvětlují a ukazují na příkladech. Nebo klidně něco jako osobní session. Na druhou stranu by Tě to „mohli“ naučit na FITu (teda jestli tam jdeš:)).

  • http://woko.snedl.net/ woko

    Jako dobře, dowhile a podobný bych ještě vymyslel, ale to už bude asi fakt vrchol :) Na FIT nejdu, i když si myslim, že bych se to tam naučil, protože bych „musel“ :) Ale bohvie. Z těch mejch studií C jsem se třeba perfektně naučil díky tý učebnici, jak fungujou ukazatele. Sice jsem to v životě nepoužil, ale když jsem to konečně pochopil, tak mi bylo štěstím do pláče.

    Mě zkrátka nebaví v pátý lekci nějakýho kurzu ještě vypisovat proměnný, ale další věci mi zase unikaj, protože to neznám. Musim to holt chytit za správnej konec.

  • http://twitter.com/mamuf Adam Hošek

    Jasně, to máme podobný. Proto mi třeba na střední děsně lezlo na nervy, když jsme na nově vyloženou látku počítali deset příkladů. Mně stačily bohatě tak tři, pak jsem se nudil :-D. V tomhle je hodně dobrá kniha Myslíme objektově v jazyce Java 5.0 od Pecinovského. Od začátku velice pěkně vykládá OOP a nezatěžuje čtenáře tím, jak se píše cyklus nebo metoda. Prostě vysvětluje podstatu. Sice to ukazuje na Javě a cvičení jsou javovské programy, ale i ty samy o sobě jsou v podstatě zábavné. Nějaké programovací podrobnosti vysvětluje až později. Tohle samozřejmě nestačí, nějaký základ strukturovaného programování se člověk musí naučit taky, ale není to jak klasické učebnice: proměnná – if – cyklus – I/O – jo a taky umíme ty objekty :-))).

  • http://www.facebook.com/jonas.petrovsky Jonáš Petrovský

    Já jsem chtěl udělat dynamický web, tak jsem si koupil knížku PHP a MySQL bez předchozích znalostí a postupoval kapitolu po kapitole. Ze začátku jsem to teda moc nechápal, ale nakonec jsem se naučil základy php a mysql databáze.

    Pak jsem zakoupil PHP 5 a MySQL 5 Hotová řešení, protože jsem ještě moc nevěděl, jak ty znalosti přenést do praxe. Díky této publikaci jsem pochopil například princip redakčního systému a od té doby si vesele tvořím webové aplikace :).

    Nějaké pokročilé techniky moc neumím (OPP atd.), ale ani mě to moc netrápí, protože s čím si člověk neví rady, to většinou najde na netu (někdo to už určitě řešil předtím). Někdo se to klidně naučí na internetu, ale pro mě jsou knihy základ. Tak asi takhle.

    P.S.: HTML a CSS jsem se samozřejmě „naučil“ nejdřív, tím asi začíná každý.

  • http://twitter.com/mamuf Adam Hošek

    Narazil jsem na tenhle článek, třeba taky pomůže http://talkbinary.com/articles/10-reasons-why-people-initially-suck-at-programming/ :-)

  • http://almad.nejsem.in/ Almad

    Já bych jako úvodní knihu možná doporučil Learn Python The Hard Way @ http://learnpythonthehardway.org/index

    IMHO je to dobře napsaný. Autor má koule a nesere se s tim. De to postupně. De to programovánim. Ale ano, je to pro lidi se srdcem, ne pro lidi co vymýšlí, jestli má cenu flash, protože v airu funguje všude. Jakmile se totiž naučíš programovat, je to jedno ,)