Køreplanen for webudviklere i 2020 - En visuel guide til at blive en frontend-, back-end- eller DevOps-udvikler

Der er mange måder, du kan gå på med at hente de færdigheder, du har brug for for at blive udvikler.

Der er lineære læseplaner, der lærer dig lidt af alt - som freeCodeCamps fulde stack-læseplan.

Og så er der massive lister over færdigheder - og nogle gange lister over ressourcer - du kan bruge til at "vælge dit eget eventyr" gennem læringsprocessen.

En af de bedste kvalifikationslister er Kamran Ahmeds Developer Roadmap, som han regelmæssigt opdaterer.

Dette er ingen almindelig liste over ressourcer. Kamran har omhyggeligt kortlagt alle de færdigheder, han føler er afgørende for at bryde ind i forskellige udviklingsområder.

Jeg har tidligere skrevet om hans køreplan. Og for at fejre os alle halvvejs ind i 2020 vil jeg dele hele hans køreplan her - alle tre.

Det er rigtigt - han har lister over værktøjer og ressourcer, der kræves til følgende stier:

  • Frontend webudvikling
  • Back-end webudvikling
  • DevOps (også kendt som "websteds pålidelighed" - dette er en slags udvikling af den gamle systemadministratorrolle)

De færdigheder, som alle udviklere har brug for uanset deres specialisering

Ud over disse stier anbefaler Kamran også alle, der ønsker at arbejde som udvikler, at lære følgende færdigheder:

Git - Versionskontrol

Git er et kraftfuldt versionskontrolsystem, der fra og med 2020 bruges næsten universelt. Hvis du ikke ved det - ja, det er relateret til GitHub og GitLab, og du kan også lære at bruge disse værktøjer.

Grundlæggende terminalbrug - Bash-kommandolinjen, SSH og andre færdigheder

Dette kan være terminalen på en Mac, en Windows DOS-prompt eller Bash / ZSH. Bemærk, at uanset hvilket operativsystem du bruger, skal du sandsynligvis lære Linux. Selvom du ikke bruger det til dit bærbare / desktop-miljø, vil du næsten helt sikkert bruge det til servere.

Datastrukturer og algoritmer

FreeCodeCamp-læseplanen dækker disse dybtgående. Du vil sandsynligvis lære disse ved at løse mange algoritmeproblemer på freeCodeCamp, CodeWars, Project Euler eller et andet boreside. Jeg personligt anbefaler at gøre dette i enten JavaScript eller Python, men hvis du er klar til en udfordring og har masser af tid på dine hænder, ville det ikke skade, hvis du gør det i C.

En forståelse af, hvordan internettet fungerer: HTTPS og API'er

Der er mange andre begreber, du kan lære. Jeg anbefaler at arbejde igennem et godt kursus i datalogi for at komme i gang. Her er alle Harvards CS50-kursusforelæsninger uden reklamer på freeCodeCamps YouTube-kanal.

Designmønstre, YAGNI, KISS, SOLID

Jeg tror ikke, at begyndere har brug for en dyb forståelse af disse, men det ville ikke skade.

Designmønstre er dybest set tidstestede måder at implementere forskellige typer softwaresystemer og kodningsstrukturer på. Du kan lære disse gradvist, når du skrider frem.

Hvad angår alfabetssuppe, her er hvad disse står for:

  • YAGNI - Ya Ain't Gonna Need It - Filosofien om, at det meste af den kode, du tror, ​​du bliver nødt til at skrive, og de funktioner, du skal implementere, faktisk viser sig at være unødvendig
  • KISS - Hold det simpelt, fjollet! - Jo enklere du holder dine projekter, jo lettere bliver dit liv, når det kommer til vedligeholdelse.
  • SOLID - Dette er et mindesmærke for " Enkelt ansvar, ‌‌Åben – lukket, Liskov-erstatning, Interface-adskillelse, Afhængighedsinversion". Ja - ikke nybegynder ting, men se på dette, hvis du er nysgerrig.

Front End Web Development Roadmap

Kamrans første køreplan fokuserer på frontend webudvikling.

Her er hans frontend-køreplan i sin helhed:

Mine tanker om frontend-køreplanen

Dette er en solid liste over grundlæggende færdigheder.

Som frontend-udvikler vil du helt sikkert arbejde med HTML, CSS og JavaScript - masser og masser af JavaScript.

De eneste ting, jeg synes er unødvendige her:

  • CSS forprocessorer. Disse brug for at være nødvendige, men CSS selv har tilføjet mange af de funktioner, der gjorde disse præprocessorer så nyttige. freeCodeCamp lærer i øjeblikket Sass, men vi er også i færd med at udfase det også.
  • CSS-arkitektur: Jeg synes ikke, det er nødvendigt, medmindre du designer CSS-systemer er en stor del af dit daglige job.
  • Lidt af en nitpick: TypeScript er en lovende måde at reducere fejl og kode med tillid. Vi tilføjer dette til version 7.0 af freeCodeCamp-kerneplanen. Jeg synes, dette burde være endnu mere fremtrædende på køreplanen, men det er der.
  • Websamling er efter min mening en god at have. Udviklere begynder at gøre spændende ting med det, men det tager et stykke tid, før denne teknologi virkelig bliver allestedsnærværende.

Back End Web Development Roadmap

Kamrans anden køreplan fokuserer på back-end webudvikling. Hvis du kombinerer dette med hans frontend-kort, får du en ret god vej til at blive en full stack-udvikler.

Her er hele hans Back End-køreplan:

Mine tanker om Back End Roadmap

Jeg er enig i alt her.

Ja, du skal lære SQL og relationsdatabaser

Jeg vil være stærkt enig i hans anbefaling om, at du lærer en relationsdatabase.

Ja - databaser som MongoDB og Neo4j kan gøre meget for dig og er bedre egnet til visse typer applikationer end relationsdatabaser.

Men du skal stadig lære SQL og forstå, hvordan relationsdatabaser fungerer.

Jeg anbefaler PostgreSQL (som vi bruger til flere projekter på freeCodeCamp), men andre relationsdatabaser er ret ens.

Her er freeCodeCamps gratis 4-timers kursus om SQL, som vil lære dig det grundlæggende.

Og hvis du vil dykke endnu dybere, her er vores gratis 8-timers kursus om relationel databasedesign.

Sådan vælges det rigtige programmeringssprog til back-end-udvikling

Jeg vil også tilføje en note om valg af sprog.

Selvom der er mange sprog - og du stort set kan gøre hvad som helst med ethvert sprog - anbefaler jeg stærkt at lære enten Node.js (JavaScript) eller Python som dit første sprog.

Her er en detaljeret guide til hvilket programmeringssprog, du skal lære først.

DevOps køreplan

Endelig dækker Kamran, hvordan man bliver DevOps eller Site Reliability Engineer. Dette indebærer at arbejde med mange skytjenester og overvåge infrastrukturen.

Her er hele hans DevOps-køreplan:

Mine tanker om DevOps-køreplanen

Linux, Linux, Linux.

Jeg vil også anbefale at arbejde som udvikler først og derefter gradvist komme til at specialisere sig i DevOps.

Her er en hurtig 30-minutters introduktion til DevOps-feltet, der skal give dig en bedre idé om, hvorvidt DevOps er noget, du er interesseret i.

Det er alt. Hvad synes du? Udelod Kamran vigtige færdigheder eller teknologier? Efterlad en kommentar, og lad os hash dette ud.

Også, hvis du har nogen ressourcer, der har fungeret rigtig godt for dig at lære disse færdigheder, skal du dele dem nedenfor som en kommentar.

God kodning!

- Quincy