Vzhledem k věku se již mohu ohlédnout zpět a na základě zkušeností shrnout a schématicky popsat, jaké typy programátorů se (nejen v našich končinách) vyskytují. Pokud se v textu poznáte, můžete se o své pocity podělit v komentářích, ale pouze slušně a konstruktivně.
Málokdo z mých současných kolegů začínal ještě s asemblerem na dnes nepředstavitelně velkých, těžkých a sálajících strojích, kdy nejsofistikovanějším jazykem byl BASIC a odborná literatura k nám proudila z Polska. Nechci toto ohlédnutí uspořádat chronologicky, spíše se zaměřím na druhy lidí v IT, kteří jsou svým způsobem typičtí.
Prvním typem jsou ti, již chtějí být programátory, ale nejsou schopni pochopit ani základní pravidla algoritmizace. S nimi nemá smysl ztrácet čas, ti jsou prostě předurčeni k něčemu jinému. Je příznačné, že s několika takovými jsem se setkal v Americe. Netřeba dodávat, že třeli bídu s nouzí.
O stupínek výše je typ, jemuž říkám „cvičená opice“. Má jisté rutinní znalosti a pod tlakem je schopen dodat jakýs takýs kód (většinou se zpožděním). Takový člověk si je ovšem své omezenosti zpravidla vědom, což je pro zaměstnavatele plus, protože se s ním alespoň nemusí handrkovat o platu. Díru do světa s ním ovšem samozřejmě neuděláte.
Dále se vyskytují lidé, již sice už něco vědí, ale za každou cenu se snaží ukázat, že vědí více. Ti jsou obzvláště nepříjemní, ale není nic snadnějšího, než je usměrnit. Takový (pseudo)programátor totiž obvykle lpí na jedné platformě či jazyku, jejž obhajuje, a haní vše ostatní. To je pochopitelně cesta do pekel, neboť není nic snazšího, než ukázat na meetingu, že takové individuum plácá kraviny (jinými slovy, v odborné diskusi ho hravě rozmáznete). Tací s oblibou píší komentáře pod odbornými články na internetu. Zhusta bez hlavy a paty, a navíc v arogantním tónu.
Nyní přejděme k akademikům. Typický akademik má více znalostí, než výše popsaný všeuměl, a také je skromnější. Z toho plyne zejména to, že se s ním dá diskutovat. Takový člověk má solidní teoretické znalosti, a co je nejdůležitější, je si vědom svých limitů. Netřeba dodávat, že jeho návrhy jsou v naprosté většině konstruktivní a přispívají ke zdárnému řešení projektu.
Na konec jsem si nechal génia. Ti jsou vzácní (pokud na nějakého narazíte, zpravidla pracuje pro konkurenci), a k nezaplacení. Přiznávám, že v ČR jsem nepotkal ani jednoho. V podstatě všichni, jež znám osobně, pracují v USA (ale často jde o imigranty). Příznačné je, že původně nestudovali informatiku. Jsou mezi nimi matematici, logici, jazykovědci, filozofové, prostě rekrutují se ze všemožných oborů. Společné ovšem mají geniální myšlenky v doméně IT. To nás vede nutně k závěru, že geniálním programátorem se nikdy nestane programátor průměrný, ať už pílí či usilovným (sebe)vzděláváním. S genialitou se človek prostě rodí, a může ji uplatnit v jakémkoliv oboru. Nemálo jich zakotvilo v IT.
A jak je na tom ČR? Upřímně, prachbídně. Částečně jsou na vině firmy, jež si opravdu dobrých pracovníků neváží. Svůj díl viny nesou i vysoké školy (byť na druhou stranu je třeba přiznat, že na západ od nás, jak jsem se mohl mnohonásobně osobně přesvědčit, je úroveň vzdělávání v oboru IT mnohdy žalostná). V komerční sféře, již jsem poznal, převládají zmíněné cvičené opice (a to v tom lepším případě). Najít opravdu dobrého programátora je zde (i když nabídnete opravdu vysoký plat) značně obtížné, vlastně téměř nemožné. Jistě nelze po každém kodérovi chtít, aby znal přesnou definici ultraproduktu a jeho vztah k větě o kompaktnosti, na druhou stranu ale snad můžeme očekávat, že sebehorší programátor ovládá trojčlenku a de Morganovy zákony. Velice často jde ovšem pouze o zbožné přání…
Myslim ze muzu mnoho mych kolegu zaradit do skatulky akademiku. Vlastne jine ani nechceme, delame pomerne odborny SW a cvicene opice by nam byly k nicemu. Ke skolam muzu rict, ze je nutne mit za sebou nejakou IT, ale nestaci to. Je potreba aby se clovek chtel sam rozvijet a bavilo ho to.
K tem genium - nejak jste zapomnel uvest jak je vlastne poznat/rozlisit.
Arogantnější text jsem nečetl. Když jsme tedy takový hlupáci, předpokládám, že vy jistě pracujete v Lockheedu a děláte na projektech pro USAF(Mimochodem dle toho to tak vypadá v tom USA, když tam např. ve zmíněném Lockheedu produkujou předražené a nespolehlivé projekty typu JSF a další.). Tolik k autorovi.
Lidé jsou hlavně líní, a nechtějí se dále vzdělávat nebo rozvíjet. Avšak rozhodně není pravda, že ten kdo si prostě lidově řečeno sedne na zadek a programuje, snaží se rozvíjet svoje znalosti a zkušenosti, že by se nedokázal vyšvihnout na velmi dobrého kybernetika. Ostatně to platí v každém oboru. Musíte mít zkoušenosti, a rozhodně to není jen o genialitě se kterou se člověk rodí.
Kvalitní programátoři jsou, jen o ně není zájem. Málokterá firma chce stavět business model na schopném programátorovi. Co kdyby odešel? Navíc mají tihle lidé plno nápadů, návrhů a z toho plynoucích otázek typu: proč to dělamé zrovna na téhle platformě? Komplikují poklidný život. Cvičená opice sice udělá jen zlomek práce, ale udělá je tak, jak se jí řekne.
Právě proto jsou v ČR jen akademici a cvičené opice. Nic mezi. O to mezi není zájem.
"snad můžeme očekávat, že sebehorší programátor ovládá trojčlenku"
Hehe, na pohovoru jsem dostal i jeden elementární příklad na přímou úměrnost a jednu slovní úlohu na N rovnic o N neznámých (která ale šla "od zadu" vyřešit jednu rovnici po druhé). Tak teď už vím, proč mi to šéf dával :-)
Nějak nezapadám do žádné škatulky. Programátor jsem už asi podprůměrný (support pro BFU zdegeneruje každého), ale jazyků ovládám několik (včetně toho Basicu) a je mi tak nějak jedno na čem dělám, pokud to dělá to co chci. Systémy ve stylu "nejlíp vím co je správně" nemám rád. Ovšem matematika mi jde rok od roku hůř, není se čemu divit, průměrné znalosti BFU končí na tom, že dokážou na kalkulačce sečíst pár čísel a člověk se musí přizpůsobit a i tak je mi vytýkáno, že někdy mluvím příliš odborně. Prostě bejt blbej je čím dál těžší.
Dobrý programátor tráví čas sebezdokonalováním (genialita se sice nedá naučit, ale kdo na sobě pracuje, může být hodně dobrý). Já naopak trávím čas tím, jak něco přednést, aby to průměrně inteligentní politik (zastupitel) pochopil i bez vět "Reálně to bude stát", "Zaplatí se za to", "Prémie za to budou v XXX a budou rozděleny..."
[5] Setkal jsem se s člověkem, který neuměl pochopit, že někdo umí programovacích jazyků víc. Pořád se snažil dopátrat, který že jazyk to umím. Vyjmenoval jsem mu jich víc, a on se pořád ptal "ale ano, ale který z nich umíte?". Když jsem ho upozornil na paralelu s lidskými jazyky, tak sice akceptoval, že někdo může umět česky i anglicky zároveň, ale u programovacích jazyků si trval na tom, že člověk může používat jen jeden. Asi to chápal spíše jako politický názor, než dovednost. A nejlepší bylo, že chtěl, abych uměl Javu. Tak jsem mu potvrdil že ano. Plácli jsme si a já pro ně na dohodu pár měsíců programoval. Ta perlička je v tom, že to byly scripty ve VBScriptu. Javu nepoužívali vůbec a kolegům nebylo úplně jasné, jak vedoucí oddělení IT došel k tomu, že hledal někoho se znalostí Javy. Ale vymluvit se mu to nepokoušeli.
Osobně si myslím, že když člověk umí jazyků více, tak další už se dokáže doučit v řádu hodin. Neplatí to obecně, protože Java, C a Pascal vám s učením se Haskelu moc nepomůžou, ale když už člověk umí pár imperativních jazyků, tak naučit se jeden další je jen o syntaxi (zvládnutelná v hodinách) a knihovnách (to je nekonečné, dobré je mít z čeho kopírovat). Ale zjišťuji, že jsem s tímto názorem osamocen. Kdykoliv, když jsem konfrontován s "5 let praxe programování v Javě" (bez specifikace čeho konkrétně programování, jestli awt, swing, net, io, databáze, persistence nebo čeho vlastně).
Geniální programátoři: oni dost často v komerční sféře nejsou moc uplatnitelní, osobně jsem v týmu žádného nikdy neměl, ale tipnul bych si, že mít je v týmu je dost často pro zbytek týmu i jeho vedení problém. Dost často pak jedou na sebe, případně zakládají nějaké své firmy, nebo se věnují takovým těm "algoritmickým" věcem jako kryptografie, nebo obecně tvorba knhihoven, frameworků a nástrojů pro ostatní běžné "dělníky".
Mé osobní tipy na české geniální programátory, IT
- Martin Mareš
- parta ohledně demo týmů broncs a movsd - dement, shakul
Svým způsobem bych tam zařadil i mediálně profláknuté J. Vránu a D. Grudla
No .. asi bych jeste rozlisil programatora od ... asi ani nevim jak to spravne nazvat, ale budiz: algorithm designer. Proste naprogramovat neco nejak je jedna vec, ale znam i lidi, kteri, ac programovaci jazyk vpodstate neumi zadny, dokazi skvele, na papire ci tabuli, vymyslet krasne algoritmy.
Prikladem bud treba clovek, ktery umi dobre optimalizovat databazove dotazy (OK, mozna SQL povazujete za jazyk) - vyzaduje to v mnoha pripadech slozite premysleni, hluboke pochopeni principu, ale neni treba umet to napsat.
Nebo SW architekti - jak to ma cele fungovat, co ma s cim komunikovat... sice musi rozumnet principum, nejspis i detailum implementace, ale v praxi to napise nekdo jiny.
Nebo, jeste extremnejsi priklad, hermi fyzika ci rendering. Povazoval by se takovy clovek za programatora, nebo spise za neco pribuzneho aplikovanemu matematikovi? :)
Neříkal bych tomu genialita. Spíš talent, který někdo od Boha má a někdo ne. A v Čechách ve firmách jich moc není, protože je firmy nepotřebují. Stačí jim levnější. Proč platit někoho, koho nepotřebuji.
I když to může znít pyšně, vím, že mám na programování velký talent (od návrhu po realizaci). Z lidí, co jsem v Čechách osobně znal, bych za velmi talentovaného programátora považoval jednoho mého spolužáka ze střední. Ten skončil tuším někde v Irsku nebo kde. Pak už "osobně" znám jen dobré programátory, chcete-li akademiky,
Ale mám tu kliku, že můžu pracovat s různými velmi talentovanými programátory z celého světa (a je jedno odkud). Člověk se od nich hodně naučí a prostě to většinou tak nějak funguje.
K akademikům? Já na VŠ nikdy nešel, protože jsem to prostě nepotřeboval a neměl jsem zbytečně volných 5 let (a v opravdu dobrých firmách kde chtějí talent to nikdo neřeší). Ale to neznamená, že jsou akademici špatní. Je plno dobrých programátorů, kteří sice nemají přehršel talentu, ale dobrá škola jim prospěje, takže dokážou být velmi užiteční a minimálně když o programování mluví, zní to na úrovni.
[6] Nejsi sám, jsem stejného názoru. Začínal jsem na ZX Basic, asm Z80 a pokračoval Pascal, C, asm 8051, dos batch, unix shell, php, PL/SQL, Pro*C, java, C++, python, scheme (gimp-fu). Všechno je to na jedno brdo, v každém jsou podmínky a cykly a každý má nějaká specifika.
Naučit se nový jazyk je otázka pár hodin studia syntaxe a pak už jen léta a léta praxe, aby člověk ovládl specifika jazyka, znal limity a věděl, jak ty limity v případě potřeby obejít.
Většina lidí by se v mém případě asi zdržela jakéhokoliv komentáře, nicméně: patřím, tedy patřil jsem do první kategorie, než jsem usoudil, že tudy cesta nevede. Trávil jsem dlouhé hodiny zkoumánim cizích kódů, vymýšlením vlastních postupů, ... zájem a píli jsem měl. Moje hlava to prostě nepobírala. Na to mám jedinou radu: jednoduše toho nechat a uznat, že na to prostě nemáma jít dál. Ušetříte plno času sobě i ostatním, kteří mají zájem vám pomoci.
Ono se ještě programuje? ;-)
Prošel jsem několika zaměstnavateli a všichni podlehli mámení "generování".
Rychlé, ale ....
Kód neoptimalizován, nabobtnané ...
Procesor kompu neustále přetížen, tahání obrovských modulů do paměti bez odstraňování, aplikace pomalu načítaná, pomalý běh ...
Pro příklad. Přepsal jsem klíčovou část "generovaného" programu pro výpočet směnového plánu ve výrobním podniku. Výsledkem bylo, že optimalizační proces výpočtu s. plánu, který komp počítal 3 hodiny, se provedl za 20 minut.
Tak to je, když člověk poklesne téměř na úroveň strojového kódu (provedeno bez vědomí vedoucího projektu).
Zajímavé je, že hodně lidí, co na technické VŠ nebyli, si myslí, že se tam hovno dělá, všichni se kopou nohama do zadku, chlastají a vůbec je to celé k prdu. Přál bych jim zažít ten fičák a tu hromadu informací, co musejí pochopit a nacucat do hlavy. V praxi se to pak projeví tak, že mají prostě ve vědomostech díry a není čas se to doučovat. Nehledě na to, že VŠ dotlačí studenta k systematickému a analytickému uvažování.
Taky jsem si kdysi myslel, že jsem geniální programátor - myslel jsem rychleji než psal, algoritmy sypal z rukávu, originální řešení optimalizovaná na rychlost, úspornost kódu a eleganci... až jsem zjistil, že to je ten nejhorší přístup, jaký může být. Programátor nemá být umělec, ale řemeslník - nedělá sochu, ale stroj, který který musí jít udržovat a s minimálními náklady reprodukovat či rozšiřovat. Program nemá být dokonalý unikát, který hlásá genialitu svého tvůrce, ale jednoduchý dílek stavebnice s jasně definovaným rozhraním a samodokumentujícím kódem.
Člověk, který vítězí v codegolfu je nejspíš geniální, ale pokud stejné postupy uplatňuje ve své práci, tak je to katastrofa.
[15] Aj ked som nemal tolko ASM a basic, tak som na tom podobne - postupne som sa ucil bat, C, asm x86, Pascal, shell, PHP, Java, SQL (a rozdiely MSSQL/mySQL/Oracle), PL/SQL, asm mips, trochu Perlu, C++, Prolog, trochu LISPu a momentalne preskumavam Scalu.
Musim upozornit na to, ze v kazdom programovacom jazyku nie su v zaklade cykly. V tych funkcionalnych/logickych staci rekurzia (cykly sa daju simulovat, ale to snad nikto nerobi).
[17] to je vidiet aj pri velkej (az zbytocnej) abstrakcii, zbytocnych entitach namiesto optimalizovaneho SQL ("vsak vykon mame v dnesnej dobe velky") a potom sa v podstate jednoduchy select s par joinami a where podmienkou robi desiatky minut.
Mna jeden taky nastval a po prepisani som to dostal na nieco ako 0.2 sekundy. Na druhu stranu, potom uz z toho nebolo jednoduche hranie sa s entitami, ale par selectov.
[22] to zalezi. Samodokumentujuci kod nepisany len pre uspornost je samozrejmost, ostatne ani tak nie.
Ked pisem len znamy algoritmus na styl BFS, tak ho napisem tak, nech bezi efektivne a da sa ho pomerne lahko pochopit. Tam totiz nie je az tak co pokazit.
Ked ide o "vykonny" kod, ktory spaja chovanie viac tried atd., tak mi ide hlavne o zrozumitelnost a preto obetujem aj eleganciu,
Promiňte, ale géniů chodí po světě tři prdele. I mezi programátory. Ale jen mizivé množství z nich dovede svůj talent využít. Talent je samozřejmě věc důležitá, ale bez vášně pro programování a bez zájmu o jiné, nesouvisející obory je talent k ničemu. Ty nesouvisející obory jsou možná ještě důležitější, než programování samotné - věci (počítače, software, vynálezy) by nám měly sloužit, ne existovat samy pro sebe. Ale ani to není to nejdůležitější.
Dívám se kolem sebe na lidi, které společnost vnímá jako úspěšné. Samozřejmě je potřeba trochu talentu a štěstí. Ale genialita není potřeba. Pro úspěch je důležitější vědět co dělám a proč to dělám, mít odvahu riskovat, mít záznamník a tužku a mít schopnost nevykašlat se na to při prvních problémech.
Já nechci tvrdit, že genialita je k ničemu. Ale pro většinu oborů lidské činnosti (včetně programování) je genialita zbytečná a o výsledcích rozhodují jiné vlastnosti.
@15 No nevim, zenu hledat muzete, znam Martina z gymplu, ale o zadne zene, ktera by zpusobila jeho genialitu tedy opravdu nevim. Ale mozna jsem neco prehledl.
Jinak co vim, za jeho genialitou je z podstatne casti tvrda prace a neuprosna ochota se vecem venovat (napr. nehral hry). Jak pise [24], neni to jen o talentu. Martin rozhodne nebyl ceska spicka v matematickem nadani, napriklad.
To je mimochodem vec, kde mi ten blogpost trochu vadi. Talent se precenuje. Nekdo o tom napsal zajimavy clanek, ktery bohuzel nemuzu uz najit, ze kdyz lide veri, ze je neco otazka talentu, snazi se mene, nez kdyz veri, ze je to otazka usili. Takze tvrdit, ze je nejaky obor otazkou talentu, je dobra cesta k tomu, jak ten obor pro vetsinu i talentovanych lidi uzavrit.
Zdravim,
Myslim, ze kdyz ma clovek moznost co vylepsit/zdokonalit, a je zrovna v oboru programovani, nikdy neni na skodu to i udelat. Rad pisu scripty, bavi me to,
a vyuzivam na to pokud mozno veskery cas co mam, jelikoz bydlim sam, jak se
pise v [27] - nehraju hry, jenom pracuju, premyslim, pracuju a znova premyslim.
Napady mam, ale neskutecne malo casu to vsechno co chci udelat a z toho mam nekdy poradny deprese. Urcite to znate taky, kdyz se snazite sebevic,
ale ono to proste nejde, v mym pripade je to kvuli tomu ze na tom pracuju treba 1-6 mesicu v jednom kuse, rano vstat, zapnout PC a makat, pak do prace, ale
tam vsechno zvladam, tak si pracuju na svych vecech. Takhle to jede uz paty rok,
a stale toho nemam dost :)
[21] Znam nemalo velmi shopnych (nejen) programatoru, kteri na te VS byli a utekli z ni - prave proto, ze to co se tam ucilo bylo naprosto nanic - 20+let stare postupy a technologie. Defakto, kdyz si tak v hlave projdu lidi, kteri se profesionalne zabejvaj IT, tak minimalne 2/3 znich nema vzdelani ani vzdalene pribuzne.
Programovaci jazyk (jakejkoli) je jen syntax, jeho znalost sice zrychli vlastni psani kodu, ale neni to nic bezpodminecne nutnyho, pokud dotycny umi pouzivat mozek, tak si vse co potrebuje najde behem par okamziku. Znamost prijde jednoduse sama casem - pokud bude neco pouzivat denne, tak si to jednoduse bude pamatovat.
A genialni programatori jednoduse nejsou potreba. 99% prace programatora je o tom, jak vzit data ve formatu X, neco (vetsinou trivialniho) snimi provest a vratit je ve formatu Y.
BTW: Dovolil sem si zakaznikovi "optimalizovat" databazi v nekterych pripadech o 4 rady (z desitek minut na jednotky vterin)... ;D. Ovsem nemyslim si ze bych byl tak genialni, spis ze dodavatel by zaslouzil viset za koule. Bohuzel dneska takto vypada defakto vse. "kupte si vykonejsi HW" ...
[22] Programator muze byt umelcem, ale malo ktery programator si to muze dovolit. Podivej, na skole sme s kamosema trebas tyden ladili algoritmus zobrazovani dratovyho modelu (na 386 tenkrat). Ve finale po prepsani do assambleru to bylo o nekolik radu vykonejsi nez prvni nastrel v packalu. Kolik programatoru si muze dovolit venovat tyden prace jedny drobnosti?
BTW: Ted me napadla trebas takova kravinka ... jak prohodit dve promenny bez pouziti treti (=usetri se pamet). Bude tohle dneska nekdo resit? Kup si vic RAM. Ono je to vetsinou opravdu jedno, ale v okaziku kdy se dostanes na miliony poli ... se zacne projevovat kazdej usetrenej byte.
Mirny pokus o flamewar. Nemam rad skatulkovani, jsou to kecy o nicem, bud clovek umi nebo neumi. Je uplne jedno jak velky ma talent, jak velky je dric, proste bud umi nebo ne. A to jestli umi jde ruku v ruce s vlastnim nadsenim, bez nadseni to nepujde nikdy. Nadseni samozrejme upada s pribyvajicim vekem. A geniove? V populaci jich je podle genetiku 1/8 az 1/10, akorat velkou roli hraje prostredi a muze se stat, ze svuj genialni talent nikdy neprojevi. A co se tyce VS, vetsinou poskytne moznost se rozvinout, bud ji student vyuzije nebo, pokud ano, ziska bezva znalosti, pokud ne, je jeden z dalsich vzdelanych lenochu, jeho chyba. A opet jsme u toho vlastniho nadseni pro obor. A dalsi otazka, jestli je VS nutna, neni, ale ulehcuje prisun tech spravnych informaci, spousta borcu ji nema nebo ma v ne-it oboru, o to vetsi usili pak musi vyvinout k nastudovani patricnych informaci. Ve finale je to jedno, protoze opet plati jednoducha otazka, jestli dotycny umi nebo ne, at s diplomem nebo bez.
@30 "A geniove? V populaci jich je podle genetiku 1/8 az 1/10, akorat velkou roli hraje prostredi"
Fakt? Mas na to nejakou citaci? Chtel bych se o tom dozvedet vic.
@29 No, nevim, jestli bych chtel prohazovat obsahy dvou harddisku xorovanim, abych usetril za treti... :-) Prijde mi to ponekud.. riskantni.
pracujem s jednym programatorskym geniom - ak uplne presne a dokonale vysvetlim problem, okolo 4 rano vidim finalny commit a build
pocas 1.5 roka co s nim pracujem sa nestalo ze by nieco nefungoval podla poziadaviek (tj. ako si zadas poziadavky, taky je vysledok :-)
musim priznat ze polovici jeho kodu nerozumiem - vzdy sleduje najnovsie trendy a rovno ich uspesne aplikuje
kazde jedno euro je ktore zarobi je tvrdo zasluzene (BTW - mesacne je tych eur 5miestne cislo)
[33] "musim priznat ze polovici jeho kodu nerozumiem" - a to je právě ten problém - až se ten génius rozhodne, že by radši pracoval jinde, nebo ho přejede tramvaj, můžete buď aplikaci rovnou začít psát znovu, nebo sehnat nového génia a doufat, že bude s tím prvním kompatibilní, nebo zaměstnat za poloviční plat dva méně geniální programátory, kteří nejspíš stráví polovinu času nadáváním na svého geniálního předchůdce.
[29] prohazování obsahu xchg nebo xor, ale podobné vychytávky jsou celkem nepodstatné. když pak někdo pomocí vyspělé technologie Copy&Paste duplikuje celé kusy tříd, případně nevhodnou dědičností kód dokonale znečitelní kód - optimalizaci využití paměti na úrovni strojového kódu má dělat překladač, případně interpret, Zdrojový kód by měl být čitelný, logicky členěný a snadno znovupoužitelný. Když udělám kvůli přehlednosti nějakou tu proměnnou navíc, stejně ji překladač nejspíš eliminuje, když udělám kvůli "dokumentaci" minifunkci, stejně ji překladač nejspíš vloží inline - to dělaly delphi už před deseti lety a předpokládám, že se vývoj překladačů nezastavil. (jistě, nepíšu o programování zařízení s pamětí kolem 512B RAM)
[12] Koukám, že nám chyběla stejná kategorie. Člověk rozumící algoritmizaci, ale nerozumící si s detaily programovacích jazyků. Patřím k té skupině, která si myslí, že programování je aplikovaná matematika, a bez porozumění programování je jedinec jen „cvičená kódérská opice“ (ty ale často znají specifika jazyků).
SQL považuji za programovací jazyk, bohužel se však pořádná řádka vývojářů bojí poskládat a vyladit dotazy mající třeba 2kB textu. Osobně považuji volbu programovacího jazyka za poměrně irelevantní záležitost, po delší praxi je změna téměř jen o jiné syntaxi, pravda odchovanec imperativních jazyků jen těžko porozumí jazykům funkcionálním a bohužel většina výuky programování začíná od těch imperativních (Java, C, Pascal, vyjímečně Python).
[36] ...pořádná řádka vývojářů se bojí poskládat a vyladit dotazy mající třeba 2kB textu... To je věc, která mě nutí nesouhlasit s názorem [6] a která mě přivádí na myšlenku, že programování není jen zvládnutí programovacího jazyka, knihovny a algoritmů. Jsem nedotčen funcionálním programováním, ale velmi dobře vidím rozdíl mezi řekněme PHP a SQL. Mám občas problémy se programátory, kteří přistupují k SQL funkcionálním stylem "tady se hodí cyklus pro čtení a z téhle tabulky se vezme první záznam" a diví se, že jim to nefunguje, případně to funguje pomalu. Uvažování v množinách je jiné, než uvažování v klasickém programovacím jazyce. Efektivně programovat prostě znamená podstatně více, než jen znát jazyk, knihovny a algoritmy. Dejte průměrnému programátorovi najít třeba lokální maximum v zarušených vzorcích nějakého měření - klasický "programátorský" postup vede k nalezení rušivé špičky - vždyť kdo by se zatěžoval regresní analýzou, když mu její praktický význam nikdo nevysvětlil a ve škole byla statistika jen otravný předmět.
Nemám vysokou školu a občas mě to mrzí. Dohánět statistiku, zpracování signálů, pravděpodobnost a další matematické dovednosti samostudiem bolí.
(PHP v příkladu jsem uvedl ne proto, že bych v tom něco významného vyvíjel, ale abych alespoň přibližně poukázal na kategorii programátora PHP+MySql)
[36] Nemyslím, že by problém byl ve výuce imperativních jazyků. Ta dělící čára je mezi lidmi, kteří jsou schopni a ochotni přemýšlet na vyšší úrovni abstrakce a mezi těmi, kteří to nedokážou. Ti první v případě potřeby IMO mohou zkusit jiné paradigma, ti druzí nikoliv, protože jejich myšlení končí na "vezmi tohle, dej to jinam" a jejich metodou je často hlavně pokus/omyl a opakované spouštění debuggeru.
[37] Já jsem dotčen studiem matematiky (a fyziky) trochu více, byť jsem učitelské vzdělání vzdal pár zkoušek před koncem, moje hloupost, potřeboval jsem se uživit. Programátor samouk, takže co „skilled monkey“ umí po škole si objevuji sám. Třeba v databázařině mě neznalosti SQL fíglů omezují méně, než kdybych si neuměl dát souvislosti do pořádných vztahů a vše řešil hrubou silou mnohačetných dotazů v cyklech.
Proti PHP+anySQL nemám nic, vyrábím si tím nějaké finance, byť moje hlavní obživa jde z jednoho účetnického oboru.
[38] Nemělo to vyznít, že je problém ve výuce imperativních jazyků. Zvyk je železná košile. Co znám programátory, kteří pochopili třeba Scheme dříve než C, tak chápou logiku programování mnohem šířeji. Těch, co to zvládli obráceně, asi bude minimum.
Celý ten blog post mi přijde zcestný. Chyba je míchat analytika a programátora. Programátor nemusí být dobrý matematik, nemusí bít excelentní v algoritmizaci, ale musí dobře ovládat technologie.
Na tu algoritmizaci, matematiku a analýzu je analytik. Programátor je od toho, aby implementovat zadání od analytika.
Já bych ještě přidal další typy. Jsou programátoři co píšou naprosto nechutný kód, jsou si toho vědomi, ale nehodlají s tím nic dělat, protože pro ně je důležité, že výsledný program funguje a může se prodat. Pak jsou ti (obvykle jsou to právě lidi s IT vzděláním nebo ti géniové), které kvalita kódu zajímá. S první skupinou se nejlépe vypořádáte jejich přesunutím do projetkového nebo obchodního oddělení. V tomhle jsou zase značně převyšují programátory.
K vzdělání na VŠ bych řekl, že nutné rozhodně není. Ale aby se člověk dostal na úroveň absolventa VŠ, tak musí neuvěřitelně dřít sám a to většina lidí nezvládne. Ono je mnohem lehčí se učit podle koncepce, kterou vymyslel ten kdo to umí, než se pokoušet si tu koncepci vymyslet sám bez dostatečných znalostí. Dál si myslím, že dobrý programátor by měl umět několik jazyků a nejlépe i jazyky mimo mainstream (logické, funkcionální atd.). Neuvěřitelně to člověku rozšíří obzory a najednou do sebe všechno zapadne.
Já sám nevím kam patřím, s ničím sem zatím neměl problém (vyřešil jsem veškeré dané problémy zadanými sebou čí zaměstnavatelem), dokážu pochopit funkčnost něčeho co napsal někdo jiný a pak to do hodinky použít. Práci odevzdávám vždy před termínem. Snažím se dělat si nějaký gamesky v c++ jinak sem na stazi jako php programator(sefovi navrhuju a konstruuju cele aplikace, nikdo se mi do toho neplete) ale nebavi me to. Bavi me spis algoritmizace, než tvoření formularu a webove logiky. Sel jsem na vejsku jen tak abych se treba neco dozvedel na co bych sam neprisel.
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 793×
Přečteno 20 177×
Přečteno 17 872×