Potřebuje programátor vysokou školu?

2008-04-20 21:40 napsal Lukáš Havrlant

Nedávno jsme se zase na diskusi chytli, jakou vysokou školu pro programátora a samozřejmě jsme sklouzli i k tomu, jestli má vůbec VŠ smysl. Takže jak to je?

Já sám studuji první ročník aplikované informatiky na UPOLu. Loni jsem studoval první ročník informatiky na téže škole, ale bylo tam na můj vkus až moc detailní matematiky. Zkrátka mi stačil jeden semestr algebry a analýzy a věděl jsem, že tenhle obor nebude to pravé ořechové. Od hodně lidí už jsem slyšel, že VŠ člověka nenaučí programovat. Student získá patřičný rozhled, přičuchne k věcem, ke kterým by se jinak možná ani nedostal, ale programovat se prý nenaučí. Tímto vysílám otázku na ty, kteří už nějakou VŠ obor informatika mají za sebou – myslíte si, že vás škola naučila programovat?

Já sám si myslím, že mě škola učí programovat. Alespoň ta má. Hned na začátek tady vlepím seznam všech povinných a většiny volitelných předmětů, které mě za tři roky na bakalářském studiu potkají.

1. semetr:
– Algoritmická matematika (metody třídění)
– Informatická propedeutika (takové ty obecné znalosti – co je to http, připojení na vzdálenou plochu, ssh, základy linuxu, …)
– Paradigmata programování (funkcionální programování)
– Softwarová laboratoř (základy C)
– Úvod do informatiky (matika)

2. semestr:
– Matematika (algebra)
– Algoritmická matematika (metody vyhledávání)
– Paradigmata programování (OOP)
– Softwarová laboratoř (pokročilejší věci v C)
– Struktura počítačů (dvojková soustava, ASCII, Procesory, …)
(a jeden dobrý béčkový)
– Software pro matematiky (MatLab nebo Maple)

3. semestr:
– Matematika (analýza)
– Algoritmická matematika (teorie grafu)
– Formální jazyky a automaty
– Informatická propedeutika (TeX)
– Paradigmata programování (asi makra nebo dál OOP)
– Projektový seminář (samostatný projekt, kód)
– Softwarová laboratoř (C++ OOP)

4. semestr
– Matematika (analytika)
– Operační systémy (assembler)
– Projektový seminář (GUI)
– Softwarová laboratoř (dál C++)
(zde uvedu i béčkové předměty, je jich dost a jsou celkem zajímavé)
– Algoritmická matematika (dál teorie grafu)
– Matematická logika
– Paradigmata programování (paralelní programování)
– Jazyk C# (prostě cé kanál v .NET)

5. semestr
– Databázové systémy
– Informatická propedeutika (teoretická příprava na bakalářku, aneb jak ji napsat tak, aby se z toho pan docent nepozvracel)
– Operační systémy (pokračování)
– Počítačové sítě
– Projektový seminář (bakalářka)
– Vyčíslitelnost a složitost (náročnost algoritmů)
(výběr zajímavých béčkových předmětů)
– Metody vývoje softwaru („Předmět Metody vývoje softwaru se věnuje implementaci a nasazení informačních systémů ve větších společnostech, kde se klade důraz na přenostitelnost, interoperabilitu a integrovatelnost. Cílem je přiblížit architektury stávajících systémů založených na platformách Java, J2EE a SOA a připravit studenty do praxe v oboru.“)
– Programování v Common Lispu
– Platforma .NET
– Úvod do informačních technologií („Předmět uvádí do problematiky vytváření a provozu informačních systémů. Přibližuje dovednosti a činnosti nezbytné pro úspěšné vytvoření a dlouhodobě efektivní provozování informačního systému s vysokou přidanou hodnotou. Předmět je určen zejména posluchačům bakalářského oboru Informatika. Výuka bude vedena odbornými lektory firmy IBM.“)

6. semestr
– Bakalářská práce
– Informační systémy (XHTML, XML, CSS, PHP, apache, …)
– Projektový seminář (bakalářka)
– Algoritmizace a programování („Datové struktury, algoritmy (třídění, vyhledávání, grafové algoritmy), paradigmata programování (procedurální, funkcionální, logické, objektové, paralelní).“ – tenhle předmět nechápu, možná to má být opáčko)
– Informační technologie („Databázové a informační systémy, softwarové inženýrství, počítačové sítě, softwarové inženýrství, základy počítačů.“)
– Matematické metody („Algebra, lineární algebra, geometrie, matematická analýza, numerické metody, pravděpodobnost a statistika.“ – taky opakování)
– Teoretické základy informatiky
(všechny béčkové)
– Lineární programování
– Grafové algoritmy
– Počítačová geometrie
– Softwarové inženýrství („Předmět je úvodem do softwarového inženýrství. Jeho záměrem je seznámit posluchače s postupy a technikami, které se používají při tvorbě a údržbě softwarových aplikací.“)
– Softwarová praxe („Cílem předmětu Softwarová praxe je předvést instalaci a práci s operačním systémem a uživatelskými i serverovými aplikacemi na bázi svobodného softwaru. Studenti budou seznámeni se strukturou a možnostmi operačního systému Linux, jeho konfigurací, nastavením sítě, síťovými službami (http, ftp, DHCP, DNS, CUPS, Samba, LDAP, SQL,…) i uživatelským prostředím. Absolvent předmětu by měl získat přehled o problematice správy Linuxu a v něm nejčastěji používaných služeb.“)
– Extrémní programování

Tak, to je všechno. Teď zkusím shrnout, kde všude se střetnu s programováním.

Hned v prvním semestru máme tři předměty, ve kterých programujeme. V softlabu se učíme C; prakticky výhradně syntax s občasnými zmíňkami o tom, jak by céčkový kód měl vypadat, aby se tomu dalo říkat céčkový kód. V algoritmice potom programujeme algoritmy třídění – bubblesort, quicksort,… Asi nic extra užitečného, ale zase se u toho docela naučíme myslet. Ono přepsat quicksort nebo heapsort z teoretického zadání ve skriptech do C není zase tak jednoduché. Nejzajímavější předmět jsou potom Paradigmata programování. Tady se vyloženě „učíme programovat“. Výuka v prvním semestru probíhá ve Schemu, což je dialekt Lispu a je to více méně funkcionální jazyk. A je strašně pěkný :-). Sice v něm nic moc praktického nevytvoříte, ale má jednoduchou syntaxi a je to zkrátka nejlepší programovací jazyk na výuku, jaký jsem zatím viděl. V tomhle předmětu do nás rvou obecné zásady programování a kromě toho se seznámíme s funkcionálním paradigma, což taky není k zahození.

Druhý semestr probíhá podobně, v softlabu bereme dál C, v algoritmice binární, AVL a B stromy (to je taky hezké procvičení programování) a v Paradigmatech už máme OOP v Lispu. Ono je možná trochu zvláštní, učit se OOP v jazyku, který se skoro nepoužívá, ale má to své nesporné výhody. Lisp má strašně jednoduchou syntax a tak se málokdy stává, že přemýšlíte, jak to či ono napsat. Když máme cvičení z PP, tak zkrátka vyloženě řeším OOP věci. Kdybychom se základy OOP učili třeba v C++, strávím polovinu času nad pointrama a výuka OOP jde do háje. Bývalá spolužačka (která nikdy předtím neprogramovala) třeba měla na výšce Pascal a asi po pěti týdnech začali brát OOP. Jen co se rozkoukali, tak už do nich házeli objekty a spolužačka se mezitím ztrácela v samotné syntaxi. Nepřijde mi to jako šťastné řešení.

Další ročníky už tak neznám, protože jsem je ještě neabsolvoval :-). Ale z doslechu od druháků/třeťáků: V Softwarové laboratoři se začne brát OOP prakticky v C++, v paradigmatech myslím makra. Důležitější je ale projekt – přes celý druhák máme rozplánovaný projekt, což je nějaký větší program typu šachy nebo dáma. První semestr se řeší samotný kód a druhý semestr GUI. Dobré na těhle projektech je, že nejste vázání jazykem – můžete si zvolit jaký jazyk chcete. Takže kromě obligátních C++, C#, Javy apod. tam můžete najít i projekty v Ruby nebo v Lispu. Jediné omezení je, že „výuka“ probíhá z části formou konzultací, takže byste si měli zvolit takový jazyk, který alespoň někdo z katedry ovládá. Já sám jsem třeba uvažoval o Lispu, protože to je opravdu hezký jazyk, ale do budoucna bude lepší, když to udělám v nějakém normálním jazyce.

Třetí ročník už je v podstatě obdoba druhého, akorát místo projektu děláte bakalářskou práci. Takže pokud to vemu kolem a koukolem, programováním strávím na VŠ opravdu hodně času; nemám zrovna pocit, že by mě tam neučili programovat. Za sebe mohu říci, že vyučující u nás jsou skvělí a neučí nás nějaké kraviny. Kromě toho i ostatní „neprogramátorské“ předměty mi přijdou docela zajímavé. Prakticky všechny předměty, které na aplikované informatice máme, jsou zábavnější než algebry a matalýzy… :-)

Nemyslím si, že by škola byla na prd, mně třeba dává docela dost. I samotní vyučující říkají, že absolventi naši univerzity vždy najdou do pár týdnů uplatnění, takže ta škola nebude úplně na nic. Nehledě na to, že se na VŠ učí věci, které bych se sám ze skript učit nechtěl (teorie grafu, například). Ale samozřejmě nijak nepopírám, že za pomoci moudrých knih a moře pokusů se lze naučit programovat stejně dobře či lépe.

Já hlasuji pro VŠ – už z toho důvodu, že sám bych se programovat nedonutil naučit. A i když jsem se donutil, tak to dopadlo špatně. Jaj, kolikrát já jsem se začal učit OOP… :-) Programátor VŠ nepotřebuje, ale hodí se.

Linkuj.cz!

Komentáře

# p
20. April 2008, 22:38

„Student získá patřičný rozhled…“ – a o to přece jde především. Nejen u programátorů. V jakémkoliv oboru.

20. April 2008, 22:53

Nepotřebuje. Potřebuje novinář vystudovat žurnalistiku? Nepotřebuje, resp. naučí se řemeslo dříve a lépe, když nastoupí do regionálního deníku hned po maturitě.

Pokud má však člověk větší ambice, než pouze dobře zvládnout řemeslo, VŠ mu má co nabídnout. I programátorovi.

Hlavní přínos studia na VŠ obecně vidím v možnosti přijít do styku se zkušenějšími, a oproti jiným méně pružným výukovým platformám (rozuměj knížkám) především v šanci ptát se na to, co mě zajímá.

V čem je profese programátora specifická (vzhledem k tématu)? Internet a další moderní komunikační kanály úžasně usnadňují kontakty se zkušenějšími (a jejich prací). A lidé v oboru IT oproti jiným oborům toho umí a z toho můžou prozatím dalece nejvíce těžit.

20. April 2008, 22:58

Je-li pro tebe lambda kalkul a jeho varianty nesmyslem, tak k tomu rozhledu ještě mnoho chybí :-)

Řekl thingwath v době, kdy ještě ona věta v článku byla. —admin—

20. April 2008, 23:04

3. thingwath: Však taky studuju teprve první ročník :-).

# Krl
21. April 2008, 00:22

Jsou to „řadící“ algoritmy, nikoliv „třídící“ :)

# Nick
21. April 2008, 00:45

Jak jiz psali jini, VS urcite neni k zahozeni. Spoustu veci bych se mohl naucit z knizek, ale trvalo by mi to nesrovnatelne delsi dobu. Na VS mam navic namichanych hned nekolik predmetu, na ktere bych pri studovani knizek vubec nenarazil. Ono totiz umet syntax jazyka C jeste neznamena, ze umim programovat v C, jak si nekteri „programatori“ mysli ;-) Ve vypisu predmetu me trosku prekvapila linearni algebra az ve tretaku. Na FELu ji mame hned v prvnim semestru. Mam obor softwarove technologie a management, ze zamerenim softwarove inzenyrstvi a zatim spokojenost – urcite si nemyslim, ze bych se bez VS obesel (nechci-li byt pouhy datlovac kodu).

21. April 2008, 01:18

Je potreba rozlisovat dve veci,

  1. kodovani
  2. programovani

Kodovat te skola opravdu nenauci. Sice se tady ohanis vecmi jako C,C++,Java, ale o tom programovani opravdu neni. To se nauci kazdy trosku chytry clovek za min, nez mesic. A ano, abyses stal koderem opravdu VS nepotrebujes.

Programovani je uz trochu neco jineho. VS samozrejme take bezpodminecne nepotrebujes, ale ulehci mnoho veci – dostanes pristup ke kvalitnim a spickovym lidem v oboru, konzultacim zdarma, za ktere jinak normalne musis platit spousty penez, moznost podilet se na unikatnich projektech a grantech a kdyz se nechas, tak ti vetsinou ukazou ten spravny smer, ktery sam najdes jen velmi tezko a pomaleji.

Zalezi, cim chces byt. Pokud koderem, tak se na VS vykasli a jdi do praxe psat tela funkci k jiz hotovym hlavickam. Ty totiz vymysleji programatori za pouziti tebou opovrhovane vyssi matematiky a lambda kalkulu, statistiky a spousty dalsich veci.

Tolik muj nazor na vec.

21. April 2008, 07:13

6. Nick: 2. semestr – Matematika (algebra). Je to právě lineární algebra (matice, determinanty, soustavy rovnic, vektorové prostory).

7. Bruinee: Já to nemyslel ani tak, že to je k ničemu, ale že je to pro mě nicneříkající a pro mě čert-ví-k-čemu-to-je předmět. Radši jsem tu větu vyhodil, ať to nikoho nedráždí.

# Kamil
21. April 2008, 08:05

Jsem programátor a vysokou jsem si dodělával až dálkově, takže to hodnotím z jiného úhlu.
Za sebe můžu říct, že ty „klasické programovací předměty“ byly pro mě sice nejjednodušší, ale naprosto k ničemu. Daleko více mi dala například matematika (i když jsem s ní měl těžké problémy) a speciality typu Real-Time OS, paralelní programování apod. To sice zase v praxi moc neužiju, ale bylo to zajímavé a člověk se naučí dívat na věci z jiného úhlu.
To „klasické“ programování má strašně malou životnost (jazyky se pořád mění (snad vyjma C/C++)). Základy matematiky se neměnily už pěkně dlouho a patří do „top ten“, co na takové škole můžeš získat.

21. April 2008, 08:15

9. Kamil:

To „klasické“ programování má strašně malou životnost (jazyky se pořád mění (snad vyjma C/C++))

Právě proto je fajn, že se u nás neklade důraz na jeden programovací jazyk, ale snaží se nás opravdu naučit programovat ve smyslu naučit myslet. K tomu se právě hodí ten Lisp – je to jazyk, který je dobře ohýbatelný a má jednoduchou syntaxi, takže člověk většinou přemýšlí stylem „jak by ten algoritmus mohl vypadat“, ne stylem „kruciš, kam mi zase ukazuje ten pointer“.

# um.Trip
21. April 2008, 08:48

6. Nick: Tak na tvém komentáři je přesně vidět, že jsi ještě nikdy nepracoval v praxi. V jednom z mých zaměstnání jsem spolupracoval s analytikem, který neměl ani maturitu a žádný „datlovač kódu“ to rozhodně nebyl.

Jinak vysokou školu jsem nestudoval, na střední škole mě učil programování člověk, který také vysokou školu nestudoval a myslím si, že to není výraznější problém. V současnosti je IT dynamický obor s velkým přebydkem nabídky. Problém asi nastane až se situace na trhu ustálí a od každého uchazeče o práci se bude vyžadovat vysokoškolský titul.

# Jindra
21. April 2008, 09:23

Najdi si co nejdriv aspon vedlejsak v oboru. Uplatnit v rpaci do pul roku to co jsi se naucil ve skole (nebo naopak) je nejlepsi skola a zaroven ziskas teoretickej prehled ze skoly a donuti te podivat se na uricity veci mimo tvoji specializaci, ktery se ti muzou hodit.
Samozrejmosti je nasbirani kontaktu a praxe v „social skills“ – naucis se k lidem chovat jinak a pracovat v teamu (vetsinou nespolupracujicich) – a to vsechno se ti bude hodit v budoucnu :-)

21. April 2008, 09:48

Krátce. Nepotřebuje.

# vv
21. April 2008, 10:05

Programatorem se clovek musi narodit a iniciaci by mel projit asi driv nez na VS.
IMHO tedy nepotrebuje, ale jiste je, ze VS prospeje kazdemu. :)

# ToM
21. April 2008, 10:38

Dle meho programator vysokou potrebuje. Urcite kvuli rozhledu ( pravdou ovsem je, ze tedy nektere predmety bych radsi z meho rozhledu vynechal:) ) a take kvuli tomu, ze jste kazdou chvili pred problemem, ktery musite resit a vice mene vam v tom nikdo jiny, nez vy sam, nepomuze. Tzn. ne jak na stredni skole, ze se vam da vsechno pod nos, ale musite hledat reseni, zkouset, zase hledat, az se nekam dostanete. Jinak je dulezite take narazit na ty spravne lidi( tim myslim kantory ). A bezpochyby je take dulezite pri skole mit nejakej vedlejsak ve firme, jinak vas potom malokde vezmou. Protoze jak kazdy vi, ve skole vas fakt programovat nenauci:)

21. April 2008, 11:06

Jsem bakalář aplikované informatiky MUNI, takže můžu s klidem konstatovat, že naše informatika tě programovat nenaučí, pokud sám nechceš.

Rozvrh si každý sestavujeme sami a když pominu pár povinných předmětů, kde jsme čuchli k základům haskelu/prolo­gu/javy, tak se dá programování obstojně vyhnout – teoreticky až do konce magistra.. ale všeobecný rozhled – to je jiná – ten mi zase škola dala obstojný. Vím TEORETICKY o tolika věcech, které rozhodně nechci dělat, že jsem si to předtím ani nedokázal představit :-)

# Honza
21. April 2008, 11:23

Programování je záležitost specifického způsobu myšlení se kterým se člověk rodí. Kdo programátorské myšlení od přírody nemá, nezíská ho na žádné VŠ ani nikde jinde. Člověk, který alespoň trochu logicky uvažuje, se na VŠ může naučit kodeřině – tedy naučí syntaxi jazyka, jak kombinovat různé funkce, knihovny, naučí se základní algoritmy a bez problémů najde uplatnění v praxi, zvláště když dnes s .NETem a Javou není třeba umět programovat. Ale pro programátora je VŠ spíše ztráta času, kterou by měl věnovat rozvíjení svých schopností praktickým programováním. Neříkám, že se tam nenaučí pár užitečných věcí a nezíská rozhled, ale v době internetu se může dostat ke kvalitním informacím i jinde, bez toho že by se musel učit to co nechce nebo nepotřebuje a hlavně bez nějakých stresů ze zkoušek, atd. Především jde o to, že pro programátora není důležité znát dejme tomu nějaké teorie grafů a podobné srandy a ani nepotřebuje znát algoritmy na jejich procházení. Být programátor a umět programovat znamená mít schopnost tyhle a další problémy vyřešit a přijít na co nejefektivnější algoritmy jejich řešení.

# Jan Kodera
21. April 2008, 11:47

No na vysoke se naucite myslet. Vetsinou ty problemy, ktere vam predhazuji vas nuti myslet a to je nejvetsi deviza, kterou si ze skoly odnesete.

Rozhled je take dulezity. Tim se odlisite od stredoskolaku velmi vyrazne. A obcas vam rozhled umozni resit problem efektivne.

Proste rozdil stredoskolak s praxi a vysokoskolak bez praxe je obrovsky. Vysokoskolak se behem 1 roku dostane na uroven stredoskolaka a muze rust vesele dal. Tady neni o cem diskutovat.

# Miroslav Suchý
21. April 2008, 12:12

Vám tam přijde až moc detailní matematiky?
Tak po pořadě:

  • bez Algebry si v současné kryptografii ani neškrtnente (SSL apod.)
  • Formální jazyky a automaty – bez toho nenaprogramujete překladač a ani různé automaty.
  • Vyčíslitelnost a složitost – zjistíte, že to co rychle naprogramujete se pak může počítat věky. A že čas a paměť je to samé.
  • Matematická logika – verifikace programu (např. obrané systémy, ovládání jaderné elektrárny)
  • linearní algebra, matematicka analyza, geometricke algoritmy – bez toho budete tezko vykreslovat grafiku a tvorit pocitacove hry.
  • grafove algoritmy – hodí se tam kde to necekate. Energetika, vodarny, logitstika…

Jestli chcete celý život programovat v JavaScriptu nejake efekty pro web, tak VS rozhodne nepotrebujete.
Pokud chcete delat SW pro letadla, do tovaren. Ovladani automobilu. Tvorit hry nebo OS. Tak VS potrebujete.

Zkratka matematika je jenom zamaskovane programovani, protoze vas nauci algoritmicke postupy, ktere v praxi jako kdyz najdete.

21. April 2008, 12:18

19. Miroslav Suchý: V tomto výčtu ne, moc detailní matematiky mi přišlo v informatice, kdežto tenhle výčet byla aplikovaná informatika. V normální informatice jsou navíc minimálně 3 semestry algebry a 3 semestry analýzy. Určitě i další předměty, ale už si je nepamatuji.

Tenhle výčet předmětů mi přijde právě tak akorát.

# Jarda
21. April 2008, 12:40

no VŠ tě nic moc konkrétního nenaučí, to až praxe. VŠ je jen teoretický úvod do oboru a k tomu plno jiných obecných předmětů moc nesouvisejících s předmětem studia.

Těžko říct, nakolik je to všechno k něčemu, ale minimálně to rozšíří obecný technický rozhled o věci, které by jsi jinak přešel a dostaneš se mezi komunitu podobně smýšlejících lidí na fulltime. A to už za to stojí.

# Ondra
21. April 2008, 12:40

Osobně si myslím, že se tu opomíjí jeden důležitý fakt. Záleží, jakou školu studujete. Mám za sebou Bc. a teď jsem těsně před dokončením (doufám, že úspěšným :)) Ing. a mohu říci, že mě škola rozhodně programovat nenaučila. Je taky otázkou, jestli to je její úkol. Osobně si myslím, že tohle vás nemá učit škola, ale v první řadě musíte mít sám zájem. Pokud vás to nebude bavit tak ani sebelepší škola z vás programátora neudělá. Na druhou stranu mi dala škola čas dospět a získat rozhled, což je dle mého nmázoru daleko nejdůležitější věc. Pokud tady čtu skladbu vašich předmětů, tak spousta z nich je opravdu skvělá (pro mne) a mrzí mne, že to takhle na naší škole nefunguje.

21. April 2008, 14:58

Jak už tu padlo, stejně jako není nezbytné mít vystudovanou žurnalistiku, aby byl člověk dobrým novinářem, tak není nutné mít VŠ, aby byl člověk dobrým programátorem. Nicméně ta VŠ (patřičného zaměření a kvality) člověku dá spoustu věcí, které se k tomu prostě hodí.

Za sebe můžu říct, že mě VŠ programovat naučila. Ať už všechny ty základní algoritmy, od bubblesortu po bitmapové transformační matice; nebo uvažovat nad postupy a pracovat automaticky se složitostmi algoritmů; programovat abstraktně, pracovat třeba na papíře se stavovými stroji – a taky všechno to související teoretické vyfutrování, které člověk zdánlivě nepotřebuje, ale ve skutečnosti se bez toho někdy jen těžko obejde – diskrétní matika (především pro odhady výpočtů a výsledků), analýza (matematické řešení problémů), lineární algebra (pole, vektory, matice; zvlášť grafika je bez toho nemyslitelná), analytická i deskriptivní geometrie (spousta praktických aplikací), pravděpodobnost a statistika (bez komentáře) atd…

Konkrétní programovací jazyk nebo postupy pro správu databáze se člověk naučí rychle kdykoli. Ale ty základy jsou na jazycích a vývojových prostředích nezávislé a imho se bez nich nedá obejít. Jistě, všechno se dá naučit svépomocí, ale specializovaná VŠ je rozhodně výhodou, ať si říká kdo chce, co chce. U výběrového řízení bych dal (až na extrémní výjimky) rozhodně přednost vysokoškolákovi před samoukem. Ale pozor: postačující podmínka to rozhodně není…

21. April 2008, 15:52

17. Honza: Tak s tou teorií grafů ses zrovna docela nehezky seknul, protože myslim, že je to jedna z věcí, které jsou naprosto zásadní. A i ostatní ;)

Mějme logistický problém v PHP webové praxi: Máš shop a v něm je potřeba řešit, od kterého dodavatele se bude objednávat. Statistikou zjistis jak moc casto a co lide objednavaji (a neni to jen seznam setrideny podle objednanych ks sestupne), podle toho můžeš třeba snížit fixní náklady (cenu dopravy) na objednání x-kusů, dále máš sklad – musíš se rozhodnout, jestli se ti vyplatí doručit si do skladu víc než potřebuješ a taky jestli (máš třeba dva sklady) do jednoho a nebo půl napůl. Typickou implementací teorie grafů je menu s neomezeným počtem úrovní (klasický problém shopu) jasně, že když si přečšteš tutorial jak dělat tree-traversal, tak to nějak zbaastlíš, ale s teorií grafů to jsi skoro schopný vymyslet sám. A když ne, tak aspoň chápeš co děláš :) A podobných příkladů by se dalo vymyslet stovky a stovky ;)

# Marek
21. April 2008, 17:02
  1. Imho je treba rozlisovat programatora-delnika, programatora-analytika a programatora-projektoveho vedouciho. Vyuzitelnost rozhledu ziskaneho na VS pak roste umerne s narocnosti pozice.
  2. Pro „hardcore“ programovani je matematicky aparat nezbytnosti. Skola ale vetsinou neni o low-level programovani, ale o rozhledu, souvislostech – osobne jsem prisel do styku se spoustou zajimavych veci okolo rizeni projektu, ale to je samozrejme odvisle od VS.
  3. Jinak co se obvyklych odpovedi tyce, clovek s VS rekne, ze „se hodi“, clovek bez ni, ze „se bez ni obejde“ – otazkou zustava, kolik takovych uvnitr lituje, ze z toho ci onoho duvodu nedostudovali a spise se snazi se sami pred sebou omluvit.
21. April 2008, 21:25

25. Marek: ad 3 – osobně jsem nedostudoval do konce, a nevadí mi to. Zcela úmyslně jsem nechtěl mluvit o otázce existence toho razítka „ukončené VŠ“ a diplomů a titulů. Mně to nikdy nechybělo a nechybělo to u mě ani žádnému zaměstnavateli. Ale těch mnoho let strávených na škole (a na koleji ve společnosti podobně postižených) bylo k nezaplacení i bez toho diplomu. Nejde ani tak o vystudování VŠ, ale o to studium samotné.

# Honza
22. April 2008, 11:02

24. Tomáš Fejfar: Tu teorii grafů jsem vybral schválně, protože z toho spousta lidí (hlavně na těch VŠ) dělá zbytečně vědu. Myslím si že takové případy z praxe by měl programátor umět dokázat vyřešit sám, aniž by tušil, že existuje nějaká teorie grafů nebo teoretické postupy jak se dělá tree-traversal, apod. Vysoká škola má v tomhle zásadní nevýhodu, a to že vám tam prozradí všechny ty postupy a algoritmy řešení. Jak malé děcko vás za ručičku provedou od těch nejjednodužších algoritmů na třídění polí až po řešení poměrně složitých úloh. A v praxi je to pak děs a bída, spousta programátorů s titulem nedokáže přemýšlet a řešit problémy, které se na škole neučili řešit. Zvláště pokud jde o problémy složitější nebo jiné, než ty co se učili na VŠ. A není to o tom, že by na to neměli. Jen nejsou zvyklí řešit ani ty základní problémy a neumí sami vymyslet třeba ani primitivní bubble sort podle české abecedy. Kdo si hold samostatně neprošel vývojem od těch jednoduchých úloh po ty složité, těžko bude z fleku vymýšlet řešení opravdu těžkých úloh.

Ale abych nemluvil jen proti VŠ, minimálně jedna dobrá věc se na VŠ učí, a to sjednocené názvosloví. Ono se pak líp spolupracuje a vysvětluje, když člověk dokáže jednoznačně pojmenovat ty věci co naprogramoval nebo které vymýšlí, než ty algoritmy složitě vysvětlovat neodbornou češtinou.

VŠ titul se může hodit vždycky. U programátora ale není nutné, aby to byl titul z informatiky. Naopak si myslím že nikdo neprohloupí, pokud si vybere nějaký nenáročný obor u kterého bude mít čas rozvíjet své programátorské schopnosti.

22. April 2008, 19:36

Čím dál víc se bude outsourcovat a programátoři s VŠ i bez ní se budou potkávat na pracáku :)

# Miloslav Ponkrác
23. April 2008, 22:37

Osobně si myslím, že dobrý programátor školu ocení, a to moc. Sám jako programátor s 15 letou praxí mohu říci, že vysoká škola byla pro mě výborná věc.

Ano, kódovat se dá naučit i v praxi, ale k dobrému programátorovi je cesta daleko delší. Je třeba znát základy algoritmizace, hodí se výborné základy matematiky, včetně dalších věcí.

Pokud chcete být programátor na pásu, který práská formuláře ve vizuálním prostředí, a sem tam napíše pár řádek kódu k tlačítku a cokoli složitějšího hledáte v google – no pak jste v podstatě dělník na pásu a školu skutečně nepotřebujete. Je zbytečná. Jděte rovnou do praxe.

Dobrý programátor ve skutečnosti potřebuje značné teoretické základy, pak určitou praxi a nakonec talent. A pak se třeba dostanete k projektům, které jsou nesmírně zajímavé, a které programátor začínající praxí udělá jen stěží (nebo pokud měl obrovské štěstí na dobrého učitele někde kolem sebe tak za deset let).

Příznakem dnešní doby je, že si myslí, že budou dobří po absolvování „rekvalifikačního kursu“. Nebudou. Spousta věcí chce haldy teorie, chcete-li patřit mezi špičky. A programování na dobré úrovni chce víc, než se na první pohled zdá.

Ale znovu říkám, v každém oboru jsou dobří lidé a pak dělníci na pásu. Chcete-li bouchat formuláře ve vizuálním nástroji, nebo vytvořit pár jednoduchých tabulek v nenáročné databázi, či udělat webovou stránku, na to školu opravdu vůbec nepotřebujete.

# Miloslav Ponkrác
23. April 2008, 22:54

27. Honza:

A na medicíně se také zbytečně učí anatomii, a řadu dalších věcí. On vlastně ten doktor ani nepotřebuje v zásadě vědět, kde máte třeba střeva, když transplantuje srdce. Důležité je umět rychle řešit problémy.

Schválně ironizuji. Jen je zajímavé, jak velká sháňka je právě po těch programátorech ze staré školy, co tohle všechno umí.

Právě rychlé řešení je „programátor na pásu“. On se naučí rychle kódovat, ale bude vždycky na povrchu. Je jen malá šance, že programátor, který začne „rychle a efektivně“ řešit praxi se dostane dál a bude z něj virtuóz, a to i když má talent. A časem zjistí, že mu schází právě ta teorie – kterou se na vysoké škole začíná. Třeba po mnoha letech objeví souvislosti mezi několika disciplínami (algoritmy, matematikou,…), kde ho to ani nenapadlo, zatímco člověk s teorií už to dávno léta používá.

Ono je to asi takto – člověk s dobrou teorií má v praxi na začátku horší start. Za krátký čas to ale vyrovná, pokud má talent a je mu dána šance. A pokud dál pokračuje aktivně, velmi rychle předhoní člověka z praxe, protože na rozdíl od něho má hluboké teoretické základy, které se časem ukáží jako klíčové. Kdo ovšem teorii nezná, nevysvětlíte mu to.

Jen poznámku: Já se dostal právě díky kvalitě programování na místa, kam se hned tak nikdo nedostane. Můj kód běží na velmi kritických místech, kde jde o životy na několika kontinentech. A uspěl jsem jen díky tomu, že jsem teoreticky i prakticky znal každý detail.

On člověk s praxí má kolikrát víc štěstí, než rozumu. Když počítá výpočtu – nic netuší o zaokroulovacích chybách, o chybách aproximace, o číslu NaN, o numerické matematice, z druhé strany mu nic neříkají složitější datové struktury – jako hašovací tabulky, stromy, grafy a stovky dalších věcí. Takže ani netuší, že mu někde může vzniknout problém. A multithreadové programy od lidí z praxe, nad tím pravidelně zvracím.

Komentáře jsou uzavřeny