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

Zdroják » Různé » Programátorem po čtyřicítce

Programátorem po čtyřicítce

Články Různé

Překlad textu Being A Developer After 40, jehož autořem je Adrian Kosmaczewski.

Nálepky:

Překlad původně vyšel na Banterově blogu.

Nedávno jsem se zamýšlel na svou třicítkou a nad tím, jak naložím s následujícími deseti lety. Narazil jsem na článek Being A Deloper After 40. Neodolal jsem tedy pokušení a (s laskavým svolením autora) jsem ho přeložil do češtiny. Při překladu na mě dýchla nostalgie, jelikož dost věcí z toho pamatuju. Sice jsem byl v době, kdy autor nastupoval do práce, ještě dítě školou povinné, ale stejně. Navíc mi přijde, že se v mnoha věcech shodne s článkem Úvod do profese.

(Jde o přednášku z App Builders ve Švýcarsku ze dne 25. dubna 2016. Slidy jsou k dispozici na SpeakerDeck a na konci článku.)

Ahoj všichni, je mi 42 let, jsem programátor samouk a tohle je můj příběh.

Před několika týdny jsem narazil na tento tweet, který mě přinutil přemýšlet o mé kariéře a tyto myšlenky mě přivedly zpět do doby, kdy to pro mě všechno začalo.

Začal jsem kariéru jako softwarový vývojář v pondělí 6. října 1997 přesně v deset hodin dopoledne, někde ve městě Olivos, na sever od Buenos Aires, v Argentině. Ten moment byla Unixová epocha 876142800. Nedávno jsem oslavil své 24. narozeniny.

Svět v roce 1997

Svět byl tenkrát trochu jiný.

Webové stránky neměly varování ohledně cookies. Budoucnost webu byly portály jako Excite.com. Můj oblíbeným vyhledávačem byla AltaVista. Můj email byl kos*****@sc2a.unige.ch, což znamená, že moje první osobní stránky byly na adrese http://sc2a.unige.ch/~kosmacze. Stále jsme truchlili pro princeznu Lady Dianu. Steve Jobs se zhostil role CEO a přesvědčil Microsoft, aby nalili 150 miliónů dolarů do Apple Computer. Digital Equipment Corporation se soudili s Dell. Ostatky Che Guevary byly převezeny zpět na Kubu. Začala čtvrtá série Přátel. Gianni Versace byl zavražděn před svým domem. Zemřeli Matka TerezaRoy Lichtenstein a Jeanne Calmet (vůbec nejstarší člověk na světě). Lidé na svých PlayStation hráli Final Fantasy 7 jako šílení. BBC 2 začalo vysílat Teletutubbies. James Cameron se chystal uvést Titanic. The Verve vydali svůj hit Bitter Sweet Symphony a museli zaplatit většinu autorských poplatků Rolling Stones.

Excite v roce 1997, díky the Internet Archive

Excite v roce 1997, díky the Internet Archive

Chytré telefony vypadaly jako Nokia 9000 Communicator; měly paměť 8 MB, procesor 24 MHz i386 a běžel tam operační systém GEOS.

Chytré hodinky vypadaly jako CASIO G-SHOCK DW-9100BJ. Ne moc aplikací, ale výdrž baterie byla mnohem větší.

IBM Deep Blue poprvé porazil v šachu Garryho Kasparova.

Hacker známý jako _eci zveřejnil kód v C, exploit nazvaný WinNuke, pro Windows 3.1, 95 a NT, útok denial-of-service na TCP port 139 (NetBIOS) způsobující Blue Screen of Death.

1997 je rovněž rokem, kdy se narodili Malala Yousafzai, Chloë Grace Moretz a
Kylie Jenner.

V roce 1997 se odehrává mnoho filmových příběhů, jmenujme některé: Útěk z New Yorku, Predátor IIPodivuhodný případ Benjamina Buttona, Harry Potter a Princ dvojí krve, Kmotr III a podle Terminátor 2: Den zúčtování si Skynet uvědomil sám sebe 29. srpna 1997 ve 2:14 ráno. To se sice nestalo, ale 15. září toho roku byla zaregistrována doména google.com.

Zbývaly dva roky do Y2K a média tím začala strašit lidi.

Moje první práce vývojáře

Moje první práce spočívala ve psaní ASP stránek v rozličných editorech (Microsoft FrontPage, HotMeTaL Pro a EditPlus), zajišťování kompatibility mezi prohlížeči Netscape Navigator a Internet Explorer 4. Dále psaní uložených procedur v SQL Server 6.5 pohánějících komerční web v japonštině, ruštině a španělštině, přičemž software stack nepodporoval UTF-8.

Výsledek tohoto snažení běžel na serveru Pentium II, hostovaném někde v USA, s ohromujícím 2 GB pevným diskem a úžasnými 256 MB operační paměti. Byl to jediný server s Windows NT 4, SQL Server 6.5a IIS, obsluhující kolem deseti tisíc návštěvníků denně.

Můj první profesionální programovací jazyk byl mutant nazývaný VBScript. A samozřejmě trocha JavaScriptu na klientské straně, pokropený mnoha „if Netscape udělej tohle, else udělej tamto“, protože tenkrát jsem neměl ponětí, jak použít JavaScript pořádně.

Zajímavé, je rok 2016 a sotva začínáme rozumět tomu, jak udělat cokoliv v JavaScriptu.

O unit testech jsem neslyšel. Agilní manifest ještě nebyl napsán. Continuous integration byl sen. XML nebylo ani buzzword. Naše QA strategie se skládala z restartování serveru jednou týdně, protože jinak by náhodně padal. Vyvinuli jsme svou vlastní COM+ komponentu ve Visual J++ na parsování JPEG souborů nahraných na server. Jakmile se začaly objevovat soubory JPEG 2000, naše komponenta se rozbila.

Nepoužívali jsme verzovací systém. Dokonce ani CVS, RCS nebo, bože chraň, SourceSafe. Subversion ještě ani neexistovalo. Naše skóre v Joel Testu bylo mínus 25.

6776 dní

V uplynulých 6776 dnech jsem si ráno dával kafe a psal kód pomocí věcí jménem VBScript, JavaScript, Linux, SQL, HTML, Makefiles, Node.js, CSS, XML, .NET, YAML, Podfiles, JSON, Markdown, PHP, Windows, Doxygen, C#, Visual Basic, Visual Basic.NET, Java, Socket.io, Ruby, unit testy, Python, shell skripty, C++, Objective-C, batch files a nakonec Swift.

Za 6776 dní se událo hodně věcí. Nejdůležitější je, že jsem se oženil. Odešel jsem ze 6 zaměstnání a byl dvakrát vyhozen. Začal jsem a skončil svůj vlastní byznys. Dokončil jsem svoje magisterské studium. Vydal jsem několik open source projektů, přičemž jeden z nich mi zajistil článek na Ars Technica od samotné Erica Sadun. Měl jsem reklamu ve švýcarské a bolívijské televizi. Viděl jsem naživo přednášku od Billa Gatese a Steva Jobse v Seattlu a San Franciscu. Přednášel jsem a spoluorganizoval konference na čtyřech kontinentech. Napsal jsem a vydal dvě knihy. Dvakrát jsem vyhořel (ne v domě, já sám). Stalo se dost dalších skvělých i hrozných věcí.

Často jsem uvažoval, že profesi úplně opustím, ale kód mě vždycky nějak po chvíli zavolal zpět. Mám rád psaní aplikací, systémů a software. Abych se vyvaroval vyhoření, musel jsem si vyvinout strategii.

V této přednášce vám předám svoje tajemství, takže také můžete dosáhnout nádherného věku 40 let jako zkušený programátor a chtít v této profesi pokračovat.

Rady pro mladé

Několik tipů, jak dosáhnout úžasné čtyřicítky jako šťastný softwarový vývojář.

1. Zapomeňte na trendy

První rada, kterou vám můžu dát, je: nevěnujte pozornost trendům. Každý rok vznikne nový programovací jazyk, framework, knihovna, vzor, architektura nebo paradigma, které vyvolají bouři v blogosféře. Lidé z toho šílí. Mluví se o tom na konferencích. Jsou psány knihy. Gartner hype křivka roste a padá. Konzultanti účtují horentní sumy za trénink, instalaci nebo jiné zkurvení života lidí v průmyslu. Proces bude podporovat tuto hrůzu a přiměje vás cítit se provinile, pokud tomu nevěnujete pozornost.

1997 to byla CORBA & RUP.
2000 to byl SOAP & XML.
2003 to bylo Model Driven Architecture a Software Factories.
2006 to byl Semantic Web a OLPC.
2009 to byla Augmented Reality.
2012 to byly Big Data.
2015… Virtuální realita? Boti?

Nedělejte si starosti o trendy. Starejte se o svoje, pokračujte v učení se toho, co jste se učili a jděte dál. Věnujte tomu pozornost pouze tehdy, když máte opravdový zájem nebo pokud máte dojem, že by to pro vás mohlo být přínosné ve střednědobém či dlouhodobém horizontu.

Důvod pro to leží ve skutečnosti, že, jak už Římané v minulosti říkali, Nil nove sul sole. Většinu toho, co vidíte a učíte se v computer science, už tady je po desetiletí. Tento fakt je záměrně skryt v hromadě marketingu, knih, blogů a otázkách na Stack Overflow. Každá nová architektura je jen předělávkou myšlenky, která tu je po desetiletí.

2. Vyberte si svou galaxii moudře

V našem oboru každá technologie generuje to, čemu já říkám „galaxie“. Tyto galaxie zahrnují hvězdy, ale také černé díry, meteory padající v noci, mnoho planet a jen drobný zlomek jich hostí nějaký život. Také hodně kosmického prachu a temné hmoty.

Příklady galaxií jsou třeba .NET, Cocoa, Node.js, PHP, Emacs, SAP atd. Každá zahrnuje zvěstovatele, vývojáře, blogery, podcasty, konference, knihy, tréninkové kurzy, konzultantské služby a problémy. Každá galaxie je postavena na předpokladu, že její technologie je odpovědí na všechny problémy. Každá galaxie je tedy postavena na špatném předpokladu.

Vývojáři z těchto odlišných galaxií ztělesňují přístup, který přivedl tuto technologii k životu. Jsou věrní myšlenkám, budou nadšeně nosit trička a kázat ostatním o důvodech své volby.

Termín „galaxie“ používám, abych se vyhnul poněkud vhodnějšímu ale kontroverznějšímu termínu „náboženství“, což by možná tento fenomén popsalo lépe.

Osobně jsem strávil první deset let své kariéry v galaxii Microsoft a následujících devět let v galaxii Apple.

Odvážím se říct, že jeden z největších důvodů, proč jsem změnil galaxie, byl Steve
Ballmer. Unavoval mě přístup lidí z galaxie Microsoft k open source software.

Na druhou stranu musím říct, že galaxie Apple je nádherné místo plné umělců, muzikantů a spisovatelů, kteří shodou okolností také píší software.

Navštívil jsem konference v galaxii Microsoft jako Barcelona TechEd 2003 nebo různé Tech Talks v Buenos Aires, Ženevě nebo Londýně. Dokonce jsem přednášel na Microsoft DevDays 2006 v Ženevě. Obecně přístup programátorů v galaxii Microsoft není přátelský, naopak je „korporátní“ a svázán tajemstvím, NDA a těžkopádnými IT procesy.

Galaxie Apple pro mě byla v roce 2006 přesným opakem. Byla plná muzikantů, umělců a malířů; psali software, aby podpořili svou vášeň a aby mohli vášnivě psát software. Tím to bylo jiné a dodnes si tuto galaxii, ve které jsme a která nás všechny svedla dohromady, nesmírně užívám.

Pak vyšel iPhone a zbytek je historie.

Moje doporučení tedy je: vyberte si svou galaxii moudře, užijte si ji tak moc či málo, jak chcete, ale mějte svůj teleskop namířený k jiným galaxiím a buďte připraveni učinit hyperskok na jiná místa, pokud to bude potřeba.

3. Studujte historii software

Což mě přivádí k dalšímu bodu: studujte, jak přišla vaše oblíbená technologie na svět. Máte rádi C#? Víte, kdo ho vytvořil? Jak vznikl .NET projekt? Kdo byl hlavním architektem? Jaké byly omezení projektu a proč se jazyk vyvinul v to, čím je dnes?

Uplatněte stejný přístup k libovolnému jazyku či CPU architektuře, které máte rádi nebo milujete: Python, Ruby, Java, jakýkoliv programovací jazyk; studujte jejich původ, jak přišly na svět. Stejně s operačními systémy, síťovými technologiemi, hardware, cokoliv. Jděte a učte se, jak lidé přicházeli s nápady, jak dlouho trvalo, než vyrostly a dospěly. Protože dobrý software vyžaduje deset let.

Příběhy kolem zrození našeho odvětví jsou fascinující a ukáží vám dvě věci. Za prvé, všechno je předělávka. Za druhé, mohli byste předělávat další velkou věc. Ne, škrtnout: vytvoříte další velkou věc.

Abych vám pomohl se tam dostat, připravil jsem (velmi subjektivní) výběr historických knih, které mám rád a doporučuji:

Naučíte se rovněž ocenit hodnotu věcí, které obstály ve zkoušce času: Lisp, TeX,
Unix, bash, C, Cocoa, Emacs, Vim, Python, ARM, GNU make, man pages. To jsou některé příklady dlouhotrvajících a užitečných věcí, které oslavujeme, s láskou opatrujeme a ze kterých se můžeme učit.

4. Nepřestávejte se učit

Učte se. Cokoliv. Chcete se naučit Fortran? Jděte do toho. Přijde vám Erlang
zajímavý? Výborně. Myslíte si, že COBOL může být další velkou věcí ve vaší kariéře? Úžasné. Potřebujte znát víc Functional Reactive programování? Potěšení je na mé straně. Design? Samozřejmě. UX? Nutnost. Poezie? Měli byste.

Mnoho běžných konceptů je v Computer Science již desítky let, takže stojí za to učit se staré programovací jazyky a frameworky, dokonce i „tajuplné“. Předně oceníte stávající stav odvětví (nebo zatratíte, to záleží). V neposlední řadě se naučíte, jak stávající nástroje používat efektivněji, protože porozumíte jejich původu a odkazu.

Tip 1: naučte se alespoň jeden nový programovací jazyk každý rok. To jsem nevymyslel já, ale kniha Pragratic Programmer. A funguje to.

Jeden programovací jazyk každý rok. Jednoduché, co? Jděte dál než typický Hello, World a vytvořte něco užitečného. Obvykle napíšu jednoduchou kalkulačku v každé nové technologii, kterou se učím. To mi pomůže naučit se syntaxi, seznámit se s API nebo IDE atd.

Tip 2: čtěte alespoň 6 knih za rok. Výše jsem ukázal povinnou četbu, která by vám měla vystačit na první rok. Tady je seznam na další rok:

(Dobrá, to je sedm knih)

Šest knih za rok vypadá hodně, ale znamená to pouze jednu za dva měsíce. A většina knih, které jsem uváděl, nejsou dlouhé. Navíc jsou skvěle napsané, zábavné a rozšíří vám rozhled.

Podívejte se na to takhle. Je-li vám dvacet, tak ve třiceti budete mít přečtených přes 60 knih a přes 120 až vám bude tolik kolik mně. A hráli jste si alespoň s dvaceti různými programovacími jazyky. Na okamžik se nad tím zamyslete.

Některé z těch dvanácti knih, které jsem vybral, byly napsány v sedmdesátých letech, jiné v osmdesátých, některé v devadesátých a většina za posledních deset let. Zastupují nejlepší psaní, na které jsem v našem oboru narazil.

Ale pouze nečtěte, dělejte si poznámky. Pište do nich. Čtete je často znovu. Borges říkával, že větší potěšení než číst knihu je číst ji znovu. Knihy, které máte opravdu rádi, si prosím kupujte v papírové podobě. Věřte mi. Elektronické knihy se přeceňují. Nic neporazí skutečnou věc.

Vězte, že samozřejmě jak budete stárnout, prudce klesne počet věcí, které vyhodnotíte jako nové a/nebo důležité. Připravte se na to. Je v pořádku tiše zaplakat, až si to uvědomíte.

5. Učte

Jakmile se něco naučíte, učte. Je to velmi důležité.

To neznamená, že byste měli založit třídu a pozvat lidi, aby poslouchali vaše historky (ačkoliv by bylo úžasné, kdybyste to udělali). Může to znamenat, že smysluplně zodpovíte otázky na Stack Overflow; že napište knihu; že budete natáčet podcast o vaší oblíbené technologii; že si povedete blog; budete psát na Medium; že vyrazíte na jiný kontinent a založíte školu programování, kde budou používat Raspberry Pi; nebo že pomůžete mladšímu programátorovi tak, že se stanete jeho mentorem (to ovšem nedělejte dřív, než vám bude 30).

Učení vás udělá pokornějším, protože vám bolestivě ukáže, jak omezené vaše znalosti jsou. Učit někoho je nejlepší způsob, jak se sám něco naučit. Pouze testováním vašich znalostí vůči jiným se naučíte pořádně. Budete si víc vážit ostatních vývojářů a jiných technologií; každý jazyk, nezáleží jak pokořený nebo tajuplný, má svoje místo v Tao programování a jenom skrze učení je možné ho pocítit.

Skrze učení můžete opravdu měnit svět. V roce 2012 jsem obdržel e-mail od ženy, která navštívila jedno z mých školení. Pracovala jako Adobe Flash vývojářka. Pamatujete ActionScript a tak? No, ne že by se to nedalo čekat, ale po 12 letech práce na volné noze jako Flash vývojářka se najednou ocitla bez práce. Sama. S dítětem na krku. Napsala mi, že navštívila moje školení, že se jí líbilo a že se naučila něco užitečného. A že si potom našla práci jako mobile web developer. Napsala mi, aby mi řekla: „Děkuji vám!“

Nemůžu tvrdit, že jsem změnil svět, ale možná jsem ho trošku posunul v něco lepšího (alespoň doufám). Tahle myšlenka učinila každou moji přednášku hodnotnější a smysluplnější.

6. Pracoviště stojí za starou bačkoru

Neočekávejte, že vám softwarové korporace nabídnou nějaký kariérní růst. Možná v USA, ale v Evropě jsem to neviděl. To znamená, že jsme sami zodpovědní za svůj kariérní úspěch. Nikdo vám neřekne: „Ehm, no, příští rok by z tebe mohl být tým lídr, pak manažer, pak CTO…“

Vůbec ne. Je to právě naopak. Ve skutečnosti jste poměrně drahý dělník u pásu a nehledě na to, co vám řeknou, váš manažer by vaše úkoly velmi rád outsourcoval.

Neberte práci jen kvůli penězům. Softwarové firmy se staly dílnami s drsnými pracovními podmínkami, kde se očekává, že si ospravedlníte absurdně vysoké mzdy tak, že budete pracovat přesčas a splňovat nereálná očekávání. Alespoň ve Švýcarsku neexistují odbory, které by vám pomohly, pokud se věci zvrtnou. Tedy ony tam odbory jsou, ale ve skutečnosti se o vás nezajímají, dokud se věc neobjeví v médiích.

O co horší, na většině pracovišť vás budou obtěžovat. Částečně proto, že jste žena, člen LGBT nebo příslušník etnické menšiny. Viděl jsem vývojáře, kterým vyhrožovali, že jim neprodlouží pracovní víza, pokud nebudou pracovat rychleji. Byl jsem svědkem obtěžování kolegů, žen a gayů.

Některé části našeho oboru jsou nechutné a nemusíte být v Silicon Valley, abyste to zažili. Nepotřebujete Medium, abyste o tom četli. Můžete to zažít právě tady ve Švýcarsku. Mnoho bank má otřesné pracoviště. Finanční instituce chtějí, abyste chrlili kód 15 hodin denně, ačkoliv švýcarské pracovní právo takové jednání výslovně zakazuje. Farmaceutické firmy po vás budou chtít, abyste psali kód, který bude podvádět s výsledky testů a pomůže jím obejít předpisy. Startupy chtějí vaši kůži, pracovat 18 hodin denně a nic za to, jen žvásty jako „protože máte stock options“ nebo „protože jsme všichni týmoví hráči“

Nezáleží, že jste Zach Holman a ve svém životopise tvrdíte, že jste napsali Github doslova od začátku: vyhodí vás z toho nejprťavějšího důvodu.

Nezáleží, že aplikace přináší firmě víc jak polovinu provozu a zisku; API team vámi bude pohrdat a k vašim nápadům bude přistupovat nedbale.

Dvakrát jsem byl požádán, abych pracoval zadarmo. A to známými lidmi v oboru, někteří mají i svoji stránku na Wikipedii. To je prostě děsivé. Nebudu je jmenovat, ale zabráním každému juniorovi, aby se k ním přiblížil, protože lidé bez etiky si nezaslouží ničí mozek.

Kdykoliv vám HR manažer řekne: „Musíš udělat tohle (dosaďte cokoliv špatného), protože tě platíme,“ pamatujte si, že mu máte odpovědět: „Platíte mě, ale já vám na oplátku dávám svůj mozek a odmítám provést tento rozkaz.“

Nakonec vás dají do open space, na což jsou z nějakého důvodu hrdí. Open space je rakovina. Jedná se bezpochyby o nejhorší rozvržení kanceláří, které bylo kdy vynalezeno. Navíc nejméně vhodné pro softwarový vývoj či jakoukoliv jinou duševní práci podobného typu.

Pamatujte: skutečnost, že něčemu rozumíte, neznamená, že s tím musíte souhlasit.

Neuposlechněte autoritu. Řekněte: „Běž se vycpat, nebudu dělat, co mi říkáš,“ a změňte práci. Tam venku jsou úžasná pracovní místa; není jich moc, ale existují. Měl jsem to štěstí v některých z nich pracovat. Nenechte špatnou práci, aby zabila váš entuziasmus. To za to nestojí. Odmítně a jděte dál.

Nebo ještě lépe, staňte se nezávislým.

7. Znejte svou cenu

Možná jste slyšeli o mýtu „10x softwarový inženýr“, že? No, věc se má tak: není to mýtus, ale nefunguje to tím způsobem, jak myslíte.

Nicméně funguje to z pohledu zaměstnavatele: „10x softwarový inženýr“ generuje hodnotu 10 krát tolik, co mu platí. To znamená, že dostanete 100 tisíc švýcarských franků za rok, ale vytváříte hodnotu přes milión franků. Jasně, oni dostanou na konci roku bonusy, protože, víme, kapitalismus. Znejte svou cenu. Přečtěte si Karla Marxe a Thomase Pikettyho. Dost řečeno.

Pořád se pohybujte; buďte jako žralok, který nepřestává plavat, protože vaše schopnosti jsou neskutečně cenné. Mluvte o svém platu, říkejte to nahlas, blogujte o tom, aby vaši kolegové věděli, jakou cenu má jejich práce. Firmy vás budou chtít umlčet, protože ženy dostávají 70 % toho, co muži. Promluvte! Napište blog! Tweetněte! Vydělávám 135 tisíc švýcarských franků za rok. To je můj plat. Co ty? A ty? Čím víc o tom budeme mluvit, tím méně bude nerovnosti. Kdokoliv s mými zkušenostmi by měl dostat stejné peníze nehledě na rasu, pohlaví, věk nebo komu fandí ve fotbale. Konec příběhu. Ale není tomu tak. Není.

8. Pošlete výtah dolů

Jste-li bílý muž, uvědomte si, že jste od narození měli veškeré výhody jen díky tomu, že jste se tak narodili. Je vaší zodpovědností změnit odvětví a jeho předsudky k větší inkluzi.

Je vaší povinností poslat výtah dolů.

Dělejte ve svém životě vědomá rozhodnutí. Buďte si vědomi svých činů a jejich následků. Nestyďte se změnit názor. Řekněte: „Promiň“, když je třeba. Naslouchejte. Nemachrujte. Zachovejte si integritu a sebeúctu.

Nekritizujte nebo si nedělejte legraci z technických voleb svých kolegů. Měli k k rozhodnutí své vlastní důvody, které musíte respektovat. Buďte připraveni kdykoliv během učení změnit názor. Jednoho dne můžete mít rádi Windows, příště třeba Android. Já třeba poslední dobou mám zrovna rád některé části Android. A je to v pořádku.

20160526-ponysay

9. LLVM

Všichni blázní kolem Swift, ale já věnuju větší pozornost LLVM.

Domnívám se, že LLVM je nejdůležitější softwarový projekt současnosti, měřeno dlouhodobým dopadem. Objective-C blocks, Rust & Swift (dva nejvíce milované silně typované a kompilované jazyky podle průzkumu StackOverflow 2016), Dropbox Pyston, Clang Static Analyser, ARC, Google Souper,Emscripten, LLVMSharp, Microsoft LLILC, Rubymotion, cheerp, watchOS apps, Android NDK, Metal, všechno stvořeno nebo poháněno LLVM. Existují kompilátory, které používají LLVM jako backend téměř pro všechny současné důležité jazyky. .NET CLR s tím bude případně spolupracovat a Mono už ho používá. Facebook se pokusil integrovat LLVM s HHVM a WebKit nedávno přešel z LLVM na nový B3 JIT JavaScript kompilátor.

LVVM jde napříč platformami, CPU architekturami, jazyky, kompilátory. Kontrolován mnoho očima. Volný jako gratis, volný jako pták.

Naučte se o LLVM všechno, co můžete. Je to galaxie, kde se teď dějí opravdové inovace. Je to základ na dalších 20 let.

10. Následuj svůj instinkt

Měl jsem pocit, že .NET bude velká věc, když jsem viděl jeho představení v červnu 2000. Měl jsem pocit, že iPhone bude velká věc, když jsem viděl jeho představení v roce 2007.

V obou případech se mi lidé doslova vysmáli. V obou případech jsem následoval svůj instinkt a uhodl, že to bude fungovat dobře.

Následuj svůj instinkt a možná taky budeš mít štěstí.

11. API je král

Skvělé API umožňuje skvělé aplikace. Stojí-li API za starou bačkoru, tak i aplikace za nic nestojí a ani nezáleží, jak úžasný má design.

Pamatujte, že robustní je lepší než ukecaný a že klienti by měli být hloupí; tlačte co nejvíc logiky do API.

Nevymýšlejte vlastní bezpečnostní protokoly.

Naučte se pár serverových technologií a ať je jedna z toho Node.

Nechte stranou REST a osvojte si Socket.io, ZeroMQ, RabbitMQ, Erlang, XMPP; prozkoumejte reálný čas jako další krok vývoje aplikací. Reálný čas není jen pro chatovací aplikace. Odstraňte navždy aktivní čekání.

Jo a začněte nad těmi API stavět boty.

12. Bojujte s komplexitou

Jednodušší je lepší. Vždycky. Myslete na KISS princip. A nemyslím jen na úrovni UI, ale až do té nejhlubší vrstvy vašeho kódu.

Refaktorování, unit testy, kód review a pull requesty; všechny tyto nástroje jsou vám k dispozici, abyste se ujistili, že doručíte co nejjednodušší architekturu, která funguje. Tak se staví pružné systémy na dlouhou dobu.

20160526-roundabouts

Závěr

Nejdůležitější věcí k zapamatování je, že na vašem věku nezáleží.

Jeden z mých synů mi řekl: „Neuvěřitelné, tati. Matematici dělají svou nejlepší práci kolem čtyřicítky. A tobě je přes osmdesát. Je nemožné, abys teď dostal dobrý nápad.“

Pokud jste stále bdělí a mentálně čilí a je vám přes osmdesát, tak máte výhodu, že jste žili dloho a hodně toho viděli, takže máte rozhled. Je mi 86 a posledních několik let se mi tohle honilo hlavou. Nové myšlenky přicházejí a vy tu a tam nějakou vyzobnete. Čas uzrál do podoby, ve které nemohl být před pěti nebo deseti lety.

Michael Atiyah, matematik, držitel ocenění Fields Medal a Abel Prize, citace z článku ve Wired.

Dokud vám srdce bude říkat, abyste dál programovali a tvořili nové věci, budete navždy mladí.

V roce 2035, ode dneška přesně za 19 let, bude někdo přednášet na softwarové konferenci jako je tato, a začne nějak podobně:

„Ahoj, je mi 42 let a tohle je můj příběh.“

Doufejme, že jeden z vás bude přednášet, jinak to bude robot s umělou inteligencí. Začnete s několika překvapivými fakty o roce 2016, jako například, že šlo o rok, kdy zemřeli David Bowie, Umberto Eco, Gato Barbieri a Johan Cruyff nebo že SQL Server byl dostupný na Linuxu, Google AlphaGo porazil šampiona v Go, v ten samý den unikly Panama Papers a databáze tureckých občanů. Nebo že Google poprvé zauvažoval o použití Swift pro Android. Nebo že šlo o poslední rok, kdy si lidé užívali zbytečné věci, které se říkalo soukromí.

Budeme tři roky od Year 2038 Problem a lidé ohledně toho budou nervozní.
Samozřejmě že nevím, co se stane za 19 let, ale můžu říct tři věci, které se určite stanou:

  1. Někdo se na Stack Overflow zeptá, jak filtrovat e-mailovou adresu pomocí regulárního výrazu.
  2. Někdo vydá nový JavaScriptový framework.
  3. Někdo postaví nějakou úžasnou věc na LLVM.

A možná si budete pamatovat tuto přednášku s úsměvem na rtech.

Děkuji vám mnohokrát za pozornost.

Související

Komentáře

Subscribe
Upozornit na
guest
14 Komentářů
Nejstarší
Nejnovější Most Voted
Inline Feedbacks
View all comments
Ondřej Novák

Za pár měsícu mi bude 41. Narozdíl od autora, já jsem začal programovat, když mi bylo 10 a to proto, že můj otec propašoval ze západního Německa počítač ZX Spectrum a na kazetě jsme měli demo hru a nic víc se tam dělat nedalo (časem jsme od přátel sehnali hry, ale ten první krok k ovládnutí počítače byl učiněn).

Se spoustou názorů se nějak nemohu ztotožnit. Vlastně jsem to kvůli tomu nedočetl do konce. Plácá páté přes deváté, motá technologie dohromady s filozofii.

„naučte se alespoň jeden nový programovací jazyk každý rok“ – proč? co se takhle naučit jeden programovací jazyk pořádně? To co mi autor článku neumí poradit je, jak si vybrat ten správný… nebo tu správnou galaxii… jak říká. Sám se hrabe .NET, přičemž můj názor je, že celá tahle technologie je jen humbuk, který by bez MS neexistoval. Stejně třeba jako C# to považuji za módní trend.

„čtěte alespoň 6 knih za rok“ – proč? o čem? Většina takových knih vychází z aktuálních módních trendů. Dřív jsem si občas koupil něco v Gradě, našel bych to ve sklepě, dávno to už neplatí. To si radši přečtu nějaký román

„Mluvte o svém platu, říkejte to nahlas, blogujte o tom, aby vaši kolegové věděli, jakou cenu má jejich práce. Firmy vás budou chtít umlčet, protože ženy dostávají 70 % toho co muži.“
WTF? Samozřejmě že znám svou cenu, ale proč bych ji měl každýmu hlásit a tím být v jasné nevýhodě před konkurencí? A proč by ostatní mělo zajímat, kolik beru? A proč bych já chtěl znát, kolik bere můj kolega. Třeba je to borec a zjistím, že má menší plat než já (asi k tomu má důvod), nebo naopak je to nýmand a vyšší plat než ja? Znám svou cenu, nepotřebuju znát cenu ostatních

„Jste-li bílý muž, uvědomte si, že jste od narození měli veškeré výhody jen díky tomu, že jste se tak narodili“
Pan programátor má nějaký problém s barvou pletí. Pokud by udělal věta.substr(18), tak bych už s tím i souhlasil. Ale s tím asi nic neudělám.

„Naučte se pár serverových technologií a ať je jedna z toho Node.“
WTF^2 ? Proč zrovna node?

Co bych třeba čekal od člověka, který pár hezkých let programuje je zodpovězení základní otázky: Mám se nechat vláčet davem ve vývoji, nebo se zamknout ve svém světě? Člověk za tu dobu má spoustu zkušeností, takže dokáže navrhnout vlastní protokoly, vlastní programovací jazyky, programovací postupy, knihovny, které na tisícátý způsob řeší třeba multithreading, implementují http server (ačkoliv máme stovky jiných projektů na githubu), navrhnout vlastní grafický engine, databázi, atd. Tahle otázka mě napadla, když autor píše právě o módních trendech. Dneska se to dělá tak, zítra se to bude dělat jinak, ale ty témata jsou už desítky let stejný. Má pak smysl číst každý rok nové knihy nebo vydat vlastní? (a zařadit se mezi ty ten rok vydané, co si je někteří přečtou v rámci povinné roční četby a zapomenou?). A tím se dostávám k otázce výuky a šíření svých vlastních zkušností. Má to smysl?

To s čím právě bojuji je, že nové způsoby programování mi třeba nevyhovují a se svými postupy se cítím jedinečný (odsunutý do hvozdů jako poustevník). Vždy se objeví nová technologie, nový trend, nový postup, zvednu hlavu, proletí to kolem mě jak bouře … a je po bouřce.

Asi nejlépe mé myšlenky demonstruje následující příklad: Každý rok vyjde tisíce nových modelů mobilních telefonů. Ani jeden telefon bych si nekoupil, nevyhovuje mi. Proč? Ani jeden nemá HW klávesnici. Není to dneska v módě. Ve 41. letech si někdy připadám jak vykopávka, která se přestěhovala na jinou planetu. Nicméně, přijímám bitcoiny.

18BSM9B1dZTMGcLfs2Dck868fjgwrwhjk4

Martin Hassman

Máte problém.

Pavel Spálený

No, vlastně s Vámi souhlasím. S jedním bych souhlasil s autorem článku – trendy jsou na hovno. Vždycky se musím smát, když někdo začne psát, jak nějaká technologie „zachrání svět“ a je super.

A když si to pak zkusíte, tak zjistíte, že to možná řeší X, ale zároveň musíte řešit (obtížně) Y….

Nicméně je dobré vědět, kudy se co ubírá. Jinak je pravda – VŠECHNO už tu (v jádru) bylo.

Pan Hassman píše, že máte problém. Svým způsobem ano v tom, že je programátory .NETu/PHP/Javy hledají víc, než např. fortranu… ale pokud umíte jeden jazyk DOBŘE, přeorientovat se na jiný není až tak těžké. Aspoň tolik moje zkušenost.

Pavel Stěhule

Díky za překlad

martin

Naučte se pár serverových technologií a ať je jedna z toho Node.

Nechte stranou REST a osvojte si Socket.io, ZeroMQ, RabbitMQ, Erlang,
XMPP; prozkoumejte reálný čas jako další krok vývoje aplikací. Reálný
čas není jen pro chatovací aplikace. Odstraňte navždy aktivní čekání.

Tohle jsem uplne nepochopil.
Muzete mi prosim nekdo vysvetlit, proc zrovna Node?
A hlavne – co je spatneho na REST a proc se mu vyhnout?

btw, setkali jste se nekdo s vyuzitim xmpp mezi aplikacemi?

Jura

Proc zrovna NODE:
Svět programování je prošpikován javascriptem a Node je interpret javascriptu. Jazyka Javascriptu se jen tak nezbavíme, protože je již napsáno příliš mnoho kódu a je na něm spousty systémů závislých.
Osobně bych nechtěl implementovat enterprise systémy jen v javascriptu, ale na malé nástroje je Node výborný – spustitelný všude, rychle, s velkou základnou programátorů, slušným repositářem npm modulů.
Jinak ECMAScript se dále vyvíjí a již to není taková hrůza postavit javascriptovou aplikaci.

REST jsem taky nepochopil ve srovnání se jmenovanými technologiemi
REST – webová služba postavená na HTTP protokolu
Socket.io – javascript library pro realtime webové aplikace
Erlang – programovací jazyk pro distribuované a vysoce dostupné aplikace s odolností protí selhání
XMPP – jednoduchá implementace protokolu pro posílání zpráv a stavů (dříve Jabber)
ZeroMQ – komponenta pro decentralizovné distribuované posílání zpráv ()
RabbitMQ – implementace Message broker pro asynchronní odesílání a přijímání zpráv (Message Queuing) napsaná v Erlang

Jde vlastně o růzdné technologie, impelementace, protokoly, programovací jazyky nabízející jiné možnosti komunikace – toto jsou asi ty trendy věci, kterých se máme dle první kapitoly vyvarovat :)

Jinak souhlasím, že jde o takovou slátaninu myšlenek, bez ladu a skladu, ale pokud mám hodnotit obsah myšlenek, tak se s většinou ztotožňuji.

XMPP ala jabber, byl myslím komunikační protokol pro google talk a podobných kecálkům. Nevím, připadá mě, že je to už za zenitem

librucha

Stejně tak jako Ondřej, ani já jsem to nedokázal dočíst do konce. Připomnělo mi to agitace bývalého režimu nebo ještě lépe přesvědčování věřících někde v Západní Virginii.

Když programátor filozofuje je to horší než když filozof programuje.

Jura

Po 14. letech programování si myslím, že vývoje software je soustavné filozofování. Hledání správného přístupu v programování, je jako hledání smyslu života, proto dobrý programátor musí filozofovat :)

tacoberu

Mě se to líbilo. Docela inspirativní.

Martin Hassman

Díky. Určitě to není poslední text podobného druhu, který tu vydáme. A napsat můžete i autorovi originálu https://twitter.com/akosma 8-)

Dom

Souhlasím s prvním komentářem, taky jsem článek nedočetl. Autor plácá všechno možný dohromady. Naučit se každej rok jeden jazyk? Blbost… Možná mít o něm ponětí. Jazyk se za rok nenaučíte, rozhodně ne pořádně a do hloubky. Kterej si vybrat? Ten, do kterýho se zamilujete ;-)

Jura

Celkem pěkný popis jak si zachovat radost z programování, ale některé zmíněné rady je třeba brát s rezervou – někdy je chyba ve firmě, ale někdy je chyba ve vás.

Vláďa Macek

Díky autorovi a překladateli a komentujícím! Já to do konce dočetl, velmi inspirativní. Ale na to přece nemusím se vším souhlasit. Zajímavé odkazy a citace!

Ondřej Novák komentoval velmi trefně, dík!

Vláďa (40)

Uf

55, v IT 30 let – bohužel zkušeností málo:

  • aby se člověk naučil něco nového, je třeba odejít z firmy, jinak
  • vláčíte kouli starých projektů a technologií a ubíjí vás nedostatek
  • času je potřeba se učit něco nového, jinak člověk zakrní a zleniví – ale učit se do šuflíku (co kdyby nebo „to je ale zajímavé“) je k ničemu – vyzkoušet, to ano
  • kdysi jsem se rozčiloval, že internet
    považuje za jedinou formu aplikace webovou – a co desktop (třeba
    editor)?, co mainframové programy
  • teď vidím, že ano. všechno už se několikrát vrátilo v jiném hávu
  • je tolik zajímavých věcí na hraní, že nebudu nikdy starý
  • ani po letech nepoužívám základní, jednoduchou a přesto geniální metodu rozděl a panuj, nejsem pako?
  • i když toho vím hodně, nejsem odborník, o kterého by se firmy praly
  • starý programátor není tak rychlý, ale je poctivý a přemýšlí o své práci a dopadu pro uživatele

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.

Pocta C64

Za prvopočátek své programátorské kariéry vděčím počítači Commodore 64. Tehdy jsem genialitu návrhu nemohl docenit. Dnes dokážu lehce nahlédnout pod pokličku. Chtěl bych se o to s vámi podělit a vzdát mu hold.