Ett samtal med Jon Skeet: Programmeringens Chuck Norris, på Yellow Duck Podcast

Publicerad: Senast uppdaterad:

Visste du att när Jon Skeets kod inte går att kompilera, så är kompilatorn ber om ursäkt? Vad sägs om det faktum att när Jon gör en sökning på Google är det enda resultatet "Jag är strax tillbaka"? Källa: Stack Overflow

För er som inte känner till Jon Skeet är han Senior Software Engineer på Google i London, Storbritannien. Även om vissa av de vildare påståendena om honom fortfarande måste verifieras, är det definitivt sant att han är den enda användaren av Stack Overflow som har ett rykte på över 1 000 000.

Sedan 1998 har den här killen bidragit med över 34 000 svar till webbplatsen och genererat över 230 000 000 visningar! Så vad frågar du killen som redan har svarat på alla tänkbara frågor?

Ta reda på det genom att lyssna på vårt samtal med Jon Skeet.

Marcin Kraszewski fick sitta ner med Jon och fråga honom något nytt. Det visade sig att han har fler svar att ge, inklusive några som du inte har hört någon annanstans.

Har du hört historien om hur Jon började utveckla programvara genom att bygga ett dataspel? Vad sägs om det mest utmanande problemet som Jon fick i uppgift att lösa som ingenjör?

Vår konversation omfattar allt detta samt de största förändringarna inom programvaruindustrin under det senaste decenniet, vad utvecklare använde innan Stack Overflow, hur länge Jon planerar att bidra till Stack Overflow, en jämförelse mellan C# och Java och Jons favoritkonferenser.

Det här är ett unikt tillfälle att delta i en avslappnad utforskning av den personliga resa som en av de mest kända namnen inom programvaruindustrin har gjort.

Du kan följa Jon här:

Men först kan du lyssna på vårt samtal med Jon på Yellow Duck Podcast.

Nedan hittar du den skriftliga utskriften av vårt samtal.

MARCIN: Ok, välkomna till The Yellow Duck Podcast, jag har en mycket speciell gäst med mig idag. Jag kommer att prata med Jon Skeet om du inte vet vem Jon Skeet är så är han en av de främsta bidragsgivarna till Stack Overflow han kanske till och med är den främsta bidragsgivaren till Stack Overflow som är, om du inte känner till Stack Overflow, det är fantastiskt. Det är i princip en webbplats där du kan få svar på nästan vilka frågor som helst, inte bara relaterade till programvaruutveckling och teknik, utan det finns även Stack Exchange som är en slags moderwebbplats för Stack Exchange och du kan få svar på frågor om allt från improvisationskomik till vetenskap och astronomi. Så Jon, välkommen.

JON: Tack så mycket. Det är trevligt att vara här.

MARCIN: Tack för att du är med mig här på Yellow Duck podcast, jag har en massa saker jag vill fråga dig. Men först av allt vill jag naturligtvis komma till den viktigaste frågan som jag har i huvudet. Jag gjorde lite efterforskningar om din aktivitet på StackOverflow som är världsberömd och mycket omfattande. Och min fråga är att du svarade på din första fråga på StackOverflow den 26 september 2008 kl. 12.11 enligt den information jag kunde få fram. Berätta lite om omständigheterna kring det första svaret, så att vi vet hur du gjorde det. Hur började du använda Stack Overflow. Hur fick du det svaret? Hur kom du fram till att svara på det svaret? Du vet, var började allting?

JON: Så det var verkligen en övning i narcissism i viss mån. Jag hörde först talas om Stack Overflow på Sara Chips blogg. Hon hade skrivit en recension av den första upplagan av C# på djupet redan 2008, vilket verkar vara väldigt, väldigt länge sedan, och jag läste hennes recension och sedan läste jag några av hennes andra blogginlägg och där nämndes Stack Overflow. Så jag tänkte att jag borde ta en titt och letade på Stack Overflow efter frågor att besvara. Utan att ha någon större aning om vad sajten egentligen var och jag letade efter frågor om C# på djupet, särskilt om det fanns några, och det fanns några omnämnanden här och där och det fanns frågor om C# och jag tänkte att jag kan svara på det här, så jag ska svara på det, och allting fortsatte därifrån. Jag hade tidigare skrivit en hel del om nyhetsgrupper, både C# och Java Newsgroups, under det senaste decenniet, så detta verkade bara vara ett steg i utvecklingen av dessa nyhetsgrupper. Jag hade aldrig gillat forumprogram på HTML-basis tidigare. Av olika anledningar, men ingenting var nästan lika användbart som nyhetsgrupper för mig, medan Stack Overflow helt förändrade detta.

MARCIN: Jag tror att du har besvarat över 35 000 frågor, vilket är ett fantastiskt bidrag till gemenskapen. Så vi är naturligtvis alla mycket tacksamma för det. Och jag tycker att det är riktigt intressant att du började som, i en mening som du sa, precis som en allmän användare som bara fick reda på hans webbplats och bestämde dig för att besvara frågor. Kan du gå vidare till nästa steg, vad fick dig att besvara, du vet, den andra, den tredje, den fjärde, de hundratals frågorna senare, när kände du att det här verkligen var något du ville göra. Kanske med särskild inriktning på Stack Overflow, men i allmänhet. När kände du den här passionen för att verkligen svara på en massa frågor, som om du bara hade den här energin.

JON: så det började ungefär 10 år tidigare när jag fortfarande gick på universitetet och svarade på Java-frågor i nyhetsgrupper långt innan C# ens fanns och kom in i diskussioner som inte är lika relevanta för Stack Overflow, men jag skrev väldigt mycket i Java-nyhetsgrupperna och mycket av det var att jag tycker om att hjälpa människor i grunden och detta är inte enbart altruistiskt. Jag tycker om att hjälpa människor eftersom det förbättrar mig som programmerare och definitivt förbättrar mig som kommunikatör, vilket jag tycker är otroligt viktigt inom programvaruteknik, och sedan finns det effekten av att inte bara hjälpa den person som ställde frågan utan förhoppningsvis hjälpa andra senare, vilket är vad Stack Overflow verkligen är optimerat för. Och jag tror att en del av de problem där människor ställer dåliga frågor är att de tänker på sitt omedelbara behov snarare än att tänka på hur jag kan ställa en fråga som kan hjälpa mig själv men också hjälpa människor som kommer senare. Och om du börjar från det perspektivet är det vad Stack Overflow communityt är byggt kring och antalet intryck som bra frågor kan få är enormt så att du kan hjälpa hela världens programmerare vilket jag tycker är fantastiskt.

MARCIN: Absolut. Så det är en bra idé som var, du vet, jag tror att det var verkligen något som behövde skapas. Folk var redo att börja dela med sig av sin kunskap och Stack Exchange och Stack Overflow skapades precis i tid, som du sa, det fanns andra sätt att dela med sig av kunskap. Men jag tror att det här kanske är det mest lättillgängliga för alla användare som vill få svar på sina frågor. Det är ett mycket effektivt sätt och jag tror också att det är ganska bra modererat, åtminstone för lokala följare.

JON: Ja. Graden av moderering är definitivt en öm punkt för många användare, inte bara några få som har försökt ställa frågan och de har ställt den dåligt, inte gett tillräckligt med detaljer eller gett alldeles för mycket detaljer eller. Det finns många olika sätt som man kan ställa en fråga på ett dåligt sätt, och jag tycker att modereringen är en av webbplatsens höjdpunkter, eftersom den försöker hålla kvaliteten på webbplatsen uppe och hålla den så användbar som möjligt, men det är definitivt en öm punkt, och jag tror att det finns arbete att göra när det gäller att kommunicera webbplatsens mål, så att alla kan dra åt samma håll. Det är inte så att någon. Jag är säker på att det finns några personer som antingen medvetet ställer dåliga frågor eller som modererar otrevligt bara för skojs skull. Det kommer alltid att finnas några idioter, men jag brukar utgå från att de flesta inte är idioter. De är trevliga, de ger sin tid och de vill ha en webbplats av hög kvalitet.

Och om vi kan se till att alla är överens kommer det att leda till en bättre upplevelse för alla. Så det finns fortfarande lite arbete att göra där när det gäller kommunikation och alla möjliga saker som kan vara mycket svårt, för om du sitter fast i ett problem omedelbart och du inte har registrerat dig eller ställt en fråga eller något annat på Stack Overflow tidigare så är din första frestelse att du ser en vägg av text som säger att det är den här typen av fråga du ska ställa och hur du ska närma dig saker och ting. Du tänker bara att jag bryr mig inte, jag vill ställa min fråga just nu, men om du tar dig fem, tio minuter, till och med en halvtimme, för att bläddra på webbplatsen, bläddra i de olika hjälpresurserna, har jag skrivit ett mycket långt blogginlägg om vad jag letar efter i en fråga, som är tänkt att hjälpa människor att ställa frågor, men jag kan förstå frustrationen och varför människor bara hoppar över allt detta och säger det rätt. Låt mig ställa min fråga nu. Jag antar att jag vet vad jag gör och det är mycket olyckligt att det ger dem en upplevelse och om folk inte läser den hjälp som har getts till dem så kan ingen förbättring av hjälpen verkligen komma över det faktum att de inte läser den. Så det är knepigt.

MARCIN: Det som är intressant med Stack Overflow verkar vara att jag åtminstone vet just nu att Stack Overflow har all data tillgänglig. Man kan t.ex. ladda ner hela datamängden och det är viktigt.

JON: Absolut. Ja, och det har varit ett mål från första dagen.

MARCIN: Tror du att det är en viktig del av det faktum att Stack Overflow fortsätter att vara populärt?

JON: Jag vet inte, det är definitivt en funktion. Det är till exempel härligt att jag tror att alla Stack Overflow-frågor har importerats till Google BigQuery, vilket innebär att folk kan köra frågor om alla typer av data och det finns ett Stack Overflow. Dataanalysverktyg är också tillgängliga på det sättet, så det finns alla typer av datautvinning som man kan göra på Stack-frågor och olika datavetare har gjort just det. Så det är väldigt häftigt på den fronten. Det skapar också en slags känsla av tillit att Stack Overflow inte äger dina bidrag. Alla gör det, de är alla licensierade på lämpligt sätt, så även om Stack Overflow självt som företag skulle gå omkull så skulle informationen inte gå förlorad, men jag vet inte riktigt hur viktigt det är, jag tror att det varierar i betydelse beroende på vem du frågar, men betydelsen för datavetenskapssamhället. Jag misstänker att det har varit en riktig skattkammare, särskilt eftersom jag inte är medlem i den gemenskapen.

MARCIN: Jag menar, jag har hört talas om några projekt där de försöker använda Stack Overflow för att träna en maskininlärningsalgoritm för att faktiskt skriva mjukvara eller åtminstone felsöka mjukvara, vilket är en intressant användning av data. När det gäller Stack Overflow, till exempel, finns det förmodligen många frågor som är väldigt likartade och nästan samma fråga men inte riktigt. Ser du någon lösning inom en snar framtid, kanske med hjälp av maskininlärning eller något annat för att på något sätt minska mängden duplicerat eller nästan duplicerat innehåll?

JON: Stack Overflow försöker redan hitta liknande frågor och föreslår dem medan du ställer frågan, du vet: "Har du tittat på de här sakerna?". Vi tror att de är liknande. Och även efter att du har ställt frågan. Det finns en lista på höger sida som visar potentiella dubbletter eller relaterade frågor och det är relativt enkelt att stänga en fråga som en dubblett eftersom om du har en guldtagg, det finns en guldbricka i en viss tagg, så kan du stänga saker och ting väldigt enkelt, vilket kallas dubbhammaren. Så det hjälper till att stänga frågor mycket snabbt om de är dubbletter och om det kan effektiviseras ytterligare ... Det är svårt eftersom maskininlärning aldrig kommer att vara 100 procent korrekt, så du vill inte hindra människor från att ställa frågor. Även om man har starka misstankar om att det kommer att vara en kopia. Man behöver nästan en "Är du verkligen riktigt riktigt säker". Har du verkligen tittat på alla dessa saker, men jag vet inte, det känns som om det är ett något mindre problem. Duplikataspekten än att folk ställer frågor och inte ens ger tillräckligt med information eller rätt sorts information för att kunna avgöra om det är ett duplikat eller inte. Och jag hoppas att det är så. Jag vet att Stack Overflow har genomgått några iterationer av ett slags guider för att ställa frågor som säger: "Hur ser din kod ut, vilka språk använder du? Har du tagit fram ett kort men komplett exempel som visar problemet?". Sådana saker. Det är oklart exakt vad som kommer att fungera, men jag vet att teamet arbetar hårt för att förbättra upplevelsen av att ställa frågor, eftersom Stack Overflow i grunden bygger på att det ställs bra frågor.

MARCIN: Definitivt, och eftersom jag antar att det alltid kommer att finnas frågor som måste ställas oavsett teknik och hur länge den har funnits. Vad är den viktigaste orsaken? Vad är det som driver det faktum att det alltid kommer att finnas nya frågor att ställa, till och med om C# som du som jag sa har besvarat och olika andra ämnen, 35 000 svar, men det finns fortfarande alltid fler. Jag antar att detta är en del av mjukvaruteknikens natur eller att man inte kan abstrahera allting.

JON: Tja, det är flera saker, dels är det att språket förändras, så jag skriver för närvarande om C# 7.2 och måste lära mig nya saker själv så att jag kan skriva om dem. Så det skulle vara helt naturligt för folk att ställa frågor om C# 7.2 eller andra saker som är ganska nya - C# 7.0 är fortfarande ganska nytt. Så när språk utvecklas och nya ramverk och bibliotek och alla möjliga saker. Det kommer alltid att finnas nya områden som folk kan ställa frågor om. Och sedan finns det människor som ställer frågor om befintliga områden och en del av dessa frågor kommer att vara nya och en del kommer inte att vara nya och en del kan vara förtäckta nya frågor. Till exempel i C# ändras i C# 5 det exakta sättet som lambdauttryck fångar variabler, särskilt för varje iteration, och det orsakade en massa frågor före C# 5 när det inte var idealiskt hur det fungerade. Och många av dessa frågor är i själva verket kopior av varandra, men jag besvarade faktiskt ganska många av dem eftersom det finns många som inte ser ut att vara uppenbart relaterade. Det är först när man vet svaret som man kan se att dessa två saker är samma problem, bara förklätt. Det kommer alltså alltid att finnas saker där endast den som svarar vet att du faktiskt står inför samma problem som någon annan och huruvida dessa frågor bör stängas som dubbletter är förmodligen en fråga för diskussion. Men ja, det kommer alltid att komma nya människor till programvaruteknik, vilket är en fantastisk sak, och jag tror att en del av dem behandlar Stack Overflow som en mer av en lärresurs. Jag skulle uppmuntra dem att göra det, eftersom jag tycker att Stack Overflow är en utmärkt felsökningsresurs. Det är inte ett bra sätt att lära sig ett språk från grunden. Du kan inte ta en Javakompilator eller till och med en IDE och Stack Overflow och lära dig Java från grunden på det sättet. Det är helt enkelt inte ett effektivt sätt att lära sig språket. En bok eller en handledning är en mycket mer strukturerad metod och Stack Overflow är utmärkt för det. Det fanns ett exempel och jag förväntade mig att det skulle göra så här, men det gjorde något annat i stället. Och här är varför jag tror att det borde bete sig på det här sättet och det beter sig faktiskt på ett annat sätt. Kan någon förklara exakt vad som händer här? Den typen av frågor är bra för Stack Overflow, så det är definitivt ett slags komplement till andra inlärningsverktyg, men jag tror inte att det är bra som ett första inlärningsverktyg. Eller som det enda sättet att lära sig ett språk, men det kommer alltid att finnas människor som lär sig saker för första gången. Och som sagt, om du är relativt ny i ett språk eller en teknik kommer det att vara mycket svårare för dig att hitta det. Relaterade frågor eftersom du inte ens nödvändigtvis vet exakt vad din fråga rör vid tillfället, så jag förväntar mig inte att mängden eller strömmen av frågor kommer att försvinna inom en snar framtid. Det beror delvis på nya människor, delvis på ny teknik och delvis på de gamla som gör saker som de inte har gjort tidigare, så jag kan fortfarande skriva i C# och ställa en ny fråga om C#, och jag tror att ungefär hälften av mina frågor handlar om C#, vilket kanske förvånar folk. Det finns inget bättre än att kunna ett språk någorlunda väl för att vara medveten om saker som går fel eller är oväntade och det är verkligen bra att fråga på Stack Overflow och säga: "Hej, jag förväntade mig verkligen att det här skulle hända och jag har goda skäl att förvänta mig det på grund av all min tidigare erfarenhet".

MARCIN: Och på Stack Overflow är idén om att hitta ett svar online hur länge har det varit en integrerad del av programvaruteknik. För förr var man liksom fast med, låt oss säga, låt oss säga, att man hade dokumentation, kanske ett par, ett par anslagstavlor, ett par nyhetsgrupper. Men det verkar som om många yrkesverksamma använder sig av Stack Overflow på regelbunden basis och många av sina projekt och det är förmodligen därför som Stack Overflow slutade med att ta itu med detta med sin licensiering och säga att du måste i huvudsak nämna att det var från cykler där du tog koden. Så jag antar att du anser att hur har programvaruteknik och Stack Overflow förändrats genom åren?

JON: Så jag tror att programvaruteknik har förändrats delvis på grund av att vi alla använder mer teknik och mindre väldokumenterade tekniker, så alla använder tredjepartsbibliotek till höger och vänster i dessa dagar, eller de flesta gör det, och biblioteken kommer med en mängd olika grader av dokumentation och i viss utsträckning har Stack Overflow nästan tagit över från dokumentationen i vissa situationer. Och det fanns ett dokumentationsprojekt Stack Overflow som till slut avbröts eftersom det inte riktigt fungerade för situationen, men Stack Overflow är definitivt en del av en programvaruingenjörs dagliga verktygslåda i allt större utsträckning nuförtiden. En del av detta beror på att Stack Overflow reagerar så snabbt. Jag minns 2008-2009 när Stack Overflow fortfarande var väldigt ungt. Jeff Atwood sa att ibland måste man lägga upp en fråga och vänta i 20 minuter för att få ett svar. Och jag blev helt överväldigad när jag tänkte att 20 minuter är en så otroligt kort tid. Och han har rätt, om du ställer en bra fråga får du oftast ett svar inom 20 minuter. Och det var inte alltid fallet i nyhetsgrupper. Jag är inte säker på om det bara är antalet människor som läser saker och ting eller om det bara är så att världen rör sig snabbare, men man väntade ofta en hel dag innan man fick ett svar i en nyhetsgrupp, medan jag numera brukar märka att det tar längre tid att skriva en fråga än vad det tar att få ett svar. Jag tar sällan mindre än en halvtimme på mig att skriva en fråga, eftersom jag gör efterforskningar och bygger upp ett komplett exempel och ställer frågan så tydligt som möjligt, och allt detta tar tid. Men det tar säkert mindre än en halvtimme, så om det har tagit mig en halvtimme att skriva frågan har jag mindre än en halvtimme senare åtminstone fått kommentarer som säger Ja, det ser konstigt ut. Det är nytt. Jag är inte säker på vad som händer här eller ett riktigt svar som förklarar lösningen på problemet. Så ja, det faktum att den har så låg latenstid gör den faktiskt mycket mer gångbar. Och det är om du måste ställa en ny fråga. 90 procent av de gånger jag ställs inför ett problem som Stack Overflow hjälper mig med behöver jag inte ställa frågan alls eftersom någon annan har ställt den tidigare. Särskilt när det gäller områden som jag är mindre bekant med, som Python eller Bash-skript eller liknande, kommer jag ofta att göra lite efterforskningar på Stack Overflow och hitta svaret på exakt den fråga som jag ville ha. Det är fantastiskt.

MARCIN: Upplever du att människor som har upptäckt utveckling av erbjudanden och vill lära sig mer om det, men som bara lär sig det första språket? Upplever du att de inte investerar tillräckligt med tid i att lära sig kärnan? Som jag sa, kärndokumentationen och att verkligen lära känna språket innan de går till något som Stack Overflow?

JON: Jag tror att det är svårt att säga hur många som gör det, men jag ser definitivt att en del människor gör det utan att ens lära sig språket och skaffa sig verktygen. Men jag tycker att det saknas undervisning i diagnostisk process inom skolor och universitet och det är därför jag har en sorts liten skällsord om att det i Storbritannien finns betydligt fler kurser i datavetenskap än i programvaruteknik och trots att jag är mycket tacksam för att det finns kurser i datavetenskap och att vi definitivt behöver datavetare. Det finns förmodligen ett större behov av mjukvaruingenjörer som inte behöver känna till detaljerna i hur en kompilator fungerar, men som verkligen skulle behöva en kurs i hur man löser ett problem och undersöker det vidare. Och om du inte lyckas lösa det så är det här hur du frågade om det. Oavsett om det handlar om att fråga dina kollegor eller fråga på Stack Overflow eller hitta en bugg eller vad det nu är så är det så enkla aspekter av diagnostiseringsprocessen att man inte försöker bita i mer än man kan tugga. Om du är ny på ett språk, gör några enkla saker först. Jag tenderar att börja med något som konsolprogram för en sak snarare än att omedelbart dyka in i webbappar och mobilappar till exempel, vilket helt och hållet beror på språket, men om du använder ett språk som är helt inriktat på webbutveckling så kanske en konsol kommer att vara omöjlig, men där det är möjligt använd den enklaste miljön du kan. Miljön där felsökningen kommer att hjälpa dig så mycket som möjligt, där du inte behöver 100 rader boilerplate bara för att få två rader kod att köra, den typen av saker är verkligen användbara för att få dig själv att lyckas på ett effektivt sätt, så att du kan lära dig en aspekt av ett språk, en aspekt av ett bibliotek i taget snarare än att drunkna i ett hav av okej. Jag har 100 hundra rader kod och jag förstår ingenting av den och jag får ett felmeddelande som jag inte heller förstår och jag vet inte var jag ska börja. Problemet är att du börjar någonstans där det finns för mycket saker som du inte förstår. Så ja, i en snabbt föränderlig värld och jag är skyldig till detta som alla andra om jag försöker lära mig ny teknik trots att jag säger att jag vill börja enkelt. Jag tänker ofta att jag har bara en sak som jag behöver göra, så jag ska bara dyka in. Så jag gör fel saker också, men jag vet tillräckligt mycket för att om jag fastnar kommer jag att backa och försöka göra något enklare, men i en snabbt föränderlig värld är det frestande att försöka dyka in direkt för att jag måste få något gjort just nu, men jag tycker att det är mycket mer produktivt och i det långa loppet om man tar ett steg tillbaka och verkligen försöker gå först innan man springer.

MARCIN: Har du någonsin varit i en situation, kanske tidigt i karriären, där du börjar lösa ett problem som redan har lösts och senare inser du att det faktiskt är som ett löst problem, att det är något som är löst, du kan bara använda ett API eller ett pålitligt bibliotek.

JON: Ja, och ibland verkar det finnas en slags motvilja mot tredjepartsbibliotek. Ett klassiskt exempel är XML-manipulation, så du ser folk som säger att jag behöver bara undkomma ampersand, så jag ska bara använda strängar och bygga XML direkt, och sedan upptäcker de att nej, jag har den här andra saken som orsakar problem och förr eller senare har du hundratals rader kod som skulle kunna undvikas helt och hållet om du bara använde ett XML-bibliotek från början, och det kommer att vara mycket mer robust och säkert i alla möjliga saker. Så ja, man bör använda bibliotek från tredje part. Men efter att ha valt dem med omsorg finns det också en hel del ganska usla bibliotek. Men att välja ett bra bibliotek kan göra hela skillnaden i ett projekt.

MARCIN: Och skulle du säga att det är något som man vinner med erfarenhet, vilket är vad jag menar är att man måste ha den sorts visdom som krävs för att kunna säga: Behöver jag verkligen skriva någon kod för att lösa det här specifika problemet?

JON: I viss utsträckning. Det är delvis en fråga om erfarenhet och delvis en fråga om att hålla sig själv tillbaka, för om du ser att du kan göra något och det innebär att du måste skriva lite kod och du tror att det skulle vara rolig kod att skriva. Då finns det alltid en frestelse att skriva den koden även om man egentligen inte behöver göra det. Och jag förstår verkligen den frestelsen. Ibland skriver jag ett snabbt verktyg i C# även om det inte är det lämpligaste språket för att använda det, eftersom det är det språk jag kan bäst och det kanske gör mig mer kortsiktigt effektiv. Möjligen på bekostnad av den långsiktiga produktiviteten. Jag tror inte att vi behöver oroa oss för det alltför mycket. Vi ska inte göra oss själva för mycket illa på grund av den här typen av saker, men vi ska hålla ett öga på dem. Det finns mycket att lära sig genom att ta ett steg tillbaka från sig själv och titta på sig själv när man arbetar och fråga sig var jag använder mycket tid på ett sätt som inte är produktivt och hur jag kan minska det lite med tiden utan att försöka tänka att det måste betyda att jag är en usel utvecklare och att jag borde ge upp programvaruteknik helt och hållet. Försök bara att förbättra dig själv med tiden hela tiden.

MARCIN: Bra. Bra. Nu antar jag att det jag vill försöka göra är att försöka få en liten bit av en liten bit av historien så långt som till exempel om du kan berätta för oss att alla har en historia om när de började programmera. Så vad är din berättelse om när du började programmera? När blev du intresserad av något som programvaruteknik eller programmering eller kodning eller vad du nu vill kalla det?

JON: Så det var väldigt tidigt. Vi köpte Aztec's spectrum 48 K Sinclair's på Spectrum när jag var, jag tror det var 1984, så jag var åtta år gammal. Spectrum kom ut två år tidigare, 1982, och till en början spelade jag bara spel och sedan började jag ganska snabbt göra mycket enkel kodning. Så Spectrum kom med en inbyggd BASIC-tolk. Så när du startar upp datorn kan du genast börja skriva in kod och Spectrum-manualen som följde med var mycket bra för att lära ut programmering och åtminstone lära ut grunderna. Och jag minns en dag när min pappa var hemma eftersom han var sjuk av någon anledning och jag minns att jag skrev ett fånigt litet skjutspel som bara bestod av att här är ett rymdskepp som förmodligen bestod av bara några ASCII-tecken och en utomjording skulle dyka upp vid en slumpmässig punkt och du skulle flytta ditt rymdskepp upp och ner och sedan trycka på face the fire eller vad som helst, det var så fullständigt trivialt och inte riktigt underhållande att spela alls. Men detta var första gången jag skrev något som var interaktivt och det var fantastiskt, känslan som det gav mig var häpnadsväckande. Jag tror att det delvis berodde på att alla spel var ganska grova på den tiden, jag gillade Jetpack och Lunar Jet Man osv. Men det var ganska enkla spel så det faktum att jag skrev något enkelt avskräckte mig inte. Jag tycker lite synd om barnen i dag som, om de följer mitt råd och gör något mycket enkelt till att börja med, kommer att sluta med ett litet textspel som kanske ber dig gissa ett slumpmässigt tal och som säger om du kommer för högt eller för lågt osv. Om du jämför det med Overwatch eller vilket spel som helst som du har spelat för skojs skull. Det är ganska svårt att se hur de hänger ihop, eftersom det är en miljon ljusår från en enkel text till 3D-grafik som går över i hög hastighet med nätverk och alla möjliga saker. Men på den tiden var det fantastiskt. Så jag brukade skriva min egen kod på det sättet. Det fanns också tidningar som hade listor som man kunde skriva in. Så du köpte en bok och istället för att ha ett band på framsidan med kod som du bara kunde ladda in, skulle du skriva in allting, och fördelarna med det var att det kändes oerhört tråkigt, men du lärde dig hela tiden. Det är så här man kan skriva kod utan att det betonas särskilt. Jag tror att jag fick mycket ut av det och jag minns att ett av mina första viktiga projekt var att skriva en Logo-tolkare, så vi använde BBC Micro-datorerna i skolan. Vi hade en Logotolk där det fanns en sorts falsk robot och man kunde säga gå framåt hundra sväng höger 90 grader etc. och den skulle rita ark på skärmen. Jag älskade detta men vi hade inte det i spektrumet så jag implementerade mitt eget eftersom jag inte visste att det här var en svår sak som skulle ta mycket tid och det gjorde det men det var otroligt tillfredsställande och jag tror att det är ett bevis på kvaliteten på spektrumhandboken att jag faktiskt lärde mig trigonometri från spektrumhandboken eftersom vi inte hade gjort det i matte ännu och jag var fortfarande bara jag vet inte 10, 11 eller 12 år gammal. Så jag hade inte tittat på trigonometri i skolan alls, men spektrumhandboken var tillräckligt tydlig för att jag skulle kunna lära mig tillräckligt mycket för att göra en logotolk utifrån den. När jag ser tillbaka skulle jag gärna vilja se koden nu. Jag misstänker att den är helt fult. Och naturligtvis är den försvunnen i tidens dimma. Men jag är fortfarande oerhört stolt i efterhand över hur hemsk den koden än var. Du skulle kunna skriva din logotypförteckning. Du kunde spara den på band, du kunde ladda den igen, du kunde köra den, allt var extremt coolt.

MARCIN: Och när du utvecklade dina färdigheter, tänkte du alltid att du skulle arbeta som programvaruingenjör eller var du intresserad av andra saker och sedan blev du på något sätt styrd eller hur gick det till när du faktiskt började arbeta inom området?

JON: Jag tror att jag redan när jag var 13 eller 14 år gammal tänkte att det här skulle bli min karriär. Så ja. Jag gick inte via datavetenskap på universitetet, jag tog en examen i matematik och tänkte att jag kanske skulle sluta med att forska i matematik. Det visade sig att jag inte alls är tillräckligt bra på matematik för att kunna doktorera eller liknande. Men jag visste att det skulle bli något med datavetenskap. Jag var intresserad av artificiellt liv redan under min skoltid, så jag tog en matematikexamen och sedan en datavetenskaplig magisterexamen i ett år och under semestern började jag arbeta med en vän på Digital Electronics och fortsatte därifrån i princip. Jag har alltid varit dålig på att styra min karriär, jag har bara låtit den gå från plats till plats, eftersom jag tycker att det är roligt, så jag har alltid ansett att det är mycket viktigare för mig att ha roligt än att tjäna pengar. Det har aldrig varit ett medvetet mål i livet att bli berömd eller något annat. Men den slags bisarra mikrokändisstatus som jag får via Stack Overflow är ganska rolig och lite konstig, men att göra roliga saker på jobbet är alltid mycket viktigare för mig, så jag ser till att jag har en bra balans mellan arbete och privatliv och att jag kan träffa min familj ofta. Min familj är otroligt viktig för mig, men jag har inte alls ägnat min karriär lika mycket uppmärksamhet som förmodligen mer medvetna människor skulle göra.

MARCIN: Hur kan föräldrar utveckla barnens intresse för programmering?

JON: Jag har tre barn, varav ett är intresserat av Arduino-prylar och kodar lite och gillar även Python. Ett annat barn har börjat med Python på senare tid, men tidigare höll på med Scratch, vilket är intressant, eftersom det är en mer visuell miljö och jag vet inte mycket om vetenskap eller om att lära barn att programmera. Jag försökte lära mina barn att programmera i Python genom att prova en mycket stegvis metod och jag tycker att det är bra för vuxna, men jag är inte säker på att det håller barnens intresse uppe. Åtminstone inte det steg för steg som jag fick lära mig att göra. Antingen det eller så är jag bara inte en särskilt bra lärare, vilket är fullt möjligt, men jag tror att det viktigaste är att se till att det är något som de vill göra. Så det var först när jag slutade försöka lära mina barn programmering som de började göra det själva och lärde sig mycket mer. Min äldsta son har gjort en massa saker Arduinos och Raspberry Pi. Jag är säker på att sådana saker har jag aldrig ens sett eftersom han bara ibland säger rätt kan jag få de här delarna, tack. Och sedan går han och bygger slumpmässiga saker och det var så jag lärde mig också. Mina föräldrar vaktade aldrig över mig såvitt jag vet när det gäller vad jag programmerade. De var bara glada över att jag var lycklig och uppmuntrade mig att gå ut i världen utanför. Då och då, men de var glada över att jag gjorde något kreativt och lärde mig av mig själv. Så om du kan uppmuntra barnen tillräckligt mycket för att hitta något som de tycker om att göra själva och sedan klargöra att du gärna hjälper dem när de vill ha hjälp, men att du inte kommer att tvinga dem att göra det. Just nu är det dags för en halvtimmes programmering. Sedan tror jag att det är receptet för framgång. Barn älskar att lära sig. De kanske inte gillar skolan men de älskar att lära sig och de älskar att göra saker som är kreativa. Så låt dem släppa loss denna kreativitet på det sätt de vill och de kommer att förvåna dig med vad de kan göra.

MARCIN: Tror du att idén om att alla borde lära sig att koda, särskilt att de försöker införa mer kodning i läroplanerna? Är det en bra idé eller är det onödigt att tvinga människor att lära sig något som de egentligen inte vill.

JON: Jag tror att det finns två aspekter: Den ena är att det är bra att låta alla lära sig att programmera eftersom vi har en osund stereotyp om hur en datorprogrammerare ser ut, vilket verkligen skadar vår bransch. Så om vi kan exponera människor och säga att det här är vad kodning faktiskt är och om vi kan ge människor en positiv erfarenhet av det så kan människor som kanske aldrig skulle ha sagt att det är något som jag själv skulle vilja ta upp upptäcka det. De älskar det faktiskt. Så jag tror att det är mycket fördelaktigt. Den andra aspekten är att programvara styr så mycket av världen nu att jag tror att det är mycket fördelaktigt att ha en viss uppfattning om vad det innebär, även på den grövsta nivån. På samma sätt som jag anser att människor bör få lektioner i finansiell planering, bara grunderna i vad pensioner handlar om och vad lån handlar om och hur aktiemarknaden fungerar. Jag menar inte för att de ska kunna bli bankirer, utan för att de ska kunna hantera en värld som är så finansiellt styrd genom att bara ha en viss uppfattning om att samma sak gäller för politik och alla möjliga saker, de olika delar av verkligheten som kommer att påverka din värld. Det är bra att ha en viss grundläggande förståelse för det. Jag säger inte att jag vet mycket om politik eller ekonomi, men jag är väldigt glad för det jag vet eftersom det hjälper mig att forma hur jag ser på resten av världen. Så jag tror att programvara har en viktig roll att spela när det gäller att inga barn nuförtiden kommer från medelklassmiljöer i utvecklade länder, och det finns helt andra samtal som vi kan föra om områden där barn inte kommer i kontakt med datorer på grund av fattigdom etc., men många barn kommer att ha någon form av samverkan med datorer. Så om de ser dem som att de bara kör kod, så kör de riktigt komplicerad kod, men jag har en viss uppfattning om hur kod ser ut. Och tanken på att veta vad molnet är, i den mån det är datorer som körs någon annanstans i ett datacenter som förvaltas av Google eller Amazon eller Microsoft eller vad det nu är, och att ha grunderna för detta kan hjälpa dig att göra vad det nu är du behöver inte programmera själv för att dra nytta av att ha de grundläggande idéerna om hur datorer fungerar.

MARCIN: Och nu med något som Chrome till exempel, med deras verktygsfält för utvecklare. Du kan ta vem som helst som använder Internet och säga: "Visste du att allt det här pågår medan du använder den här webbplatsen, du vet, all den här aktiviteten, och de kanske inte ens förstår det, eller hur? Men det avslöjar vad som faktiskt finns bakom ridån. Och jag tror att det ibland är ett bra sätt att visa någon som inte är intresserad av ämnet och säga OK. Låt mig bara visa dig, låt mig bara visa dig vad som faktiskt händer på den här webbplatsen när du använder den. Jag tycker att det är fantastiskt att vi kan öppna konsolen och börja hacka lite javascript utan att behöva göra någonting.

JON: Absolut ja, och tillämpa det på varandra. Det finns många andra sätt att göra grundläggande kodbitar bara för en webbläsare, bland annat i C#, där Tray.net låter dig börja skriva allting bara i din webbläsare och bakom kulisserna körs en molncontainer någonstans. Men du kan definitivt börja se kod på otaliga språk bara från din webbläsare. Och jag tror att det finns något som talar för att datavetenskap också har den exponeringen. Så jag har verkligen hållit föredrag för Cubs och guider och till och med för gillet i min lokala metodistkyrka, som mestadels består av människor som antingen är pensionerade eller nära pensionsåldern och som för de flesta av dem aldrig skulle ha gjort någon datavetenskap, och jag höll ett föredrag som visade dem lite datavetenskap utan att några datorer var inblandade över huvud taget. Så saker som att du har en hög med pappersbitar, hur kan du effektivt sortera dem och höra några olika algoritmer som du kan använda. Och vad betyder detta för om du har en person som försöker sortera dem så kan du använda en algoritm. Om du har tio olika personer, kan ditt valda sätt faktiskt fortfarande skalas upp till att ha många olika personer som hjälper dig. Så du hamnar i en sorts sammanslagningssortering eller liknande och saker som algoritmisk komplexitet som ger verkliga exempel på hur lång tid det tar att göra olika saker. Om du har mer input för att hänga skjortor på en tvättlina eller vad det nu är tror jag att folk kan finna den typen av saker intressanta om de inte skräms av det. Men så snart man börjar säga "beräkningar" kommer många människor omedelbart att avbryta. Så det finns mycket att säga om att göra saker tillgängliga på ett icke hotfullt och icke nedlåtande sätt, och det kräver betydande färdigheter på områden som jag inte har några. Men jag har gjort vad jag kan, men jag är säker på att bättre utbildare skulle kunna göra det betydligt bättre. Jag tycker att det är ganska viktigt.

MARCIN: Vi fortsätter här. Vad skulle du säga att du är förutom Stack Overflow? Finns det några resurser som du verkligen gillar? Jag menar, jag är ett fan av till exempel O'Reilly-böcker, men vad är du ett fan av när det gäller vilka resurser du använder när du faktiskt vill lära dig något nytt språk eller något.

JON: Så böcker är bra för att lära sig språk, eftersom de tar dig dit i en viss ordning, och numera gäller det naturligtvis även för handledningar på nätet, så länge de har skrivits på rätt sätt, och det kräver mycket arbete, det vet jag av erfarenhet, att skriva resurser som lär dig alla funktioner i ett språk i en viss ordning som hjälper dig att lära dig. Någon kan alltså skriva en C#-handledning som faktiskt inte alls är särskilt bra, eftersom den bara är en hjärnspöken. Så du måste välja och vraka, men något som är strukturerat för dig gör stor skillnad Bra API-dokumentation är alltid mycket välkommen. .NET tenderar att vara ganska väldokumenterat och den nya API-webbläsaren gör det lättare att hitta dokumentationen osv. Jag skulle vilja uppmuntra människor som skriver bibliotek att verkligen anstränga sig för att skriva bra dokumentation som kan följa med biblioteken. Det är ingen mening med att ha världens snabbaste JSON Serializer. Om ingen kan räkna ut hur man använder den. Men antingen använder jag samma resurser som andra människor också, oavsett om det är handledningar och böcker eller om jag bara söker efter rätt resultat när jag är tränad när jag skriver väl hur kan jag göra vad det än är. Sätta in något i en PDF-fil eller vilken uppgift jag än råkar ha till hands. Ja, jag söker runt på Internet, jag använder Stack Overflow, jag använder böcker, jag använder handledningar, jag använder bibliotek och deras dokumentation. Ja, det är nog ganska mycket av det jag tror.

MARCIN: Och vad säger du om den här idén att det beror på att vi faktiskt har nästan samma åldersgrupper. Tanken att människor vid en viss ålder bara blir chefer. Har du sett det hända? Är det sant eller är du unik i det avseendet att du fortfarande utvecklar programvara eller är du. Vad skulle du säga till det?

JON: Jag är verkligen inte unik. Jag skulle vilja säga att jag har varit aktiv, men jag har inte riktigt förvaltat min karriär. Det faktum att jag optimerar för att ha roligt har jag aktivt motstått att hantera under en längre tid. Jag var chef i sex månader och upptäckte att det finns mycket att säga om det. Särskilt skulle jag vilja tro att jag är empatisk och jag jag försöker medvetet vara empatisk eftersom jag återigen tror att det är en viktig färdighet för en programvaruingenjör att ha. Men det är också uppenbart att det har med ledning att göra, så jag tänkte att det skulle vara intressant att prova på att leda, och jag försökte, och det var sedan lämpligt för mig att gå tillbaka till en mer individuell roll som medarbetare. Det finns mycket man kan göra när det gäller ledarskap som programvaruingenjör utan att leda. Och det behöver inte alltid vara att skriva kod, så jag skriver förmodligen mer kod än de flesta människor på motsvarande nivå eftersom jag har valt att göra det och jag har aktivt motstått saker som kan ha en bredare inverkan men som inte är lika roliga för mig. Man kan till exempel spendera mycket tid på att skriva designdokument och ja, jag skriver fortfarande dokument ganska ofta, vanligtvis ganska informellt, men jag är inte ett stort fan av att skriva stora dokument med alla möjliga bitar och delar som inte kommer att vara relevanta för någon. Jag skulle hellre vilja gå till botten med det som är viktigt och snabbt. Men att skriva dokument för att bidra till att flera team säger Okej, jag tror att vi alla har det här problemet. Låt oss se om vi kan komma fram till en lösning tillsammans som har en större inverkan än att bara jag skriver kod för att lösa problemet själv. Jag tror att en av de saker som du förmodligen bör sträva efter när du får mer erfarenhet är att se var den erfarenheten kan hjälpa andra människor. Men i viss utsträckning kommer det fortfarande att vara kodning, i viss utsträckning kommer det att vara att dela med sig av sina kunskaper till användargrupper och konferenser och liknande. Och genom att lösa problem internt inom ett företag som du kan se tydligare än andra människor som kanske är mindre erfarna och kanske just har gått med i ett team eller vad det nu är. Men när det gäller frågan om huruvida människor bör bli chefer eller inte skulle jag personligen tycka att det är helt okej att någon kommer och börjar leda direkt utan att nödvändigtvis ha gjort jobbet själv. Om det är något som de kommer att vara bra på genom empati och inlärning kan man lära sig vad ett arbete innebär utan att göra det, så länge man är medveten om att man inte har gjort det, så att man inte har den direkta erfarenheten. Så jag tror inte att det bör finnas ett direkt samband mellan ålder och hur stor andel av arbetstagarna som är chefer. Jag hoppas verkligen att jag fortfarande skriver kod långt in i pensioneringen och förmodligen inte kommer att arbeta i betydande utsträckning som chef. Om jag någon gång blir tvungen att vara chef kommer jag att göra det efter bästa förmåga, men jag anser inte att det normalt sett bör vara ett krav, och jag anser att många företag gör fel genom att befordra människor till chefer som egentligen skulle vara mycket lyckligare och mer produktiva som kodare.

MARCIN: När det gäller idén att det är förmodligen en felaktig idé att man efter 15 år av programvaruutveckling bara ska bli chef och att det är vad alla gör. Jag vet bara att det finns ett visst tryck, åtminstone i Silicon Valley i Kalifornien, där folk verkligen är oroliga för att de till exempel är 29 år och för gamla för att bli anställda av vissa företag som är besatta av att bara anställa personer som är 22, 23 eller 24 år.

JON: Jag skulle inte vilja bli anställd av ett företag som är besatt av att anställa 22-åringar. Jag skulle mycket hellre arbeta för ett företag som värdesätter människor för vilka de är, vad de kan åstadkomma och vad de kan åstadkomma tillsammans. Så du inte bara deras nuvarande färdigheter utan även deras potential. Jag har alltså inte upplevt den typen av agism själv. Ursäkta mig, men jag är medveten om att det är ett problem. Jag skulle verkligen säga att jag inte har upplevt någon försämring som jag känner till när det gäller mina kodningsfärdigheter. Jag kodar fortfarande lika glatt och produktivt som alltid. Såvitt jag vet. Så jag skulle hoppas att företagen skulle ta hänsyn till den typen av saker och anställa personer som kan utföra jobbet.

MARCIN: Tror du att det finns något bra. Vi talar till exempel om alla andra yrken. Det tenderar att anses att om någon har arbetat med fysik i 30 år så finns det ingen som kommer att säga att du inte vet vad du gör längre. Är det något med att programvaruteknik är så nära knuten till teknik och att tekniken utvecklas så snabbt att folk bara antar att om du har gjort det i så många år så är du liksom inte längre uppdaterad, eller är det något som skiljer programvaruteknik från alla andra discipliner som gör att folk har den här föreställningen att du vet att någon är i en viss ålder och att de har vissa föreställningar om den personen.

JON: Det är kanske det som ger intrycket, men jag skulle säga att det förmodligen är felaktigt. Man måste vara villig att lära sig nya saker. Åtminstone om man vill vara det om man vill kunna fortsätta på nya och spännande områden. Om du har arbetat med COBOL i 30 år och har bestämt dig för att inte lära dig något annat än COBOL så är jag säker på att du fortfarande kan vara produktiv och det är bra. Men du ska inte förvänta dig att få ett jobb inom JavaScript eller liknande utan att ha visat intresse för att fortsätta lära dig. Å andra sidan kan jag egentligen bara C# och Java på en professionell nivå eftersom jag har funnit att det finns tillräckligt mycket nytt att lära sig i C# och att jag inte har tillräckligt med tid att lära mig F# och D och Rust och Go och alla möjliga saker som andra människor går bredare och mindre djupt. Men det är upp till individen hur mycket han eller hon vill ta på sig, och du måste vara medveten om att om du bestämmer dig för att inte lära dig, om du bestämmer dig för att sluta lära dig, så kommer du att bli mindre värdefull med tiden. Men om jag ska vara ärlig misstänker jag att det finns tillräckligt många äldre system för att man för de flesta språk fortfarande kan vara ganska värdefull även om man bestämmer sig för att sluta lära sig. Uppriktigt sagt kan jag inte se varför man skulle vilja sluta lära sig eftersom det alltid är intressant att göra nya saker. Men det tar en hel del tid och jag anser att företagen bör vara villiga att investera den tiden i sina ingenjörer så att ingenjörerna inte känner att de måste lära sig saker under den tid som annars till exempel kan spenderas med familjen. Det finns alltså en hel del aktiv utveckling som bör ingå som en del av jobbet. En del av att vara en bra Sopher-ingenjör i sitt arbetsliv är att lära sig nya saker. För de flesta utvecklare finns det som sagt några mer gamla områden där detta inte är lika relevant, även om jag skulle säga att även Cobol-utvecklare som fortsätter att lära sig nya saker sannolikt kommer att kunna se hur de kan tillämpa sina Cobol-färdigheter i andra miljöer här. Kanske finns det containrar som kör COBOL nuförtiden och plötsligt har du molnbaserade containersystem som kan köra COBOL och plötsligt kan du flytta alla dina maskiner på plats till en annan plats.Du vet, bara för att du använder ett gammalt språk betyder det inte att du måste använda gammal teknik för allt annat. Så det finns plats för alla typer av människor som alltid vill lära sig det nya språket. Människor som vill tillämpa alla tekniska färdigheter i nya miljöer och människor som inte ser något större värde i att lära sig nya saker. Ja, jag kan säga att jag inte känner mig särskilt välkommen med det, men programvaruteknik är ett så brett område att jag är säker på att det finns användbara produktiva liv som man kan ägna sig åt. Att tillämpa alla dina befintliga färdigheter på nya utmaningar hela tiden. Jag skulle kunna använda C# 7 resten av mitt liv och fortfarande göra nya saker även om jag inte lär mig några nya faktiska språkområden. Det är inte vad jag vill göra, men det är säkert för andra människor. Det kan vara mer den väg som de vill gå.

MARCIN: Allt detta beror på att de flesta språk är Turingkompletta och att man därför kan göra vad som helst med alla språk man känner till. Jag menar att det är mycket allmänt sett

JON: förmodligen är jag inte riktigt säker. Jag tror att språk utvecklas, C# har definitivt utvecklats för de användningsområden som det används för, så vissa av de funktioner som läggs till nu skulle inte ha varit lika meningsfulla för tio år sedan, innan molntjänster blev mycket utbredda, och vi ser andra områden som spel där C# dominerar på ett nästan oväntat sätt med plattformar som Unity. Så det finns språkfunktioner som är något inställda på spel och högpresterande datorer med låg latenstid, och jag tycker att det är bra. Men visst kan man göra saker i andra språk eller i tidigare versioner av språk, men det är mycket mer produktivt och intressant att använda nya funktioner eftersom de har utformats för att ta itu med just dina problem.

MARCIN: Vilken är din favorit IDE?

JON: Visual studio

MARCIN: Använder ni er av en viss metod?

JON: Få koden klar. Jag använder inte Kanban och jag skulle inte vilja säga någon specifik metodik av det slaget. Jag tror på testning, inte nödvändigtvis testdriven utveckling, men åtminstone testning vid sidan av utveckling, ibland testdriven, det beror på situationen. Jag känner mig obekväm med att ha mycket produktionskod som inte är testad. Så det är en aspekt av agil utveckling, men det är inte jag personligen slutar med att använda hela Agile. Jag gör inte mycket parprogrammering. Jag har gjort det tidigare och tyckte att det var till stor hjälp. Jag har gjort icke-parprogrammering tidigare och tyckte att det var helt okej. Jag anser att det är viktigt att ha en god relation till sina kollegor, så kodgranskning är mycket viktigt för mig och att kodgranskningen är ärlig och öppenhjärtig. Men det är inte knutet till någon särskild metodik.

MARCIN: Vad skulle du ge för råd till någon som befinner sig i det området där de har lärt sig ett språk i låt oss säga tre månader, tre till sex månader. Och de känner bara att de inte är tillräckligt smarta för att göra det, för att lära sig det på rätt sätt. Som om det bara finns för många fel att rätta till. Vad har du för råd till den person som är intresserad av det, men som känner att de inte kan ta sig över den där puckeln?

JON: Så om du fortfarande är intresserad och tror att du skulle kunna njuta av det om du bara kunde göra det bättre så leta efter folk. Oavsett om det handlar om att läsa bloggar eller hitta en användargrupp, hitta människor som du kan interagera med och få en på en undervisning om det är möjligt, eftersom det kan vara ganska ensamt att försöka hitta svar enbart bakom en skärm. Om du däremot presenterar dig för någon, om du engagerar dig med någon en till en, kan de ofta se att du har problem med din mentala modell, där du föreställer dig något på fel sätt, och det kan vara mycket svårt att få fram det bara från enskilda små bitar av små bitar och delar. Om du inte tycker om det så ska du hitta ett annat språk, för det finns många språk där ute.

MARCIN: Vilket programmeringsspråk är bäst, Java eller C#?

JON: Personligen skulle jag säga C# Absolut. Jag har inte tittat på detaljerna i Java 9-funktionerna och jag känner bara till funktionerna för jobbpriserna, men för mig känns det som om C# tog några av de misstag som Java hade gjort och gjorde några av dessa misstag själv. Men generellt sett verkar C# ha utvecklat snabbare och är riktigt bra. C#-teamet är fantastiskt smart och riktigt noga med hur de utvecklar språket. Så vi är inne på C# 7.2 och det känns som om det har gått i en mycket mycket bra riktning, det hanteras extremt bra, mycket väl specificerat. Med det sagt, Java är bättre än någonsin och jag tror inte att jag tror inte att det finns tillräckligt mycket i det för att om du arbetar med en Java-kodbas bör du kasta allt och börja använda C# i stället. Men om jag har mitt val vid någon tidpunkt skulle jag definitivt välja C# vilken dag som helst.

MARCIN: Fantastiskt! Jon Skeet tack för att du är gäst i podcasten Yellow Duck. Om du har några länkar som du vill skicka till mig, och konferenser som du kommer att göra, skicka mig all information.

JON: Tack.

MARCIN: Japp, tack, hej då!

Dela inlägg

Läs mer om rekrytering av tekniker

Prenumerera på vår Learning Hub för att få nyttiga insikter direkt i din inkorg.

Kontrollera och utveckla kodningsfärdigheter utan problem.

Se DevSkillers produkter i praktiken.

Säkerhetscertifieringar och efterlevnad. Vi ser till att dina data är säkra och skyddade.

DevSkillers logotyp TalentBoost logotyp TalentScore-logotyp