Úvahy „starého“ programátora

Překlad článku Reflections of an „Old“ Programmer (Ben Northrop) nejen pro programátory v po čtyřicítce.

Překlad článku Reflections of an „Old“ Programmer (Ben Northrop) ze 6. října 2016.

Jsem programátorem a bude mi čtyřicet let. Je sobota ráno, moje děti jsou doma s mou úžasnou manželkou (která se statečně stará o domácnost) a já jsem na technické konferenci. Jsem na přednášce o React Native a přednášející nás přesvědčuje, že se opravdu jedná o „další velkou věc“ mobilního vývoje. Mně se to zdá spíš jako JSP před 15 let s veškerou logikou v prezentačním kódu, ale jsem „starý“, tak předpokládám, že tomu prostě jen „nerozumím“.

Přednášející proběhne slajdy, ohromuje nás úchvatným kódováním naživo a pak následuje salva názvů, během které oddrmolí asi půl tuctu nástrojů, o kterých jsem netušil, že vůbec existují, včetně něčeho, co se jmenuje Pepperoni (vážně). Mě, který nedávno vystřízlivěl z Angularu, to trochu deprimuje. Myslím si: „Je to tady zase!“

Samozřejmě mě to nepřekvapuje. Za posledních dvacet let jsem se svezl na nejedné módní vlně a celkem jsem si ty jízdy užil. To potěšení z nového „zlomu“ v programování může být vzrušující – cítit se součástí komunity technických inovátorů, prosazovat něco, co udělá věci trochu snazší, rychlejší, čistší, lepší. To může být zábava. Ale to konkrétní ráno, na prahu čtyřicítky, musím uznat, že se cítím trochu vyčerpaný. Vím, že je to součástí práce – chci-li zůstat relevantní (a dobře placený), vím, že čas od času musím zahodit nějakou znalost, kterou jsem poctivě načerpal, a nachystat se na další cestu. Tak to prostě je.

Jak o tom přemýšlím, tenhle rituál mé programátorské kariéry se nepodobá životu ostatních profesionálů. Nezdá se, že by se čtyřicetiletý lékař obával, že se všechny jeho znalosti vaskulárního systému vypaří a budou nahrazeny novou teorií. To samé platí pro právníky, instalatéry, účetní a učitele angličtiny. Ačkoliv u těchto profesí určitě najdeme nezáživné aspekty, můžeme klidně říct, že v každé z nich v půlce své kariéry shromáždíte relativně stabilní znalosti, které poskytnou rostoucí míru respektu a platu. Nicméně nezdá se, že by dvacet let zkušeností s programováním poskytovalo ty samé výhody.

Dvě hlavní síly

Všechno v naší profesi není samozřejmě tak ponuré. V životě programátora, je mnoho věcí, které budete milovat. Ale co se týče nekonečného úsilí „udržet krok“, jde o zajímavý rys, který se zdá více či méně příznačný pro náš obor. Nemám pravdu? Je v tomto směru programování skutečně jiné? A pokud ano, tak proč? A co to znamená pro naši kariéru? Rád bych se to vše pokusil zodpovědět pomocí dvou konceptů.

Prvním je zastarávání znalostí. Vše, co známe, nejen o programování, má expiraci; okamžik, když už to není užitečné. Naučil jsem se řídit auto, když mi bylo šestnáct, a tato znalost mi stále ještě dobře slouží. Řekněme, že má dlouhý poločas rozpadu. Pro mnoho profesionálů má jejich doménová znalost rovněž relativně dlouhý poločas rozpadu. Jistě, nové objevy medicíny můžou nahradit některé existující procedury, ale je nepravděpodobné, že by výrazně revidovaly naše porozumění biologii. Pokud je expirace dlouhá jako v tomto případě, může v podstatě být znalost považována za kumulativní. Lékař je erudovanější než byl loni, protože všechno, co se naučil za uplynulých 12 měsíců, postavil na to, co už znal před tím.

Tvrdím, že programování (ať už je to dobře nebo špatně), není takový případ. Abych vykolíkoval hřiště (střílím spíš od boku), řekl bych:

Polovina toho, co programátoři znají, bude za deset let k ničemu.

Můžu se mýlit, ale zdá se mi, že je to pravda. Vsadím se, že pokud bych se od tohoto okamžiku nic nenaučil, tak kolem roku 2026 budu moc použít asi jen polovinu znalostí (ať žije SQL!) a druhá polovina by byla k ničemu (možná React Native?). Samozřejmě, že budu získávat nové znalosti, abych nahradil nepotřebné, ale bude to stačit? Budu toho v roce 2026 znát víc (užitečného) než dnes?

Což mě přivádí k druhému konceptu, míra akumulace znalostí – tempo, kterým přidáváme nové věci ke korpusu našich znalostí. V každém oboru je určitý práh, který musí být překročen k tomu, abyste byli „certifikovaní“ (nebo alespoň najmutelní). Raná fáze kariéry je typicky věnovaná získání právě těchto znalostí. Avšak v programování se kvůli rychlému úpadku znalostí zdá, že ve skutečnosti nikdy nepřekročíme „studentskou“ fázi. Víme, že se musíme neustále vzdělávat, a to dělá etapy naší kariéry trochu netypické.

Tři etapy

Kdybych měl nakreslit graf vývoje znalostí průměrného programátora v průběhu kariéry, vzal bych v potaz úpadek znalostí a míru akumulace, vypadal by asi nějak tahle:

career-stages-programmer

V počátku naší kariéry, nazvěme to fází dychtivý učeň, je akumulace znalostí relativně snadná. Všechno je nové, a tak je každá zkušenost prostředkem k získání dalších znalostí. Navíc, protože jsme mladší, máme méně pevných závazků, a tak nám pravděpodobně nevadí strávit několik nocí a víkendů vybíráním nových jazyků a frameworků. A důležité nakonec, zaměstnavatel od nás až tolik neočekává. Každý rozumí tomu, že jsme junioři a snadněji než naši kolegové si během pracovního dne ukrojíme trochu času na zaplnění děr v našich znalostech. Je to zábavná etapa, až na ten neodbytný pocit, že je toho tolik, co neznáme.

Přesto v určitém okamžiku přestaneme být začátečníky a stanou se z nás produktivní a soběstační programátoři. Poprvé se mezera mezi námi a kolegy (dokonce i těmi s desetiletou praxí) nezdá tak veliká. To nám dodá elán a sílu. Je to fáze vycházející hvězda. Investice do vzdělávání se vyplatila a všechno, co víme, je stále užitečné (tzn. žádná naše znalost znatelně zastarala). S plnou zásobárnou relativních znalostí si začínáme zasluhovat respekt klientů, kolegů a manažerů. S respektem přichází tituly, plat a příležitosti. Přestože to tou dobou ne nutně vidíme, je to důležitý bod obratu.

V tom bodě se stanou dvě věci. Za prvé povýšení na „seniora“ přinese něco víc než jen peníze: větší očekávání. Zaměstnavatelé potřebují svoje nejlepší programátory, aby byli lídry – pomáhali juniorním programátorům, dělali code review a pohovory, chodili na víc jednání a v mnoha případech, aby pomáhali udržovat komplex legacy softwaru, na kterém se podíleli. Všechno to je nesmírně opodstatněné, ale je to na úkor nabírání nových znalostí. Čas, který jsme mohli věnovat čtení technických blogů, je najednou fuč. Za druhé je to okamžik, kdy poprvé zažijeme (nebo si jej alespoň všimneme) malý úpadek znalostí. Něco, co jsme se naučili v počátku naší kariéry, je teď zastaralé. Všechen čas, který jsme strávili (čtěte: jsem strávil) učením GWT? Ztracen! Obě tyto síly, úpadek a míra akumulace znalostí, v podstatě začnou pracovat proti nám.

Vstoupili jsme do třetí a poslední fáze, odliv a příliv vyrovnaného veterána. Jsme znalí a produktivní, avšak rozumíme tomu, že vlastně můžeme znát méně (užitečných) věcí, než jsme znali v předchozí etapě naší kariéry. Nezanedbatelné množství našich znalostí zastaralo a nemuseli jsme mít dost času nahromadit dostatek nových znalostí, abychom je nahradili. To může být frustrující, a proto, myslím, tolik z nás touží po jiném – management, sales, testování nebo (můj sen) zemědělství. Uvědomujeme si, že to bude vyžadovat skutečné úsilí udržet si naši úroveň dovednosti. A bez téhle snahy budeme za pět let horší než dnes. Setrvačnost tu nefunguje.

Moje skromná rada

Takže v téhle fázi jsem teď já. Učení stále miluju, ale chápu, že bez nějaké herkulovské snahy nejspíš už vždycky zůstanu balancovat na spodním okraji úrovně „expert“. Jsem s tím smířen, protože si užívám svůj soukromý život víc, než abych potřeboval být dalším Martinem Fowlerem (ačkoliv se vsadím, že Martin má taky perfektní soukromý život – ten chlap je prostě skvělý). Přemýšlení o mé kariéře v termínech úpadek a akumulace znalostí mi přesto trochu změnilo můj pohled.

Za prvé se pokouším dívat na věci z dlouhodobého pohledu. Dávám si víc pozor na role s příliš velkým očekáváním a málo příležitostmi k novým zkušenostem. Viděl jsem několik kolegů s vysokou sumou na výplatní pásce, ale s málo příležitostmi k seznámení se s novými věcmi a k učení. Za pět let si uvědomí, že se mnoho jejich cenných znalostí vypařilo a jejich plat je naprosto mimo skutečnou tržní hodnotu. Myslím, že v některých případech výdělek méně peněz v kratším období (u lepšího zaměstnavatele) může přinést víc peněz (a stability) během dlouhé kariéry.

Za druhé se pokusím investovat nejvíc do trvalých znalostí, protože čas je omezený. Moje energie je lépe použita na akumulaci znalostí s delším poločasem rozpadu – algoritmy, bezpečnost aplikací, optimalizace výkonu a architektura. Doufám, že využitím těchto nik učiním svou kariéru neprůstřelnější než studováním nejnovější, ojediněle úspěšné, javascriptové knihovny.

Možná jsem nakonec nic nového neobjevil, ale pro mě bylo užitečné zamyslet se o své kariéře z pohledu úpadku a akumulace znalostí. Rád bych slyšel vaše názory!

Snažím se pořádně dělat IT, které mě živí. Jsem Javista (sňatek z rozumu), ale zamiloval jsem si Groovy. Mám blog, kam píšu i věci mimo softwarové inženýrství.

Věděli jste, že nám můžete zasílat zprávičky? (Jen pro přihlášené.)

Komentáře: 17

Přehled komentářů

Honza Kokes
5o
Luboš Račanský Re:
5o Re:
ondra-novak
Tobiáš Potoček Re:
Petr Re:
risototh
srigi Re:
singerko
Petr Re:
risototh Re:
uetoyo Re:
Tobiáš Potoček Nářek
Stando O vajci a sliepke
lenoch
Vláďa Macek Díky!
Zdroj: https://www.zdrojak.cz/?p=19074