Rozhovor s Jonem Skeetem: Chuckem Norrisem v oblasti programování v podcastu Yellow Duck

Vydáno: Poslední aktualizace:

Věděli jste, že když se kód Jona Skeeta nepodaří zkompilovat, překladač omlouvá se? A co skutečnost, že když Jon vyhledává na Googlu, jediným výsledkem je "Hned jsem zpátky"? Zdroj: Stack Overflow

Pro ty z vás, kteří to nevědí, Jon Skeet je vedoucím softwarovým inženýrem ve společnosti Google v Londýně ve Velké Británii. Některá divočejší tvrzení o něm je sice třeba ještě ověřit, ale rozhodně je pravda, že je jediným uživatelem Stack Overflow s reputací vyšší než 1 000 000.

Od roku 1998 přispěl tento muž na stránky více než 34 000 odpověďmi, které vygenerovaly více než 230 000 000 zobrazení! Na co se tedy zeptáte člověka, který už odpověděl na všechny možné otázky?

To zjistíte, když si poslechnete náš rozhovor s Jonem Skeetem.

Marcin Kraszewski si s Jonem sedl a zeptal se ho na něco nového. Ukázalo se, že má více odpovědí, včetně těch, které jste nikde jinde neslyšeli.

Už jste slyšeli příběh o tom, jak se Jon dostal k vývoji softwaru tím, že vytvořil počítačovou hru? A co nejnáročnější problém, který měl Jon jako inženýr za úkol vyřešit?

V našem rozhovoru se dozvíte o tom všem, ale také o největších změnách v softwarovém průmyslu za posledních deset let, o tom, co vývojáři používali před Stack Overflow, o tom, jak dlouho ještě Jon plánuje přispívat do Stack Overflow, o srovnání C# a Javy a o Jonových oblíbených konferencích.

Jedná se o jedinečnou příležitost zúčastnit se neformálního průzkumu osobní cesty jednoho z nejznámějších softwarových odborníků.

Jona můžete sledovat zde:

Nejprve si ale poslechněte náš rozhovor s Jonem v podcastu Yellow Duck Podcast

Níže najdete písemný přepis našeho rozhovoru.

MARCIN: Dobře, vítejte u podcastu The Yellow Duck, dnes tu mám velmi vzácného hosta. Budu mluvit s Jonem Skeetem, pokud nevíte, kdo je Jon Skeet, tak je to jeden z nejlepších přispěvatelů na Stack Overflow, možná dokonce nejlepší přispěvatel na Stack Overflow, což je, pokud neznáte Stack Overflow, tak je to úžasné. Je to v podstatě webová stránka, kde můžete získat odpovědi na téměř jakoukoli otázku týkající se nejen vývoje softwaru a technologií, ale například je tam Stack Exchange, což je taková mateřská stránka Stack Exchange, kde můžete získat odpovědi na otázky týkající se čehokoli od improvizované komedie až po vědu astronomii a podobně. Takže Jone, vítej.

JON: Moc vám děkuji. Je příjemné tu být.

MARCIN: Děkuji, že jste se ke mně připojil v podcastu Yellow Duck, chci se vás zeptat na několik věcí. Ale nejdříve se chci samozřejmě dostat k otázce číslo jedna, která mi tak nějak leží v hlavě. Trochu jsem si prozkoumal vaši aktivitu na StackOverflow, která je světoznámá a velmi rozsáhlá. A moje otázka zní: podle informací, které se mi podařilo získat, jste na StackOverflow odpověděl na svou první otázku 26. září 2008 ve 12:11. V té době jste byl na StackOverflow jako první. Tak nějak mi řekněte o okolnostech, které provázely tuto první odpověď, a víme, jak jste to udělal, jak jste to udělal. Jak jste začal používat Stack Overflow. Jak jste se k té odpovědi dostal. Jak jste se dostal k odpovědi na tuto otázku. Víte, kde to všechno začalo, OK.

JON: Takže to bylo do jisté míry cvičení v narcismu. O Stack Overflow jsem se poprvé dozvěděl na blogu Sary Chip. Napsala recenzi prvního vydání C# do hloubky už v roce 2008, což se zdá být velmi velmi dávno, a já jsem si přečetl její recenzi a pak jsem si přečetl některé její další příspěvky na blogu a v nich byla zmínka o Stack Overflow. Tak jsem si řekl, že se na to podívám, a hledal jsem na Stack Overflow otázky, na které bych mohl odpovědět. Neměl jsem moc ponětí o tom, co to vlastně je za stránku, a hledal jsem otázky o C# do hloubky, zejména jestli tam nějaké jsou, a bylo tam pár zmínek a byly tam otázky o C# a já jsem si řekl, že na to umím odpovědět, tak na to odpovím a tak nějak se to všechno odvíjelo. Předtím jsem psal hodně diskusních skupin jak C#, tak Java Newsgroups po dobu deseti let, takže to vypadalo jako jeden z kroků ve vývoji těchto diskusních skupin. Nikdy předtím se mi nelíbil software pro fóra založený na HTML. Z různých důvodů, ale prostě nic pro mě nebylo tak užitečné jako diskusní skupiny, zatímco Stack Overflow to úplně změnil.

MARCIN: Úžasné a všichni jsme ti velmi vděční za tvůj příspěvek, myslím, že jsi odpověděl na více než 35 000 otázek, což je úžasný přínos pro komunitu. Takže jsme za to samozřejmě všichni velmi vděční. A myslím, že je to opravdu zajímavé, že jste tak nějak začal jako, ve smyslu, jak jste řekl, prostě jako běžný uživatel jste se prostě dozvěděl o jeho webové stránky a rozhodl se odpovědět na otázku, můžete jít tak nějak na další, že co vás přimělo odpovědět víte, druhý třetí čtvrtý, že stovky otázek později, kdy jste cítil, že je to opravdu něco, co chcete dělat. Možná konkrétní zaměření na Stack Overflow, ale obecně. Kdy jsi pocítil takovou vášeň, abys opravdu, víš, odpovídal na spoustu těch otázek, jako bys měl tu energii.

JON: takže to začalo tak nějak před deseti lety, když jsem ještě studoval na univerzitě a odpovídal na dotazy o Javě v diskusních skupinách dávno předtím, než vůbec vznikl C#, a zapojoval se do diskusí, které nejsou pro Stack Overflow tak důležité, ale psal jsem toho do diskusních skupin o Javě strašně moc a hodně z toho bylo, že mě baví pomáhat lidem a není to čistě altruistické. Baví mě pomáhat lidem, protože mě to zlepšuje jako programátora, rozhodně mě to zlepšuje jako komunikátora, což je podle mě v softwarovém inženýrství neuvěřitelně důležité, a pak je tu efekt, že nepomáhám jen tomu, kdo položil otázku, ale doufám, že pomáhám i lidem později, což je to, k čemu je Stack Overflow opravdu optimalizován. A myslím, že některé problémy, kdy lidé pokládají špatné otázky, spočívají v tom, že myslí jen na svou okamžitou potřebu, místo aby přemýšleli, jak mohu položit otázku, která pomůže mně, ale také pomůže lidem, kteří přijdou později. A pokud začnete z této perspektivy, pak právě na tom je komunita Stack Overflow tak trochu postavena a počet dojmů, které mohou dobré otázky získat, je obrovský, takže můžete pomoci celé světové komunitě programátorů, což je podle mě úžasné

MARCIN: Určitě. Takže je to skvělý nápad, který byl, víte, myslím, že to bylo opravdu něco, co bylo třeba vytvořit. Víte, lidé byli připraveni začít sdílet své znalosti a Stack Exchange a Stack Overflow vznikly opravdu právě včas, jak jste říkal, že existují jiné způsoby sdílení znalostí. Ale myslím, že tohle je možná nejpřístupnější pro všechny uživatele, kteří chtějí získat odpovědi na své otázky. Je to velmi efektivní způsob a myslím, že je také opravdu docela dobře moderovaný, alespoň co se týče místních stoupenců.

JON: Jo. Což je míra moderace je určitě bolavé místo u spousty uživatelů, nejen u několika, kteří se pokusili položit otázku a položili ji špatně, neuvedli dost podrobností nebo uvedli příliš mnoho podrobností nebo. Existuje nespočet různých způsobů, jak můžete položit otázku špatně, a mám pocit, že moderace je jedním z vrcholů webu, že se snaží udržet kvalitu webu a udržuje ho co nejužitečnější, ale rozhodně je to bolavé místo a myslím, že je třeba zapracovat na komunikaci cílů webu, aby všichni táhli stejným směrem. Není to tak, že by někdo. No, určitě se najde pár lidí, kteří buď záměrně kladou špatné otázky, nebo moderují ošklivě jen tak pro zábavu. Pár blbců se tu vždycky najde, ale mám tendenci předpokládat, že většina lidí blbci nejsou. Jsou hodní, že věnují svůj čas a chtějí kvalitní web.

A pokud se nám podaří zajistit, aby všichni byli v souladu, povede to k lepšímu zážitku pro všechny. Takže je tam ještě trochu práce, pokud jde o komunikaci a všechny druhy věcí, které mohou být velmi obtížné, protože pokud jste se okamžitě zasekli na nějakém problému a nezaregistrovali jste se nebo nepoložili otázku nebo cokoli jiného na Stack Overflow předtím, vaše první pokušení je, že vidíte zeď textu, který říká, že tohle je druh otázky, kterou byste měli položit, a jak byste měli přistupovat k věcem a prostě si říkáte, že mě to nezajímá, že chci položit svou otázku hned teď, zatímco ve skutečnosti, když věnujete pět deset minut, dokonce půl hodiny, abyste si prohlédli stránky a prošli různé zdroje nápovědy, napsal jsem velmi dlouhý příspěvek na blogu o tom, co hledám v otázce, která má lidem pomoci klást otázky, ale chápu tu frustraci a to, proč to všechno lidé prostě přeskočí a řeknou to rovnou. Dovolte mi, abych položil svou otázku nyní. Budu předpokládat, že vím, co dělám, a je velmi nešťastné, že jim to dává o zkušenostech, a pokud lidé nečtou nápovědu, která jim byla poskytnuta, pak žádné zlepšení v této nápovědě nemůže skutečně překonat skutečnost, že ji nečtou. Takže je to složité

MARCIN: Zajímavé se mi zdá, že na Stack Overflow jsou alespoň nyní k dispozici všechna data. Jako že si prostě můžete stáhnout celý soubor dat a myslíte si, že je to důležité.

JON: Rozhodně. Ano, a to byl cíl od prvního dne.

MARCIN: Myslíte si, že je to důležitá součást toho, že Stack Overflow je stále populární.

JON: nevím, určitě je to funkce. Je krásné, že například, myslím, že všechny otázky Stack Overflow byly importovány do Google BigQuery, což znamená, že lidé mohou spouštět dotazy nad všemi druhy dat a je tu Stack Overflow. Tímto způsobem jsou k dispozici i nástroje pro analýzu dat, takže existují nejrůznější druhy dolování dat, které můžete provádět na otázkách Stacku, a různí datoví vědci přesně tohle dělali. Takže v tomto směru je to velmi zajímavé. Vytváří to také jakýsi pocit důvěry, že Stack Overflow nevlastní vaše příspěvky. Každý má, že jsou všechny náležitě licencovány, takže i kdyby samotný Stack Overflow jako společnost zkrachoval, pak by se informace neztratily, ale nevím, jak moc je to důležité, myslím, že se to liší v důležitosti podle toho, koho se zeptáte, ale důležitost pro komunitu datových vědců. Mám podezření, že nejsem členem této komunity, zejména mám podezření, že to byl skutečný poklad.

MARCIN: Slyšel jsem o některých projektech, kde se snaží využít Stack Overflow k trénování algoritmu strojového učení, aby mohl psát software nebo alespoň ladit software, což je určitě zajímavé využití dat. Co se týče například Stack Overflow, je tam asi hodně otázek, které jsou opravdu hodně podobné a téměř stejné, ale ne úplně. Vidíte v blízké budoucnosti nějaké řešení, které by třeba pomocí nějakého strojového učení nebo něčeho takového nějakým způsobem snížilo množství duplicitního nebo téměř duplicitního obsahu

JON: Správně, takže Stack Overflow se již snaží najít podobné otázky a navrhuje je, zatímco vy pokládáte otázku, víte: "Podívali jste se na tyto věci. Myslíme si, že jsou podobné." A dokonce i poté, co jste tam položili otázku. Na pravé straně je seznam, který vám ukazuje potenciální duplicity nebo příbuzné otázky, a je poměrně snadné otázku uzavřít jako duplicitní, protože pokud máte zlatou značku, je tam zlatý odznak v konkrétní značce, pak můžete věci uzavřít podívat se velmi snadno na to, čemu se říká kladívko duplicity. Takže to pomáhá velmi rychle uzavřít otázky, pokud jsou duplicitní, zda je možné je ještě více zefektivnit... Je to obtížné, protože žádné strojové učení nikdy nebude stoprocentně přesné, takže nechcete lidem bránit v kladení otázek. I když máte silné podezření, že půjde o duplicitu. Téměř potřebujete, abyste si byli opravdu hodně jistí. Opravdu jste se na všechny tyto věci podívali, ale nevím, je to pocit, že je to všechno o něco menší problém. Aspekt duplicity než to, že se lidé ptají a ani neposkytnou dostatek informací nebo správný druh informací, aby bylo možné říct, zda jde o duplicitu, nebo ne. A já doufám, že. Vím, že Stack Overflow prochází několika iteracemi jakéhosi průvodce, který klade otázky typu: "Jak vypadá váš kód, jaké jazyky používáte. Přišli jste s krátkým, ale úplným příkladem, který demonstruje problém". Takové věci. Není jasné, co přesně bude fungovat, ale vím, že tým tvrdě pracuje na tom, aby se pokusil zlepšit kladení otázek, protože Stack Overflow v zásadě spoléhá na to, že jsou kladeny dobré otázky.

MARCIN: Určitě a protože předpokládám, že vždycky budou existovat otázky, které bude třeba položit bez ohledu na to, jak dlouho je technologie na světě. Jaký je hlavní důvod. Co je tím, co vede k tomu, že se vždy budou klást nové otázky, dokonce i ohledně C#, na kterou, jak jsem řekl, jste odpověděl a na různá další témata, víte, 35 000 odpovědí, ale stále je jich víc. Myslím, že to patří k povaze softwarového inženýrství, nebo že prostě nemůžete abstrahovat všechno.

JON: No, je to více věcí, částečně je to tím, že se jazyk mění, takže v současné době píšu o C# 7.2 a musím se sám učit nové věci, abych o nich pak mohl psát. Takže by bylo naprosto přirozené, kdyby se lidé ptali na C# 7.2 nebo víte na jiné věci, které jsou poměrně nové C# 7.0 je stále poměrně nový. Takže jak se vyvíjejí jazyky a nové frameworky a knihovny a všechny možné věci. Vždy budou existovat nové oblasti, na které se lidé budou ptát. A pak jsou tu lidé, kteří se ptají na stávající oblasti, a některé z těchto otázek budou nové a některé nebudou nové a některé mohou být maskované nové otázky. Tak například v C# se v C# 5 mění přesný způsob, jakým lambda výrazy zachycují proměnné, zejména pro každou iteraci proměnné, a to způsobilo spoustu otázek před C# 5, když nebylo ideální, jakým způsobem to fungovalo. A spousta těch otázek je vlastně duplicitní, ale ve skutečnosti jsem jich zodpověděl docela dost, protože je jich spousta, které nevypadají zjevně související. Teprve když znáte odpověď, vidíte, že tyto dvě věci jsou stejný problém, jen v přestrojení. Takže vždycky budou věci, u kterých jenom ten, kdo odpovídá, ví, že vlastně stojíte před stejným problémem jako někdo jiný, a jestli by se tyto otázky měly uzavírat jako duplicitní, je asi na debatu. Ale ano, vždy budou přicházet noví lidé do softwarového inženýrství, což je fantastická věc, a někteří z nich podle mě berou Stack Overflow spíše jako zdroj učení. Já bych je povzbudil, myslím, že Stack Overflow je skvělý zdroj pro řešení problémů. Není to skvělý způsob, jak se naučit jazyk tak nějak od nuly, nemůžete si vzít kompilátor Javy nebo dokonce IDE a Stack Overflow a naučit se Javu od nuly tímto způsobem. To prostě nebude efektivní způsob učení jazyka. Zatímco kniha nebo výukový kurz je mnohem strukturovanější přístup a pak se skvěle hodí Stack Overflow. No a tam byl ten příklad a já jsem čekal, že to udělá tohle, a ono to místo toho udělalo něco jiného. A tady je důvod, proč si myslím, že by se to mělo chovat takhle, a ono se to ve skutečnosti chová jinak. Mohl by mi někdo vysvětlit, co přesně se tu děje. Takové otázky jsou pro Stack Overflow skvělé, takže je to určitě jakýsi doplněk k jiným nástrojům pro učení, ale nemyslím si, že je to skvělé jako počáteční nástroj pro učení. Nebo jako jediný způsob, jak se naučit jazyk, ale vždycky budou existovat lidé, kteří se učí věci poprvé. A jak říkám, pokud jste v jazyce nebo technologii relativně noví, pak to budete mít mnohem těžší. Související otázky, protože ani nemusíte nutně vědět, čeho přesně se vaše otázka v danou chvíli týká, takže neočekávám, že by soubor nebo proud otázek v dohledné době vyschl. A to částečně kvůli novým lidem, částečně kvůli novým technologiím a částečně kvůli starým známým, kteří dělají věci, které předtím nedělali, takže bych mohl stále psát v C# a položit novou otázku týkající se C# a já asi polovinu svých otázek myslím, že mám kolem samotného C#, což může lidi překvapit. Není nad to znát jazyk poměrně dobře, abyste si byli vědomi věcí, které se pokazí nebo jsou opravdu nečekané, a pak je opravdu užitečné zeptat se na Stack Overflow a říct hele, tohle jsem opravdu čekal, že se stane, a mám dobrý důvod to očekávat kvůli všem mým předchozím zkušenostem, ale znamená to, že se zde nakonec ptáte na technologie, které byste normálně nečekali.

MARCIN: A na Stack Overflow je myšlenka hledání odpovědí online, jak dlouho už je to nedílnou součástí softwarového inženýrství. Protože dřív jste byli tak nějak odkázáni na řekněme, že jste měli dokumentaci, možná pár diskusních fór, pár diskusních skupin. Ale zdá se, že spousta profesionálů používá stock overflow pravidelně a spoustu svých projektů, a to je pravděpodobně důvod, proč to Stack Overflow nakonec tak nějak řešil svým licencováním a řekl, že musíte v podstatě uvést, že to bylo z cyklů, odkud jste kód vzali. Jak se tedy podle vás změnilo softwarové inženýrství a Stack Overflow v průběhu let?

JON: Myslím, že softwarové inženýrství se částečně změnilo, protože všichni používáme více technologií a používáme méně dobře zdokumentované technologie, takže každý dnes používá knihovny třetích stran zleva doprava a zprava, nebo to dělá většina lidí, a knihovny přicházejí s různými stupni dokumentace a do jisté míry Stack Overflow v některých situacích téměř převzal dokumentaci. A existoval projekt dokumentace Stack Overflow, který byl nakonec zrušen, protože prostě ne zcela vyhovoval dané situaci, ale určitě je Stack Overflow v dnešní době stále více součástí každodenní sady nástrojů softwarových inženýrů. A částečně je to proto, že Stack Overflow reaguje tak rychle. Vzpomínám si na rok 2008 a 2009, kdy byl Stack Overflow ještě velmi mladý. Jeff Atwood říkal, že někdy je potřeba napsat otázku a čekat 20 minut, než dostanete odpověď. A já jsem byl prostě unešený, když jsem si pomyslel, že 20 minut je tak neuvěřitelně krátká doba. A měl pravdu, že když položíte dobrou otázku, obvykle do 20 minut dostanete odpověď. A to dřív v diskusních skupinách nebývalo. Nejsem si jistý, jestli je to jen počtem lidí, kteří věci čtou, nebo jen tím, jak se svět zrychlil, ale určitě byste často čekali celý den, než byste dostali odpověď v diskusní skupině, zatímco v dnešní době mám tendenci zjistit, že mi bude trvat déle, než napíšu otázku, než mi bude odpovězeno. Takže málokdy mi bude trvat méně než půl hodiny, než napíšu otázku, protože dělám výzkum a sestavuji kompletní příklad a ptám se na něj co nejjasněji a to všechno zabere čas. Ale určitě do půl hodiny, takže pokud mi trvalo půl hodiny napsat otázku, tak za necelou půlhodinu mám přinejmenším komentáře, které říkají: Jo, to vypadá divně. To je nové. Nejsem si jistý, o co tu jde, ani skutečnou odpovědí vysvětlující řešení problému. Takže ano, skutečnost, že je to tak nízká latence, to efektivně dělá mnohem životaschopnější. A to v případě, že musíte položit novou otázku. V 90 procentech případů, kdy se potýkám s problémem, se kterým mi Stack Overflow pomůže, nemusím vůbec pokládat otázku, protože už ji položil někdo jiný. Zjistil jsem, že zejména v oblastech, které znám méně, jako je Python nebo skripty Bash nebo něco podobného, velmi často provedu nějaký průzkum na Stack Overflow a najdu odpověď přesně na otázku, kterou jsem chtěl. Je to skvělé.

MARCIN: Setkáváte se s tím, že lidé, kteří jakoby objevili vývoj nabídek, se o něm chtějí dozvědět více, se právě učí první jazyk. Zjistili jste, že neinvestují dostatek času do toho, aby se naučili jádro. Jak jsem řekl, dokumentaci k jádru a skutečnému seznámení se s jazykem, než se vydají na něco jako Stack Overflow?

JON: Myslím, že je těžké říct, jaká část lidí to dělá, ale určitě vidím, že někteří lidé to dělají a ani se neseznámí s jazykem a nezískají nástroje. Ale mám pocit, že je nedostatek výuky v rámci škol univerzit diagnostického procesu, a to je důvod, proč mám tak trochu řeči o tom, že určitě ve Velké Británii je mnohem více kurzů informatiky v kurzech softwarového inženýrství a za to všechno jsem velmi vděčný, že existují kurzy informatiky a rozhodně potřebujeme informatiky. Pravděpodobně je více potřeba softwarových inženýrů, kteří opravdu nepotřebují znát podrobnosti o tom, jak funguje kompilátor, ale opravdu by se jim hodil kurz o tom, že tady je, jak se postupuje při řešení problému a jeho dalším zkoumání. A pokud se vám ho nepodaří vyřešit, pak zde najdete návod, jak se na něj zeptat. No ať už je to dotazování se kolegů nebo dotazování se na Stack Overflow nebo hledání chyby nebo cokoliv jiného, tak jednoduché aspekty diagnostického procesu, kdy se nesnažíte ukousnout si víc, než dokážete rozkousnout. Pokud jste v jazyce nováčkem, pak nejprve udělejte několik jednoduchých věcí. Mám tendenci jít s něčím, jako jsou konzolové aplikace pro jednu věc, než se okamžitě ponořit do webových aplikací a mobilních aplikací, například, což zcela závisí na jazyku samozřejmě, pokud používáte jazyk, který je zcela zaměřen na vývoj webových aplikací, pak možná konzole, která bude nemožná, ale pokud je to možné, použijte nejjednodušší prostředí, které můžete. Prostředí, kde vám co nejvíce pomůže ladění, kde nepotřebujete 100 řádků boilerplate jen proto, abyste zprovoznili dva řádky kódu, takové věci jsou opravdu užitečné pro to, abyste se efektivně připravili na úspěch, abyste se mohli naučit jeden aspekt jazyka jeden aspekt knihovny najednou, a ne se topit v moři v pořádku. Mám sto stovek řádků kódu a ničemu z toho nerozumím a dostávám chybové hlášení, kterému také nerozumím, a nevím, kde začít. Problém je, že začínáte někde, kde je příliš mnoho věcí, kterým nerozumíte. Takže jo v rychle se měnícím světě a já jsem vinen jako kdokoliv jiný, pokud se snažím naučit nové technologie pro všechny, že říkám, že bych chtěl začít jednoduše. Často si řeknu No, mám jenom tuhle jednu věc, kterou potřebuju udělat, takže se do toho tak nějak vrhnu. Takže dělám i špatné věci, ale vím dost na to, že když se zaseknu, tak pak couvnu a zkusím udělat něco jednoduššího, ale v rychle se měnícím světě je to lákavé zkusit se do toho hned vrhnout, protože hele, potřebuju něco udělat hned teď, ale zjistil jsem, že je mnohem produktivnější a z dlouhodobého hlediska, když prostě uděláte krok zpět a opravdu zkusíte nejdřív jít, než poběžíte.

MARCIN: Dostal jste se někdy do situace, možná to bylo na začátku kariéry, kdy jste začal řešit nějaký problém, který už byl vyřešen, a později jste si uvědomil, že to je vlastně jako vyřešené, že je to něco, co se dá vyřešit, stačí použít API nebo můžete použít důvěryhodnou knihovnu.

JON: ano, a zdá se, že někdy existuje určitá averze vůči knihovně třetích stran. Klasickým příkladem je manipulace s XML, takže se setkáte s lidmi, kteří si řeknou, že potřebuji jenom escape ampersandů, takže prostě použiji řetězce a XML vytvořím přímo, a pak zjistí, že ne, mám ještě jednu věc, která způsobuje problém, a dříve nebo později máte stovky řádků kódu, kterým byste se mohli úplně vyhnout, kdybyste pro začátek použili knihovnu XML a bylo by to mnohem robustnější a bezpečnější ve všech možných věcech. Takže ano, lidé by měli používat knihovny třetích stran. Po jejich pečlivém výběru, i když existuje také spousta docela šmejdských knihoven. Ale výběr dobré knihovny může v projektu znamenat velký rozdíl.

MARCIN: A řekl byste, že je to něco, co se získává se zkušenostmi, což je to, co říkám, že druh moudrosti, aby bylo možné říci, zda opravdu potřebuji napsat nějaký kód k vyřešení tohoto konkrétního problému.

JON: Do určité míry. Částečně jde o zkušenost a částečně o to, že se držíte zpátky, protože když vidíte, že byste něco mohli udělat a znamená to napsat nějaký kód a myslíte si, že by to byl zábavný kód. Pak je tu vždy pokušení ten kód napsat, i když to ve skutečnosti nepotřebujete. A já to pokušení určitě chápu. I když bych opravdu neměl a někdy napíšu rychlý nástroj v C#, i když to není nejvhodnější jazyk pro jeho použití, protože je to jazyk, který znám nejlépe, a tak mě to možná krátkodobě zefektivňuje. Možná na úkor dlouhodobé produktivity. Nemyslím si, že bychom se tím měli příliš zabývat. Nebudeme se kvůli takovým věcem příliš tlouct do hlavy, ale budeme si je hlídat. Hodně se toho dá naučit, když uděláme krok zpět od sebe a tak trochu se pozorujeme při práci a řekneme si, kde využívám hodně času způsobem, který nakonec není produktivní, a jak to mohu časem trochu omezit, aniž bych se snažil myslet na to, že aha, to musí znamenat, že jsem hrozný vývojář a měl bych se úplně vzdát softwarového inženýrství. Prostě se neustále snažte zlepšovat.

MARCIN: Skvělé. Dobře. Teď bych se asi chtěl pokusit trochu přiblížit historii, jako kdybyste nám mohl říct, že každý má nějaký příběh o tom, kdy začal programovat. Takže jaký je váš příběh, kdy jste se k tomu vlastně dostal? Kdy jste se začal zajímat o něco jako softwarové inženýrství nebo programování nebo kódování nebo jak tomu chcete říkat v té době?

JON: Takže to bylo velmi brzy. Koupili jsme Aztec's spectrum 48 K Sinclair ve Spectru, když mi bylo, myslím, že to bylo v roce 1984, takže mi bylo osm let. Spectrum vyšlo dva roky předtím, v roce 1982, a zpočátku jsem jen hrál hry a pak jsem poměrně rychle začal dělat velmi jednoduché kódování. Spectrum mělo zabudovaný interpret BASICu. Takže když počítač spustíte, můžete okamžitě začít psát kód a příručka ke spektru, která se k němu dodávala, byla velmi dobrá pro výuku programování, alespoň pro výuku základu. A já si vzpomínám, jak jsem jednou, když byl můj táta doma, protože byl z nějakého důvodu nemocný, napsal malou hloupou střílečku, která se skládala z toho, že tady je vesmírná loď, která se pravděpodobně skládala jen z nějakých ASCII znaků a na náhodném místě se objevil mimozemšťan a vy jste pohybovali vesmírnou lodí nahoru a dolů a pak jste stiskli tváří v tvář ohni nebo tak něco, bylo to tak naprosto triviální a vůbec ne zábavné. Ale tohle bylo poprvé, co jsem napsal něco, co by bylo interaktivní, a bylo to úžasné, ten pocit, který mi to dalo, byl ohromující. Myslím, že částečně proto, že všechny hry byly tehdy dost primitivní, užil jsem si Jetpack a Lunar Jet Man atd. Ale byly to poměrně jednoduché hry, takže mě neodradilo, že jsem psal něco jednoduchého. Je mi tak trochu líto dnešních dětí, které, pokud se řídí mými radami a dělají pro začátek něco velmi jednoduchého, skončí u malé textové hry, která vás třeba požádá, abyste uhodli náhodné číslo, a řekne vám, jestli jste se dostali příliš vysoko nebo příliš nízko atd... No a když to porovnáte s Overwatchem nebo jakoukoli jinou hrou, kterou jste hráli pro zábavu. Je docela těžké pochopit, jak to spolu souvisí, protože tam je milion světelných let od jednoduché textové věci k 3D grafice, která to překonává velkou rychlostí se sítí a všemi možnými věcmi. Ale tehdy to bylo skvělé. Takže jsem si takhle psal vlastní kód. Existovaly také časopisy, které přicházely s výpisy, do kterých jste mohli psát. Takže jste si koupili knihu a místo toho, abyste měli na přední straně pásku s kódem, který jste mohli jen tak načíst, tak jste to všechno napsali a výhody toho jsou, že vám to připadalo nesmírně zdlouhavé, ale pořád jste se učili. No a takhle to, jak můžete psát kód, aniž by to bylo nějak zvlášť zdůrazňováno. Takže si myslím, že jsem z toho získal strašně moc, a vzpomínám si, že jedním z mých prvních významných projektů bylo napsání interpretu Loga, takže jsme ve škole zamířili na počítače BBC Micro. Měli jsme interpreter Loga, kde byl jakýsi falešný robot, kterému jste mohli říct, ať jede sto dopředu, ať se otočí doprava o 90 stupňů atd. a on kreslil listy na obrazovce. Tohle jsem miloval, ale na spektru jsme to neměli, tak jsem si implementoval vlastní, protože hele, nevěděl jsem, že je to složitá věc, která zabere spoustu času, a ono to zabralo, ale bylo to neuvěřitelně uspokojivé a myslím, že to svědčí o kvalitě příručky ke spektru, že jsem se efektivně naučil trigonometrii z příručky ke spektru, protože jsme ji v matematice ještě nedělali, to mi bylo ještě jenom nevím, jestli 10,11 nebo 12 let. Takže jsem se trigonometrii ve škole vůbec nevěnoval, ale příručka Spektrum byla natolik srozumitelná, že jsem se z ní dokázal naučit dost na to, abych mohl udělat výklad loga. A když se ohlédnu zpátky, rád bych se na ten kód podíval i teď. Mám podezření, že je naprosto zprasený. A samozřejmě se ztratil v mlhách času. Ale ale stejně jsem při zpětném pohledu nesmírně hrdý na to, jak strašný ten kód byl. Mohl bys napsat svůj výpis loga. Mohli jste ho uložit na pásku mohli jste ho znovu načíst mohli jste ho spustit byl jsem celý nesmírně cool.

MARCIN: A jak jste postupoval v těchto dovednostech, myslel jste si vždy, že budete pracovat jako softwarový inženýr, nebo vás zajímaly jiné věci a pak jste byl nějak nasměrován, nebo víte, jak probíhal proces, kdy jste vlastně vstoupil do tohoto oboru?

JON: Myslím, že asi od 13 nebo 14 let jsem počítal s tím, že to bude moje kariéra. Takže jo. Na univerzitě jsem nešel přes informatiku, vystudoval jsem matematiku a myslel jsem si, že možná skončím jako výzkumník v matematice. Ukázalo se, že v matematice nejsem ani zdaleka tak dobrý, abych mohl dělat doktorát nebo něco podobného. Ale věděl jsem, že to bude něco, co se týká počítačů. Už ve škole jsem se zajímal o umělý život, takže jsem vystudoval matematiku a pak jsem rok studoval magisterský ekvivalent informatiky a o prázdninách jsem skončil u kamaráda v Digital Electronics a odtud jsem v podstatě pokračoval. Vždycky jsem byl hrozný v řízení své kariéry, prostě jsem to nechal jít z místa na místo, protože mě to baví, takže jsem vždycky považoval potěšení za mnohem důležitější než peníze, rozhodně uznání, kterého se mi dostává ze Stack Overflow a z psaní, je velmi příjemné. Nikdy nebylo mým záměrným životním cílem stát se slavným nebo tak něco. Ale takový ten bizarní status mikrocelebrity, který získávám prostřednictvím Stack Overflow, je docela zábavný a trochu zvláštní, ale dělat zábavné věci v práci je pro mě vždycky mnohem důležitější, takže dbám na to, abych měl kvalitní rovnováhu mezi pracovním a soukromým životem a mohl se hodně vídat s rodinou. Rodina je pro mě neuvěřitelně důležitá, ale kariéře jsem nevěnoval zdaleka tolik pozornosti, jak by to asi dělali cílevědomější lidé.

MARCIN: Jak mohou rodiče rozvíjet zájem dětí o programování?

JON: Mám tři děti, z nichž jedno se zajímá o Arduino, trochu kóduje a baví ho i Python. Další, který začal s Pythonem nedávno, ale předtím dělal scratch, což je zajímavé, je to vizuálnější prostředí a já se v té vědě a výuce dětí v programování moc nevyznám. Zkoušel jsem učit své děti programovat v Pythonu tím, že jsem zkoušel přístup velmi krok za krokem a myslím, že je to skvělé pro dospělé, ale nejsem si jistý, zda to děti dostatečně zaujme. Přinejmenším ne krok za krokem, který jsem se učil já. Buď to, nebo prostě nejsem moc dobrý učitel, což je docela pravděpodobné, ale myslím, že nejdůležitější je ujistit se, že je to něco, co chtějí dělat. Takže teprve když jsem se přestal snažit učit své děti programování, začaly to dělat samy a naučily se toho mnohem víc. Můj nejstarší syn udělal spoustu věcí Arduino a Raspberry Pi. Jsem si jistá, že takové věci jsem nikdy ani neviděla, protože on jen občas řekne správně mohl bych mít tyhle součástky, prosím. A pak jde a staví náhodné věci a tak jsem se to naučil i já. Rodiče na mě nikdy nedohlíželi, pokud vím, co jsem programoval. Byli jen rádi, že jsem šťastný, a povzbuzovali mě, abych se vydal do okolního světa. Jednou za čas, ale byli rádi, že dělám něco kreativního a učím se sám od sebe. Takže pokud dokážete děti dostatečně povzbudit, aby si našly něco, co je bude bavit dělat samy, a pak jim dáte jasně najevo, že jim rádi pomůžete, kdykoli budou chtít, ale nebudete je do toho nutit. Právě teď je čas na půlhodinku programování. Pak si myslím, že to je recept na úspěch. Děti se rády učí. Možná nemají rády školu, ale rády se učí a rády dělají věci, které jsou kreativní. Nechte je tedy popustit uzdu kreativitě, jakkoli to uznají za vhodné, a ony vás ohromí tím, co dokážou.

MARCIN: Myslíte si, že myšlenka, že by se každý měl naučit programovat, je obzvláště důležitá, protože se snaží zavést více do učebních osnov. Je to dobrý nápad, nebo to zbytečně nutí lidi učit se něco, co vlastně nechtějí.

JON: Myslím si, že jsou tu dva aspekty: zaprvé je dobré, aby se každý seznámil s programováním, protože máme nezdravý stereotyp o tom, jak vypadá programátor, což našemu odvětví škodí. Takže pokud můžeme lidem ukázat a říct, že tohle je vlastně kódování, a pokud můžeme lidem zprostředkovat pozitivní zkušenost, pak lidé, kteří by si možná nikdy přirozeně neřekli, že je to něco, co si vezmu za své, to mohou objevit. Vlastně se jim to líbí. Takže si myslím, že je to velmi přínosné. A dalším aspektem je, že software dnes řídí tak velkou část světa, že si myslím, že mít nějakou představu o tom, co to obnáší, i na té nejhrubší úrovni, je velmi přínosné. Stejně jako si myslím, že by lidé měli mít lekce finančního plánování, jen základy toho, o čem jsou důchody, o čem jsou půjčky a jak funguje burza. Ne proto, aby se z nich stali bankéři, ale aby mohli manévrovat ve světě, který je tak finančně řízený, prostě aby měli nějakou představu, že ano, to samé platí pro politiku a všechny druhy věcí, druhy částí reality, které ovlivní váš svět. Je dobré mít nějaké základní znalosti. Neříkám, že toho vím hodně o politice nebo o financích, ale jsem velmi rád za to, co vím, protože mi to pomáhá utvářet pohled na zbytek světa. Takže si myslím, že software hraje určitou roli v tom, že žádné děti v dnešní době nejsou určitě ze středních vrstev ve vyspělých zemích a můžeme vést celé další rozhovory o oblastech, kde děti nepřijdou do styku s počítači kvůli chudobě apod. ale spousta dětí bude mít nějakou interakci s počítači. Takže pokud se na ně dívají tak, že to je prostě spuštění kódu, je to spuštění opravdu složitého kódu, ale mám nějakou představu o tom, jak kód vypadá. A představa, že víte, co je to cloud do té míry, že jeho počítače běží někde jinde v datovém centru, které spravuje Google nebo Amazon nebo Microsoft nebo cokoli jiného, a mít o tom základy vám prostě může pomoci dělat cokoli jiného, nemusíte se sami zabývat kódováním, abyste měli prospěch z toho, že máte základní představy o tom, jak počítače fungují.

MARCIN: A nyní například v Chromu s jejich vývojářským panelem nástrojů. Můžete vzít kohokoli, kdo používá internet, a říct mu, jestli si uvědomuje, že tohle všechno se děje, když používáte tuhle webovou stránku, víte, všechny tyhle aktivity, a on tomu možná ani nerozumí, že? Ale tak nějak to odhaluje, co se vlastně skrývá za oponou. A myslím, že to je někdy skvělý způsob, jak ukázat někomu, kdo se o dané téma řekněme nezajímá, a vy řeknete OK. Ukážu vám, ukážu vám, co se vlastně na tomto webu děje, když ho používáte. Myslím, že je úžasné, že můžeme tak nějak, chci říct, že můžete dokonce otevřít konzoli a začít hackovat nějaký javascript, aniž byste museli cokoli dělat.

JON: Určitě ano a aplikujte je na sebe navzájem. Existuje spousta dalších způsobů, jak dělat základní kousky kódu jen pro prohlížeč, včetně v C# teď je, že Tray.net umožňuje začít psát každý jen v prohlížeči a jistě za scénou někde běží cloudový kontejner. Ale rozhodně můžete začít vidět kód v nesčetných jazycích jen z prohlížeče. A myslím, že je něco, co se dá říct o tom, že informatika má také tuto expozici. Takže jsem určitě přednášel pro Cubs a průvodce a dokonce i pro cech, který je v mé místní metodistické církvi, což jsou většinou lidé, kteří jsou buď v důchodovém věku, nebo téměř v důchodovém věku, kteří by nikdy nedělali žádnou informatiku většina z nich a já jsem měl přednášku, která jim ukázala některé informatiky, aniž by se vůbec zapojily počítače. Takže věci jako máte hromadu papírů, jak je můžete efektivně roztřídit, a slyšeli několik různých algoritmů, které můžete použít. A co to znamená pro to, kdybyste měli, víte, kdyby se je snažil roztřídit jeden člověk, pak byste mohli použít jeden algoritmus. Pokud máte 10 různých lidí, je váš zvolený způsob skutečně stále škálovatelný, když vám pomáhá spousta různých lidí. Takže skončíte u třídění typu merge sort nebo čehokoli jiného a věcí jako je algoritmická složitost, která dává reálné příklady toho, jak dlouho trvá udělat různé věci. Pokud máte více vstupů, věšení košil na prádelní šňůru nebo cokoli jiného, myslím, že lidem může taková věc připadat zajímavá, pokud se jí nenechají odradit. Ale jakmile začnete říkat výpočetní technika, tak spousta lidí okamžitě vypne. Takže je třeba hodně mluvit o zpřístupňování věcí neohrožujícím a nepovyšujícím se způsobem, a to vyžaduje značné schopnosti v oblastech, které já nemám. Ale udělal jsem, co jsem mohl, ale jsem si jistý, že lepší pedagogové by to dokázali podstatně lépe. Myslím, že je to docela důležité.

MARCIN: Pokračujme dále. Co byste řekli, že jste kromě Stack Overflow. Existují nějaké druhy zdrojů, které máte opravdu rádi. Chci říct, že jsem fanoušek třeba knih od O'Reillyho, ale čeho jste fanoušek vy, co se týče zdrojů, které používáte, když se chcete vlastně naučit nějaký nějaký nový jazyk nebo tak něco.

JON: takže knihy jsou skvělé pro učení jazyků, protože vás tam zavedou v určitém pořadí, a v dnešní době to samozřejmě platí i pro online výukové materiály, pokud jsou napsány vhodným způsobem, a ze zkušenosti vím, že to stojí hodně úsilí napsat zdroje, které vás naučí všechny funkce jazyka v určitém pořadí, které vám pomůže se učit. A tak někdo může napsat výukový program C#, který vlastně není vůbec dobrý, protože jenom vysypal mozek z rukávu. Takže si musíte vybrat, ale něco, co je pro vás strukturované, je velký rozdíl Dobrá dokumentace API je vždy velmi vítaná. Takže .NET má tendenci být docela dobře zdokumentován a nový prohlížeč API usnadňuje nalezení dokumentace atd.. Doporučoval bych lidem, pokud píší knihovny, aby se opravdu snažili napsat dobrou dokumentaci, která by se k těmto knihovnám hodila. Nemá smysl mít nejrychlejší svižný JSON Serializer na světě. Pokud nikdo nedokáže zjistit, jak ho používat. Ale buď používám stejné zdroje jako ostatní lidé také, ať už jsou to tutoriály a knihy, nebo jen hledám správné výsledky, když jsem vyškolený, jak dobře napsat, jak to umím, ať už je to cokoli. Vložit něco do PDF nebo jakýkoli úkol, který mám náhodou po ruce. Jo, hledám na internetu, používám Stack Overflow, používám knihy, používám návody, používám knihovny a jejich dokumentaci. Jo, to je asi tak všechno.

MARCIN: A co říkáte na tuto myšlenku, že je to proto, že jsme vlastně téměř podobné věkové skupiny. Myšlenka, že v určitém věku se z lidí prostě stávají manažeři. Viděl jste, že by se to stalo. Je to pravda, nebo jste v tomto ohledu tak trochu výjimečný, že stále vyvíjíte software, nebo jste. Co byste na to řekl?

JON: Rozhodně nejsem jedinečný. Řekl bych, že jsem aktivně říkal, že jsem svou kariéru příliš neřídil. Tomu, že se optimalizuji pro zábavu, jsem se aktivně bránil řídit už delší dobu. Půl roku jsem byl manažerem a zjistil jsem, že se tomu dá hodně vytknout. Zejména bych si rád myslel, že jsem empatický, a snažím se vědomě být empatický, protože si opět myslím, že to je pro softwarového inženýra důležitá dovednost. Ale samozřejmě to souvisí i s řízením, a tak jsem si říkal, že by bylo zajímavé zkusit řídit, a zkusil jsem to a pak bylo vhodné, abych se vrátil do role individuálního přispěvatele. Z hlediska vedení můžete jako softwarový inženýr dělat spoustu věcí i bez řízení. A nemusí to být vždy psaní kódu, takže pravděpodobně píšu víc kódu než většina lidí na stejné úrovni seniority, protože jsem si to vybral a aktivně jsem se bránil věcem, které by mohly mít širší dopad, ale bez toho, aby to pro mě bylo tak zábavné, řekněme, že můžete často strávit spoustu času psaním návrhových dokumentů a ano, že stále píšu dokumenty přiměřeně často, obvykle poměrně neformálně, nejsem velký fanoušek psaní obrovských dokumentů se všemi druhy kousků, které nebudou pro nikoho relevantní. Mnohem raději se dostanu k podstatě věci pěkně rychle. Ale psaní dokumentů, které mají přispět více týmům, říkajícím Dobře, myslím, že tento problém máme všichni. Pojďme se podívat, jestli můžeme společně přijít na řešení, které bude mít širší dopad než jen to, že já sám napíšu kód, který ten problém vyřeší. Myslím, že jedna z věcí, o kterou byste se pravděpodobně měli snažit, jakmile budete zkušenější, je zjistit, kde tyto zkušenosti mohou pomoci ostatním lidem. Do jisté míry to ale stále bude kódování, do jisté míry sdílení znalostí v rámci uživatelských skupin, konferencí a podobně. A tím, že budete řešit problémy interně ve firmě, které můžete, můžete být schopni vidět jasněji než jiní lidé, kteří jsou možná méně zkušení, možná se právě připojili k týmu nebo cokoli jiného. Ale pokud jde o to, zda by se lidé měli stát manažery, nebo ne, osobně bych si myslel, že by bylo naprosto v pořádku, kdyby někdo přišel a začal okamžitě řídit, aniž by nutně musel sám tuto práci dělat. Pokud je to něco, v čem budou dobří díky empatii a učení, můžete se naučit, co daná práce obnáší, aniž byste ji dělali, pokud jste si vědomi, že jste ji nedělali, takže nemáte tu přímou zkušenost. Takže si nemyslím, nemyslím si, že by měla existovat přímá úměra mezi věkem a tím, jaká část pracovníků jsou manažeři. Určitě doufám, že budu ještě dlouho do důchodu psát kód a pravděpodobně nebudu dělat významné množství manažerské práce. Pokud budu nakonec někdy muset být manažerem, budu to dělat, jak nejlépe budu umět, ale nemyslím si, že by to mělo být normálně podmínkou, a myslím si, že spousta firem dělá špatně, když do vedení povyšuje lidi, kteří by ve skutečnosti byli mnohem šťastnější a mnohem produktivnější jako programátoři.

MARCIN: Co se týče myšlenky, že ano, je to pravděpodobně nějaká mylná představa, že po 15 letech psaní softwaru se prostě stanete manažerem a že to prostě všichni dělají. Jen vím, že existuje určitý tlak, přinejmenším v kalifornském Silicon Valley, kde se lidé opravdu bojí, že jim je například 29 let a jsou příliš staří a teď je zaměstnají některé společnosti, které jsou tak trochu asi posedlé tím, že zaměstnávají pouze lidi, kterým je 22,23 nebo 24 let.

JON: Nechtěl bych být zaměstnán ve společnosti, která je posedlá zaměstnáváním 22letých lidí. Mnohem raději bych pracoval pro firmu, která si váží lidí za to, jací jsou, čeho mohou dosáhnout a čeho mohou dosáhnout společně. Tedy nejen jejich současné schopnosti, ale i jejich potenciál. Sám jsem tedy takový agismus nezažil. Promiňte, ale jsem si vědom toho, že je to problém. Rozhodně bych řekl, že jsem nezažil žádnou degradaci, o které bych věděl, pokud jde o mé kódovací dovednosti. Stále kóduji stejně spokojeně a produktivně jako dřív. Pokud je mi známo. Takže bych doufal, že firmy budou brát takové věci na vědomí a budou najímat lidi, kteří tuto práci zvládnou.

MARCIN: Myslíte si, že je to dobré. Mluvíme například o tom, že pokud budeme mluvit o všech ostatních profesích. Obvykle se má za to, že když někdo dělá fyziku už 30 let, tak víte, že tam nikdo neřekne, že už nevíte, co děláte. Je to tím, že softwarové inženýrství je tak úzce spjato s technologiemi a technologie se vyvíjejí tak rychle, že lidé prostě předpokládají, že víte, když to děláte tolik let, tak jste tak trochu mimo, nebo je něco, co softwarové inženýrství odlišuje od všech ostatních oborů, kvůli čemu mají lidé představu, že víte, někdo je víte, určitého věku a mají o něm určité představy.

JON: Možná z toho vznikl tento dojem, ale řekl bych, že je pravděpodobně nepřesný. Musíte být ochotni učit se novým věcem. Alespoň pokud chcete být, pokud chcete být schopni pokračovat v Nových a vzrušujících oblastech. Pokud děláte COBOL 30 let a rozhodli jste se, že se nebudete učit nic jiného než COBOL, pak jsem si jistý, že můžete být stále produktivní, a to je v pořádku. Ale neměli byste očekávat, že získáte práci v JavaScriptu nebo něčem podobném, aniž byste projevili zájem se dále učit. Na druhou stranu já jsem opravdu uměl jen C# a Javu na profesionální úrovni, protože jsem zjistil, že v C# je dost nových věcí, které se musím naučit, nemám dost času učit se F# a D a Rust a Go a všechny možné věci, které ostatní lidé dělají šířeji a méně do hloubky. Ale záleží na jednotlivcích, kolik toho chtějí pojmout, a je třeba si uvědomit, že pokud se rozhodnete neučit, pokud se rozhodnete přestat se učit, pak se časem stanete méněcennými. Ale abych byl upřímný, mám podezření, že existuje dost starších systémů, že pro většinu jazyků můžete být stále přiměřeně cenní, i kdybyste se rozhodli přestat se učit. Upřímně řečeno, nevím, proč byste se měli chtít přestat učit, protože dělat nové věci je vždycky zajímavé. Ale zabere to dost času a myslím, že firmy by měly být ochotné tento čas do svých inženýrů investovat, aby inženýři neměli pocit, že se musí učit věci v čase, který jinak tráví například s rodinou. Součástí vaší práce by tedy mělo být poměrně hodně aktivního vývoje. Součástí toho, abyste byli dobrým inženýrem Sophera ve svém pracovním životě, je učení se novým věcem. Pro většinu vývojářů, jak říkám, existují některé starší oblasti, kde to není tak relevantní, i když bych řekl, že i vývojáři Cobolu, kteří s ním pokračují a stále se učí nové věci, zde pravděpodobně uvidí, jak mohou své dovednosti v Cobolu uplatnit v jiných prostředích. Možná existují kontejnery, na kterých dnes běží COBOL, a najednou máte kontejnerové systémy v cloudu, na kterých může běžet COBOL, a najednou můžete všechny své lokální stroje přesunout do off-premise.Víte, to, že používáte starý jazyk, neznamená, že musíte používat staré technologie pro všechno ostatní. Takže je tu prostor pro všechny druhy lidí, kteří se vždy chtějí naučit něco nového, jako je nový jazyk. Lidé, kteří chtějí aplikovat všechny technologické dovednosti v novém prostředí, i lidé, kteří v učení se novým věcem nevidí velký smysl. Jo, můžu říct, že se do toho nijak zvlášť necítím, ale softwarové inženýrství je tak široký obor, že určitě existuje užitečný produktivní život, který se dá strávit tím, co dělá. Uplatňovat všechny své stávající dovednosti na stále nové výzvy. Mohl bych používat C# 7 do konce života a stále dělat nové věci, i když se nenaučím žádné nové skutečné oblasti jazyka. Není to to, co bych chtěl dělat, ale jsem si jistý, že pro jiné lidi ano. To může být spíše cesta, kterou se chtějí vydat.

MARCIN: A to všechno díky tomu, že většina jazyků je Turingova úplná, a tak můžete dělat cokoli s jakýmkoli jazykem, který znáte. Myslím tím, že je to velmi široce řečeno

JON: pravděpodobně si nejsem jistý. Myslím, že jazyky se vyvíjejí, určitě C# se velmi rozhodně vyvíjel pro případy použití, které se do něj vkládají, takže některé funkce, které se přidávají nyní, by před 10 lety, než se cloud computing velmi rozšířil, neměly takový smysl, a vidíme další oblasti, jako je hraní her, kterým C# dominuje téměř nečekaně s platformami jako Unity. Existují tedy jazykové funkce, které jsou poněkud vyladěné na hry a vysoce výkonné výpočty s nízkou latencí, a to je podle mě skvělé. Ale ano, mohli byste dělat věci v jiných jazycích nebo ve starších verzích jazyků, ale je mnohem produktivnější a zajímavější používat nové funkce, protože byly navrženy tak, aby řešily zejména vaše problémy.

MARCIN: Jaké je vaše oblíbené IDE?

JON: Visual studio

MARCIN: Používáte určitou metodiku?

JON: Získat kód Hotovo. Nepoužívám Kanban, ani bych nechtěl říkat žádnou takovou konkrétní metodiku. Věřím v testování, ne nutně v test driven development, ale alespoň v testování vedle vývoje, někdy v test driven, záleží na situaci. Vadí mi, když mám spoustu produkčního kódu, který není otestovaný. Takže to je jeden z aspektů agilního vývoje, ale není to Osobně nakonec nepoužívám všechny agilní metody. Nedělám moc párového programování. V minulosti jsem to dělal a považoval jsem to za velmi užitečné. V minulosti jsem dělal nepárové programování a považoval jsem ho za naprosto vyhovující. Považuji ho za důležité mít dobré vztahy se svými kolegy, takže kontrola kódu je pro mě velmi důležitá a tato kontrola kódu je upřímná a otevřená. Ale to není vázáno na žádnou konkrétní metodiku.

MARCIN: Co byste poradil někomu, kdo se nachází v této oblasti a učí se jazyk řekněme tři měsíce, tři až šest měsíců. A prostě mají pocit, že nejsou dost chytří na to, aby se to naučili správně. Jako by tam bylo příliš mnoho chyb, které je třeba opravit. A víte, jakou radu byste měli pro toho člověka, který má o to zájem, ale má pocit, že se přes to prostě nemůže dostat.

JON: Takže pokud vás to stále zajímá a myslíte si, že by vás to mohlo bavit, jen kdybyste to uměli lépe, hledejte lidi. Ať už je to čtení blogů nebo nalezení uživatelské skupiny, najděte lidi, se kterými můžete komunikovat a pokud možno získat individuální výuku, protože může být docela osamělé snažit se najít odpovědi čistě zpoza obrazovky. Zatímco pokud prezentujete, pokud se zapojíte s někým jeden na jednoho, často mohou vidět ok, tady je váš problém s mentálním modelem, kde si něco představujete špatně, a to by mohlo být velmi těžké získat jen z jednotlivých malých kousků kousků. Pokud vás to nebaví, najděte si jiný jazyk, protože jazyků je spousta.

MARCIN: Který programovací jazyk je lepší, Java nebo C#?

JON: Osobně bych řekl, že C# Rozhodně. Teď jsem se nedíval na podrobnosti o funkcích Javy 9 a znám jen funkce typu job rate ish, ale připadá mi, že C# převzal některé chyby, které udělala Java, a udělal některé chyby sám. Ale obecně se zdá, že C# vyvíjela rychleji a prostě opravdu dobře tým C# je fantasticky chytrý a prostě opravdu pečlivý v tom, jak vyvíjí jazyk. Takže jsme v C# 7.2 a zdá se, že se to vydalo velmi velmi dobrým směrem, že je to řízeno extrémně dobře, velmi dobře specifikováno. To znamená, že víte, že Java je lepší než kdy jindy a nemyslím si, že je v ní dost toho, že pokud pracujete na kódové základně v Javě, měli byste ji celou zahodit a začít místo toho dělat C#. Ale kdybych měl kdykoli na výběr, rozhodně bych si vybral C# v kterýkoli den.

MARCIN: Úžasné! Jon Skeet, děkujeme, že jsi byl hostem podcastu Yellow Duck. Pokud máš nějaké odkazy, které mi chceš poslat, a konference, které budeš dělat, pošli mi prosím všechny informace.

JON: Děkuji.

MARCIN: Jo, díky, Ahoj!

Sdílet příspěvek

Další informace o najímání zaměstnanců v oblasti technologií

Přihlaste se k odběru našeho vzdělávacího centra a dostávejte užitečné informace přímo do své e-mailové schránky.

Bezproblémové ověřování a rozvíjení dovedností v oblasti kódování.

Podívejte se na produkty DevSkiller v akci.

Bezpečnostní certifikace a shoda s předpisy. Zajistíme, aby vaše data byla v bezpečí.

Logo DevSkiller Logo TalentBoost Logo TalentScore