Nettutvikling i 2020: Hvilke kodingsverktøy du bør lære

I dag publiserte en av mine favorittlærere, Brad Traversy, en oversikt over hva han anbefaler deg å lære å bli webutvikler i 2020.

Brad kutter gjennom mye av sprøytenarkomanen du hører på sosiale medier. Hans råd er praktiske og realistiske. Og jeg er enig med ham i stort sett alt han anbefaler deg å lære.

Det viktigste Brad understreker - og som jeg alltid understreker - er ikke å føle seg skremmende eller la deg bli overveldet.

Husk: freeCodeCamps læreplan dekker de fleste av disse verktøyene, og det har hjulpet mer enn 40 000 mennesker å få jobber som utviklere. Når du er i tvil, er det bare å fokusere på det.

Jeg har oppsummert Brads hovedinnsikt nedenfor for din bekvemmelighet. Når det er sagt, oppfordrer jeg deg til å se hele videoen hans, som jeg har innebygd nedenfor. Han legger til mange detaljer langt utover det disse notatene formidler. Det er en 73-minutters klokke.

Nettutvikling i 2020: En oversikt

Hovedmålet med videoen er å gi deg kjennskap til noen av de mer vanlige webutviklingsverktøyene som er tilgjengelige for webutviklere.

"Jeg prøver ikke å overvelde deg med teknologier. Dette er bare alternativer du har ... Det er mange teknologier der ute. Når du hører noe som Nuxt eller Gatsby, vil jeg at du skal vite hva det er. Og så du kan velge om du vil lære det eller ikke. "

Brad starter med å oppmuntre folk til først å spørre hva de vil gjøre. Vil du jobbe med et produktselskap? Eller jobbe som konsulent? Vil du frilans? Eller bygge et eget produkt?

Mange av rådene hans om hva du skal lære koker ned til hva dine mål er. Og han rammer inn mange av sine verktøyforslag i dette lyset.

Som utgangspunkt anbefaler han å lære det han kaller "Nødvendighetene."

En kontraintuitiv ting han påpeker: du trenger ikke en fancy datamaskin for webutvikling. "Det er ikke som utvikling av spillmotorer eller noe sånt, så du kan bruke en bærbar datamaskin eller stasjonær datamaskin i mellomklassen, eller til og med i noen tilfeller en datamaskin av lavere kvalitet."

Han bruker MacOS, Windows 10 og Linux for skyservere og til og med for noen av medieserverne sine.

Han er en stor fan av VS Code for redaktøren sin, og bruker Chrome og dens innebygde DevTools for nettleserbasert feilsøking. Når det er sagt, mener han Firefox også har kommet langt og er et levedyktig alternativ.

Han anbefaler å starte med standard HTML og CSS, og lære nyere CSS-verktøy som Flexbox og Grid.

Han sier at å lære responsivt webdesign i 2020 burde være gitt. "Hvert seriøst prosjekt du lager, skal se bra ut og være fullt brukbart på alle enheter."

I stedet for å stole på CSS-rammer som Bootstrap, anbefaler han at du øver deg på å bygge dine egne modulære CSS-komponenter som du deretter kan bruke på nytt gjennom hele prosjektet.

Når det er sagt, sier han at du kan støte på disse når du jobber med prosjekter for forskjellige arbeidsgivere.

Han nevner spesifikt Tailwind, som jeg ikke hadde hørt om før. Tailwind er litt forskjellig fra andre CSS-rammer. Det er fokusert på "nytteklasser" som du kan kombinere for å oppnå det du ønsker med designet.

Det er ingen overraskelse at Brad anbefaler å bli veldig bra med JavaScript.

Læring i et praktisk tempo

Gjennom hele Brads guide understreker han gjentatte ganger behovet for praktisk.

Ja - det er best praksis for alt. Men i mange tilfeller er det en god nok måte som vil hjelpe deg med å bevege deg raskere og få mer gjort, uten å bli festet i verktøy.

Noe av det mest interessante (og kanskje kjetterske) han sier:

"Det er ikke nødvendig å lære DevOps og AWS og alle disse tingene for et lite nettsted. Et hosting-nettsted eller et administrert hosting-nettsted som InMotion eller Hostgator er greit. Det lar deg gjøre [distribusjon] rett i nettleseren. Det er ikke nødvendig å overkompliser ting. "

Han hevder at selv i 2020 er det noe å si for å bruke kjente verktøy.

For folk som er ny innen webutvikling, anbefaler Brad å først komme til poenget med å kunne jobbe som en grunnleggende frontend webutvikler. Dette vil tillate deg å bygge nettsteder for lokale virksomheter som frilanser.

"Hipstere vil si at du absolutt trenger å bruke et frontend-rammeverk. Jeg tror ikke det er sant. Hvis du vil gjengi maler på serveren uten å bruke et frontend-framework, synes jeg det er helt greit, men det er mange mange jobber som leter etter noe som React eller Vue. "

Men når du er klar til å takle frontend-rammer, anbefaler han at du utforsker React, Vue og Angular. "Prøv alle tre og finn ut hvilken du liker best."

Han gir også et nikk til Svelte - som ikke er et rammeverk, men snarere en kompilator. Men han sier at det sannsynligvis er for nytt til å prøve å hente i 2020.

Og han diskuterer den økende populariteten til Server Side Rendering. Filsystembasert ruting betyr at du ikke trenger å lage en komplisert rutingsfil. I stedet kan du bare plassere filene i katalogen du vil at de skal være i.

De to populære Server Side Rendering-verktøyene er Next.js (for React) og Nuxt.js (Vue-alternativet).

En annen fremvoksende trend er Static Site Renders, som han sier at du ikke trenger å lære, men du bør være klar over. For eksempel er Gatsby-nettsteder ekstremt raske og trenger ikke en server.

Back End utviklingsverktøy

For utvikling av serversiden foretrekker Brad Node.js på grunn av hastigheten og fordi han kan bruke JavaScript på både front- og bakenden.

For utviklingsrammer for serversiden anbefaler han å lære Express siden det er det mest populære og "det gir deg mye frihet til å bygge ting slik du vil ha din egen måte."

Han bruker også Python for noen prosjekter, og anbefaler det også.

"Python har to fantastiske rammer. Django er et stort, fullverdig rammeverk, der Flask er mer minimalistisk. Det gir deg det du trenger, men du tar resten av beslutningene. Jeg kan ærlig talt ikke velge en av de to, jeg elsk dem begge og bruk dem til forskjellige ting. "

Og han kommer raskt til forsvar for PHP:

"Mange gir dritt til PHP, og det er uheldig fordi PHP kan være et flott språk. Det er praktisk og det er enkelt å distribuere omtrent hvor som helst. PHP er flott for frilansere som trenger å få ting ut raskt. Hvis du planlegger å å jobbe for et stort selskap, PHP er kanskje ikke det beste valget, men hvis du er frilans og bygger personlige prosjekter, kan PHP være et godt valg. Det har blitt kult å baske PHP. PHP var det første språket jeg lærte, og jeg liker fortsatt det ... Hvis du ser på Laravel-koden, er det veldig elegant. "

Brad gjør også en rask gjennomgang av databaser, og anbefaler den flerårige favoritten PostgreSQL.

Andre verktøy som sannsynligvis er kommet for å bli

GraphQL er et alternativ til REST for APIer. Det er flere kurs som dekker GraphQL på både Brads kanal og på freeCodeCamps kanal. Men han sier, "GraphQL er ikke noe du må lære deg i disse dager, men det er stort nok til at jeg tror det er kommet for å bli. Det er mer enn en trend."

Brad snakker også om Content Management Systems (CMS) og hvordan de utvikler seg til nye "hodeløse" alternativer der du bare bruker dem som en backend og koder din egen frontend.

"CMS er veldig praktiske for frilansere som har klienter som ønsker å kunne logge på og opprette blogginnlegg og sånne ting. Mange mennesker bash WordPress, men det er en enorm prosentandel av nettsteder på internett som drives av WordPress. og det er fortsatt veldig populært. "

For webservere foretrekker han NGINX fremfor Apache fordi "det ser ut til å være mindre komplisert." Vi bruker NGINX mye på freeCodeCamp, og jeg er tilbøyelig til å være enig.

Brad forklarer også hvordan virtualisering fungerer, og snakker om hvordan det kan forenkle mer komplekse prosjekter ved å standardisere miljøet på flere datamaskiner. Men han advarer mot å prøve å virtualisere alt:

"Docker er veldig bra for team. Det jeg ikke liker er når folk sier at du alltid skal bruke Docker. Det er bare preferanse. Hvis du bare vil kjøre en lokal LAMP-server, er det ikke noe galt med det. Ikke føl deg presset å lære noe sånt som Docker. "

Og han legger til for å understreke noe jeg personlig ikke kan understreke nok: "Jeg vet at mange nerdete typer bare vil overkomplisere ting, og jeg hater det. Bare fordi jeg lister opp alt dette betyr ikke at jeg presser det på du."

Han er også rask til å påpeke at de fleste store selskaper har dedikerte DevOps-team (også kalt "Site Reliability Engineers") som kan gjøre mye av dette for deg.

Hyggelig å ha ferdigheter du kan lære som spesialiteter

Hvis du vil teste hendene dine på utvikling av mobilapper, anbefaler Brad på det sterkeste Flutter-rammeverket. Den bruker Dart, som er et mer uklart språk. Han beskriver Dart som et sted mellom Java og JavaScript, og sier at hvis du kjenner noen av disse språkene, bør du kunne plukke den opp.

Hans andre valg for utvikling av mobilapper er React Native, som er lett å hente hvis du allerede kjenner React.

Brad gjør da en god jobb med å forklare hva Progressive Web Apps er og noen av fordelene med dem. Her er lysbildet, men igjen, jeg oppfordrer deg sterkt til å se hele videoen hans.

Deretter berører han Electron, som lar deg bygge stasjonære applikasjoner ved hjelp av JavaScript. Han var opprinnelig skeptisk, men sier at noen av hans favoritt desktop-apper - som VS Code og Discord - nå er bygget med Electron.

Han nevner JAMstack (JavaScript, APIer og Markup) og serverløs arkitektur. Dette er mer avanserte emner som både kanalen hans og freeCodeCamps YouTube-kanal har videoopplæringer også.

Og så kommer han til de store trendene for 2020.

Maskinlæring og nettmontering

Bare fordi alle andre snakker om maskinlæring, betyr ikke det at du må slippe alt og lære det. Det er slik han forordner denne fasen av samtalen.

Og ja, du kan også gjøre maskinlæring i JavaScript.

"Python er kongen for maskinlæring. Men selv med JavaScript har du TensorFlow.js, du har Brain.js for å lage nevrale nettverk og gjøre noen kule ting."

Det er tydelig fra måten han snakker om Web Assembly på at han er ganske spent på det.

"Web Assembly er fortsatt i en tidlig fase, men jeg tror vi kommer til å se mer av det i år. Tradisjonelt bruker vi JavaScript på websiden for å manipulere DOM og kjøre beregninger. JavaScript har begrensninger når det gjelder hastighet. Et språk som C eller C ++ er mye raskere enn JavaScript. Så Web Assembly er en effektiv byte-kode på lavt nivå som kan utføres av en nettleser, og den er ekstremt rask. Den kan genereres av språk som C, C ++ og Rust. "

Rust er et av språkene du kan bruke med WebAssembly (i tillegg til C og C ++). Det er betydelig lettere å lære og bruke enn C og C ++.

Men det er viktig å merke seg at WebAssembly ikke unnskylder deg fra å måtte lære JavaScript.

"Du kan nesten tenke på JavaScript som sjefen, og den kan fortelle Web Assembly hva vi skal gjøre. Så det lar oss bruke veldig raske lavnivåspråk som C ++ i webappene våre, og dette gir oss mye mer muligheter - som neste nivå videospill og videoredigeringsverktøy rett i nettleseren - ting som ikke er utenkelige med bare JavaScript. "

Til slutt sier han: "Jo mer du lærer, jo lettere er det å lære mer og å passe alle disse teknologiene sammen. Prøv å ikke bli overveldet. Ta det ett skritt om gangen og undersøk, og finn ut hva du vil gjøre."

Igjen vil jeg takke Brad Traversy for å sette sammen denne omfattende videoen.

Folk spør meg hele tiden "hva skal jeg lære hvis jeg vil bli webutvikler?" Og svaret mitt er "bare bruk freeCodeCamp som din hovedplan, og forgren deg til andre læringsressurser mens du går."

Og jeg er glad for å si at Brads Traversy Media YouTube-kanal er en av de ekstra ressursene jeg anbefaler aller best.