Mine bedste tip til nye udviklere: Rådgivning fra en (for det meste) selvuddannet softwareingeniør

Det mest almindelige spørgsmål, jeg får fra bloglæsere, er "Hvad er dit råd til nye programmører?" Så jeg troede, det var tid til at skrive mine tanker op.

Jeg vil skrive op min fulde historie i fremtiden, men jeg tog to computervidenskabelige klasser på college. Derefter fik jeg et praktikophold inden for software engineering kort efter. Jeg begyndte at arbejde med webudvikling. Oprindeligt arbejdede jeg på backend og derefter til sidst på frontend. Mit universitet underviste bestemt ikke i webudvikling i de første par datalogi, så jeg lærte mig selv.

Jeg tror ikke, at min historie er unik. Alle programmører er selvlært til en vis grad, uanset om de er fuldt udlært eller har en kandidat i datalogi. Alle har lært sig selv noget som RegEx undervejs. Faktisk kan selvlæring være en af ​​de vigtigste færdigheder, du kan have som udvikler.

Ud over min egen erfaring lærer jeg også folk at kode som mit primære job og for organisationer, jeg er frivillig med. Så denne artikel trækker også på den oplevelse.

Så her er mine tip til at komme i gang.

Mine tip til nye programmerere

1. Har din grund, og husk den

Hvis du vil starte programmeringen, skal der være en grund til det. Denne grund kan være, at du elsker at skrive kode, eller at du vil have en mere lukrativ karriere. Det kan være, at du laver en masse Excel-arbejde, og du vil gøre det mere effektivt.

Hold styr på den grund. Programmering er hårdt, og du bliver undertiden frustreret. Det er vigtigt at have denne grund i tankerne og holde sig til den. Du kan lægge en sticky note på din computer eller en note på din startskærm. Eller (ligesom mig) skriv det på dit spejl med en tør markering.

2. Byg et solidt fundament

Dette kan være et mindre almindeligt råd, men jeg synes, det er virkelig nyttigt. Før du begynder at skrive kode, hvis du ikke har kigget på matematik i et stykke tid, ville jeg genoverveje koncepterne fra Algebra 1. Programmering er bygget på Algebra 1-matematik, som funktioner og variabler. At forstå disse koncepter uden for programmering vil være meget værdifuld i fremtiden. Jeg anbefaler Khan Akademis Algebra 1-kursus!

lad x = 1; // begrebsmæssigt det samme som algebraiske variabler!
funktion tilføj (x, y) {// det samme som algebraiske funktioner!
  returnere x + y
}

3. Find et samfund

Det kan være nyttigt at finde et samfund, der skal støtte dig, når du begynder at skrive kode. Dette samfund vil være værdifuldt, fordi andre mennesker vil være på samme sted som dig. De kan tilbyde ressourcer, der hjalp dem og tilbyde opmuntring.

Jeg vil foreslå, at du finder et møde i dit område som den bedste løsning her. Selv små byer har en tendens til at have en gruppe lidt i nærheden. Hvis der ikke er en, vil jeg foreslå dev.to og CodeNewbie-samfundet som to fremragende alternativer. CodeNewbie har en ugentlig Twitter-chat, en Slack-gruppe og podcasts at lytte til. Dev.to har en masse blogindlæg og et #diskuss-tag, hvor du kan sende dine spørgsmål.

4. Opdel problemer i mindre

En af de vigtigste dele af programmeringen tager et stort problem og opdeler det i mindre og mindre stykker, indtil disse stykker er opløselige. Hvis du ser på en tom teksteditor, som ikke ved, hvor du skal starte, kan det skyldes, at du ikke har fordelt problemet nok!

5. Pseudokode

I relation til det forrige punkt er det mange gange fordelagtigt at nedskrive detaljeret, hvad du prøver at gøre med almindelige ord, før du selv prøver at skrive kode. Denne proces kaldes pseudokodning, og den kan tage den form, du vil have den til. Det kan også være nyttigt at løse et problem virkelig langsomt på papir først. Du tænker over eller endda nedskriver de individuelle trin, du skal tage for at løse dette problem.

// hvis brugeren har mere end ti point
// vis "vinder" på siden
// ellers
//     Spil videre

6. Omfavn læringscyklussen

Hvis du lærer at kode som en anden karriere, især hvis du har været væk fra klasseværelset et stykke tid, vil det at lære at lære være en stor del af din proces. Der er masser af op- og nedture involveret, hvilket er meget naturligt! Jeg ville afstive dig selv til den rullebane inden jeg starter.

7. Start med gratis ressourcer

Der er en million og en ressource til at lære at kode. Nogle er gratis, og andre betales. Jeg vil starte med de gratis ressourcer. Sørg for, at du først kan lide at skrive kode. Derefter kunne du tænke på at flytte til betalte ressourcer eller endda en bootcamp.

8. Find din niche

Der er mange verdener inden for programmering, så prøv at finde en verden, som du elsker, og fokuser på den. I stedet for at prøve at lære 8 programmeringssprog, frontend og backend, kompileret og tolket sprog, finder du alle tekstredaktører, udviklerværktøjer osv., Et par ting, du virkelig er interesseret i og bliver god til dem.

9. Bliv god til mønstergenkendelse

Genkendelse af mønstre i kode er en af ​​de vigtigste færdigheder, du kan have. Når folk taler om at skrive “DRY” -kode (dvs. ikke gentage dig selv) taler de om at reducere mønstre i din kode. Jeg anbefaler spillet Sæt til mønstergenkendelse - du kan endda spille online hver dag på New York Times 'websted!

// ikke TØR-kode
lad reversedString = string.split (""). reverse (). join ("")
lad reversedString2 = string2.split (""). reverse (). join ("")
// renere kode
const reverse = string => string.split (""). reverse (). join ("")
let reversedString = reverse (streng)
lad reversedString2 = reverse (string2)

10. Lav gode vaner tidligt

Det vil være lettere at skrive ren kode i fremtiden, hvis du tidligt kommer ind i vanen. Dårlige vaner kan være svære at bryde. Her er mine tip til at skrive renere kode. Hvis du laver webudvikling, kan kørsel af HTML og CSS-validatorer på din kode fortælle dig nøjagtigt, hvad du skal løse!

// Ikke godt
funktion gennemsnit (a) {
  lad s = a.reduce ((x, y) => x + y)
  return s / a.length
}
// Meget bedre!
funktion sumArray (array) {
  return array.reduce ((antal, nuværende sum) => antal + strømmen)
}

funktion gennemsnit Array (array) {
  return sumArray (array) / array.length
}

11. Identificer din læringsstil

Alle lærer anderledes. Uanset om du er en visuel, lyd eller kinestetisk lærer, lærer du anderledes end den næste person. Identificer, hvordan du lærer bedst, og stole på ressourcer, der passer godt til den stil. For eksempel lærer jeg bedst af at læse dokumentationen og dens kodeeksempler. Jeg mister fokus let i tutorials.

12. Kæmp, men ikke for meget

Det er virkelig vigtigt at kæmpe lidt, når du lærer. Du vil selv løse problemet og finde et svar ved hjælp af ressourcer, der findes. Når det er sagt, er det uproduktiv og demotiverende at kæmpe for et problem for længe. Efter nogle få timer skal du kontakte nogen for at få hjælp!

13. Bliv komfortabel med fiasko

Programmering er hårdt, og at finde det rigtige svar vil ikke være øjeblikkeligt. Et af de mest vigtige øjeblikke i min programmeringsrejse var at undlade at skrive en Sudoku-solver. Det kan være udfordrende at tilpasse sig til ikke at få alt med det samme og se disse fejlmeddelelser. Men det er en enorm del af programmeringen.

14. Elsk dine fejlmeddelelser

Fejlmeddelelser er super nyttige! Når du begynder, kan den røde fejlmeddelelse være forfærdende! Et stort skridt at tage er at læse disse meddelelser, forstå dem og derefter bruge dem til at løse problemet. Faktisk vil du komme til et punkt, hvor et program, der tager fejl, vil være langt mere irriterende end en nyttig fejlmeddelelse.

Python-fejlmeddelelse

15. Nogle programmeringssprog er lettere end andre

Der er ikke et rigtigt svar på, hvilket programmeringssprog man først skal lære. Nogle vil være lettere at afhente. Mine top tre er Python, Ruby og JavaScript. Jeg kan godt lide dem, fordi de har et stort samfund bag sig, har mere ligetil syntaks og er fortolket, så du behøver ikke at gennemgå en kompileringsproces.

16. Du behøver ikke vide alt

Det er 100% umuligt at vide alt om programmering. Ingen kender ethvert programmeringssprog, hver eneste metode der er derude, hvert bibliotek og ramme eller den perfekte løsning på ethvert problem. Du skal ikke bekymre dig om at lære alt, bare fokusere på det, du ved, og udvid det.

17. Fokuser på dybde over bredde

At lære en ting i dybden er bedre end at lære en lille smule om en masse ting, især først. Denne dybdegående viden vil overføre og gøre det lettere at lære den næste ting. Sæt blinderne på, så du ikke bliver fristet til at droppe det, du lærer, og flytte til noget nyt.

18. Fokus først på de grundlæggende

Grundlæggende ved programmering er uvurderlige. Du vil bruge dem, uanset hvad du ender med at programmere. Fokuser på at have et solidt kendskab til loops, conditionals, funktioner, datatyper og (på de fleste sprog) objektorienteret programmering, før du går videre til at lære om det fantastiske bibliotek, som alle taler om.

Det vil være så meget lettere at lære det bibliotek, når du først kender de grundlæggende elementer. De vil også overføre fra sprog til sprog, så du behøver kun at lære dem én gang. Efter det er det bare syntaks!

19. Bliv god til problemløsning

Problemløsning er grundlaget for programmering! At blive bedre på dette er kritisk. At løse gåder, skrive kode på papir og nedbryde problemer kan virkelig hjælpe med problemløsning.

Noget, som jeg undertiden ser med nye udviklere, er, at de nærmer sig programmering som et forskningsproblem i stedet for et problemløsende projekt. Hvis de google noget godt nok, har de en løsning. Ja, Google og Stack Overflow er super nyttige, men stole også nogle gange på dig selv. Prøv noget på et par forskellige måder, før du undersøger det. Eller undersøg små dele af problemet i stedet for selve problemet - dvs. "omdrej en streng til et array JavaScript" i stedet for "reverse string JavaScript."

20. Bliv god til at forske

En af de største ting at lære er, hvordan man finder gode svar på dine spørgsmål eller lærer nye funktioner på dit sprog eller bibliotek. Det er vigtigt at bruge Google, det er også at tilslutte sig samfund og abonnere på ressourcer. Den Google-skabelon, jeg normalt bruger, er "problemsprog / ramme / bibliotek" i så få ord som muligt og uden fyldstof. Så "sorter array JavaScript", "spin element CSS" eller "opret router Vue."

21. Byg projekter, du elsker

Når du lærer, bygger du forskellige projekter for at øve (og vise) dine evner. Vælg projektideer, der er interessante for dig - du vil have meget mere sandsynlighed for at afslutte dem og vil lægge arbejde i dem. Relateret: færdiggør disse projekter. Et par rigtig gode færdige projekter er langt mere imponerende end en masse halvfærdige projekter!

22. Sammenlign dig kun med dig selv

Der er mange mennesker, der lærer at kode derude. Sammenlign ikke dine fremskridt med en andens. Sammenlign i stedet dig selv med tidligere dig og fokuser på din egen vækst.

23. Lav en masse kodeudfordringer

At udføre hurtige kodeudfordringer kan virkelig hjælpe med at styrke de grundlæggende elementer. De er fremragende til problemløsning og øvelse til interviews. Jeg poster en på Twitter hver dag med hashtaggen #CodingPuzzle, hvis du vil have nogen anden til at løse dem med!

"""
Find elementet i en matrix, der kun forekommer en gang
fra https://www.hackerrank.com/challenges/ctci-lonely-integer
"""
fra samlinger importerer tæller
def lonely_integer (a):
    a_counter = Tæller (a)
    for l, tæl i a_counter.items ():
        hvis tælling == 1:
            retur l

24. Fejr dine gevinster

At lære at programmere kan være en virkelig vanskelig proces, så når du udfører noget, selvom det er lille, skal du fejre det! Jeg holder styr på mine gevinster i Google Keep, så hvis jeg har en dårlig dag, kan jeg vende tilbage til disse gevinster og huske dem.

25. Programmering er fantastisk

Programmering er virkelig cool, fordi du får til at bygge ting. Jeg vender altid tilbage til dette Sandi Metz-citat:

De af os, hvis arbejde er at skrive software er utroligt heldige. At bygge software er en skyldfri fornøjelse, fordi vi får brugt vores kreative energi til at få tingene gjort. Vi har arrangeret vores liv for at have det begge veje; vi kan nyde den rene handling ved at skrive kode i sikker viden om, at den kode, vi skriver, har brug. Vi producerer ting, der betyder noget. Vi er moderne håndværkere, bygger strukturer, der udgør nutidens virkelighed, og ikke mindre end murere eller brobyggere, vi er berettigede stolthed i vores resultater.
Dette deler alle programmører, fra den mest entusiastiske nybegynder til den tilsyneladende oversvømte ældste, uanset om de arbejder ved den leteste vægt på internetopstart eller den mest faste, længe forankrede virksomhed. Vi vil gøre vores bedste arbejde. Vi ønsker, at vores arbejde skal have mening. Vi vil have det sjovt undervejs.
Sandi Metz

Hold kontakten!

Hvis du kunne lide denne artikel, er der meget mere, hvor den kom fra! Jeg sender et nyhedsbrev hver uge med mine yndlingslinks og hvad jeg har skrevet den uge. Du kan også følge mig på Twitter for at se mine indlæg, når de kommer ud!

Oprindeligt offentliggjort på zen-of-programming.com.