Jeden článek na Priceonomics o rostoucím počtu absolventů s PhD a jejich potížích s uplatněním na trhu práce mne inspiroval k zamyšlení nad možnostmi uplatnění opravdu dobrých programátorů, kterých jsou odhadem tak 2% (ne nutně PhD, ale je to vhodná analogie).
V praxi se setkáme s několika kategoriemi. Firmy chtějící maximálně ušetřit najímají studenty. U studenta se už z principu očekává, že se ještě učí a i práci vzal pro to, aby se naučil něco nového a získal praxi. Ekonomická stránka věci je diskutabilní, protože takový “učeň” často potřebuje na nějaké zadání déle času než zkušený vývojář, pro nějž je stejná věc rutinou. Ale to je problém firem. Studenty tedy nechme stranou s poznámkou, že z nich bude to, co si z nich vychováme.
Nejrozšířenější kategorií je nejspíše samouk. Znalostí má asi tolik, co student (viz výše), ale není schopen (ať už je limitován intelektem nebo časem) a/nebo ochoten učit se nové věci a rozšiřovat si znalosti (nad rámec naprostého minima nutného k práci na projektu). IT je prostě (v tomto kontextu bohužel) ekonomicky atraktivní obor a pracovní trh tak zaplavují lidé z jiných oblastí, kteří na to prostě nemají. Na druhou stranu ve firmách zase často sedí lidé neschopní oddělit “zrno od plev”. (Navíc s takovými “programátory” je utrpení diskutovat, ať už na internetu nebo v rámci firmy. Namátkou z reálného světa: “dozvěděl” jsem se, že C++ je náchylné na memory leaky, že pro volání nativního kódu z .NET je nezbytně nutné použít P/Invoke, že NP-úplné algoritmy jsou v praxi nepoužitelné, že nalezení algoritmu pro halting problem je jen otázkou času, že Javu se naučí každý vůl, a spoustu dalších nesmyslů.)
Dále máme běžné absolventy (magisterských oborů) IT. Ti mají často solidní základní znalosti a hlavně po úspěšném zakončení studia i schopnost učit se nové věci a vstřebávat další informace. VŠ je v podstatě jakýsi filtr, neboť jen dostatečně motivovaní projdou s úspěchem labyrintem zkoušek, studentských projektů a státnic (nehledě na obecný fakt, že nikdo by nechtěl být operován “lékařem” bez odpovídajícího vzdělání, tak proč pouštět na IT projekty laiky). S takovými lidmi mám vesměs dobré zkušenosti, protože jsou schopni pracovat a učit se samostatně. A to stojí za pár vydaných korun navíc.
A teď k jádru článku. Vynikající programátor je (podle “mé” provizorní definice, klidně ji v komentářích pozměňte nebo rozšiřte) někdo s kvantem znalostí, jež přesahují IT (kromě nezbytné matematiky se jedná o různé mezní obory jako bioinformatika, chemoinformatika, komputační lingvistika apod., to už je individuální), rutinní znalostí programování a hlavně inovativním myšlením. Problém je, že nejenže je takových lidí poskrovnu, ale jsou neskutečně drazí. Takový člověk je něco jako Porsche, přičemž z pohledu ekonoma (nebo majitele IT firmy) je lepší koupit si solidní Octavii za desetinu ceny, než sice parádní, ale úzkoprofilový sporťák (výjimkou jsou jen firmy, kterým se extra daří a topí se v penězích, ty si mohou postavit celé týmy skládající se výhradně z takových zaměstnanců). Na druhou stranu je blbost kupovat superlevné čínské auto, které sice možná dojede z autosalonu do garáže, ale po srážce s jízdním kolem (sic!) je z něj šrot (kdo se poznal v čínském šrotu, nechť se prosím zdrží komentářů).
Ja si myslim, ze dobri programatori-analytici si sve místo obhaji a při dobře organizaci se i firme vyplati. Proste se musí plne vyuzit jeho kvalifikace a nesmí soucasne slouzit jako sekretářka, koder, ... Kreativni clovek toho dokaze vymyslet vice, nez dokaze sam udelat, potřebuje tedy k ruce několik dalších lidi, kteří pod jeho vedenim, ale samostatne, udelaji vice, ci méně rutinni práce. Analytik naprogramuje jen to, co sam nedokaze formulovat, zadat. Mravenci praci mohou udelat ti ostatní... Podle mého nazoru je potřeba cca 4-10 dalších kvalitních lidi, aby se analytik slusne vyuzil. A pak není drahy.
VS je fajn, ale neni vselek. rika jenom to, ze dokazal nejakym stylem projit labyrintem "zadrhelu" (zkousek, studentskych projektu a statnic)
druhou veci je i obdobi, kdy tu skolu skoncil. zazil jsem jednu generaci trotlu, teoreticky ovladajicich vsechno, z rukavu citujicich normy, metodologii, ... ale kdyz je clovek postavil k necemu, tak se nestacil pak divit.
Problemem velkych firem byva totiz i sito vyberoveho rizeni: personalky odfiltruji nekdy velice zdatne adepty, protoze se jim zda, ze papirove nemaji vsechno, jak to ma byt. Pak dalsi kolo je personalistka ... az pak se kandidat dostava k specialistovi, ktery ma proverit jeho znalosti.
Osobne spis preferuji zkusenost a otevrenou hlavu pred 100% specializaci.
V praxi se mi kuprikladu osvedcil system tandemu: clovek, ktery je naprosto perfektni v technice (programovani), ma chladnou analytickou hlavu a druhy, ktery je plny energie, napadu.
rozepsal jsem se:
- ano potrebujeme vynikajici programatory
- ale v 90% pripadu nemame pro ne vyuziti (hrabani se v tunach ciziho kodu, maintenance, ...)
- neposedne kreativce svazeme procesy a 'long term' tasky, nebo alespon nekoncicim code-review
tyto bezne cinnosti maji hodne daleko od romaticke predstavy "programatora"
v mensich firmach zas je to casto styl "rodeo" (sef firmicky si zajde na steak s klientem, doveze zakazku, ktera specha natolik, ze se nestihne ani poradne odladit, natoz testova, nebo dokonce napsat dokumentace)
ale neni to nastesti vsude, jinak by jsme uz vymreli :)
Mam prosbu..kde najdu v cesku programatora znalosti reci C..potrebuji ho nutne.
Definujte následující termíny:
Kdo je „vynikající programátor“?
Kdo je onen tajemný „příjemce“, o kterém článek píše, že je potřebuje či nepotřebuje?
Navíc článek míchá dohromady několik věcí. Za prvé kvalitu programátora, za druhé status student/má VŠ, PhD., která má s kvalitou programátora jen malou korelaci.
Pak se tam plete moderní newspeek ála Orwell a marketinková slovní vata – „chce se učit nové věci“.
Můj názor je, že naučení se programátorského řemesla je snadné. Ale bez hlubokých teoretických znalostí jiného oboru a matematiky, ideálně i fyziky – virtuóza neuděláte.
Jenže to by musel někdo nahlas říci, že teorie je potřeba. Od jisté hranice už bez teorie dál nepokročíte.
A málokdo toto chápe méně, než linuxová komunita, které vychází z premisy, že programovat cokoli může každý, kdo je schopen dojít na záchod.
Dále bych chtěl podotknout, že VŠ není síto. VŠ se dá také projít nadměrným talentem.
Navíc jsem vystudoval 2 vysoké školy. Jednu před 20 lety a druuhou nyní. Mohu porovnávat, tak dnešní náročnost VŠ je tak dvacetinová oproti nárokům VŠ školy z minulého století. Dnes skutečně vystuduje školu téměř každý, buď pro nadměrnou motivaci nebo pokud má IQ trochu vyšší, tak to projde i tak.
Nemohu si pomoci, ale pripada mi, ze jinými slovy rikate prakticky totez, co autor clanku.
VS je sito. Bud clovek prokaze motivaci nebo talent, pokud tedy nejde o skolu, kterou by prosel i orangutan. VS však není zárukou kvality, pouze zjednodušujícím indikátorem, ze by to mohlo klapnout.
Na druhou stranu, to ze clovek nemá VS neznamena, ze nemá schopnosti nebo inteligenci. Proste se muze stat, ze na VS z nejakych duvodu nesel nebo ji nedostudoval. A to zejména u starsi generace.
Stejne jako znam mnoho opravdu tupych VS, MBA a dokonce i PhD, tak znam i mnoho inteligentních lidi se strednim a dokonce i zakladnim vzdelanim.
Proste diplom není záruka. Koneckoncu si nad tim, ze personalistickym sitem často neprojdou schopni lide, protože nemaji ten spravny papir...
S autorem se shodnete i na nespornem faktu, ze dobry programator by mel dobře rozumět podstate problemu. Jinak nemůže dobře navrhnout struktury a vybrat vhodne algoritmy.
Řekl bych, ze stupeň vzdelani student VS, absolvent VS, PhD. lze pouzit jako urcity indikator kvality programátora. Jednak stoupaji teoreticke znalosti, jednak stoupa vek a tim i zkusenosti. Samozrejme to ma nutkou podminku. Vsichni musí zacit programovat ve studentskem veku. Pokud PhD. zacal programovat před mesicem, tak asi nyní moc dobry programator nebude.
Uprime receno, ja nechapu o cem se tu bavite ?
Krome par vyjimek zadna poptavka po tech virtuozech neni. Proc by mela byt ? Na kodovani i enterpise IS nemusite byt virtuoz a mit vystudovane "teoreticke" predmety.
Je dobre rict kdo takove lidi, ktere popisujete v clanku skutecne potrebuje. Realna poptavka je tak 1 ze 100 nabidek ? Spis min ?
Ja mam trochu podezreni jestli to neni nejaky sebeklam o "nutnosti teoreticke vzdelani miti". A honeni si trika, v tom jak mam VS a jak jsem dobrej. Na to vam kazdej kasle.
Nenechte se zmylit, teorie je dobra, nic neni vic praktictejsiho nez dobra teorie, ale vetsina programatoru dela job, ktery je totalne nudny po urcite chvili a nijak zvlast intelektualne narocny.
Srovnejte to s nejakou aplikovanou matematikou, matematickym modelovanim. Tam tu teori potrebujte. Ale u programovani ? Kez by :/.
7. Tak ono jde o to co si člověk představuje pod tou teorií. Bez základů teorie to ale absolutně nejde. Běžně v praxi narážím na kód od samouků, kteří teorii neznají a pak vytvářejí naprosto nesmyslné konstrukce (třeba naprostá ignorace složitosti algoritmů nebo operací se základními datovými strukturami, neznalost objektového návrhu). Pak vytváří programy, které fungují špatně, pomalu a nedá se v nich vyznat. Samouci taky mnohem víc spoléhají na vlastní hlavu. Nejsou ochotní najít nebo použít standardní řešení a vymýšlí všechno znova.
[8] Nikoliv, vysokoskolak, nicmene diky za prispevek.
[9] "Třeba naprostá ignorace složitosti algoritmů."
Kdy naposledy jste resil slozitost algoritmu ? A ted nemyslim slozitost ve stylu "neprojedu to 2x for cyclem". Ja si vazne nemuzu vzpomenout. Naucite se par veci a pak uz o tom ani nepremyslite.
[10] To je prave ta pointa co tu razim a viditelne jsem zatim neprorazil :).
Totiz ze 99% kodovani a projektu je totalni nuda. Nebo jinak, napiste mi nekdo co jste, treba posledni rok, zajimaveho delal ;).
Vetsina napise nejaky web, nejaky IS, eshop, CRM, CMS ... slozitost tech systemu byva zalozena spis na jejich komplexicite nez na nejakych zajimavych algortimickych problemech.
Ale rad se necham ukecat. Do toho :).
suhlas ze 90% novych aplikacii je modifikacia CRM, CMS, IS, android/apple somarin. Kravoviny na ktore si nik o 2 roky ani nespomenie.
vo vseobecnosti je programovanie totalna nuda. a tych par aplikacii kde sa riesia zaujimave algoritmy/modely atd na tych su aj tie 2% programatorov privela.
treba si uvedomit ze zijeme v obdobi maximalneho konzumu kde nema zmysel vymyslat nieco extra nove, staci zobrat nieco co uz bolo, upravit a predat za dolariky, eurka masam konzumentov.
@flv Tak já například nedávno implementoval SLG rezoluci (nikdy se necyklící Prolog). Bylo to do jednoho robotického projektu. Předtím jsem v rámci stejného projektu efektivně implementoval plánování (abdukce převedená na SAT s řádově miliónem klauzí). Teď mám v programování pauzu, protože vymýšlím návrh jedné hardwarové části, ale také to je zajímavé a člověk se přitom dost naučí.
12. Třeba když někdo použil spojový seznam a pak do něj lezl přes index a mělo to viditelný dopad na rychlost aplikace. Já neříkám, že musíš dělat nějaké složité analýzy neznámých věcí, ale musíš si uvědomit co jak dlouho trvá než to použiješ. A tohle jsou přesně typy problémů na které denně narážím při práci se starým kódem.
Ja mel jednou pod sebou "programatora", kteremu ani trochu nevadilo delit nulou. Když jsem zjistil, ze důvodem proc věci obcas nefunguji, je ze deli nulou a vynadal jsem mu, tak mi s klidem odpověděl, ze jsem mu do hrubého zadani mel napsat, ze to ma před delenim otestovat. Jinak receno, ze jsem mu dal nespravne zadani, tak co mu vytykam....
Ono se programovani zas tak moc nelisi od psani bezneho textu. Jedna se prece o vyjadrovani myslenky v jazyce. Vice, ci méně umi psat téměř každý. Někdo pise lepe, někdo hure. Ale dobrych spisovatelu, ci basniku je relativne malo. Jednak je tezke byt dobrym spisovatelem, jednak kdyby jich bylo mnohem vice, tak by se neuzivili. Ti, co nejsou tak dobri (nebo se nedokazi prosadit, ...), delaji něco jiného.
Obdobne u dobrych programatoru. Ti, kteří si nenajdou sve místo na slunci proste delaji něco jiného. Urcite nebudou delat bezneho kodera, to by jim z toho za chvili jeblo.
[20] zazit jesitneho zadavatela, ktory ocakava zazraky je mozno aj castejse.
Zadanie uvedene v [19] ma na to typicky potencial: ak chcete vynimku, tu vam vyhodi interpreter aj sam. Ak to chcete osetrit inak, treba fakt uviest v specifikacii, ze ako. Prave stav, ked programator si len tak z pleziru povie, ze "vratim teda null", je zlo.
Inak, osetrujete poctivo pri kazdej operacii + pretecenie? To len tak, ze velkohube vyhlasenie o vyhodeni sa moze tykat aj takehoto bezneho prikladu zo zivota.
"Vynikající programátor je ... někdo s kvantem znalostí, jež přesahují IT (kromě nezbytné matematiky se jedná o různé mezní obory jako bioinformatika, chemoinformatika, komputační lingvistika apod., to už je individuální), ..."
Myslím, že jste se spíš snažil definovat vynikajícího mezioborového specialistu. Ani ta matematika (na víc než středoškolské úrovni) není většinou nezbytná, samozřejmě schopnost přemýšlet na úrovni matfyzáka ano, ale vážně nevím, na co by byl normálnímu špičkovému programátorovi třeba Lebesgueův integrál, pokud nepíše nástroj pro matematiky. Jasně, pokud někdo dělá grafiku, musí něco vědět o geometrii, na spoustu věcí se může hodit statistika (ale opět většinou jen selský rozum matfyzáka + středoškolská metematika) atd., ale třeba na to, abyste např. napsal nejlepší SIP klient (šachový motor, http server, jádro OS, ...) na světě opravdu až tak moc mamematiky nepotřebujete.
[24] Na spoustu věcí člověk nepotřebuje znalosti z vnějšku IT. Třeba OS, překladač, http server, databáze, návrh nějakého jazyka... Tam všude se uplatní špičkový programátor s minimem mezioborových znalostí. Jasně, jsou projekty, kde to třeba je, ale nutná podmínka pro to, aby byl programátor (někde jinde) špičkový, to není.
@23,24,25 To je velmi pěkné téma k diskusi. Tak třeba překladač: používané gramatiky vycházejí přímo z lingvistiky (Chomsky) včetně algoritmů pro parsing. U (relačních) databází je zase základem algebra (vida, matematika) a potažmo logika. Jistě, na této úrovni se nutné detailní znalosti liší případ od případu, ale dost času přesahují to, čemu se říká anglicky "computer science" (pojem informatika se mi zdá příliš široký, resp. nevyhraněný). Například grafové algoritmy (diskrétní matematika) se používají v podstatě všude. Jen tak mimochodem, ona i ta středoškolská matematika je pro většinu progamujících (schválně neříkám programátorů) nad jejich chápání (je to smutné, ale je to tak).
Ja som webový programátor, vysokú školu nemám a strednú mám úplne mimo IT. Pri hľadaní posíl do tímu som bol potešený/sklamaný (vyberte si), že ľudia, ktorí strávili mnoho rokov v škole, vedia z mojej práce cca to čo ja. Boli aj o kus lepší, dajme tomu o 20%, ale pýtali 2x viac. Stoja za to?
Otázkou ovšem je kolik takových proramátorských pozic je "autisických computer science" (programování OS a kompilátorů, databázových serverů - ne databází na serverech) a kolik je těch kde je ten přesah výhodou ne-li nutností. Myslím že těch prvních jsou zlomky procenta celkového počtu "programujících"...
[28] Tak nevím, jak je to u špičkových programátorů, ale u mě (10 let praxe, 4 různé a to docela různorodé firmy, celkem normální programátor) ani moc extra znalosti mimo IT nebyly zapotřebí. Hodily se spíš (kromě vlastního programováni v C, C++ a Javě) třeba trochu hlubší znalosti internetových protokolů, sítí obecně, šifrování, databáze a tak. Jen jednou i trochu matematiky (nějaké transformace v mapě), dokonce jsem musel derivovat :-) A samozřejmě angličtina - to je ale fakt asi jediná extra ne IT znalost, která je opravdu téměř nutností pro téměř kohokoli. Jinak opravdu šlo spíš jen o zájem o věc než o nějaké extra znalosti mimo obor. Bylo třeba fajn, když jsem dělal s mapami (běhával jsem kdysi orienťáky), naopak nebylo fajn, když jsem dělal informační systém pro sociální dávky (soušasný systém podpor považuji za zvrácenost). Ovšem znalec map ani znalec fungování státního úřadu jsem byt nemusel.
Můj názor je nepochybně ovlivněný osobní zkušeností (cca 20 let profesionálně), a možná jsem se nevyjádřil přesně: myslel jsem tím že programátoři co nevystudovali "čistou computer science" mívají z principu určitý mindset založený na tom že je pro ně programování prostředek jak naprogramovat něco co slouží cílům mimo (čislé) IT. Ne že by to "čistí programátoři" nemohli mít, ale je to pro mne prostě znamení že jsou zajímavější a všestraněji použitelní. Samořejmě pokud je člověk jenom kodér a dostane od analytika/architekta problém přeložený do čistě CS problémů, tak je to jedno - takhe jednoduché to ale nebývá, a zájem o to "k čemu to je" může být zásadní rozdíl mezi průměrným a dobrým, a vůbec v kariéře (v širším slova smyslu nejen stoupání po hodnostech).
Teď se koukám jak diskuse pokračuje a když si to po sobě čtu chtěl bych upřesnit tu svoji první větu z [31]: tou "osobní zkušeností" myslím to že jsem nikdy neprogramoval jako obyčejný kodér, vždy v malém týmu a nebo víceméně samostatně, a podílel se na analýze i architektuře systému, často i na celém vývoji produktu. To je můj úhel pohledu ze kterého vycházím.
Najprv by ste sa asi mali zamysliet nad urovnou VS.
Z mojich skusenosti zo studia VS mam dost zmiesane pocity.
Bakalarske studium "viem vsetko a dokopy nic", uvidel som asi kazde zameranie v CS, ale nic do hlbky. Ono sa to robi takto a takto, ale nikdy nie preco (pripadam si ako opica). Vysvetlovanie matematiky je asi tak na urovni strednej skoly, ziadne dokazy absolutne nic -- nie je cas (nie su peniaze). Ziadne hlboke teoreticke znalosti. Funguje to takto, toto je algoritmus toto sa nauc... Na samostudium nie je cez semester cas, vela zadani (programovanie od rana do vecera...). Prednasky su na takej urovni, ze to nestoji za rec.
Osobne mi pride studium na tejto VS ako tlaciaren na tituly s podmienkou musis vsetko naprogramovat.
A to udajne studujem na najlepsej technickej VS na Morave.
Chapem, ze VS je samostudium, ale bez kvalitnejsich vyucujucich procesov, mozes mat aj 100 titulov pred menom a za menom a nic to absolutne nezmeni.
Ak by neboli prazdniny a online univerzity, tak vysoku uz asi zabalim. Na tej co studujem ma uz drzi akurat "budem mat titul a v tejto spolocnosti budem NIEKTO". Zaujimaju ma tie veci, ale forma vyucby je pre mna nedostatocna.
Nepoznam uroven vsetkych vysokých skol v CR/SR, ale ked nieco podobne je obraz, tak odraz (student/absolvent) nebude daleko.
Programátor je dobrý, když komponenta systému, kterou naprogramoval, jde jednoduše předělat na novou verzi a zachová si zpětnou kompatibilitu, když si klient rozmyslí, že se chce vrátit k té starší, nebo když základ systému, který stvořil má ducha a proto jde jednoduše udržovat a rozšiřovat.
Nejsem jistý, jestli jsem nějak extra dobrý programátor. Zcela určitě jsem neprošel vysokou školou. Jestli mě absence vysoké školy mrzí? Trochu - cítím, že lepší vzdělání v oblasti matematiky by moji práci rozhodně zlepšilo.
Přiznám se, že jsem nikdy nedělal ve velkém weby a podobné konzumní aplikace. Samozřejmě, velká část mých programů jsou ty nejnudnější a nejodfláklejší věci, jaké jste kdy mohli vidět. Ale nezanedbatelná část mé práce je založená na znalostech, které jsem získal mimo obor programování - astronomie, statistika, digitální zpracování signálů, fotografie, fyzika. Jsou obory, kde za mnou chodí pro rozumy vysokoškoláci, protože co oni se teoreticky učí, to já prakticky používám.
Je mi naprosto jasné, že tuto odbornou část práce bych nikdy nedělal, nebo bych si na ní vylámal zuby, kdybych si z vlastního zájmu nenastudoval předem věci, které by se mi mohly jednou hodit (třeba fourierovy transformace, konvoluční filtry a podobné blbiny, které jsou mimo záběr většiny vysokoškoláků). Takhle můžu stát první v řadě a hlásit se "Já já já, já to chci dělat!", zatímco ostatní programátoři ani nevědí, že po nich někdo něco chtěl.
Jsem přesvědčený, že člověk, který nemá ani potuchy o nějakém oboru, je naprosto hluchý, neslyší neurčité dotazy a sondování, nikdy se ani nedozví, jaká práce mu byla nabídnutá. Je odsouzený doživotně vyrábět webové stránky a jednoduché databázové aplikace, ale je to úplně jedno, protože i tak má obvykle práce až nad hlavu.
Nemám vysokou školu, ale nedovedu si představit, jak bych mohl dělat svou práci bez znalostí z oblastí dalece přesahující programování.
Nemám vysokou školu, ale vím, že je to jedno, protože na většinu práce, kterou po mě lidi chtějí, stejně žádné velké znalosti nepotřebuji. Prostě by ty odborné věci dělal někdo jiný a já se věnoval něčemu jinému.
[34]"kvalita vzdelani na VS" Ono je to tezke. Zalezi na uhlu pohledu a také osobním nastaveni. Ja to vnimam tak, ze VS dava prehled o vsemoznych aspektech oboru. Často nejde jit prilis do hloubky. Pripada mi dulezite, ze se clovek dozvi, ze něco existuje, ze se to da nejak resit a mozna ze si i zapamatuje nejake metody (třeba jen nazvy. Az clovek VS dokonci, pripadne uz během, se ponori do urcite oblasti a tu si nastuduje a prozkouma do hloubky. A postupem casu a kariery si takto často prozkouma několik dalších. A často i z uplne jinych oboru.
Podle mého nazoru, je dostacujici, když clovek vi, ze něco existuje a zhruba, jak se to resi. Detaily se vyresi, ve chvili, kdy to bude potrebovat. To je to, cemu se říká celozivotni vzdelavani. :-) Studium ukoncenim VS často nekonci, mnohdy teprve zacina.... A často i studium jinych oboru.
Trochu chápu tve pocity z bakalářského studia. Ja studoval ještě za hluboke totality, ale v pulce tretiho rocniku jsem zvazoval, ze toho necham. Duvodem bylo presne to, co pises. Rikal jsem si, ze mam pulku studia za sebou a ještě jsem se nenaucil nic zajímavého a použitelného. V druhé pulce, coz by zhruba odpovídalo soucasnemu magisterskému studiu se to zlomilo a zacalo me to bavit.
Asi jediny důvod, proc jsem vytrval, nez to zacalo byt zajimave, bylo to, ze se mi tedy opravdu nechtělo jit na dva roky na vojnu....
[27] Ad. programovani webu
Na programovani webu asi opravdu nejsou potrebne nejake velke znalosti matematiky, pokud vůbec nejake. Ovšem i když to není receno explicitne, tak clanek i diskuse je o programovani aplikaci, ne webu.
Opet pouziji prirovnani. Urednice na finančním urade nepotrebuje mit schopnosti Homera. Uredni dopisy posklada z typovych dopisu a pokud bude potrebovat něco speciálního, tak to nejak da do kupy.
Pokud by se zapocitali i programatori webu, tak se procento "dobrych programatoru" asi posune hluboko pod jedno procento.
[35] Dobry programator
Ještě bych pridal, ze se musí komponenta dat dobře používat a byt v ramci moznosti efektivni (tim myslim dostatecne rychla s primerenymi nároky na pamet - ne nutne nejrychlejsi a s minimálními nároky na pamet/systemove zdroje)
A pokud jde o program, tak prehledne a rozumne uzivatelske rozhrani. Na to sice programator nepotrebuje matematicke znalosti, ale velkou miru predstavivosti a empatie.
[21] Deleni nulou
Ne všechny jazyky generuji při deleni nulou výjimku. Tento ji negeneroval, tedy to mel nejak osetrit programator. Primo v kodu. Ale i kdyby dany jazyk výjimku generoval, tak by asi bylo na miste se dotázat, jak tento stav osetrit. Dany clovek se mnou sedel v kancelari, takze se mohl jednoduse zeptat.
Zminovany programator nebyl liny. On opravdu nevedel, ze delit nulou není zas tak dobry napad. Musel jsem ho o tom presvedcit nazornym prikladem.
Nakonec jsme se s nim rozloucili. Nastesti s odchodem souhlasil. Ono totiž vyhodit zamestnance není zas tak jednoduche... Cela tato zkušenost nas prisla asi na ctvrt milionu. Vetsinu jeho kodu jsme radsi vyhodili.
Byl to nas první programator, kterého jsme dobře neznali. Chteli jsme zkusit laciného na nejake nenarocne programovani. Neukazalo se to jako dobry koncept. Jednak opravdu nebyl dobry, jednak pro nas styl práce je vhodnejsi dostatecne samostatny programator.
Samozrejme byla chyba i na me strane. Tedy v zadani. Zadani nebylo udelane blbuvzdorne pro cisteho kodera. Jenze, ja se do te doby setkaval pouze s dobrymi programátory, kterym stacilo zadani na program/modul popsat několika vetami. Když narazili na nejasnost, tak se zeptali, jak to mají resit. Tomuto "programatorovi" jsem vse musel rozepsat do vzorecku, coz uz pro mne byl neskutecny obrus a velka casova zatez. Clovek se pomalu dostaval do situace, ze by dalo méně práce, naprogramovat si to sam, nez podrobne popisovat, co a jak (na urovni, aby to pochopil a udelal spravne).
[37] @pb
Jasne, není potřeba mit VS, staci mit v urcite oblasti VS znalosti.
To, co popisuješ presne odpovida mym zkušenostem. Dobry analytik-programator dokaze nejasne naznaky a velmi neurcite zadani pretavit ve fungujici program/modul. Dokonce dokaze předvídat, co by uživatel mohl potrebovat, ještě nez si uživatel uvedomi, ze by to mohl potrebovat.
Dobry programator nemusi nutne umet naprogramovat FFT nebo trideni, ..., ale urcite musí vedet, co to FFT je a k cemu se hodi. Je zbytecne, aby FFT programoval, když to před nim uz mnoho vybornych programatoru a matematiku udelalo. Maximalne se tak musí zahloubat nad tim, jakou knihovnu pouzit. A samozrejme to FFT pouzit spravnym zpusobem. Data snesou ledacos a pokud nejde o obrazek nebo zvuk, tak se nemusi ani prijit na to, ze je v implementaci problém...
Cítím z tohoto článku a částečně i diskuse, že programující člověk bež vysoké školy musí být bastlič. Že pouze vysoká škola naučí člověka správně programovat.
Jenže kdo je ten dobrý programátor? Člověk co zná syntax a návrhové vzory? Analytik? Architekt? Interdisciplinární kreativec?
Může se člověk tyto dovednosti naučit i mimo vysokou školu? Třeba jako samouk dychtící po poznání? Nebo ve firmě? Co třeba soukromé kurzy?
Muj nazor je, ze programovani z principu nemuze byt nuda. Pokud je to nuda, neco je nekde spatne, obvykle v organizaci prace a spolecnosti.
Takze, podle me, pokud si skutecne dobry programator stezuje na nedostatek prace, je to spis symptom jeho vybiravosti nez realneho nedostatku. A pokud to nevadi samotnym dobrym programatorum, pak na tom fakt neni co resit.
@16 To by me i bavilo, ve firme/skupine kde jsem ted to jde tak trochu od desiti k deviti. Ale ja si nechci praci vybirat - mam rad vyzvy. Veci, ktere nikdo nechce delat, jsou vyzva (viz postulat z prvniho odstavce).
Ale asi bych to nemohl delat pod autorem blogpostu, ktereho povazuji za arogantniho elitare. Coz je skoda, protoze mi prijde dost chytry.
A ja bych si pral pracovat ve skupine lidi, kde bych byl ten nejhloupejsi. Nicmene to s arogantnimi lidmi nejde.
@40 IMHO muze se to naucit i bez VS, ale dost ta VS pomaha. Hlavne tim, ze je cas zabyvat se ruznymi vecmi, a clovek je vetsinou mlady. Pozdeji uz je to horsi jak s casem tak s motivaci. Takze ona "neprakticnost VS" je feature a ne bug.
"Dobrý programátor". Na debatách na tohle téma mě trochu mrzí, jak se zužují na otázku VŠ ano či ne, popř. která. Přitom VŠ (pokud ji člověk má) je jen začátek, po jejím absolvování je člověk beztak maximálně "talentovaný junior" (btw stejně talentovaný, jako byl u maturity). Ideálně by VŠ měla člověka naučit "zdravě skeptickému myšlení", což se v praxi projevuje uvažováním ve variantách: k danému zadáni by mě měla napadnout aspoň dvě řešení, abych mezi nimi mohl vybírat (třeba na základě dodatečných informací, které se dozvím až později). Častým omylem je zamilovanost do "objektivní pravdy", tj. myšlenka, že k danému zadání existuje právě jedno optimální řešení bez ohledu na kontext (tahle myšlenka je podporována např. teorií výpočetní složitosti, která sice ve skutečnosti nic takového netvrdí, ale zamilovaní studenti nepostřehnou rozdíl).
K jádru věci: Člověk roste s úkoly. Aby z talentovaného juniora vyrostl dobrý programátor (a třeba taky designer, analytik, ...), musí se dostat k zajímavé a reálné práci. Ať už si ji najde sám, nebo je k ní "připuštěn". Musí dostat naloženo, vždy o malinko víc, než by si sám řekl. A musí projít celý lifecycle svého kódu, aby dostal zpětnou vazbu z reality -- není nad debatu face to face s uživatelem, případně nad analyzování error logů se všemi těmi chybami z reálného provozu, "které se přece nemohou nikdy stát". Dobrý programátor musí vždy ve finále myslet na uživatele, jak už tady bylo napsáno výše.
A na závěr pár otázek, podobných jako v titulku: potřebujeme vůbec dobré programátory? Jsou zde zaměstnavatelé, enterpreneuři, kteří všechny ty talentované juniory pustí k zajímavé práci? Nebo si všichni zvykli lovit plankton v průměrných vodách, za levno a na tuny? A o úspěchu byznysplánu rozhodují procesy, nikoliv lidé? Well, that's the challenge :)
Potrebujeme jak dobře programátory, tak prumerne i ty podprumerne. Pro každého z nich je urcite množství práce, která odpovida jejich schopnostem a i je uspokojuje.
To, co pro jednoho muze byt neskutecna nuda, muze byt pro jiného velke dobrodruzstvi. A to co pro jiného muze byt neprekonatelnym problémem muze byt pro dalšího super skvela vyzva.
Někdo pise romany, jiny fejetony a treti uredni dopisy. Ani jeden není lepsi nebo horsi. Každý dela, to co umi, pokud možno nejlepe, jak to dokaze.
Takze urcite potrebujeme i dobře programátory.
@zboj Ano, myslím, že jich je spoustu, ti nejlepší dělají 12 hodinové operace srdce přes půlku světa a byla by škoda, aby takový to machr dělal obvoďáka v Čendohůrkách. Stejně jako architekt kumbálu na smetáky nemusí mít renomované studio, ale na stavbu přehrady už by to asi chtělo fajnšmejkra.
@kert Líbí se mi tvůj pohled na věc, kdy to člověk musí zažít celé a to v reálu, ne jen na papíře.
Má největší výtka k vystudovaným "expertům" právě směřuje k tomu, že mají naučené jedno best praktice a nedá se s nimi bavit o alternativách, protože všechno ostatní je špatné a já tomu nerozumím, protože nemám zkoušku z blbabla bla čehosi a on jo, proto tomu rozumí. Přitom si ani nezaváže tkaničku.
[44] ano, potřebujeme průměrné a podprůměrné lékaře, architekty, profesory, politiky
Podprůměrný neznamená špatný. Při jakémkoli běžném rozdělení chytrosti bude těch podprůměrných (v libovolném oboru a s libovolnou spodní laťkou) většina. Takže ano, potřebujeme dokonce i podprůměrné piloty, podprůměrnou obsluhu jaderné elektrárny a podprůměrného brankáře hokejové reprezentace (to je ten náhradní nebo druhý náhradní).
Jinak průměrný a podprůměrný programátor je taky užitečná pracovní síla. Může dobře zvládat samostatné menší a jednodušší projekty, může velmi dobře fungovat jako řadový člen menšího týmu atd. Samozřejmě je nějaká spodní hranice (závisí dle obtížnosti projektu), kdy to už smysl nemá. Typicky v případě, kdy je zdlouhavější mu problém vysvětlit, zkontrolovat vypracování a opravit to po něm, než si to napsat sám, tak už to samozřejmě smysl nemá. Obecně slabší členové týmu mají taky větší problém s tím, když je v projektu bordel. Často to, že někdo práci nezvládá, je dobrý signál, že je něco špatně i v projektu a nejen u toho slabšího programátora.
@44 U tech ostatnich to neni tak jasne, ale zrovna u tech lekaru - to je povolani, ktere prave narozdil od programatoru skaluje relativne spatne, takze je jich proste potreba urcite mnozstvi (pokud chcete urcitou uroven zdravotni pece).
Programatori mohou vysledky sve prace snadno kopirovat, a tedy muze cela spolecnost (teoreticky) profitovat z prace tech nejlepsich. Zatimco ten nejlepsi doktor nemuze osetrovat vsechny pacienty na svete. (Trochu opomijim, ze udrzba soucasnych systemu je programovani a ma casto povahu spatne skalovatelnosti, ale to je technicky detail, ktery na muj argument nema vliv.)
Jinak si myslim (jak psal @46, je to matematika), ze bychom se meli oprostit od pohledu podprumerny je spatny. Je to vlastne celkem zbytecna otazka, protoze bud je zde mnozstvi prace, ktera se musi udelat, jako u tech doktoru, a pak proste ti lide potreba budou, bez ohledu na to, zda talent maji nebo ne; nebo je to prace, ktera je pekny "bonus" k nasi civilizaci (jako programovani nebo umeni), a pak se muzeme dikybohu z prace tech nejlepsich tesit vsichni. Takze ekonomicky vzato opravdu nezalezi na tom, kolik lidi se narodilo s nejakym talentem, nemuzeme to ovlivnit a je to zcela nezavisle na realnych ekonomickych pozadavcich.
Daleko lepsi mi prijde resit, jak zaridit, aby _vsichni_ ti profesionalove meli maximalni uroven v absolutnim meritku, tedy proste byli opravdu dobri, nez jenom nekteri dobri relativne vuci tem ostatnim. Jedina cesta je asi motivovat ty nejlepsi, aby ucili ty ostatni, nebo je aspon motivovat (tam kde lze praci skalovat) psat vseobecne dostupny software, jako treba open source.
[49] No třeba nastavení na více místech, migrace na nějakou novou verzi části kódu, která není dotažená do konce, nejednotný styl, nelogičnosti v návrhu, žádná nebo špatná dokumentace... Tohle všechno jsou jednoznačně nectnosti, které nemají nastávat (ale reálně nastávají), které škodí každému, ale čím schopnější programátor, tím spíš se s tím nějak vyrovná. Stejně jako se lépe vyrovná třeba s pokročilým C++ nebo složitým algoritmem nebo nějakým správným, ale ne zcela zřejmým design paternem. V zásadě si myslím, že je s právné psát co nejvíc tak, aby se v kódu vyznal i špatný programátor. Jasně, u algoritmu 3 Indů, šachových rutin pomocí 64 bitových polí nebo těžby BTC na grafické kartě to asi nepůjde, ale kód něčeho normálnějšího může a měl by být srozumitelný i pro hluboce podprůměrného programátora.
@50 No nevim, mne tedy prijde, ze prave ti horsi programatori spis snesou spagetovy kod, protoze ho casto sami produkuji, a nejak to udelaji, protoze to je pro ne jen prace. To ti dobri si budou naopak stezovat, a bude jim to lezt na nervy, protoze chteji mit svou praci radi a byt na ni hrdi.
Spatni programatori take casto programuji stylem "nechapu, co to dela, ale zkusil jsem to, a zda se, ze to funguje", a proto jejich vysledky pripominaji spis nahodilou cinnost evoluce nez inteligentni navrh. A k takovemu pristupu take neni zrovna nezbytne, aby byl ve vecech poradek - kdyz tomu stejne nemusi rozumet.
Slozity algoritmus nebo technicke komplikace jsou docela jina kategorie nez "bordel".
Mozna jsi to myslel tak, jak moc ten bordel snizi produktivitu toho cloveka. Pak ji mozna u tech schopnejsich snizi pomerne (vuci jeho normalu) o min, ale v absolutnich cislech naopak o vic. A to druhe je to rozhodujici.
@45-47 Možná se mé zkušenosti liší, nicméně řekl bych, že výrazně nadprůměrný programátor udělá nějakou trivialitu několikanásobně rychleji (v podstatě automaticky to z něj vypadne bez většího přemýšlení) než "průměr". Jako příklad mohu uvést, že jsme nedávno potřebovali dynamickou webovou aplikaci a vznikla de facto přes noc (v C++ s využitím pár běžných knihoven). Nejspíš pracuju s lidmi na jiné úrovni, ale stále dokola se mi potvrzuje, že i výrazně dražší vývojář se vyplatí co do celkového času potřebného pro vývoj (ať už jde o web nebo třeba řízení robota).
@Niekto [34]
Ten pocit poznam. Problem je ze si na technickej VS. Su tam dost siroke osnovy, ktore sa nedaju prebrat do hlbky, ale namiesto toho sa skor snazia dat studentom siroke encyklopedicke znalosti pre prax.
Ja som to riesil tak ze som vystudoval MFF, kde to bolo ine. Menej predmetov, viac casu, ale znalosti sa vyzaduju do hlbky a vsetko treba dokazovat. Pre prax neziskas asi tolko znalosti z roznych oborov, ale naucis sa asi abstraktnejsie rozmyslat. Tym nechcem samozrejme povedat, ze by technika nebola dobra a ze sa tam nenaucis rozmyslat. Len su to dva rozne typy vzdelania.
ad 38. Pane kolego, jedenácté přikázání, nulou nepodělíš, ale platí jen pro obor reálných čísel, komplexní čísla rozšířené o nekonečno mají dělení nulou definováno, výsledek je nekonečno. A jak jsem na to přišel, když jsem programátor a matematiku nepoužívám? No nějak se mě nějaký takový náznak vybavil ze školy a ověřil jsem si to rychle na wikipedii. A to je zároveň ukázka, jak upotřebit znalosti, o kterých jste si mysleli, že je nikdy nebudete potřebovat :-)))
[53] vzhladom na to, nekonecno nie je medzi komplexnymi cislami, tak podozrievam, ze ste prvy pripad cloveka, co v matematike pouziva wikipediu na podporu nezmyslu, ktory som stretol (v inych oboroch je to myslim vyrazne castejsie :) )
Mozte pre poucenie vsetkych zucastnenych dodat linku?
No musel bych si zopakovat lineární algebru, ale našel jsem vám toto vysvětlení (není moje): Existuje však homeomorfní zobrazení Gaussovy roviny na povrch koule (tzv. Riemannovy sfery), kde jedním z polu teto sfery je 0 (komplexni) a druhym nekonecno (pouze jedno - tzv. komplexni nekonecno). V takovem pripade lze definovat vysledek deleni nulou prave timto komplexnim nekonecnem.
Ve strukturach, ktere nejsou oborem integrity, nulou delit lze. Typicky se jedna o nektere komutativni okruhy (napr. konecna telesa s neprvociselnou kardinalitou - nejedna se tedy o telesa v pravem slova smyslu). Znamym pripadem okruhu, ktery neni oborem integrity je rovnez algebra sedenionu. Coz je sestnactidimenzionalni zobecneni komplexnich cisel s patnacti imaginarnimi jednotkami.
Ad 54 a tady máte odkaz na vědecký článek http://arxiv.org/abs/q-alg/9710013, zdroj mimo wikipedii
@52 To, ze se vynikajici programori vyplati je temer tautologie.. :-) Osobne mam ale pochybnosti, ze:
a) jim davate stejny nasobek platu, jaky je nasobek jejich produktivity (pokud ne, vyplati se to vam, ale nevyplati se to jim, byt produktivni)
b) skutecne vsichni splnuji tu vasi definici ("Vynikající programátor je někdo s kvantem znalostí, jež přesahují IT") - znam celou radu vynikajicich programatoru, kteri zadnou mezioborovou znalost nemaji a nepochybne to tak bude i u vas.
[56] ach jaj,... zacinam chapat pocity lekarov co citaju Modreho konika...
Skuste si ten clanok co ste si nasli aspon prebehnut.
"... zero divisors ... x and y non–zero elements ... such that xy = 0"
vidite tam nieco o deleni nulou? (to je prave o tom obore integrity o ktorom pisete v [55].
Ked uz pisem, tak k tomu [55]: aj na zakladnej skole hlbavejsieho cloveka napadne, ze moze zobrazit R ako kruh a posadi oproti nule nekonecno. Dokonca s tymto bodom moze zaviest nejake operacie a hrdo to nazvat "delenie nulou". (samozrejme mozte to robit aj v RxR ako to predvadzate Vy). Problem je ale v tom, ze vysledok je dost nanic, ked nezachovate bezne veci ako je uzavretost operacii, komutativnost, distributivnost, asociativita...
Skuste napriklad definovat 0/0 s prihladnutim na to, ze a/(b/c)=(a*c)/b pre pripad b=c=0 a a=1. Sucasne samozrejme ocakavame (0/0)=(1/0)-(1/0) a podobne.
[8] spis dalsi clovek s praktickou zkusenosti - narozdil od hromaty teoretiku s titulem, kteri vzivote nenapsali nic realnyho.
[9] jop, teoretiku, kteri navrhovali naprosto genialni ... a naprosto nepouzitelny reseni uz sem par taky potkal ... a pak prisel ten pepek vyskoc z horni dolni, a za 10 minut napsal zcela negenialni a tupy, ale zcela funkcni reseni problemu.
[10] to zni spis jako realna zkusenost z praxe - 99% toho co se programuje, jsou naprosto trivialni veci, ktere vyzadujou naprosto nulovy premysleni. A presto se najde hromada tupcu s titulem, kteri to dokonale zmrvej - mam dodavatele, kterej neni schopen dodat na prvni pokus (ze stovek pripadu) aplikaci s upravenym selectem ... funkcni. Co teprv kdyz chci pridat nejaky ten if ...
[24] programator by mel predevsim aspon tusit co ze to programuje a k cemu to ma byt ... ale ani to neni v 80% pripadu nezbytne nutny. V tech 99% pripadu staci nebyt blb. Nepotrebuje na to mit zadny teoreticky znalosti. Lepsi programator je schopen zhodnotit, zda zvoleny postup je nebo neni rozumny (z ruznych ohledu). Ale tak jako tak stejne dost tezko bude vyhodnocovat, zda v chemicce maji nedriv nalej vodu a pak kyselinu nebo opacne ... protoze tomu prd rozumi tak jako tak. On dostane za ukol napsat appku, ktera to tak udela.
[30] nejsem primarne programator, presto obcas neco z nutnosti pisu. Realne sem se za nejakych 15let praxe setkal cca 2x stim, ze sem pouzil neco vic nez matiku ZS ... a samo, uz sem si stejne davno nepamatoval, jak se to dela, jen sem tusil, ze to jde. Takze sem si to dohledal a pouzil ... ale na to nepotrebuju mit 10x titulu.
[34] ja mam zkusenost ponekud opacnou ... samy vety a dukazy, ale nikdo ti nevysvetli, k cemu ze by to jako melo byt dobre. A opravdu me nenapada k cemu by trebas programatorovi bylo dobre umet derivaci z definice ...
[37] coz jen krasne ilustruje, ze skola je naprosto nic nerikajici kriterium pro vyber cloveka.
Ad zmineny lekar ... ten taky tu skolu defakto potrebuje jen proto, aby se mohl tim doktorem ... vyucit. Je to totiz defakto remeslo. A samostatne muze fungovat az po mnoha letech praxe (a prislusnych atestacich). Tedy v dobe, kdy z ty skoly uz stejne vi leda prd.
Ad 58, nechci se pouštět do nějaké polemiky, netvrdil jsem, že dělení nulou je běžná operace, jistě máte pravdu, ale vezměte v úvahu, že moderní fyzika, používá dnes matematické struktury, které vámi popisovanými vlastnostmi neoplývají a kupodivu zdá se, že lépe modelují fyzikální svět.
@59 Nezlobte se, ale pokud jak sam rikate "nejsem primarne programator, presto obcas neco z nutnosti pisu", pak asi tezko muzete hodnotit, jak moc je potreba matematika a jaka.
Jinak smyslem toho ucit definici derivace je kontrola, ze skutecne intuitivne rozumite tomu pojmu. Naopak pokud mu rozumite, date tu definici dohromady i po letech ze skoly. Takze to muzete brat tak, ze to skutecne neni nic jineho nez overeni te schopnosti si to dohledat, ve chvili, kdy o nic nejde (nejvys o spatnou znamku u zkousky).
To, ze ze skoleni (treba VS) 99% veci nepouzijete, totiz neznamena, ze to byl spatny napad. Extremnim prikladem je skoleni na seskok s padakem. Z velke casti se uci reakce na krizove situace, o kterych doufate, ze nenastanou, a jejich sance je nekde u 1:1000. Ale kdyz nastanou, to skoleni se pak zatracene hodi.
[61] dovolim si klidne hodnotit, ze v 99% pripadu neni matematika potreba vubec zadna. Jelikoz samozrejme s programatory pravidelne spolupracuji. Co se resi pak jsou prevazne ruzne aplikace prechroustavajici data z formatu A do formatu B, nebo aplikace reagujici na ruzne podnety(trebas z cidel) nejakou akci (jako napr pokud je hodnota z cidla X > 200 ... zmen stav na vystupu Y na 0). Kolega napriklad delal na upravach nejezdiciho pendolina .... a matiku na to opravdu nepotreboval (nejaky to pwm rizeni ...).
Podotykam, ze za matiku v tomto smeru povazuju az vyuzivani postupu nad ramec toho co napadne "kazdyho vola". Aplikaci typu pokud si zakaznik veme celej balik, dostane slevu/krabici navic/... nepovazuju za matematickou ulohu v tomto smyslu.
To ze se (nejen)na VS uci z 90% pitomosti prave pak vede k tomu, ze neni cas na ty podstatne veci, cemuz vysledky naprosto dokonale odpovidaji. A podotykam, ze toto vi i jista cast vyucujicich, bohuzel nemaji ty spravne paky aby to zmenili. Vysokoskolske studium u nas totiz neni o nicem jinem, nez se nadrtit na zkousku, a nasledne vse co nejrychleji vypudit z hlavy, aby bylo misto na dalsi set pitomosti.
Jinak ze spusobu vyjadrovani si klidne typnu prave toho zhrzeneho teoretika ... ne, definici derivace opravu krome matematika nikdo nanic znat nepotrebuje, presto muze sklidem naprosto vpohode derivace pouzivat. A neznam opravdu ani jedineho cloveka po par letech praxe, kterej by naprosto jakoukoli definici dal dokupy - proste proto, ze to nikdy a nanic nepouzije. Co vic, dokonce si dovolim tvrdit, ze 99% vysokoskolaku po 10+letech praxe by neodmaturovalo z matiky.
@62 "ze spusobu vyjadrovani si klidne typnu prave toho zhrzeneho teoretika" - podle sebe soudim tebe? Nebo proc hned oznacovat protistranu s jinym nazorem za "zhrzenou"?
"definici derivace opravu krome matematika nikdo nanic znat nepotrebuje"
O tom jsem prece nemluvil. Ano, definici v pracovni pameti skutecne mit nemusite, ale pokud skutecne vite, co je derivace, neni problem si tu definici behem par minut odvodit. Pokud vam to dela problem, pak proste nechapete dostatecne ten pojem.
"Vysokoskolske studium u nas totiz neni o nicem jinem, nez se nadrtit na zkousku, a nasledne vse co nejrychleji vypudit z hlavy, aby bylo misto na dalsi set pitomosti."
Pochybuji, ze je to nekde o moc lepsi a ani nevim, jak byste to chtel delat lepe. Podle me to funguje v mezich danych lidskym mozkem.
[60]: Vysokoškolský programátor by například měl tušit něco o tom, že z "já jsem nikdy nepotřeboval X" nijak nevyplývá, že "X je k ničemu". Nemluvě o tom, že "já jsem nepotřeboval" v mnoha případech znamená ve skutečnosti "potřeboval jsem, ale nenapadlo mě, že by se to na můj problém dalo uplatnit". Příklad: K čemu by programátorovi byla "znalost derivace z definice"? Tak třeba k tomu, aby si tu derivaci dokázal pro konkrétní bod spočítat. "Teď zrovna mi data přibývají 1 MB za sekundu, pokud zachovám tempo, mám všechno co potřebuji (alternativně: mám disk plný) za X hodin". To mi přijde jako veskrze praktické použití, ovšem pokud netuším nic o derivacích, tak se mi bude dost špatně zjišťovat ten aktuální 1 MB za sekundu...
Rozhodně nechci dávat ekvivalenci nebo implikaci mezi vysokoškolské vzdělání a dobrého programátora. Zcela jistě může být člověk skvělým programátorem, i když nemá ani maturitu, a zcela jistě může být člověk programátor mizerný, i když má červený diplom. Naprosto nezpochybňuji, že zkušenost může vzdělání nejen vyrovnat, ale klidně i překonat. Ale jsem si dost jistý, že za jinak stejných podmínek (stejně velké zkušenosti, stejně velký zájem a pracovitost, atd.) bude vysokoškolsky vzdělaný programátor lepší než nevysokoškolsky vzdělaný.
Ne ze by matematika byla k nicemu, ale od toho mam matematiky. Zeptejte se cvicicich na VS jak vypada kod matfyzaku. V podstate spravne ale diky chybejicim znalostem z IT aby se v tom prase vyznalo a silene neefektivni.
Nevi co je to stack,heap, jak funguji pointery a jak to napsat pro masivne paralelni zpracovani. Alokace pameti je alzheimeruv pojem.
Mam kolegu kryptoanalytika ktery je velmi schopny v matematice a kodera ktery naprga kdyz se mu rekne jak. Kdys je design blby a rekne se to blbe tak to taky naprogramuje blbe. On nechce premyslet. On to neni programator ale koder. A to staci. Kdyztak se to po nem ucese.
Navzajem se doplnujeme. Je to o specializaci, o interdisciplinarni spolupraci. O tom spojit dohromady obory kde od kazdeho vim trochu a zavest diskusi nad celkovym designem. Fakt nesezenete univerzalniho guru. Sezenete treba sitare - programatora. Ale tenhle clovek uz vi kulovy o programovani FPGA.
BTW:Koneckoncu stale z VS vypadavaj lidi co nikdy neslyseli o tom ze compilery umi optimalizovat. Travi silene moc casu na optimalizaci kterou za ne udela compiler.
68. Nic není jen cerne, nebo bile. Jasne, ze je mozne funkce rozdělit, jeden je analytik a druhy koder nebo programator. Jak však pise Zboj, analytik a zaroven programator je rychlejsi. Muze byt i v celkovem souctu lacinejsi. Zalezi, jak dobrého kodera ma k ruce.
Vždy zalezi na typu ulohy, typu spolecnosti, preferencích a schopnostech jednotlivých clenu tymu. Cene jednotlivých reseni, dostupnem casu.
Pokud je casu malo, tak se bud hned pocitalo, ze bude vyvoj drazsi a je mozne zaplatit drazsi, lidi nebo se projekt vymkl kontrole, hrozi penale a pak se muze vyplatit zaplatit nekoho dražšího, aby se predeslo ještě vetsi skode.
Sice je era specializace, ale mne se osvědčilo byt super specialistou v jednom oboru (typu leva zadni noha brouka) a k tomu mit slusny prehled o několika dalších oborech a to i velmi vzdalenych.
Ad. sitar-programator. A potřebuje znat pro resenou ulohu programovani FPGA? Myslim, ze tu nikdo netvrdil, ze existuje nejaky univerzalni programatorsky guru, který z fleku naprogramuje cokoliv. Avsak dobry programator je většinou schopny se to naucit. Druha otázka je, zda je to nutne a zda je to efektivni pro danou ulohu. Vetsinou nikdy není jedina moznost, obvykle je vice variant a je dobře, ale ne nezbytne nutne, zvolit tu, která se zda efektivni/nejlevnejsi.
[67] nj, klasika ... neexistuje na tyhle planete krome matematiku jiny zvire, ktery by pocitalo derivaci v nejakym bode z definice. A to ti pisu jako nekdo, kdo derivace a integraly pocital uz na prumce jakozto elektrikar, takze k cemu je to dobry vim pomerne slusne.
Ja sem si zase naprosto jisty tim, ze dosazene vzdelani nema s pracovni kvalitou cloveka spolecneho zhola nic ... prave proto, jak u nas vzdelavaci system (naprosto spatne) funguje. A to na vsech stupnich - bohuzel. Mno hlavne ze vsichni vedi ze 1212 === Zlata bulla sicilska ... ale co to je, to uz tusi jen malo kdo. Spousta decek pak odmemoruje zpameti vsechny krale, kralovny ... ale vyplnit slozenku neumej.
[69] ses naivista ... tam kde se matematika pro vyvoj potrebuje, zamestnavaji cely stado matematiku, kteri neumi napsat ani carku kodu. Nanic to totiz nepotrebujou. A co vic, ani matika neni jeden obor, naopak ... stejne jako mas ITka sitare, programatora, databazistu ... tam se i matematici venujou casto velmi maly casti toho, co vsechno matematika obsahuje.
Jestli chces trebas konkretni pripady, tak si vem trebas teleskop... astronoma opravdu nezajima jak je treba vyrobit zrcadlo, jak vyresit korekci chveni atmosfery ... jeho zajimaji ty obrazky, ktery z toho vylezou. Prozmenu ten, kdo to zrcadlo spocital/vyrobil/... zase vidi jen hezky obrazky, ale netusi jak z nich poznat slozeni ...
Dobrý den všem.
Jelikož jsem se zabýval touto diskusí, tak jsem ztratil 1/2 hodiny času a vlastně jsem se nic nedozvěděl. Mohl jsem odladit část kódu a to je to oč tu běží. Za to si budu moci koupit něco dobrého k jídlu, nebo zaplatit nájem. Je zbytečné se zabývat tím, kdo a proč je, nebo není dobrý programátor. Podle mě je důležité v této společnosti jíst, pít a odvést svědomitě svoji práci. Flame war jak víno.
Hezký den
Záleží v čem firma podniká. Pokud dělá aplikace "na zakázku", tak tam průměrní nebo dokonce i podprůměrní programátoři celkem stačí. Pokud jste ale firma, která je průkopníkem v nějakém oboru (google ve vyhledávání, FB v sociálních sítích atd.), tak špičkové programátory potřebujete.
Autor se zabývá vývojem kompilátorů a knihoven pro objektově-orientované programovací jazyky.
Přečteno 36 200×
Přečteno 25 361×
Přečteno 23 795×
Přečteno 20 177×
Přečteno 17 874×