Rudolf Pecinovský: Proč nevěřím programátorským samoukům

úterý 22. října 2002 ·

V reakci na můj poslední článek vyjádřilo několik diskutujících názor, že programátoři možná potřeba jsou, ale že talentovaní mladí lidé jsou schopni se vše potřebné naučit sami. Obávám se, že něco takového může tvrdit pouze ten, kdo o programování skoro nic neví.

Potřeba odborného vedení

Pochybuji, že by se kterýkoliv oponující svěřil do rukou chirurga-samouka, který nevystudoval příslušné školy. Lékař však má v daném okamžiku většinou na starosti pouze jediný život, kdežto na správné funkci mnoha klíčových programů závisí v každém okamžiku řada životů. Jak by řekl Jára Cimrman: „Můžeme s tím nesouhlasit, můžeme proti tomu protestovat, ale to je vše, co s tím můžeme dělat.“

Do mých kurzů programování pro dospělé přichází řada takových samouků a přiznám se, že programům mnohých z nich bych nesvěřil ani mikrovlnou troubu. U programování nejde pouze o to, vysvětlit počítači, jak má vyřešit zadanou úlohu, ale je třeba mu to vysvětlit tak, aby toto řešení bylo dostatečně robustní (tj. nehroutilo se), neinterferovalo s ostatními programy v systému (nesmí se stát, že spuštěním jednoho programu nabourám chod jiného) a aby bylo kdykoliv snadno rozšiřitelné, doplnitelné o funkce, na něž se při prvním zadání zapomnělo (kdo se někdy zabýval profesionálním vývojem programů, tak ví, že tato zásada je stejně důležitá, jako předchozí dvě).

Chirurg, jenž se vám chystá vyříznout slepé střevo, také musí dbát na to, aby při svém zákroku nenarušil funkci žádného dalšího orgánu, aby po ukončeném zákroku nenastaly žádné komplikace a aby nijak nesnížil možnost úspěšné realizace případného příštího zákroku (např. operace prostaty).

Stejně jako jsou chirurgové-géniové a chirurgové-patlalové, jsou i programátoři-géniové a programátoři-patlalové. Samouk, který s vydá dobývat svět programování na vlastní pěst, má nezávisle na svém talentu mnohem větší šanci skončit jako programátor-patlal.

Většina uživatelů si stěžuje na malou kvalitu současných programů. Tím více mne udivuje, když se pak někdo v následující větě přimlouvá za to, aby se programátoři učili jako samoukové.


Rozsah vědomostí

V šedesátých letech mohla škola programátorů předat svým svěřencům prakticky veškeré v té době dostupné programátorské znalosti a dovednosti. V sedmdesátých letech, kdy jsem se učil programovat já, se programátor již musel specializovat. Současný objem programátorských znalostí a dovedností je ale tak obludně bezbřehý, že se už specializují nejen odborníci, ale celé katedry a vysoké školy.

Nemá-li začínající adept programování bezhlavě bloudit a těkat, je vhodné, pokud jej někdo vede cestou, která mu umožní optimálním způsobem získat maximum vědomostí a dovedností, jejichž obtížnost je úměrná jeho současným znalostem a schopnostem. Vedoucí musí umět odhadnout schopnosti svých svěřenců a učit je to, co ještě zvládnou a co je přitom co nejrychleji dovede na špičkové pozice mezi programátorskou elitu.


Návyky potřebné ke zvládnutí složitých programů

Obdobné je to i s velikostí a složitostí tehdejších a současných programů. Mají-li být současné programy při své obludnosti dostatečně spolehlivé a kvalitní, musí programátoři poměrně velmi přísně dodržovat zásady, které jsou téměř v antagonistickém rozporu s tím, k čemu tíhne řadový začátečník bez odborného vedení.

To, že nějaký programátor dokáže rychle „vysmahnout“ krásný 200řádkový program, neříká vůbec nic o jeho potenciální úspěšnosti při tvorbě programu s 200 tisíci řádků. Moje zkušenost je právě opačná: ti, kteří vytvářejí kratší programy pomaleji, většinou při vývoji svých programů „ztrácí čas“ dodržováním zásad, které jim později umožní neméně spolehlivě zkonstruovat i program mnohem složitější – program, jehož konstrukce není bez dodržení oněch zásad v vůbec myslitelná.

Jednou z funkcí vedoucího odborných kroužků je maximálně podnítit přirozené schopnosti jeho svěřenců a přitom jim vštípit takové návyky, které jim maximálně pomohou při tvorbě programů jakýchkoliv rozměrů.


Moderní technologie a techniky

Samostatnou kapitolou jsou současné technologie, mezi něž patří např. objektově orientované programování, navrhování programů prostřednictvím vzorů, návrh programů pomocí UML diagramů, refaktoring, extrémní programování a řada dalších obecných dovedností, bez nichž je efektivní vývoj složitějších programů nemyslitelný, avšak většina začátečníků jimi opovrhuje jako něčím, co je při studiu jen zdržuje.

Na druhou stranu existuje řada technik, které jsou plné nejrůznějších úskalí (programování paralelních procesů, tvorba distribuovaných programů, vývoj programů pracujících v reálném čase, webové služby, …), které se bez odborného vedení zvládají jen velice těžko.

Když již víte, o co jde, dokážete při troše snahy najít schůdnou cestu, jak příslušné techniky naučit i děti ve svých kroužcích. Prokousávat se však potřebnou dokumentací bez vodícího světélka je úkol, který běžný samouk nezvládne a ti lepší jej zvládnou jen s největším vypětím.


Kodéři a architekti

Stejně jako nemůže obyčejný zedník postavit mrakodrap, nemůže ani řadový programátor vytvořit složitou aplikaci. Stejně jako ve stavebnictví, i mezi programátory existují architekti, stavbyvedoucí (vedoucí programátoři), zedníci (kodéři) a další profese.

Pro samouka bývá těžké opustit pozici kodéra. Jeho jedinou šancí v postupu bývá objevit v sobě manažerské schopnosti a budovat si kariéru mezi manažery, kteří se vyznají v programování (i ti jsou potřeba a znám několik takových, kteří se posléze vyšplhali na špičkové manažerské pozice).

Mým cílem je již od počátku vychovávat své svěřence tak, aby v případě, že budou chtít zůstat u svého milovaného programování, měli dostatečně kvalitní základ na to, aby ve svém budoucím životě mohli zaujímat místa architektů – on je přeci jenom rozdíl být programátorem (byť špičkovým) s platem od 30 do 60 tisíc a špičkovým architektem s platem od 90 do 150 tisíc (údaje jsou z firmy, pro kterou jsem před rokem pracoval – český průměr je, pravda, o něco nižší, nicméně citelný rozdíl mezi programátorem a architektem je všude).

Paralelně bych jim rád vštěpoval základní manažerské návyky (ty musí mít i architekt), aby jejich budoucí volba byla ještě svobodnější. Tyto návyky a postoje však samouk získává velice těžko a většinou až po letech praxe.


Závěr

Abych nebyl špatně pochopen: netvrdím, že každý programátorský samouk musí být nutně programátor-patlal (ostatně, co si budeme namlouvat – já jsem také samouk, který měl pouze to štěstí, že jej FJFI ČVUT naučila vytáhnout z teoretických pojednání jejich praktický přínos a kterému pak ČSAV umožnila přístup ke špičkovým publikacím oboru). Cesta k programátorským výšinám je však pro samouka nemajícího žádného učitele (trenéra, konzultanta…) neporovnatelně těžší a pravděpodobnost jeho sklouznutí mezi ony patlaly je také mnohem větší.



Rudolf Pecinovský

0 komentářů:

Články dle data



Učitelské listy

Nabídka práce

Česká škola - portál pro ZŠ a SŠ

Česká škola poskytuje svým čtenářům diskusní prostor k vyjádření názorů na školskou problematiku. Tyto příspěvky se nemusí shodovat se stanoviskem redakce České školy a jsou uveřejňovány jako podnět k dalším diskusím.

Obsah článků nemusí vyjadřovat stanovisko redakce nebo vydavatele Albatros Media, a.s.


Všechna práva vyhrazena.

Tento server dodržuje právní předpisy
o ochraně osobních údajů.

ISSN 1213-6018




Licence Creative Commons

Obsah podléhá licenci Creative Commons Uveďte autora-Neužívejte dílo komerčně-Nezasahujte do díla 3.0 Česká republika, pokud není uvedeno jinak nebo nejde-li o tiskové zprávy.



WebArchiv - archiv českého webu



Tyto webové stránky používají k poskytování služeb, personalizaci reklam a analýze návštěvnosti soubory cookie. Informace o tom, jak tyto webové stránky používáte, jsou sdíleny se společností Google. Používáním těchto webových stránek souhlasíte s použitím souborů cookie.