Webudvikling i 2020: Hvilke kodningsværktøjer du bør lære

I dag offentliggjorde en af ​​mine yndlingslærere, Brad Traversy, en oversigt over hvad han anbefaler dig at lære at blive webudvikler i 2020.

Brad skærer igennem meget af den hype, du hører på sociale medier. Hans råd er praktisk og realistisk. Og jeg er enig med ham i stort set alt, hvad han anbefaler dig at lære.

Det vigtigste Brad understreger - og det understreger jeg altid - er ikke at være skræmt eller lade dig blive overvældet.

Husk: freeCodeCamps pensum dækker de fleste af disse værktøjer, og det har hjulpet mere end 40.000 mennesker med at få job som udviklere. Når du er i tvivl, skal du bare fokusere på det.

Jeg har sammenfattet Brads hovedindsigt nedenfor for din bekvemmelighed. Når det er sagt, opfordrer jeg dig til at se hans fulde video, som jeg har indlejret nedenfor. Han tilføjer en masse detaljer langt ud over, hvad disse noter formidler. Det er et 73-minutters ur.

Webudvikling i 2020: En oversigt

Hovedmålet med videoen er at give dig fortrolighed med nogle af de mere almindelige webudviklingsværktøjer, der er tilgængelige for webudviklere.

"Jeg prøver ikke at overvælde dig med teknologier. Dette er bare muligheder, du har ... Der er mange teknologier derude. Når du hører noget som Nuxt eller Gatsby, vil jeg have dig til at vide, hvad det er. Og så du kan vælge, om du vil lære det eller ej. "

Brad starter med at tilskynde folk til først at spørge, hvad de vil gøre. Vil du arbejde i et produktfirma? Eller arbejde som konsulent? Vil du freelance? Eller bygge et eget produkt?

Mange af hans råd om, hvad man skal lære, koger ned til, hvad dine mål er. Og han rammer en masse af sine værktøjsforslag i dette lys.

Som udgangspunkt anbefaler han at lære, hvad han kalder "Nødvendigheden."

En kontraintuitiv ting, han påpeger: du behøver ikke en fancy computer til webudvikling. "Det er ikke som udvikling af spilmotorer eller noget lignende, så du kan bruge en bærbar computer eller en stationær computer eller endda i nogle tilfælde en lavere computer."

Han bruger MacOS, Windows 10 og Linux til cloud-servere og endda til nogle af hans medieservere.

Han er en stor fan af VS-kode til sin redaktør og bruger Chrome og dens indbyggede DevTools til browserbaseret fejlfinding. Når det er sagt, mener han, at Firefox også er kommet langt og er et levedygtigt alternativ.

Han anbefaler at starte med standard HTML og CSS og lære nyere CSS-værktøjer som Flexbox og Grid.

Han siger, at indlæring af responsivt webdesign i 2020 bør være en given. "Hvert seriøst projekt, du opretter, skal se godt ud og være fuldt anvendeligt på alle enheder."

I stedet for at stole på CSS-rammer som Bootstrap, anbefaler han, at du øver dig på at opbygge dine egne modulære CSS-komponenter, som du derefter kan genbruge i hele dit projekt.

Når det er sagt, siger han, at du måske støder på disse, når du arbejder på projekter for forskellige arbejdsgivere.

Han nævner specifikt Tailwind, som jeg ikke havde hørt om før. Medvind er lidt anderledes end andre CSS-rammer. Det fokuserer på "hjælpeklasser", som du kan kombinere for at opnå det, du ønsker med designet.

Det er ingen overraskelse, at Brad anbefaler at blive rigtig god med JavaScript.

Læring i et praktisk tempo

I hele Brads guide understreger han gentagne gange behovet for praktisk brug.

Ja - der er bedste praksis for alt. Men i mange tilfælde er der en god nok måde, der hjælper dig med at bevæge dig hurtigere og få mere gjort uden at blive fast i værktøjer.

En af de mest interessante (og måske kættere) ting, han siger:

"Der er ikke behov for at lære DevOps og AWS og alle disse ting til et lille sted. Et hosting-websted eller et administreret hosting-site som InMotion eller Hostgator er fint. Det giver dig mulighed for at udføre [implementering] lige i browseren. Det er ikke nødvendigt at overkomplicere ting. "

Han hævder, at selv i 2020 er der noget at sige for at bruge velkendte værktøjer.

For folk, der er nye inden for webudvikling, anbefaler Brad, at man først kommer til det punkt, hvor han kan arbejde som en grundlæggende frontend webudvikler. Dette giver dig mulighed for at oprette websteder til lokale virksomheder som freelancer.

"Hipstere vil sige, at du bestemt skal bruge en frontend-ramme. Jeg synes ikke det er sandt. Hvis du vil gengive skabeloner på serveren uden at bruge en front-end-ramme, synes jeg det er helt fint, men der er mange mange job, der leder efter noget som React eller Vue. "

Men når du er klar til at tackle frontend-rammer, anbefaler han, at du udforsker React, Vue og Angular. "Prøv alle tre og find ud af, hvilken du bedst kan lide."

Han giver også et nik til Svelte - som ikke er en ramme, men snarere en kompilator. Men han siger, at det sandsynligvis er for nyt til at prøve at hente i 2020.

Og han diskuterer den stigende popularitet af Server Side Rendering. Filsystembaseret routing betyder, at du ikke behøver at oprette en kompliceret routing-fil. I stedet kan du bare placere filerne i den mappe, du vil have dem i.

De to populære Server Side Rendering-værktøjer er Next.js (for React) og Nuxt.js (Vue-indstillingen).

En anden voksende tendens er Static Site Renders, som han siger, at du ikke behøver at lære, men du skal være opmærksom på. For eksempel er Gatsby-sider ekstremt hurtige og har ikke brug for en server.

Back End-udviklingsværktøjer

Til udvikling af serversiden foretrækker Brad Node.js for dets hastighed, og fordi han kan bruge JavaScript på både front- og bagside.

Til udviklingsrammer på serversiden anbefaler han at lære Express, da det er det mest populære, og "det giver dig en masse frihed til at opbygge ting, som du vil have din egen måde."

Han bruger også Python til nogle projekter og anbefaler det også.

"Python har to fantastiske rammer. Django er en stor, komplet ramme, hvor Flask er mere minimalistisk. Det giver dig hvad du har brug for, men du tager resten af ​​beslutningerne. Jeg kan ærligt talt ikke vælge en af ​​de to, jeg elsk dem begge og brug dem til forskellige ting. "

Og han er hurtig til at komme til forsvar for PHP:

"Mange giver crap til PHP, og det er uheldigt, fordi PHP kan være et godt sprog. Det er praktisk, og det er nemt at implementere næsten hvor som helst. PHP er fantastisk til freelancere, der har brug for at få ting ud hurtigt. Hvis du planlægger at arbejder for et stort firma, PHP er måske ikke det bedste valg, men hvis du freelancerer og bygger personlige projekter, kan PHP være et godt valg. Det er blevet sejt at baske PHP. PHP var det første sprog, jeg lærte, og jeg kan stadig godt lide det ... Hvis du ser på Laravel-koden, er det meget elegant. "

Brad foretager også en hurtig gennemgang af databaser og anbefaler flerårig favorit PostgreSQL.

Andre værktøjer, der sandsynligvis er kommet for at blive

GraphQL er et alternativ til REST til API'er. Der er flere kurser, der dækker GraphQL på både Brads kanal og på freeCodeCamps kanal. Men han siger, "GraphQL er ikke noget, du skal lære i disse dage, men det er stort nok til, at jeg tror, ​​det er kommet for at blive. Det er mere end en tendens."

Brad taler også om Content Management Systems (CMS'er) og hvordan de udvikler sig til nye "headless" muligheder, hvor du bare bruger dem som en back-end og kode din egen front-end.

"CMS'er er meget praktiske for freelancere, der har klienter, der ønsker at være i stand til at logge ind og oprette deres blogindlæg og lignende. Mange mennesker bash WordPress, men der er en enorm procentdel af websteder på internettet, der drives af WordPress og det er stadig meget populært. "

For webservere foretrækker han NGINX frem for Apache, fordi "det ser ud til at være mindre kompliceret." Vi bruger NGINX i vid udstrækning på freeCodeCamp, og jeg er tilbøjelig til at blive enig.

Brad forklarer også, hvordan virtualisering fungerer, og taler om, hvordan det kan forenkle mere komplekse projekter ved at standardisere miljøet på tværs af flere computere. Men han advarer mod at forsøge at virtualisere alt:

"Docker er virkelig godt for hold. Det, jeg ikke kan lide, er, når folk siger, at du altid skal bruge Docker. Det er bare præference. Hvis du bare vil køre en lokal LAMP-server, er der intet galt med det. Føler ikke pres at lære noget som Docker. "

Og han tilføjer for at understrege noget, som jeg personligt ikke kan understrege nok: "Jeg ved, at mange nørdetyper bare vil overkomplicere ting, og jeg hader det. Bare fordi jeg nævner alt dette betyder det ikke, at jeg skubber det på du."

Han er også hurtig til at påpege, at de fleste store virksomheder har dedikerede DevOps-teams (også kaldet "Site Reliability Engineers"), der kan gøre meget af dette for dig.

Rart at have færdigheder, du kan lære som specialiteter

Hvis du vil teste dine hænder til udvikling af mobilapp, anbefaler Brad stærkt Flutter-rammen. Det bruger Dart, som er et mere uklart sprog. Han beskriver Dart som et sted mellem Java og JavaScript og siger, at hvis du kender et af disse sprog, skal du være i stand til at hente det.

Hans andet valg til udvikling af mobilapps er React Native, som er let at hente, hvis du allerede kender React.

Brad gør derefter et godt stykke arbejde med at forklare, hvad Progressive Web Apps er, og nogle af fordelene ved dem. Her er diaset, men igen opfordrer jeg dig kraftigt til at se hans fulde video.

Derefter berører han Electron, som giver dig mulighed for at oprette desktop-applikationer ved hjælp af JavaScript. Han var oprindeligt skeptisk, men siger, at nogle af hans foretrukne desktop-apps - som VS Code og Discord - nu er bygget ved hjælp af Electron.

Han nævner JAMstack (JavaScript, API'er og Markup) og serverfri arkitektur. Dette er mere avancerede emner, som både hans kanal og freeCodeCamps YouTube-kanal også har video-tutorials på.

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

Machine Learning og Web Assembly

Bare fordi alle andre taler om maskinindlæring, betyder det ikke, at du skal droppe alt og lære det. Det er sådan, han forud for denne fase af sin tale.

Og ja, du kan også lave maskinlæring i JavaScript.

"Python er kongen for maskinindlæring. Men selv med JavaScript har du TensorFlow.js, du har Brain.js til at oprette neurale netværk og lave nogle rigtige seje ting."

Det fremgår tydeligt af den måde, han taler om Web Assembly på, at han er ret begejstret for det.

"Websamling er stadig i sine tidlige faser, men jeg tror, ​​vi kommer til at se mere af det i år. Traditionelt bruger vi JavaScript på websiden til at manipulere DOM og køre beregninger. JavaScript har begrænsninger med hensyn til hastighed. Et sprog ligesom C eller C ++ er meget hurtigere end JavaScript. Så websamling er en effektiv byte-kode på lavt niveau, der kan udføres af en browser, og den er ekstremt hurtig. Den kan genereres af sprog som C, C ++ og Rust. "

Rust er et af de sprog, du kan bruge med WebAssembly (ud over C og C ++). Det er betydeligt lettere at lære og bruge end C og C ++.

Men det er vigtigt at bemærke, at WebAssembly ikke undskylder dig for at skulle lære JavaScript.

"Du kan næsten tænke på JavaScript som chefen, og det kan fortælle Web Assembly, hvad vi skal gøre. Så det giver os mulighed for at bruge rigtig hurtige lavniveausprog som C ++ i vores webapps, og dette giver os meget flere muligheder - som næste niveau videospil og videoredigeringsværktøjer lige i browseren - ting der er utænkelige med bare JavaScript. "

Til sidst siger han: "Jo mere du lærer, jo lettere er det at lære mere og at passe alle disse teknologier sammen. Prøv ikke at blive overvældet. Tag det et skridt ad gangen og lav lidt research og find ud af hvad du vil gøre. "

Igen vil jeg takke Brad Traversy for at sammensætte denne omfattende video.

Folk spørger mig hele tiden "hvad skal jeg lære, hvis jeg vil blive webudvikler?" Og mit svar er "brug bare freeCodeCamp som din grundlæggende læseplan, og forgren dig til andre læringsressourcer, mens du går."

Og jeg er glad for at kunne sige, at Brads Traversy Media YouTube-kanal er en af ​​de ekstra ressourcer, som jeg anbefaler stærkt.