Přejít k navigační liště

Zdroják » Různé » Programátorem po čtyřicítce? Připravte se!

Programátorem po čtyřicítce? Připravte se!

Články Různé

Je mi čtyřicet tři let a po většinu svého života programuju.

Nálepky:

Po ohlasu na překlad několika článků o „programátorech po čtyřicítce“ jsme oslovili české autory a požádali je o text na podobné téma – poznámka. redakce.

První program jsem napsal někdy v jedenácti letech. Ve dvanácti jsem ho mohl konečně napsat do počítače. Od třinácti jsem měl vlastní ZX Spectrum. Psal jsem v BASICu a ve strojáku. Naučil jsem se i C, Pascal a FORTH, ještě před gymnáziem.

Školy mi, co se týče programování, moc nedaly; mnohem víc jsem se naučil tím, že jsem sám programoval a učil se čtením cizích programů. Po škole jsem nastoupil na své první pracovní místo. Ne, nebyl jsem programátor, sázel jsem letáky a jídelní lístky a vizitky v Artline a Ventuře. Programování byl můj koníček.

zx spectrum 48k

Zdroj: wikipedia

Byl jsem mladý a chtěl jsem programovat. Uměl jsem Turbo C i Turbo Pascal. Uměl jsem psát aplikace, které používaly služby DOSu i BIOSu, uměl jsem psát rezidenty (to už ani nevíte, co to bylo, že?) a pracovat s EMS a XMS. Uměl jsem přímo ovládat VGA a uměl jsem i spoustu dalších věcí. Ale bylo mi to k ničemu; tehdy se programovaly hlavně databázové aplikace, a tak jsem se živil různě, třeba jako správce sítí.

Někdy kolem roku 2000 jsem si napsal, jen tak, překladač vlastního jazyka. Syntakticky šlo o něco podobného jako C, ale přimontoval jsem si pár vlastních featur. Výsledkem překladu byl assemblerový zdroják, který se prohnal Turbo Assemblerem. Proč? No, hlavně proto, že se mi líbil extendér DOS32 (to už taky dneska nikdo nezná…) a chtěl jsem pro toto prostředí psát programy.

Pak jsem konečně našel práci coby programátor. Dělal jsem web v ASP (bez dot net, jen obyčejné ASP) a programoval v JScriptu. Document.all vládlo všem. Doma jsem si pak ve volném čase psal vlastní operační systém pro procesory i386 a vyšší – kernel v assembleru, zbytek pak v gcc. Byla to opravdu krásná a milá práce, která mě moc bavila, ale na rovinu: v jednom člověku v nízkoúrovňových jazycích vyvíjet něco, co bude tak velké a mocné jako operační systém, to nelze… Skončil jsem ve chvíli, kdy systém fungoval, používal multitasking, oddělené procesy, uměl pracovat s diskem, uměl z disku načíst .ELF, slinkovat si jej s dynamickými knihovnami a spustit. Připravil jsem pár utilit, a skončil jsem nějakým textovým editorem.

Vznik bloguje.cz

V té době jsem objevil blogy a PHP. Víceméně nezávisle na sobě. Hledal jsem nějaké vhodné řešení, ale pak mě napadlo, že bych si to mohl udělat sám. A tak vznikl můj vlastní blog, a já pak v jedné slabé chvíli přepsal jeho jádro tak, aby mohlo pracovat s více uživateli a vícero blogy. Dalších několik let bylo ve znamení Bloguje.cz, PHP, MySQL a webových technologií. Tiché osamocené chvíle s assemblerem, z jejichž výsledků jsem se potěšil nejvýš já sám, nahradily bouřlivé dny s PHP, za jejichž výsledky mě chválilo nebo mi nadávalo několik tisíc lidí. Přímo mně, ne nějaké “firmě”, která by mě od jejich reakcí odstínila. To byla zásadní zkušenost v mnoha ohledech.

bloguje

Před Bloguje jsem byl programátor toho klasického, “ryze inženýrského” typu. Věnoval jsem se programování pro programování, a nic okolo mě nezajímalo. Smál jsem se příběhům o BFU, co neumí používat naše skvělé programy a kliká úplně blbě. Považoval jsem se za vysoce kvalifikovaného odborníka na tvorbu programů, a když bylo potřeba udělat uživatelské rozhraní, udělal jsem ho. Ostatně, taková byla doba na začátku tohoto tisíciletí.

Díky přímé a bezprostřední zkušenosti s vývojem, správou a supportem projektu, kde v okamžiku největší slávy bylo patnáct tisíc blogů, jsem musel poznat spoustu příbuzných oborů a naučit se spoustu věcí, především v oblasti soft skills. Pochopil jsem, že když uživatelé dělají stejnou chybu, tak za to mohu já. Pochopil jsem, že IT a development nejsou obory, které rozhodují, ale že to jsou servisní složky.

Pár let poté, to už jsem pracoval v médiích, jsem se setkal se situací, kdy IT vyvinulo skvělý redakční systém, který byl přesně podle tehdejších trendů, modulární, objektový, responzivní, ale bohužel nikoho z IT nenapadlo, že by si sednul do redakce a zkusil si článek napsat, zadat do systému, přidat správně fotografie a publikovat. Z jejich pohledu to bylo tak, že novinář píše a oni tvoří systém, a mají na to experty na UX a SEO a databázi, tak to přece nemůže dopadnout špatně. Mýlili se.

Šéfredaktorem Zdrojáku

Je jasné, že takováhle intenzivní škola zanechala jasné stopy na mém přístupu k programování. Po odchodu z Bloguje, kde už nebylo kam se rozvíjet, jsem poměrně rychle zjistil, že jsem programátorsky vyhořel. Poslední impuls bylo angažmá ve firmě, která zamrzla v době nevalidního HTML a “všichni naši zákazníci mají Internet Explorer”. Byl jsem tam nový, takže můj hlas, že je rok 2009 a takhle dlouho nepřežijí, spíš okolí popouzel. Návrh “přejděme na jQuery” zahynul pod argumentem “ne, to je další velký kód do systému, navíc určitě plný chyb, to si radši napíšeme sami”. Po téhle zkušenosti jsem si řekl, že už nesnesu další den psaní CRUDů, a začal jsem dělat Zdroják.

Konečně jsem neprogramoval. Stál jsem na druhé straně. Původem programátor, ovšem omlácený zkušeností mimo klidný život v oddělení nějaké firmy… Četl jsem diskuse pod zdejšími články a poznával jsem sám sebe v osmadvaceti letech, jak sedím ve vývojářském studiu s pěti dalšími programátory a neexistuje nic mimo hardcore kódů, počítačů a technologií, kterým rozumíme nejlíp, a kdo tomu nerozumí, tak na to nemá sahat, LOL, lama, RTFM! Začal jsem o programování víc psát, naučil jsem se trochu přednášet a vystupovat před lidmi, což je zkušenost, která je k nezaplacení. Sám jsem se v té době zabýval programováním spíš jen rekreačně, sledoval jsem trendy v nových technologiích, a především na webu, to je dynamicky se měnící obor a to mě bavilo. Sledoval jsem nástup jQuery, a byť jde z dnešního pohledu o nepříliš vhodný nástroj, tak jednoznačně nesmírně napomohl psaní cross-browser aplikací a ve své době byl velmi zásadní pro další rozvoj webového vývoje.

V mediálním domu

No a nakonec, to mi bylo rovných 40 let, jsem se ocitl v mediálním domě coby vedoucí malé “punkové” skupiny podobně smýšlejících vývojářů. Dělat rychle zajímavé aplikace, to byla naše práce. Používali jsme přístup “good enough” a “minimum viable product” a místo toho, abychom řešili, jestli budoucnost jsou SQL nebo NoSQL, tak jsme používali obojí, každé tam, kde je potřeba. Uvědomil jsem si, že mladší kolegové píší rychleji a programují nadšeněji, a lepší už to nebude. Krok s nimi v tomto neudržím. Ale přesto si můžeme být užiteční, především proto, že mám víc zkušeností a už jsem leccos zažil.

Někdy v té době jsem se díky kurzu na Courseře naučil pár, pro mne nových, programátorských technik a paradigmat. LISP, SML, funkcionální programování v Haskellu, … Nebylo to z nutnosti, bylo to z radosti nad tím, že se učím něco, co považuju za zajímavé a co mě naučilo dívat se na programování zase z jiných úhlů. Ve volných chvílích jsem se zase vrátil k osmibitům a jednočipům a assembleru, k různým transpilerům…

Občas si vzpomenu na slova Karla Minaříka:

“Díky tomu, že jsem nestudoval programování, ale filosofii, jsem se naučil pár věcí. Zaprvé: že jsou lidi, co jsou mnohem chytřejší než já, takže netrpím zbytněním ega. No a zadruhé nad úkolem nejdřív přemýšlím. Zatímco kolegové slyší zákazníka, který popisuje problém, a už v duchu vymýšlejí tabulky do databáze, tak já se snažím zjistit, co vlastně chce. A na začátku vývoje si kolegové sednou ke klávesnicím a začnou zakládat servery a stahovat frameworky a modelovat relace, dokud je nezastavím a neřeknu: Zamyslete se, CO děláme! Pak teprve budeme přemýšlet, jak to uděláme…”

Současnost

Před necelým rokem jsem pracoval v jedné firmě jako programátor. Chtěli někoho, kdo umí React. Nebyl jsem si úplně jistý, jestli ho “umím”, ale co už: nastoupil jsem, a během tří dnů jsem psal a psal a psal, měl jsem z toho radost a šéf chodil a říkal: “To je neuvěřitelný, já ti snad dám titul Nejlepší pracovník měsíce”. Hodně mě to potěšilo, především proto, že jsem sám sobě dokázal, že i po čtyřicítce je možné udržet krok s vývojem technologií.

Ve třiačtyřiceti letech mám zkrátka dost zkušeností na to, abych se novou technologii naučil poměrně rychle. Zároveň mám už i nějaký instinkt, říkejme tomu “čuch” na to, rozpoznat, co se učit nechci a co mi k ničemu nebude. Poznal jsem dostatečné množství jazyků a paradigmat na to, aby mě máloco překvapilo. Koukám se na React a JSX a říkám si: hele, TurboVision, to už tu bylo.

Po čtyřicítce taky už neberu programování smrtelně vážně. Poctivě, to ano, ale ne tak vážně. Diskuse o tom, jestli Gulp nebo Grunt, mě nechávají chladným. Nejsem fanoušek, co miluje svůj programovací nástroj. Do vášnivých diskusí o to, co je lepší, se nezapojuju. Nebaví mě, nudí mě. Soustředím se na výsledek, protože programování je pro mne dneska hlavně postup, jak stvořit aplikaci, kterou chce někdo použít. Na jazyku ani na nástrojích až tak nezáleží, proto je důležité vybrat ty vhodné, ne ty, se kterými jsem se kdysi naučil pracovat.

programming-languages

Možná bych na sobě měl pozorovat nějaké sklony ke konzervatismu. Jako že “když jsem se deset let učil PHP, tak…” a věřit, že jednou, za deset let, až všichni mladí budou dělat něco jiného, tak si firmy budou cenit starých PHPkových pardálů. Zvolil jsem druhou možnost: posunout se dál. Učit se, učit ostatní, využít zkušeností. Tak jsem hodil denní práci s PHP přes palubu a raději zlepšil svoje schopnosti v JavaScriptu a Node.js. Aktivně dodnes píšu v JavaScriptu, PHP, C, Wiring a assembleru osmibitů. Někde v hlavě mi zůstává spousta dalších jazyků: C#, C/C++, Pascal, FORTH, Lua, Haskell, SML, BASIC… Ale je pravda, že znám spoustu vývojářů, kteří věří, že to, co se naučili a s čím pracují deset let, bude už navždy žádané, a neváhají jakékoli novinky vášnivě odmítnout jako “pomíjivé módní vlny, které stejně odejdou, a vezmou s sebou ty mladé blázny…” Někdy jim je třeba pouhých třicet, tady věk nehraje, bych řekl, žádnou roli.

Nenechte se zaskočit

Můj recept na život programátora po čtyřicítce je snadný. Důležité je připravit se na něj dřív. Já vím, říkat sedmadvacetiletému člověku, že mu bude jednou čtyřicet, je většinou na nic, ale třeba kolem pětatřiceti už přichází období, kdy si člověk uvědomuje, že nebude navždy mladý. Jestli vám do té doby stačilo umět programovat, tak to pomalu stačit přestane. Přijde pětadvacetiletý kluk nebo holka, budou umět taky programovat, bude jim stačit míň peněz, naučí se módní technologie a budou navíc rychlejší než vy. Co nabídnete vy? Zkušenosti s frameworky, co se používaly před pěti lety?

Jedno z největších nebezpečí, které na stárnoucího programátora číhá, je, že se stane fachidiotem. Že ustrne a uvěří tomu, že ty postupy a nástroje, které zná a umí, budou potřeba navždy. Něco jako můj známý, který mi v roce 1995 říkal: “Já umím FoxPro, to mi stačí, to bude potřeba pořád, s tím si vystačím klidně dalších dvacet let a pořád budu mít práci!” Bohužel to neplatí, protože IT je obor který se vyvíjí neskutečně rychle. Pokrok nezastavíš ani červenou lucernou a voláním STŮJ! Dokonce ani “progress.halt()” nepomůže; ani když to napíšete do diskusí ke každému článku o nějaké programátorské novince. Nejjistější recept proti stařeckému fachidiotismu je vylézt z pohodlné ulity vlastní profesní sebejistoty. Dělat chvíli něco jiného. Podívat se na věci z odstupu, z jiného úhlu. Snažit se být ve styku s lidmi a naslouchat jim. Učit se a učit jiné. Rozšířit si obzory nejen v rámci oboru, tedy třeba učit se nové programovací jazyky, ale i mimo něj. Naučte se, třeba, pracovat s elektronikou. Učte se ty tolik opovrhované soft skills. Ve čtyřiceti letech není na nic pozdě.

Závěr

To nejdůležitější, co se mi stalo po čtyřicítce, bylo zjištění, že programování bez možnosti zkoušet nové technologie a postupy je pro mne velmi nudná a monotónní práce. Uvědomil jsem si, že sedět deset let na jednom místě a psát a rozvíjet jeden produkt v jednom jazyce by pro mne bylo frustrující. A hlavně jsem si uvědomil toto: v práci není důležité, jestli používám tu nebo onu technologii; technologie přicházejí a odcházejí. Nejdůležitější, co potřebuju, aby mě programování bavilo, je pracovat s lidsky kompatibilními jedinci, mít možnost ovlivnit výsledný produkt, mít určitou svobodu při volbě technologií, neprogramovat víc jak šest hodin čistého času denně, protože pak produktivita prudce klesá, a hlavně: pracovat na smysluplném produktu!

Po čtyřicítce už totiž neprogramujete ani pro radost, ani pro peníze, ale pro obojí! A pokud ne, jděte raději dělat něco jiného.

Hlasujte pro mne v anketě Křišťálová Lupa. Děkuji. http://tinyurl.com/klupa16

Enum a statická analýza kódu

Mám jednu univerzální radu pro začínající programátorty. V učení sice neexistují rychlé zkratky, ovšem tuhle radu můžete snadno začít používat a zrychlit tak tempo učení. Tou tajemnou ingrediencí je statická analýza kódu. Ukážeme si to na příkladu enum.