- Om jeg vet noe om Norge? Bruker dere de fine jakkene med norske flagg?
Utvikler, online-kursholder og Syntax-podkaster Wes Bos sikter nok til det italienske merket Napapijri. Som av merkelige grunner bruker det norske flagget som emblem.
Nyheter i CRA, ReactConf, SOLID, The Rules of React
Wes ringer oss på video fra sitt eget lille kodekontor i Ontario, Canada. Bak ligger fuglehunden hans, lettere henslengt i en Eames designerstol.
Man kan få inntrykk av at det går greit om dagen.
kode24 har snakket med Bos om hvorfor han synes JavaScript er så kult, om man bør spesialisere seg på noe og hvilket teknologi-stack du bør velge på ditt neste prosjekt.
Boka som tok av
- Hva er bakgrunnen til at du startet med online-kurs?
- Det begynte for syv år siden. Jeg ble bedt om å holde et kurs om Wordpress for Ladies Learning Code. Jeg merket at jeg likte energien i rommet, og at jeg likte å forklare ting. Jeg hadde ingen tidligere erfaring, ingen grad fra noen skole, forteller Wes til kode24.
- Ved siden av studiene startet jeg et lite webdesign-firma, og ble etter hvert involvert i mer kursing gjennom Ladies Learning Code. Jeg skrev blant annet pensum for HackerYou, og så bestemte jeg meg for å skrive en bok.
- Boken tok ett og et halvt år å skrive. Jeg var usikker på meg selv, og om det jeg hadde å bidra med var nyttig for andre.
«Boka tok av. Men jeg merket at jeg hatet å skrive.»
Boka Wes snakker om er Sublime Text - Power User. Den fikk stor oppmerksomhet da den kom ut, og kjente fjes som Addy Osmani hyllet den for sin grundighet.
- Boka tok av. Men jeg merket at jeg hatet å skrive, forklarer Wes.
- Boka kom med videoer, og jeg merket at videoene var mye lettere å lage for meg. Samtidig begynte YouTube å bli populært. Det var da jeg bestemte meg for å lage mitt andre kurs, command line power user.
- Jeg merket at folk ville ha en utvidet greie og bygge ordentlige ting.
Synes React var teit
- Du ser ut til å ha en forkjærlighet for JavaScript. Hvorfor det?
- Jeg startet først med å gjøre mye Wordpress-greier. Da gikk det i CodeIgniter, CakePhp, mye av det som var forgjengeren til Laravel, forteller Wes.
- Men jeg merket at jeg trakk mot JavaScript. For å være ærlig følte jeg aldri at jeg ble god nok i noe annet. En rask måte å komme foran er å velge noe nytt og ri fremst på bølgen, noe jeg prøver å gjøre med nye ting jeg lærer meg.
- Du later til å være opptatt av å lære de aller nyeste tingene. Er det viktig for utviklere?
- Det stemmer at jeg liker å lære nye ting. Jeg er alltid på jakt etter bedre og enklere måter å gjøre ting på, men jeg vet ikke om det nødvendigvis er viktig for alle.
Norges mest brukte plugins til editoren
- Jeg tror jeg kunne gjort gode penger på å skrive bøker om eldre ting. Angular 1-bøker er det for eksempel høy etterspørsel etter nå. Mange selskap sitter med gamle kodebaser som ikke ble oppgradert til nyere versjoner av Angular. Og nå må andre ansatte forstå koden.
- Jeg var faktisk på annonseringen av React. Først syntes jeg det var teit. HTML inni JavaScript, lissom?
- For fire-fem år siden trengte jeg å bygge en videospiller til et kurs i flex-box. Det var første gang jeg testet React, og siden da har jeg vært mest interessert i det rammeverket.
«Du bør sette deg inn i hvordan ORM fungerer.»
Bli dritgod
- Hva bør en utvikler kunne for å kalle seg en fullstack-utvikler?
- Du bør kunne vanilla JavaScript, Node og i hvert fall ett av de store rammeverkene; Angular, Vue, Ember eller React, begynner Wes.
- Slutt å bruke console.log!
- På serversiden bør du sette deg inn i autentisering. Skal man for eksempel kjøre sesjonsbasert eller bruke JWT?
- Du bør også sette deg inn i hvordan man sender e-post fra backend og hvordan kryptering fungerer.
- På databasesiden bør du sette deg inn i hvordan ORM fungerer.
- Bør utviklere spesialisere seg, eller bør alle bli fullstack?
- Det tok vi faktisk opp på podkasten vår; Syntax. Begge har sine meritter. Hvis du skal spesialisere deg må du være «dritgod» på det du kan. Du bør snakke på konferanser, og passe på at du er kjent for det.
- Kursene dine handler ofte om å sette sammen ulike frontend- og backend-rammeverk og teknologi for å bygge et prosjekt. Hvorfor finnes det ikke et fullstack-rammeverk tror du?
- Jeg har klaget på akkurat dette på podcasten! Hvis noen klarer å lage dette i JavaScript-verdenen tror jeg de kunne fått suksess. Men det spørs nok om det hadde funket. Vi elsker jo å bruke forskjellige rammeverk.
«Jeg velger alltid MongoDB.»
Stacken du bør velge
Vi ber Wes tenke på hvordan han ville bygget en fiktiv tjeneste for et hotell, med booking. Vi bryter ned i backend, frontend, database og hosting.
- Hvilken database ville du valgt?
- Jeg velger alltid MongoDB. Jeg har brukt en del mySQL tidligere, og det ville kanskje vært en god «fit» i dette tilfellet. Men MongoDB er så lett å komme i gang med. Det føles «javascripty». Jeg har aldri hatt et problem med skalering rundt MongoDB, sier han til kode24.
3,5 millioner requests i minuttet – vraket SQL for MongoDB
- Hva velger du på backend?
- Jeg bruker nok Node. Og så velger jeg Express. Det finnes noen utfordrere, som Hapi, men jeg har aldri giddet å bruke dem. Jeg liker Express for godt – ikke minst idéen om middleware.
- I tillegg ville jeg brukt NextJS. Da får du server-rendering og ruting, fortsetter han.
NextJS er et rammeverk som lar deg tjene React fra backend.
- Jeg ville brukt GraphQL istedenfor et standard REST-api. Fordelen med GraphQL er at du kan bygge mye mer fleksible spørringer, og slipper å skrive egne endepunkt hver gang du skal ha en litt forskjellig samling med data.
Derfor er #663399 den tristeste fargen
- Til GraphQL på backend bruker jeg ofte en pakke som heter Prisma. Den tar et GraphQL-schema og genererer alt av API og alle spørringer til databasen, mutasjoner, filtre og så videre. Dropp Mongoose, bare bruk Prisma.
- Hva med autentisering?
- Du har to valg, enten sesjoner eller JSON Web Tokens (JWT). JWT er mye mer populært siden det er «stateless». I mitt siste kurs bygde vi autentiseringen selv, men jeg har brukt PassportJS tidligere. Dessverre blir jeg ofte forvirret av det, og dokumentasjonen er dårlig. Derfor velger jeg stort sett å bygge det selv.
«Hvis du skal bygge autentisering, prøv å bygg din egen.»
- Hva med tredjeparts-autentisering, som Firebase og Auth0?
- Jeg brukte Auth0 før, men jeg liker ikke å stole på tredjeparter. Folk sier ofte at jeg jukser når jeg bruker sånne ting. Hvis du skal bygge autentisering, prøv å bygg din egen.
- Hva velger du til CSS?
- Jeg bruker som regel ikke noe rammeverk som Bootstrap eller Foundation. Det trenger man ikke, nå som vi har flexbox.
- Til CSS liker jeg å bruke Styled-Components i React.
Ukas koder: Drømmer om at alle går fra Javascript til Elm
- Hva med JavaScript i frontend?
- Siden vi kjører GraphQL ville jeg brukt et rammeverk som heter Apollo. Den håndtere alt av henting og sending av data, og oppdatering av state i React.
- Hvordan vil du hoste dette?
- Til hosting ville jeg brukt Now. Det er en tjeneste fra Zeit, folka bak NextJS. Til database hadde jeg nok brukt Mlab. Jeg pleide å være stor fan av dem, men etter at MongoDB kjøpte dem tror jeg kanskje de holder på å skalere ned selskapet.
- Hvis jeg måtte hoste alt på ett sted ville jeg brukt noe mer avansert som Digital Ocean. Det er der jeg hoster mine egne ting i dag.
Det viktigste kurset
- For folk som lurer på å ta et av kursene dine, hvor bør de begynne?
- Det kommer jo an på hvor du er på veien. Jeg ville begynt med mitt gratiskurs; #Javascript30. Da får du 30 dager med gøyale og praktiske oppgaver i JavaScript. Det er mitt absolutt mest populære kurs med 212.000 brukere.
- Etter det ville jeg gått for kurs som GraphQl med Wes eller React med Wes.
- Hvorfor skal man velge kursene dine istedenfor skoler som Treehouse?
- jQuery er som sex i offentligheten!
- Jeg vil ikke snakke negativt om Treehouse. Men det jeg hører fra andre er at det går for treigt, og ofte er dummet ned. Du blir enten holdt for mye i hånden og bedt om å kode i en online editor, eller gitt abstrakte oppgaver. Det er ikke sånn man bygger en webside.
- Jeg tror det folk setter pris på med mine kurs er at jeg viser hvilke verktøy profesjonelle utviklere bruker, slik som VS Code, og så bygger vi et faktisk produkt.
- Kursene mine har alltid eksempler fra den virkelige verden, og jeg forklarer hvorfor du trenger å bruke ting.
- Har du noen planer om å komme til Norge?
- Jeg har faktisk fått et par forespørsler. Men det har vært av typen; kan du komme neste uke? Jeg har kjempelyst til å komme, bare med litt bedre frist.