En samtale med Jon Skeet: Chuck Norris i programmering, på Yellow Duck Podcast

Udgivet: Sidst opdateret:

Vidste du, at når Jon Skeets kode ikke kan kompileres, så er compileren undskylder? Hvad med det faktum, at når Jon foretager en søgning på Google, er det eneste resultat "Jeg er straks tilbage"? Kilde: Stack Overflow

For dem af jer, der ikke ved det, er Jon Skeet Senior Software Engineer hos Google i London, Storbritannien. Mens nogle af de mere vilde påstande om ham stadig skal verificeres, er det helt sikkert sandt, at han er den eneste bruger af Stack Overflow med et omdømme på over 1.000.000.

Siden 1998 har denne fyr bidraget med over 34.000 svar til webstedet og genereret over 230.000.000.000 visninger! Så hvad spørger du ham, der allerede har besvaret alle tænkelige spørgsmål?

Find ud af det ved at lytte til vores samtale med Jon Skeet

Marcin Kraszewski fik lejlighed til at sætte sig ned med Jon og spørge ham om noget nyt. Det viser sig, at han har flere svar at give, herunder nogle, som du ikke har hørt andre steder.

Har du hørt historien om, hvordan Jon begyndte at udvikle software ved at bygge et computerspil? Hvad med det mest udfordrende problem, som Jon fik til opgave at løse som ingeniør?

Vores samtale dækker alt dette samt de største ændringer i softwareindustrien i det sidste årti, hvad udviklere brugte før Stack Overflow, hvor længe Jon har planer om at bidrage til Stack Overflow, en sammenligning af C# og Java og Jons yndlingskonferencer.

Dette er en enestående mulighed for at deltage i en afslappet udforskning af den personlige rejse, som en af de mest berømte navne inden for software har foretaget.

Du kan følge Jon her:

Men først kan du lytte til vores samtale med Jon på Yellow Duck Podcast

Nedenfor finder du en skriftlig udskrift af vores samtale.

MARCIN: Ok alle sammen, velkommen til The Yellow Duck Podcast, jeg har en meget speciel gæst med mig i dag. Jeg skal tale med Jon Skeet hvis du ikke ved hvem Jon Skeet er, så er han en af de bedste bidragydere til Stack Overflow, han er måske endda den bedste bidragyder til Stack Overflow, som er, hvis du ikke kender Stack Overflow, det er fantastisk. Det er dybest set et websted, hvor du kan få svar på næsten alle spørgsmål, ikke kun relateret til softwareudvikling og teknologi, men ligesom der er du ved, der er Stack Exchange der, som er den slags modersite på Stack Exchange, og du kan få svar på spørgsmål om alt fra improvisationskomik til videnskab astronomi alle disse ting. Så Jon, velkommen.

JON: Mange tak. Det er rart at være her.

MARCIN: Jeg har en masse ting, jeg gerne vil spørge dig om. Men først og fremmest vil jeg selvfølgelig gerne komme til det spørgsmål nummer et, som jeg har på hjerte. Jeg har lavet lidt research om din aktivitet på StackOverflow, som er verdenskendt og meget omfattende. Og mit spørgsmål er, at du besvarede dit første spørgsmål på StackOverflow den 26. september 2008 kl. 12:11 ifølge de oplysninger, jeg har kunnet få. Fortæl mig lidt om omstændighederne omkring det første svar, så vi ved, hvordan du gjorde det, hvordan du gjorde det. Hvordan begyndte du at bruge Stack Overflow. Hvordan fik du det svar. Hvordan kom du til at svare på det svar. Du ved, hvor det hele begyndte, OK.

JON: Så det var virkelig en øvelse i narcissisme til en vis grad. Jeg hørte første gang om Stack Overflow på Sara Chips blog. Hun havde skrevet en anmeldelse af den første udgave af C# i dybden tilbage i 2008, hvilket synes at være meget, meget længe siden, og jeg læste hendes anmeldelse, og derefter læste jeg nogle af hendes andre blogindlæg, og de nævnte Stack Overflow. Så jeg tænkte, at jeg skulle kigge på Stack Overflow og søgte efter spørgsmål at besvare. Så uden at have nogen idé om, hvad det egentlig var for et websted, søgte jeg efter spørgsmål om C#, især om der var nogen, og der var et par omtaler her og der, og der var spørgsmål om C#, og jeg tænkte, at jeg kan besvare dette, så jeg vil besvare det, og det hele gik så småt derfra. Jeg havde tidligere skrevet en masse nyhedsgrupper, både C# og Java Newsgroups, i det foregående årti, så dette syntes bare at være et skridt i udviklingen af disse nyhedsgrupper. Jeg havde aldrig brudt mig om HTML-baseret forumsoftware før. Af forskellige årsager, men intet var nær så nyttigt som nyhedsgrupper for mig, mens Stack Overflow fuldstændig ændrer det.

MARCIN: Jeg tror, at du har besvaret omkring 35.000 spørgsmål, hvilket er et fantastisk bidrag til fællesskabet. Så vi er naturligvis alle meget taknemmelige for det. Og jeg synes, det er virkelig interessant, at du ligesom startede ligesom, på en måde, som du sagde, ligesom som en almindelig bruger, du fandt lige ud af om hans hjemmeside og besluttede at besvare spørgsmål, kan du gå til det næste, hvad fik dig til at besvare, du ved, det andet, det tredje, det fjerde, at de hundredvis af spørgsmål senere, hvornår følte du, at dette virkelig er noget, du ønsker at gøre. Måske med et specifikt fokus på Stack Overflow, men generelt. Hvornår følte du denne passion for virkelig at besvare en masse af disse spørgsmål, som om du bare havde denne energi.

JON: så det startede 10 år tidligere, mens jeg stadig gik på universitetet og besvarede Java-spørgsmål på nyhedsgrupper længe før C# overhovedet fandtes og kom ind i diskussioner, som ikke er så relevante for Stack Overflow, men jeg skrev utroligt meget på Java-nyhedsgrupper, og meget af det var fordi jeg nyder at hjælpe folk, og det er ikke udelukkende altruistisk. Jeg nyder at hjælpe folk, fordi det forbedrer mig som programmør, det forbedrer mig helt sikkert som kommunikator, hvilket jeg føler er utroligt vigtigt inden for software engineering, og så er der effekten af ikke bare at hjælpe den person, der stillede spørgsmålet, men forhåbentlig også at hjælpe andre senere, hvilket er det, som Stack Overflow virkelig er optimeret til. Og jeg tror, at nogle af de problemer, hvor folk stiller dårlige spørgsmål, er, at de kun tænker på deres umiddelbare behov i stedet for at tænke på, hvordan jeg kan stille et spørgsmål, som vil hjælpe mig selv, men også hjælpe folk, der kommer senere. Og hvis du starter ud fra det perspektiv, så er det det, som Stack Overflow-fællesskabet er bygget op omkring, og antallet af indtryk, som gode spørgsmål kan få, er enormt, så du kan hjælpe hele verdenssamfundet af programmører, hvilket jeg synes er fantastisk.

MARCIN: Helt sikkert. Så det er en god idé, som var, du ved, jeg tror, det var virkelig noget, der skulle skabes. Du ved, folk var klar til at begynde at dele deres viden, og Stack Exchange og Stack Overflow blev skabt lige i tide, som du sagde, der var andre måder at dele viden på. Men jeg tror, at dette måske er den mest tilgængelige for enhver bruger derude, der ønsker at få svar på nogle spørgsmål. Det er en meget effektiv måde, og jeg tror også, at det er ret godt modereret, i hvert fald for lokale tilhængere.

JON: Ja. Hvilket graden af moderation er helt klart et ømt punkt med masser af brugere, ikke kun nogle få, der har prøvet at stille spørgsmålet, og de har stillet det dårligt, ikke givet nok detaljer eller givet alt for mange detaljer eller. Der er utallige forskellige måder, hvorpå man kan stille et spørgsmål dårligt, og jeg føler, at moderationen er et af de vigtigste punkter på webstedet, at den forsøger at holde kvaliteten af webstedet oppe og holde det så nyttigt som muligt, men det er helt sikkert et ømt punkt, og jeg tror, der er arbejde at gøre med hensyn til at kommunikere målene med webstedet, så alle kan trække i samme retning. Det er ikke sådan, at alle. Jeg er sikker på, at der er et par stykker, der enten bevidst stiller dårlige spørgsmål eller modererer grimt bare for sjov. Der vil altid være nogle få idioter, men jeg har en tendens til at gå ud fra at de fleste ikke er idioter. De er søde, de giver deres tid, og de ønsker et websted af høj kvalitet.

Og hvis vi bare kan sikre, at alle er på linje med hinanden, vil det føre til en bedre oplevelse for alle. Så der er stadig lidt arbejde at gøre der med hensyn til kommunikation og alle mulige ting, hvilket kan være meget svært, for hvis du sidder fast i et problem med det samme, og du ikke har registreret dig eller stillet et spørgsmål eller noget som helst på Stack Overflow før, er din første fristelse, at du ser en væg af tekst, der siger, at dette er den slags spørgsmål, du skal stille, og hvordan du skal gribe tingene an, og du tænker bare, at jeg er ligeglad, jeg vil stille mit spørgsmål lige nu, mens du faktisk, hvis du tager fem 10 minutter, selv en halv time, til at gennemse webstedet, gennemse de forskellige hjælpemidler, jeg har skrevet et meget langt blogindlæg om dette er hvad jeg ser efter i et spørgsmål, der skal hjælpe folk med at stille spørgsmål, men jeg kan forstå frustrationen, og hvorfor folk bare springer over alt det og siger det rigtigt. Lad mig stille mit spørgsmål nu. Jeg vil antage, at jeg ved, hvad jeg gør, og det er meget uheldigt, at det giver dem om oplevelsen, og hvis folk ikke læser den hjælp, der er blevet givet til dem, så kan ingen forbedring i den hjælp virkelig komme over det faktum, at de ikke læser det. Så det er svært.

MARCIN: Det interessante ved Stack Overflow synes at være, at jeg i det mindste ved lige nu, at Stack Overflow har alle data tilgængelige. Man kan f.eks. bare downloade hele datasættet, og det er vigtigt.

JON: Absolut. Ja, og det har været et mål fra første dag.

MARCIN: Du tror, at det er en vigtig del af det faktum, at Stack Overflow fortsat er populært.

JON: Jeg ved ikke, det er helt sikkert en funktion. Det er dejligt, at for eksempel, tror jeg, at alle Stack Overflow-spørgsmål er blevet importeret til Google BigQuery, hvilket betyder, at folk kan køre forespørgsler på alle slags data, og der er et Stack Overflow. Dataanalyseværktøjer er også tilgængelige på den måde, så der er alle mulige former for data mining, som man kan lave på Stack-spørgsmål, og forskellige dataloger har gjort netop det. Så det er meget cool på den front. Det skaber også en slags følelse af tillid til, at Stack Overflow ikke ejer dine bidrag. Alle gør det, de er alle licenseret på passende vis, så selv hvis Stack Overflow selv som virksomhed gik konkurs, ville oplysningerne ikke gå tabt, men jeg ved ikke helt, hvor vigtigt det er, jeg tror, det varierer i betydning afhængigt af hvem du spørger, men betydningen for data science community. Jeg mistænker, at uden at være medlem af dette samfund, så mistænker jeg, at det har været en rigtig guldgrube.

MARCIN: Jeg mener, jeg har hørt om nogle projekter, hvor de forsøger at bruge Stack Overflow til at træne en maskinlæringsalgoritme til faktisk at skrive software eller i det mindste debugge software, eller det er helt sikkert en interessant brug af dataene. Nu for så vidt angår Stack Overflow, for eksempel, er der sandsynligvis en masse spørgsmål, der er virkelig virkelig meget ens og næsten det samme spørgsmål, men ikke helt. Kan du se nogen løsning i den nærmeste fremtid, måske ved hjælp af maskinlæring eller noget andet, der på en eller anden måde kan reducere mængden af duplikeret eller tæt på duplikeret indhold?

JON: Ja, så Stack Overflow forsøger allerede at finde lignende spørgsmål og foreslår dem, mens du stiller spørgsmålet, du ved: "Har du kigget på disse ting. Vi tror, at de ligner hinanden." Og selv efter at du har stillet spørgsmålet der. Der er en liste i højre side, der viser dig potentielle dubletter eller relaterede spørgsmål, og det er relativt nemt for et spørgsmål at blive lukket som en dublet, fordi hvis du har et guldtag, der er et guldmærke i et bestemt tag, så kan du lukke ting se på meget nemt, hvad der kaldes dupe hammeren. Så det hjælper med at lukke spørgsmål meget hurtigt, hvis de er dubletter, om det kan strømlines yderligere ... Det er svært, fordi enhver maskinlæring aldrig vil være 100 procent præcis, så du ønsker ikke at forhindre folk i at stille spørgsmål. Selv hvis man har en stærk mistanke om, at der er tale om en gentagelse. Man har næsten brug for en "Er du virkelig virkelig sikker". Har du virkelig kigget på alle disse ting, men jeg ved det ikke, det er det føles som om, at det hele er lidt mindre et problem. Duplikataspektet end folk, der stiller spørgsmål og ikke engang giver nok oplysninger eller den rigtige slags oplysninger til at kunne afgøre, om det er et duplikat eller ej. Og det håber jeg. Jeg ved, at Stack Overflow har gennemgået et par iterationer af en slags guider til at stille spørgsmål, der siger: "Hvordan ser din kode ud, hvilke sprog bruger du? Har du fundet et kort, men komplet eksempel, der demonstrerer problemet". Den slags ting. Det er det er uklart præcis, hvad der kommer til at fungere, men jeg ved, at teamet arbejder hårdt på at forbedre oplevelsen af at stille spørgsmål, fordi Stack Overflow grundlæggende er afhængig af, at der bliver stillet gode spørgsmål.

MARCIN: Helt sikkert, og fordi jeg går ud fra, at der altid vil være spørgsmål, der skal stilles, uanset hvor længe teknologien har eksisteret, uanset hvor længe den har eksisteret. Hvad er den vigtigste grund? Hvad er drivkraften bag det faktum, at der altid vil være nye spørgsmål at stille, selv om C#, som jeg sagde, at du har besvaret og forskellige andre emner, 35.000 svar, men der er stadigvæk flere. Jeg gætter på, at dette er en del af softwareudviklingens natur, eller at man ikke kan abstrahere alting.

JON: Tja, det er flere ting, dels er det, at sproget ændrer sig, så jeg skriver i øjeblikket om C# 7.2 og er nødt til selv at lære nye ting, så jeg kan skrive om dem. Så det ville være helt naturligt for folk at stille spørgsmål om C# 7.2 eller andre ting, som er ret nye, C# 7.0 er stadig ret nyt. Så efterhånden som sprog udvikler sig og nye rammer og biblioteker og alle mulige ting. Der vil altid være nye områder, som folk kan stille spørgsmål om. Og så er der folk, der stiller spørgsmål om eksisterende områder, og nogle af disse spørgsmål vil være nye, andre vil ikke være nye, og nogle vil måske være skjulte nye spørgsmål. I C# 5 ændres f.eks. den nøjagtige måde, hvorpå lambdaudtryk fanger variabler, især for hver iteration, i C# 5, og det gav anledning til en masse spørgsmål før C# 5, da den måde, den fungerede på, ikke var ideel. Og mange af disse spørgsmål er faktisk kopier af hinanden, men jeg har faktisk besvaret en hel del af dem, fordi der er mange, der ikke ser tydeligt relaterede ud. Det er først, når man kender svaret, at man kan se, at disse to ting er det samme problem, bare i forklædning. Så der vil altid være ting, hvor kun svareren ved, at man faktisk står over for det samme problem som en anden, og om disse spørgsmål bør lukkes som dubletter kan nok diskuteres. Men ja, der vil altid komme nye folk til software engineering, hvilket er en fantastisk ting, og nogle af dem tror jeg behandler Stack Overflow som en mere lærerig ressource. Jeg vil opfordre dem til at gøre det. Jeg synes, at Stack Overflow er en fantastisk ressource til fejlfinding. Det er ikke en god måde at lære et sprog fra bunden af. Man kan ikke tage en Java compiler eller endda en IDE og Stack Overflow og lære Java fra bunden af på den måde. Det er bare ikke en effektiv måde at lære sproget på. Hvorimod en bog eller en tutorial er en meget mere struktureret tilgang, og det er Stack Overflow fantastisk til. Der var dette eksempel, og jeg forventede, at det ville gøre dette, men det gjorde noget andet i stedet. Og her er grunden til, at jeg tror, at det burde opføre sig på denne måde, og det opfører sig faktisk på en anden måde. Kan nogen forklare præcis, hvad der foregår her. Den slags spørgsmål er gode for Stack Overflow, så det er helt sikkert en slags supplement til andre læringsværktøjer, men jeg tror ikke, det er godt som et første læringsværktøj. Eller som den eneste måde at lære et sprog på, men der vil altid være folk, der lærer noget for første gang. Og som jeg siger, hvis man er relativt nybegynder i et sprog eller en teknologi, vil det være meget sværere for en at finde det. Relaterede spørgsmål, fordi man ikke engang nødvendigvis ved præcis, hvad ens spørgsmål vedrører på det tidspunkt, så jeg forventer ikke, at mængden af spørgsmål eller strømmen af spørgsmål vil forsvinde lige foreløbig. Og det skyldes dels nye folk, dels nye teknologier og dels de gamle kræfter, der gør ting, som de ikke har gjort før, så jeg kan stadig skrive i C# og stille et nyt spørgsmål om C#, og jeg tror, at omkring halvdelen af mine spørgsmål drejer sig om selve C#, hvilket måske vil overraske folk. Der er intet bedre end at kende et sprog rimeligt godt til at være opmærksom på ting, der går galt eller er virkelig uventede, og så er det virkelig nyttigt at spørge på Stack Overflow og sige: "Hej, jeg forventede virkelig, at dette ville ske, og jeg har god grund til at forvente det på grund af al min tidligere erfaring, men det betyder, at man her ender med at stille spørgsmål om teknologier, som man normalt ikke ville forvente.

MARCIN: Og på Stack Overflow er idéen om at finde et svar online, hvor længe har det været en integreret del af softwareudvikling. Fordi det plejede at være sådan, at man var fastlåst med lad os sige, at lad os sige, at man havde dokumentation måske et par et par opslagstavler et par nyhedsgrupper. Men det ser ud til, at mange professionelle bruger Stack Overflow regelmæssigt og mange af deres projekter, og det er sandsynligvis derfor, at Stack Overflow endte med at tage fat på det med deres licensering og sige, at du skal nævne, at det var fra cykler, hvor du tog koden. Så jeg gætter på, hvordan har software engineering og Stack Overflow efter din mening ændret sig gennem årene.

JON: Så jeg tror, at software engineering har ændret sig, dels fordi vi alle bruger flere teknologier og bruger mindre veldokumenterede teknologier, så alle bruger tredjepartsbiblioteker til højre og venstre i disse dage, eller det gør de fleste mennesker, og biblioteker kommer med en række forskellige grader af dokumentation, og til en vis grad har Stack Overflow næsten overtaget dokumentationen i nogle situationer. Og der var Stack Overflow-dokumentationsprojektet, som endte med at blive aflyst, fordi det bare ikke fungerede helt i situationen, men Stack Overflow er helt sikkert en del af en softwareingeniørs daglige værktøjskasse i disse dage mere og mere. Og en del af det skyldes, at Stack Overflow reagerer så hurtigt. Jeg kan huske tilbage i 2008 2009, da Stack Overflow stadig var meget ung. Jeff Atwood sagde, at man nogle gange skal skrive et spørgsmål og vente i 20 minutter for at få et svar. Og jeg var helt forbløffet, da jeg tænkte, at 20 minutter er så utrolig kort tid. Og han har ret i, at hvis du stiller et godt spørgsmål, får du normalt et svar inden for 20 minutter. Og det var ikke altid tilfældet i nyhedsgrupper. Jeg er ikke sikker på, om det bare er antallet af mennesker, der læser tingene, eller om det bare er den måde, hvorpå verden bevæger sig hurtigere, men i hvert fald ventede man ofte en hel dag, før man fik et svar i en nyhedsgruppe, mens jeg i dag har en tendens til at opleve, at det tager længere tid at skrive et spørgsmål, end det tager at få et svar. Så jeg vil sjældent bruge mindre end en halv time på at skrive et spørgsmål, fordi jeg laver research og opbygger et komplet eksempel og stiller det så klart som muligt, og det tager tid. Men i hvert fald inden for en halv time, så hvis det har taget mig en halv time at skrive spørgsmålet, så har jeg mindre end en halv time senere i det mindste fået kommentarer, der siger: "Ja, det ser underligt ud. Det er nyt. Jeg er ikke sikker på, hvad der foregår her, eller et egentligt svar, der forklarer løsningen på problemet. Så ja, det faktum at det er så lav latency gør det effektivt så meget mere levedygtigt. Og det er hvis du skal stille et nyt spørgsmål. 90 procent af de gange, hvor jeg står over for et problem, som Stack Overflow hjælper mig med, behøver jeg slet ikke at stille spørgsmålet, fordi en anden har stillet det før. Jeg oplever, at især på områder, som jeg ikke er så fortrolig med, f.eks. Python eller Bash-scripts eller lignende, vil jeg meget ofte lave lidt research på Stack Overflow og finde svaret på præcis det spørgsmål, som jeg ønskede. Det er fantastisk.

MARCIN: Oplever du, at folk, der har opdaget udvikling af tilbud, og som ønsker at lære mere om det, er ved at lære det første sprog. Oplever du, at de ikke investerer nok tid i at lære kernen. Som jeg sagde, kerne-dokumentationen og virkelig at lære sproget at kende, før de går til noget som Stack Overflow?

JON: Jeg tror, det er svært at sige, hvor stor en del af folk der gør det, men jeg ser helt sikkert nogle folk, der gør det uden at lære sproget at kende og få værktøjerne. Men jeg føler, at der mangler undervisning i diagnostisk proces på skoler og universiteter, og det er derfor, at jeg har en slags lille skældsord om, at der i Det Forenede Kongerige er langt flere datalogiuddannelser i softwareingeniøruddannelser, og på trods af at jeg er meget taknemmelig for, at der er datalogiuddannelser, og vi har helt sikkert brug for dataloger. Der er nok mere brug for softwareingeniører, som ikke har brug for at kende detaljerne i, hvordan en compiler fungerer, men som virkelig kunne bruge et kursus i, hvordan man løser et problem og undersøger det nærmere. Og hvis det ikke lykkes dig at løse det, så er det her, hvordan du spurgte om det. Uanset om det er at spørge dine kolleger eller spørge på Stack Overflow eller finde en fejl eller hvad det nu er, så er det så enkle aspekter af den diagnostiske proces, hvor man ikke forsøger at bide mere af, end man kan tygge. Hvis du er ny til et sprog, så gør nogle enkle ting først. Jeg har en tendens til at gå med noget som konsol apps for en ting i stedet for straks at dykke ned i web apps og mobile apps for eksempel, som helt afhænger af sproget selvfølgelig hvis du bruger et sprog, der er helt rettet mod webudvikling så måske en konsol, der vil være umuligt, men hvor det er muligt, bruge det enkleste miljø du kan. Det miljø, hvor debuggen vil hjælpe dig så meget som muligt, hvor du ikke har brug for 100 linjer boilerplate bare for at få to linjer kode til at køre den slags ting er virkelig nyttigt for at få dig selv sat op til succes effektivt, så du kan lære et aspekt af et sprog et aspekt af et bibliotek ad gangen i stedet for at drukne i et hav af okay. Jeg har 100 hundrede linjer kode, og jeg forstår ikke noget af det, og jeg får en fejlmeddelelse, som jeg heller ikke forstår, og jeg ved ikke, hvor jeg skal begynde. Problemet er, at du starter et sted, hvor der er for mange ting, som du ikke forstår. Så ja, i en verden i hurtig udvikling, og jeg er skyldig i dette som alle andre, hvis jeg forsøger at lære ny teknologi, selv om jeg siger, at jeg gerne vil starte enkelt. Jeg tænker ofte: "Jeg har kun denne ene ting, som jeg skal gøre, så jeg vil bare kaste mig ud i det. Så jeg gør også det forkerte, men jeg ved nok til, at hvis jeg går i stå, så vil jeg bakke ud og prøve at gøre noget mere simpelt, men i en verden i hurtig bevægelse er det fristende at forsøge at kaste sig ud i det, fordi jeg skal have noget gjort lige nu, men jeg finder ud af, at det er meget mere produktivt og i det lange løb, hvis man tager et skridt tilbage og virkelig prøver at gå først, før man løber.

MARCIN: Har du nogensinde været i en situation, måske var det tidligt i din karriere, hvor du begynder at løse et problem, der allerede er blevet løst, og så indser du senere, at det faktisk er som et løst problem, der er noget, der er løst, du kan bare bruge et API eller du kan bruge et pålideligt bibliotek.

JON: ja, og der synes at være en slags modvilje mod tredjepartsbiblioteket nogle gange. Et klassisk eksempel er XML-manipulation, så man ser folk sige, at jeg har kun brug for at undslippe ampersands, så jeg vil bare bruge strings og bygge XML direkte, og så finder de ud af, åh nej, jeg har en anden ting, der skaber et problem, og før eller siden har man hundredvis af linjer kode, som kunne være helt undgået, hvis man bare brugte et XML-bibliotek til at starte med, og det vil være meget mere robust og sikkert i alle mulige ting. Så ja, folk bør bruge biblioteker fra tredjepart. Men efter at have valgt dem omhyggeligt er der også en masse ret elendige biblioteker. Men at vælge et godt bibliotek kan gøre hele forskellen i et projekt.

MARCIN: Og vil du sige, at det er noget, som man får med erfaringen, hvilket er det, jeg siger, er at den slags visdom til at kunne sige, om jeg virkelig har brug for at skrive kode for at løse dette specifikke problem.

JON: I et vist omfang. Det er dels et spørgsmål om erfaring, dels et spørgsmål om at holde sig selv tilbage, for hvis man ser, at man kan gøre noget, og det betyder at skrive noget kode, og man synes, det ville være sjovt at skrive kode. Så er der altid en fristelse til at skrive den kode, selv om man egentlig ikke har brug for det. Og den fristelse kan jeg sagtens forstå. Selv når jeg virkelig ikke burde gøre det, og nogle gange skriver jeg et hurtigt værktøj i C#, selv om det ikke er det mest hensigtsmæssige sprog at bruge det på, fordi det er det sprog, jeg kender bedst, og det gør mig måske mere kortsigtet effektiv. Muligvis på bekostning af den langsigtede produktivitet. Jeg tror ikke, at vi behøver at bekymre os for meget om det. Lad os ikke slå os selv for meget på hovedet over den slags ting, men holde øje med dem. Der er meget at lære ved at tage et skridt tilbage fra sig selv og se sig selv arbejde og sige, hvor bruger jeg meget tid på måder, der ender med ikke at være produktive, og hvordan kan jeg reducere det en smule over tid uden at tænke, at det må betyde, at jeg er en dårlig udvikler, og at jeg bør opgive softwareudvikling helt. Prøv bare at forbedre dig selv med tiden hele tiden.

MARCIN: Godt. Godt. Nu vil jeg gerne prøve at få en lille smule af historien, så vidt som hvis du kunne fortælle os, at alle har en historie om, hvornår de begyndte at programmere. Så hvad er din historie om, hvornår du faktisk begyndte at programmere? Hvornår blev du interesseret i noget som software engineering eller programmering eller kodning, eller hvad du nu vil kalde det på det tidspunkt?

JON: Så det var meget tidligt. Vi købte Aztec's spectrum 48 K Sinclair's hos Spectrum, da jeg var, jeg tror det var 1984, så jeg var otte år gammel. Spectrum kom ud to år før, i 1982, og i begyndelsen spillede jeg bare spil, og så begyndte jeg ret hurtigt at lave meget simpel kodning. Så Spectrum kom med en indbygget BASIC-fortolker. Så når man starter computeren op, kan man straks begynde at skrive kode, og den manual til Spectrum, der fulgte med, var rigtig god til at lære programmering, i hvert fald til at lære grundlæggende programmering. Og jeg kan huske en dag, da min far var hjemme, fordi han af en eller anden grund var syg, og jeg husker, at jeg skrev et fjollet lille skydespil, som bare bestod af et rumskib, der sikkert bestod af nogle ASCII-tegn, og et rumvæsen dukkede op på et tilfældigt sted, og man flyttede rumskibet op og ned og trykkede på "face the fire" eller hvad det nu var, og det var så fuldstændig trivielt og slet ikke underholdende at spille. Men det var første gang, jeg skrev noget, der var interaktivt, og det var fantastisk, og den følelse, det gav mig, var forbløffende. Jeg tror til dels fordi alle spil var ret grove dengang, jeg nød Jetpack og Lunar Jet Man osv. Men det var ret simple spil, så det faktum, at jeg skrev noget simpelt, afskrækkede mig ikke. Jeg har lidt ondt af de unge i dag, som, hvis de følger mit råd og laver noget meget simpelt til at starte med, ender med et lille tekstspil, hvor man måske skal gætte et tilfældigt tal, og så siger den, om man kommer for højt eller for lavt osv. Jamen hvis du sammenligner det med Overwatch eller hvad det nu er for et spil du har spillet for sjov. Det er ret svært at se, hvordan de hænger sammen, for der er en million lysår fra en simpel tekstting til 3D-grafik, der går over det med stor hastighed med netværk og alle mulige ting. Men dengang var det fantastisk. Så jeg plejede at skrive min egen kode på den måde. Der var også blade, der kom med lister, som man kunne skrive i. Så man købte en bog, og i stedet for at have et bånd på forsiden med kode, som man bare kunne indlæse, skulle man skrive det hele ind, og fordelene ved det var, at det føltes enormt kedeligt, men man lærte hele tiden. Nå, men sådan kan man skrive kode, uden at det bliver understreget specielt. Så jeg tror, at jeg fik utrolig meget ud af det, og jeg husker, at et af mine første vigtige projekter var at skrive en Logo-fortolker, så vi brugte BBC Micro-computerne i skolen. Vi havde en Logo-fortolker, hvor der er en slags falsk robot, og man kan sige: "gå 100 grader fremad, drej 90 grader til højre osv.", og så tegner den ark på skærmen. Jeg elsker det, men vi havde det ikke i spektret, så jeg implementerede mit eget, for jeg vidste ikke, at det var en vanskelig ting, der ville tage meget tid, og det gjorde det, men det var utroligt tilfredsstillende, og jeg synes, det er et bevis på kvaliteten af spektrummanualen, at jeg faktisk lærte trigonometri fra spektrummanualen, fordi vi ikke havde gjort det i matematik endnu, og jeg var stadig kun 10, 11 eller 12 år gammel. Så jeg har slet ikke set på trigonometri i skolen, men spektrummanualen var klar nok til, at jeg kunne lære nok til at lave en logotolk ud fra den. Og når jeg ser tilbage, ville jeg elske at se koden nu. Jeg har mistanke om at den er absolut usselt. Og den er selvfølgelig forsvundet i tidens tåge. Men men jeg er stadig enormt stolt i tilbageblik på hvor forfærdelig den kode end var. Du kunne skrive din logoliste. Du kunne gemme den på bånd, du kunne indlæse den igen, du kunne køre den, det var alt sammen ekstremt cool.

MARCIN: Og som du har udviklet dig gennem denne færdighed, har du altid tænkt, at du ville arbejde som softwareingeniør, eller var du interesseret i andre ting, og så blev du på en eller anden måde henvist, eller du ved, hvordan var processen, da du rent faktisk kom ind på dette område?

JON: Jeg tror, at jeg fra jeg var 13 eller 14 år, tænkte jeg, at dette ville blive min karriere. Så ja. Jeg tog ikke datalogi på universitetet, jeg tog en matematisk uddannelse og tænkte, at jeg måske ville ende med at forske i matematik. Det viste sig, at jeg ikke er nær så god til matematik, at jeg kan tage en ph.d.-grad eller noget andet. Men jeg vidste, at det ville blive noget med datalogi. Så jeg var interesseret i kunstigt liv i min skoletid, så jeg tog en matematisk uddannelse og derefter en tilsvarende kandidatuddannelse i datalogi i et år, og i ferien endte jeg med at arbejde sammen med en ven på Digital Electronics og fortsatte derfra. Jeg har altid været dårlig til at styre min karriere, jeg har bare ladet den gå fra sted til sted, som jeg nyder mig selv, så jeg har altid betragtet nydelse som langt vigtigere for mig end penge, men den anerkendelse, jeg får fra Stack Overflow og fra at skrive, er meget behagelig. Det har aldrig været et bevidst mål i livet at blive berømt eller noget andet. Men den slags bizarre mikroberømthedsstatus, jeg får via Stack Overflow, er ret sjov og lidt underlig, men det er altid meget vigtigere for mig at gøre sjove ting i mit arbejde, så jeg sørger for at have en god balance mellem arbejdsliv og privatliv, og jeg kan se min familie meget. Min familie er utrolig vigtig for mig, men jeg har ikke været nær så opmærksom på min karriere, som nok mere velovervejede mennesker ville gøre.

MARCIN: Hvordan kan forældre udvikle børns interesse for programmering?

JON: Jeg har tre børn, hvoraf det ene er interesseret i Arduino-ting og laver lidt kodning, og det andet er også glad for Python. En anden, der er begyndt på Python for nylig, men som tidligere lavede scratch, hvilket er interessant, det er et mere visuelt miljø, og jeg ved ikke meget om videnskab eller om at lære børn at programmere. Jeg forsøgte at lære mine børn at programmere i Python ved at prøve en meget trinvis tilgang, og jeg synes, det er godt for voksne, men jeg er ikke sikker på, at det holder børnenes interesse nok. I hvert fald ikke det trin for trin, som jeg blev trænet til at gøre. Enten det, eller også er jeg bare ikke en særlig god lærer, hvilket er helt plausibelt, men jeg tror, at det vigtigste er at sikre, at det er noget, som de har lyst til at gøre. Så det var først, da jeg holdt op med at forsøge at lære mine børn programmering, at de begyndte at gøre det selv og lærte langt mere. Min ældste søn har lavet en masse ting Arduinos og Raspberry Pi. Jeg er sikker på, at sådanne ting har jeg aldrig selv set, fordi han bare lejlighedsvis siger ret kunne jeg få disse dele, tak. Og så går han hen og bygger tilfældige ting, og det var også den måde, jeg lærte det på. Mine forældre holdt aldrig øje med mig, så vidt jeg ved, hvad jeg programmerede. De var bare glade for, at jeg var glad, og de opmuntrede mig til at komme ud i verden udenfor. En gang imellem, men de var glade for, at jeg lavede noget kreativt og lærte af mig selv. Så hvis du kan opmuntre børnene nok til at finde noget, som de vil nyde at gøre for sig selv, og så gør det klart, at du gerne vil hjælpe dem, når de ønsker hjælp, men at du ikke vil tvinge dem til at gøre det. Lige nu er det tid til en halv times programmering. Så tror jeg, at det er opskriften på succes. Børn elsker at lære. De kan måske ikke lide skolen, men de elsker at lære, og de elsker at lave ting, der er kreative. Så lad dem slippe kreativiteten løs, som de ønsker det, og de vil forbløffe dig med det, de kan gøre.

MARCIN: Tror du, at idéen om, at alle skal lære at kode, især at de forsøger at indføre mere i læseplanerne? Er det en god idé, eller er det unødvendigt at tvinge folk til at lære noget, som de egentlig ikke ønsker at lære.

JON: Jeg tror, der er to aspekter: Det ene er, at det er godt at udsætte alle for kodning, fordi vi har denne usunde stereotype opfattelse af, hvordan en computerprogrammør ser ud, som virkelig skader vores branche. Så hvis vi kan udsætte folk og sige, at dette er faktisk kodning, og hvis vi kan give folk en positiv oplevelse af det, så kan folk, som måske aldrig naturligt ville have sagt, at det er noget, som jeg selv vil tage fat på, måske opdage det. Faktisk elsker de det. Så jeg tror, at det er meget gavnligt. Og det andet aspekt er, at software styrer så meget af verden nu, at jeg tror, at det er meget gavnligt at have en idé om, hvad der er involveret, selv på det groveste niveau. På samme måde som jeg mener, at folk bør have undervisning i finansiel planlægning, bare det grundlæggende om, hvad pensioner handler om, og hvad lån handler om, og hvordan aktiemarkedet fungerer. Jeg mener ikke, at de skal blive bankfolk, men at de skal kunne manøvrere i en verden, der er så finansielt drevet, ved at have en idé om, at ja, det samme gælder for politik og alle mulige ting, og at de dele af virkeligheden, der vil påvirke din verden. Det er godt at have en vis grundlæggende forståelse af det. Jeg siger ikke, at jeg ved meget om politik eller økonomi, men jeg er meget glad for det, jeg ved, fordi det er med til at forme min opfattelse af resten af verden. Så jeg tror, at software spiller en vigtig rolle i den forbindelse, at ingen børn i dag kommer fra middelklassefamilier i de udviklede lande, og vi kan føre en hel anden diskussion om områder, hvor børn ikke kommer i kontakt med computere på grund af fattigdom osv. Så hvis de ser dem som noget, der bare kører kode, så kører de virkelig kompliceret kode, men jeg har en idé om, hvordan kode ser ud. Og idéen om at vide, hvad skyen er for så vidt angår computere, der kører et andet sted i et datacenter, der forvaltes af Google eller Amazon eller Microsoft eller andet, og at have det grundlæggende kendskab til det kan hjælpe dig med at gøre alt muligt andet, du behøver ikke selv at kode for at få gavn af at have de grundlæggende idéer om, hvordan computere fungerer.

MARCIN: Og nu med noget som Chrome for eksempel med deres udvikler-værktøjslinje. Du kan tage enhver, der bruger internettet, og sige, at du er klar over, at alt dette foregår, mens du bruger dette websted, du ved, al denne aktivitet, og de forstår det måske ikke engang, vel? Men det afslører på en måde, hvad der faktisk er bag gardinet. Og jeg tror, at det nogle gange er en god måde at vise nogen, der ikke har nogen interesse i emnet, og du siger OK. Lad mig vise dig, lad mig vise dig, hvad der rent faktisk sker på dette websted, når du bruger det. Jeg synes, det er utroligt, at vi kan åbne konsollen og begynde at hacke noget javascript uden at skulle gøre noget som helst.

JON: Absolut ja, og anvende det på hinanden. Der er masser af andre måder at lave grundlæggende kodestykker på bare for en browser, herunder i C#, nu er der Tray.net, som lader dig begynde at skrive hver enkelt kode bare i din browser, og bag kulisserne kører der en cloud-container et sted. Men du kan helt sikkert begynde at se kode i utallige sprog bare fra din browser. Og jeg tror, at der er noget at sige for datalogi, når man også har denne eksponering. Så jeg har i hvert fald holdt foredrag for Cubs og guider og endda for min lokale metodistkirke, som for det meste består af folk, der enten er pensionister eller tæt på pensionsalderen, og som for de flestes vedkommende aldrig ville have beskæftiget sig med datalogi, og jeg holdt et foredrag, der viste dem noget datalogi, uden at der overhovedet var nogen computere involveret. Så ting som, at du har en bunke papir, hvordan kan du sortere dem effektivt, og jeg hørte om nogle forskellige algoritmer, du kan bruge. Og hvad betyder det for, hvis du har én person, der forsøger at sortere dem, så kan du måske bruge én algoritme. Hvis du har 10 forskellige personer, kan din valgte metode så stadigvæk bruges af mange forskellige personer, der hjælper dig? Så man ender med en slags sammenlægningssortering eller lignende, og ting som algoritmisk kompleksitet giver eksempler fra det virkelige liv på, hvor lang tid det tager at gøre forskellige ting. Hvis man har flere input til at hænge skjorter på en vaskesnor eller hvad det nu er, tror jeg, at folk kan finde den slags ting interessante, hvis de ikke er skræmt af det. Men så snart man begynder at tale om beregning, vil mange mennesker straks slå fra. Så der er meget, der taler for at gøre ting tilgængelige på en ikke-truende og ikke nedladende måde, og det kræver betydelige færdigheder på områder, som jeg ikke har. Men jeg har gjort, hvad jeg kan, men jeg er sikker på, at bedre undervisere ville kunne gøre det betydeligt bedre. Jeg mener, at det er ret vigtigt.

MARCIN: Lad os fortsætte her. Hvad vil du sige, at du er udover Stack Overflow. Er der nogen form for ressourcer, som du virkelig kan lide. Jeg mener, jeg er en fan af O'Reilly-bøger, men hvad er du fan af, når det gælder hvilke ressourcer du bruger, når du vil lære et nyt sprog eller noget andet.

JON: så bøger er gode til at lære sprog, fordi de tager dig derhen i en bestemt rækkefølge, og i disse dage gælder det selvfølgelig også for online tutorials, så længe de er skrevet på en passende måde, og det kræver en stor indsats, og det ved jeg af erfaring, at skrive ressourcer, der lærer dig alle sprogets funktioner i en bestemt rækkefølge, som vil hjælpe dig med at lære det. Så nogen kunne skrive en C#-vejledning, som faktisk ikke er særlig god, fordi den bare er en hjernevask. Så du skal vælge og vrage, men noget, der er struktureret for dig, gør en stor forskel God API-dokumentation er altid meget velkommen. Så .NET plejer at være ret godt dokumenteret og den nye API browser gør det nemmere at finde dokumentationen osv. Jeg vil opfordre folk, hvis de skriver biblioteker, til virkelig at gøre en indsats for at skrive god dokumentation, der skal ledsage disse biblioteker. Der er ingen grund til at have den hurtigste og hurtigste JSON Serializer i verden. Hvis ingen kan finde ud af at bruge den. Men enten bruger jeg de samme ressourcer som andre også bruger, uanset om det er tutorials og bøger eller bare søger efter de rigtige resultater, når jeg er trænet, mens jeg skriver godt hvordan kan jeg gøre hvad det end er. Sætte noget ind i en PDF eller hvilken opgave jeg tilfældigvis har ved hånden. Ja, jeg søger rundt på internettet, jeg bruger Stack Overflow, jeg bruger bøger, jeg bruger tutorials, jeg bruger biblioteker og deres dokumentation. Ja, det er stort set det hele, tror jeg.

MARCIN: Og hvad siger du til denne idé om, at det er fordi vi faktisk er næsten samme aldersgrupper. Tanken om, at folk i en vis alder bare bliver ledere. Har du set det ske. Er det sandt, eller er du på den måde enestående i den henseende, at du stadig udvikler software, eller er du. Hvad vil du sige til det?

JON: Jeg er bestemt ikke den eneste. Jeg vil sige, at jeg har været aktiv og har sagt, at jeg ikke rigtig har styret min karriere. Det faktum, at jeg optimerer for at have det sjovt, har jeg aktivt modstået at styre i lang tid. Jeg var leder i et halvt år og fandt ud af, at der er meget at sige til det. Især vil jeg gerne tro, at jeg er empatisk, og jeg jeg jeg forsøger bevidst at være empatisk, da jeg igen mener, at det er en vigtig færdighed for en softwareingeniør at have. Men det har naturligvis også noget at gøre med ledelse, og jeg tænkte, at det ville være interessant at prøve at lede, og det prøvede jeg, og det var derefter passende for mig at gå tilbage til en mere individuel rolle som bidragyder. Der er masser af ledelsesmæssige muligheder som softwareingeniør uden at være leder. Og det behøver ikke altid at være at skrive kode, så jeg skriver nok mere kode end de fleste mennesker på et tilsvarende anciennitetsniveau, fordi jeg har valgt at gøre det, og jeg har aktivt modstået ting, der kunne have en bredere indvirkning, men uden at være lige så sjove for mig. Man kan ofte bruge en masse tid på at skrive designdokumenter, og ja, jeg skriver stadig dokumenter rimeligt ofte, som regel ret uformelt, men jeg er ikke en stor fan af at skrive store dokumenter med alle mulige småting, der ikke er relevante for nogen. Jeg vil langt hellere komme ned til det væsentlige pænt og hurtigt. Men at skrive dokumenter for at bidrage til flere teams siger Okay, jeg tror, vi alle har dette problem. Lad os se, om vi sammen kan finde en løsning, der har en bredere virkning end blot at jeg selv skriver kode til at løse problemet. Jeg tror, at en af de ting, som du sandsynligvis bør sigte efter, efterhånden som du får mere erfaring, er at se, hvor denne erfaring kan hjælpe andre mennesker. Men i et vist omfang vil det stadig være kodning, og i et vist omfang vil det være at dele sin viden med brugergrupper og konferencer og lignende. Og ved at løse problemer internt i en virksomhed, som du kan løse, kan du måske se mere klart end andre mennesker, der måske har mindre erfaring, måske lige er kommet med i et team eller hvad det nu er. Men med hensyn til, om folk skal blive ledere eller ej, ville jeg personligt synes, at det ville være helt fint for nogen at komme og begynde at lede med det samme uden nødvendigvis selv at have udført jobbet. Hvis det er noget, de vil være gode til, kan man ved hjælp af empati og læring lære, hvad et job indebærer uden at gøre det, så længe man er klar over, at man ikke har gjort det, så man ikke har den direkte erfaring. Så jeg tror ikke, at der bør være en direkte sammenhæng mellem alder og den andel af arbejdstagerne, der er ledere. Jeg håber i hvert fald, at jeg stadig vil skrive kode et godt stykke ind i pensionsalderen, og at jeg sandsynligvis ikke vil arbejde med ledelse i nævneværdige mængder. Hvis jeg ender med at skulle være leder på et tidspunkt, vil jeg gøre det efter bedste evne, men jeg mener ikke, at det normalt bør være et krav, og jeg mener, at mange virksomheder gør det forkerte ved at forfremme folk til ledere, som faktisk ville være langt lykkeligere og langt mere produktive som programmører.

MARCIN: Hvad angår ideen om, at ja, det er nok en slags fejlagtig ide om, at man efter 15 år med at skrive software bare bliver manager, og det er bare det, alle gør. Jeg ved bare, at der er et vist pres, i hvert fald i Silicon Valley i Californien, hvor folk virkelig er bekymrede for, at de er 29 år og for gamle til at blive ansat af nogle virksomheder, der er besat af at ansætte folk på 22, 23 eller 24 år.

JON: Jeg ville ikke blive ansat af en virksomhed, der er besat af at ansætte 22-årige. Jeg vil langt hellere arbejde for en virksomhed, der værdsætter folk for hvem de er, hvad de kan opnå, og hvad de kan opnå sammen. Så du ikke kun deres nuværende færdigheder, men også deres potentiale. Så jeg har ikke selv oplevet den slags agisme. Undskyld mig, men jeg er klar over, at det er et problem. Jeg vil bestemt sige, at jeg ikke har oplevet nogen nedbrydning, som jeg er klar over, hvad angår mine kodningsevner. Jeg koder stadig lige så glad og produktivt som altid. Så vidt jeg er klar over. Så jeg ville håbe, at virksomhederne ville være opmærksomme på den slags og ansætte folk, der kan klare jobbet.

MARCIN: Tror du, at der er noget godt. Vi taler f.eks. om, hvis vi taler om alle andre erhverv. Man har en tendens til at tro, at hvis nogen har arbejdet med fysik i 30 år, så er der ingen, der vil sige, at du ikke ved, hvad du laver mere. Er det noget med, at software engineering er så tæt knyttet til teknologi, og at teknologien udvikler sig så hurtigt, at folk bare antager, at hvis man har arbejdet med det i så mange år, så er man ligesom ude af trit, eller er der noget, der adskiller software engineering fra alle de andre discipliner, som gør, at folk har denne idé om, at en person har en vis alder og har visse forestillinger om den person.

JON: Det er måske der, det indtryk kommer fra, men jeg vil sige, at det nok er ukorrekt. Man skal være villig til at lære nye ting. I hvert fald hvis man vil være det, hvis man vil kunne blive ved med at bevæge sig ind på Nye og spændende områder. Hvis du har arbejdet med COBOL i 30 år og har besluttet ikke at lære andet end COBOL, så er jeg sikker på, at du stadig kan være produktiv, og det er fint nok. Men du skal ikke forvente at få et job i JavaScript eller lignende uden at have vist interesse for at fortsætte med at lære. På den anden side har jeg jeg faktisk kun C# og Java på et professionelt niveau, fordi jeg har fundet ud af, at der er nok nye ting at lære i C#, at jeg ikke har tid nok til at lære F# og D og Rust og Go og alle mulige ting, som andre folk går bredere og mindre dybt. Men det er op til den enkelte, hvor meget han eller hun vil tage på sig, og man skal være opmærksom på, at hvis man beslutter sig for ikke at lære noget, hvis man beslutter sig for at holde op med at lære noget, så vil man blive mindre værdifuld med tiden. Men for at være ærlig tror jeg, at der er nok gamle systemer til, at man for de fleste sprog stadig kan være rimeligt værdifuld, selv om man beslutter sig for at holde op med at lære. Jeg kan ærlig talt ikke se, hvorfor man skulle have lyst til at holde op med at lære, da det altid er interessant at lave nye ting. Men det tager en del tid, og jeg mener, at virksomhederne bør være villige til at investere den tid i deres ingeniører, så ingeniørerne ikke føler, at de skal lære noget i den tid, der ellers bruges på f.eks. familien. Så der er en rimelig mængde aktiv udvikling, der bør være en del af jobbet. En del af det at være en god Sopher-ingeniør i sit arbejdsliv er at lære nye ting. For de fleste udviklere er der som sagt nogle mere gamle områder, hvor det ikke er så relevant, selv om jeg vil sige, at selv Cobol-udviklere, der fortsætter med at lære nye ting, sandsynligvis vil kunne se, hvordan de kan anvende deres Cobol-færdigheder i andre miljøer her. Måske er der containere, der kører COBOL i dag, og pludselig har du cloud-baserede containersystemer, der kan køre COBOL, og pludselig kan du flytte alle dine on-premise-maskiner til off-premise.Du ved, bare fordi du bruger et gammelt sprog, betyder det ikke, at du er nødt til at bruge gammel teknologi til alt andet. Så der er plads til alle slags mennesker, der altid ønsker at lære det nye, f.eks. et nyt sprog. Folk, der ønsker at anvende alle de teknologiske færdigheder i nye miljøer, og folk, der ikke ser nogen stor værdi i at lære nye ting. Ja, jeg kan sige, at jeg ikke føler mig særlig godt tilpas med det, men software engineering er så bredt et område, at jeg er sikker på, at der er nyttige produktive liv, som man kan bruge på at gøre. At anvende alle dine eksisterende færdigheder på nye udfordringer hele tiden. Jeg kunne bruge C# 7 resten af mit liv og stadig lave nye ting, selv om jeg ikke lærer nye egentlige sprogområder. Det er ikke det, jeg ønsker at gøre, men jeg er sikker på, at det er det for andre mennesker. Det er måske mere den vej, som de ønsker at gå.

MARCIN: Og det er alt sammen på grund af det faktum, at de fleste sprog er Turing-komplette, og at man derfor kan gøre alt med ethvert sprog, man kender. Jeg mener, det er meget bredt set

JON: sandsynligvis er jeg ikke helt sikker. Jeg tror, at sprog udvikler sig. C# har helt sikkert udviklet sig til de brugssituationer, som det anvendes til, så nogle af de funktioner, der tilføjes nu, ville ikke have givet så meget mening for 10 år siden, før cloud computing blev meget udbredt, og vi ser andre områder som spil, hvor C# dominerer på en næsten uventet måde med platforme som Unity. Så der er sprogfunktioner, der er noget mere rettet mod spil og højtydende computere med lav latenstid, og det synes jeg er godt. Men ja, man kunne gøre ting i andre sprog eller i tidligere versioner af sprog, men det er meget mere produktivt og interessant at bruge nye funktioner, fordi de er blevet udviklet til at løse netop dine problemer.

MARCIN: Hvad er dit foretrukne IDE?

JON: Visual studio

MARCIN: Bruger du en bestemt metode?

JON: Få kode udført. Jeg bruger ikke Kanban, eller jeg vil ikke sige nogen specifik metodologi som den. Jeg tror på testning, ikke nødvendigvis testdrevet udvikling, men i det mindste test ved siden af udvikling, nogle gange testdrevet, det afhænger af situationen. Jeg har det ikke godt med at have en masse produktionskode, som ikke er testet. Så det er et aspekt af agil udvikling, men det er ikke et aspekt, som jeg personligt ikke ender med at bruge hele den agile metode. Jeg laver ikke meget parprogrammering. Jeg har gjort det tidligere og fandt det meget nyttigt. Jeg har tidligere lavet ikke-parprogrammering og fandt det helt fint. Jeg mener, at det er vigtigt at have et godt forhold til sine kolleger, så kodegennemgang er meget vigtigt for mig, og at kodegennemgangen er ærlig og åbenhjertig. Men det er ikke bundet til en bestemt metode.

MARCIN: Hvilket råd ville du give til nogen, der befinder sig i det område, hvor de har lært et sprog i, lad os sige tre måneder, tre til seks måneder. Og de føler bare, at de ikke er kloge nok til at gøre det, til at lære det rigtigt. Som om der bare er for mange fejl, der skal rettes. Og du ved, hvad slags råd har du til den person, der har en slags interesse i det, men de føler, at de bare ikke kan komme over den pukkel.

JON: Så hvis du stadig er interesseret, og du tror, at du kunne nyde det, hvis du bare kunne gøre det bedre, så søg efter folk. Så uanset om det er at læse blogs eller finde en brugergruppe finder folk, som du kan interagere med og få en på en undervisning, hvis det er muligt, fordi det kan være ret ensomt at forsøge at finde svar udelukkende fra bag en skærm. Men hvis du præsenterer dig for nogen, kan de ofte se, at du har et problem med din mentale model, hvor du forestiller dig noget på den forkerte måde, og det kan være meget svært at få fat i bare ved hjælp af individuelle små bidder af bits og stykker. Hvis du ikke kan lide det, så find et andet sprog, for der er masser af sprog derude.

MARCIN: Hvilket programmeringssprog er bedst, Java eller C#?

JON: Personligt ville jeg sige C# Absolut. Nu har jeg ikke set nærmere på detaljerne i Java 9-funktionerne, og jeg kender kun job rate-funktionerne, men det føles for mig som om C# tog nogle af de fejl, som Java havde begået, og begik selv nogle af fejlene, indrømmet. Men generelt ser C# ud til at have udviklet hurtigere og bare rigtig godt C#-holdet er fantastisk klogt og bare rigtig omhyggeligt med, hvordan de udvikler sproget. Så vi er nået til C# 7.2, og det føles som om, det er gået i en meget god retning, og det bliver forvaltet ekstremt godt, meget godt specificeret. Når det er sagt, så er Java bedre end nogensinde før, og jeg tror ikke, at der er nok i det til, at hvis du arbejder på en Java-kodebase, bør du smide det hele væk og begynde at bruge C# i stedet. Men hvis jeg har min mulighed på et tidspunkt ville jeg helt klart vælge C# på en hvilken som helst dag.

MARCIN: Fantastisk! Jon Skeet, tak fordi du er gæst i Yellow Duck podcasten. Hvis du har nogle links du vil sende mig, og konferencer du vil lave, så send mig venligst alle oplysninger.

JON: Tak.

MARCIN: Jep, tak, Farvel!

Del indlæg

Få mere at vide om ansættelse af teknologiske medarbejdere

Tilmeld dig vores Learning Hub for at få nyttig viden direkte i din indbakke.

Kontroller og udvikl kodningsevner uden problemer.

Se DevSkiller-produkterne i aktion.

Sikkerhedscertificeringer og overholdelse. Vi sørger for, at dine data er sikre og beskyttede.

DevSkiller-logo TalentBoost-logo TalentScore-logo