Mine beste tips for nye utviklere: råd fra en (for det meste) selvlært programvareingeniør

Det vanligste spørsmålet jeg får fra blogglesere er "Hva er ditt råd til nye programmerere?" Så jeg trodde det var på tide å skrive opp tankene mine.

Jeg vil skrive opp hele historien min i fremtiden, men jeg tok to informatikkundervisning på college. Deretter fikk jeg et internat innen programvareteknikk like etter. Jeg begynte å gjøre webutviklingsarbeid. Til å begynne med jobbet jeg på backend og deretter til slutt på frontend. Høgskolen min lærte definitivt ikke webutvikling i de første datavitenskapene, så jeg lærte meg selv.

Jeg tror ikke historien min er unik. Alle programmerere er selvlærte til en viss grad, enten de er fullstendig selvlærte eller har en master i informatikk. Alle har lært seg selv noe som RegEx underveis. Faktisk kan selvlæring være en av de viktigste ferdighetene du kan ha som utvikler.

I tillegg til min egen erfaring, lærer jeg også folk å kode som min primære jobb og for organisasjoner jeg er frivillig med. Så denne artikkelen trekker også på den erfaringen.

Så her er tipsene mine for å komme i gang.

Mine tips for nye programmerere

1. Ha din grunn, og husk den

Hvis du vil begynne å programmere, må det være en grunn til det. Den grunnen kan være at du er glad i å skrive kode eller at du vil ha en mer lukrativ karriere. Det kan være at du gjør en haug med Excel-arbeid, og du vil gjøre det mer effektivt.

Følg med på den grunnen. Programmering er vanskelig, og du vil bli frustrert noen ganger. Det er viktig å huske den grunnen og holde seg til den. Du kan legge en klistrelapp på datamaskinen eller en lapp på startskjermen. Eller (som meg) skriv det på speilet ditt med en tørr slette markør.

2. Bygg et solid fundament

Dette kan være et mindre vanlig råd, men jeg synes det er veldig nyttig. Før du ikke begynte å skrive kode, hvis du ikke har sett på matematikk på en stund, ville jeg se på konseptene fra Algebra 1. Programmering bygger på Algebra 1-matematikk, som funksjoner og variabler. Å forstå disse konseptene utenom programmering vil være ekstremt verdifullt i fremtiden. Jeg anbefaler Khan Academys Algebra 1-kurs!

la x = 1; // konseptuelt det samme som algebraiske variabler!
funksjon legg til (x, y) {// det samme som algebraiske funksjoner!
  retur x + y
}

3. Finn et fellesskap

Det vil være nyttig å finne et fellesskap som kan støtte deg når du begynner å skrive kode. Dette fellesskapet vil være verdifullt, fordi andre mennesker vil være på samme sted som deg. De kan tilby ressurser som hjalp dem og tilby oppmuntring.

Jeg vil foreslå å finne et møte i ditt område som den beste løsningen her. Selv små byer har en tendens til å ha en gruppe noe i nærheten. Hvis det ikke er en, vil jeg foreslå dev.to og CodeNewbie-samfunnet som to gode alternativer. CodeNewbie har en ukentlig Twitter-chat, en Slack-gruppe og podcaster å lytte til. Dev.to har en haug med blogginnlegg og en #diskuss-kode der du kan legge inn spørsmål.

4. Del opp problemene i mindre

En av de viktigste delene av programmering er å ta et stort problem og dele det opp i mindre og mindre biter til disse brikkene er løsbare. Hvis du ser på en tom tekstredigerer som ikke vet hvor du skal starte, kan det være fordi du ikke har brutt ned problemet nok!

5. Pseudokode

Når det gjelder forrige punkt, er det mange ganger fordelaktig å skrive ned hva du prøver å gjøre med enkle ord i detalj før du prøver å skrive kode. Denne prosessen kalles pseudokoding, og den kan ta hvilken form du vil ha den. Det kan også være nyttig å løse et problem veldig sakte på papir først. Du tenker på eller til og med skriver ned de individuelle trinnene du skal ta for å løse det problemet.

// hvis brukeren har mer enn ti poeng
// vis "vinner" på siden
// ellers
//     Fortsett å spille

6. Omfavn læringssyklusen

Hvis du lærer å kode som en annen karriere, spesielt hvis du har vært borte fra klasserommet på en stund, vil lære å lære bli en stor del av prosessen din. Det er mange opp- og nedturer involvert, noe som er veldig naturlig! Jeg ville støtte deg for den berg-og-dalbanen før du starter.

7. Start med gratis ressurser

Det er en million ressurser for å lære å kode. Noen er gratis, og noen blir betalt. Jeg ville begynne med de gratis ressursene. Forsikre deg om at du liker å skrive kode først. Så etter det, kan du tenke på å flytte til betalte ressurser eller til og med en bootcamp.

8. Finn din nisje

Det er mange verdener innen programmering, så prøv å finne en verden du er glad i og fokuser på den. I stedet for å prøve å lære åtte programmeringsspråk, frontend og backend, kompilert og tolket språk, alle tekstredigerere, utviklerverktøy, og så videre, finn et par ting du virkelig er interessert i og bli gode på dem.

9. Bli god til mønstergjenkjenning

Å gjenkjenne mønstre i kode er en av de viktigste ferdighetene du kan ha. Når folk snakker om å skrive "DRY" -kode (dvs. ikke gjenta deg selv), snakker de om å redusere mønstrene i koden din. Jeg anbefaler spillet Sett for mønstergjenkjenning - du kan til og med spille online hver dag på New York Times ’nettsted!

// ikke TØRKode
la reversedString = string.split (""). revers (). bli med ("")
la reversedString2 = string2.split (""). revers (). bli med ("")
// renere kode
const reverse = string => string.split (""). reverse (). bli med ("")
la reversedString = revers (streng)
la reversedString2 = reverse (string2)

10. Lag gode vaner tidlig

Det vil være lettere å skrive ren kode i fremtiden hvis du kommer i vanen tidlig. Dårlige vaner kan være vanskelig å bryte. Her er tipsene mine for å skrive renere kode. Hvis du driver med webutvikling, kan du kjøre HTML- og CSS-validatorer på koden din fortelle deg nøyaktig hva du skal fikse!

// Ikke bra
funksjon avg (a) {
  la s = a.reduce ((x, y) => x + y)
  retur s / a.length
}
// Mye bedre!
funksjon sumArray (matrise) {
  return array.reduce ((antall, gjeldende sum) => antall + gjeldende sum)
}

funksjon gjennomsnittArray (matrise) {
  return sumArray (array) / array.length
}

11. Identifiser læringsstilen din

Alle lærer annerledes. Enten du er en visuell, lyd eller kinestetisk elev, lærer du annerledes enn den neste personen. Identifiser hvordan du lærer best, og stole på ressurser som passer den stilen godt. For eksempel lærer jeg best av å lese dokumentasjonen og kodeeksemplene på den. Jeg mister fokus lett i tutorials.

12. Sliter, men ikke for mye

Det er veldig viktig å slite litt når du lærer. Du ønsker å løse problemet selv og finne et svar ved å bruke ressurser som finnes. Når det er sagt, er det uproduktiv og demotiverende å slite med et problem for lenge. Etter noen timer, ta kontakt med noen for å få hjelp!

13. Bli komfortabel med å mislykkes

Programmering er vanskelig, og å finne det rette svaret vil ikke være øyeblikkelig. Et av de mest sentrale øyeblikkene i min programmeringsreise var å unnlate å skrive en Sudoku-løsning. Det kan være utfordrende å tilpasse seg å ikke få alt med en gang og se de feilmeldingene. Men det er en enorm del av programmeringen.

14. Elsker feilmeldingene dine

Feilmeldinger er veldig nyttige! Når du begynner, kan den røde feilmeldingen være skremmende! Et stort skritt å ta er å lese gjennom disse meldingene, forstå dem og deretter bruke dem til å løse problemet. Faktisk vil du komme til et punkt der et program som lydløst mislykkes, vil være langt mer irriterende enn en nyttig feilmelding.

Python feilmelding

15. Noen programmeringsspråk er enklere enn andre

Det er ikke et riktig svar for hvilket programmeringsspråk du skal lære først. Noen vil være lettere å plukke opp. De tre beste er Python, Ruby og JavaScript. Jeg liker dem fordi de har et stort samfunn bak seg, har mer enkel syntaks og blir tolket, slik at du ikke trenger å gå gjennom en samleprosess.

16. Du trenger ikke å vite alt

Det er 100% umulig å vite alt om programmering. Ingen kjenner hvert programmeringsspråk, hver eneste metode som er der ute, hvert bibliotek og rammeverk, eller den perfekte løsningen på alle problemer. Ikke bekymre deg for å lære alt, bare fokuser på det du vet og utvid det.

17. Fokuser på dybde over bredde

Å lære en ting i dybden er bedre enn å lære litt om mange ting, spesielt først. Den dyptgående kunnskapen vil overføre og gjøre det lettere å lære det neste. Ta på deg blindene, så du ikke blir fristet til å slippe det du lærer og flytte til noe nytt.

18. Fokuser på det grunnleggende først

Grunnleggende for programmering er uvurderlige. Du vil bruke dem uansett hva du ender opp med å programmere. Fokuser på å ha en solid kunnskap om løkker, kondisjoner, funksjoner, datatyper og (på de fleste språk) objektorientert programmering før du går videre til å lære om det fantastiske biblioteket som alle snakker om.

Det vil være så mye lettere å lære det biblioteket når du først kjenner det grunnleggende. De vil også overføre fra språk til språk, så du trenger bare å lære dem en gang. Etter det er det bare syntaks!

19. Bli flink til å løse problemer

Problemløsing er grunnlaget for programmering! Å bli bedre på dette er kritisk. Å løse gåter, skrive kode på papir og bryte problemer kan virkelig hjelpe med problemløsing.

Noe jeg noen ganger ser med nye utviklere er at de tilnærmer seg programmering som et forskningsproblem i stedet for et problemløsningsprosjekt. Hvis de googler noe godt nok, har de en løsning. Ja, Google og Stack Overflow er veldig hjelpsomme, men stole på deg selv noen ganger også. Prøv noe på noen forskjellige måter før du undersøker det. Eller undersøk små deler av problemet i stedet for selve problemet - dvs. "gjør en streng til et array JavaScript" i stedet for "reverse string JavaScript."

20. Bli flink til å forske

Noe av det største du kan lære er å finne gode svar på spørsmålene dine eller lære nye funksjoner på språket eller biblioteket ditt. Det er viktig å bruke Google, det er også å bli med i fellesskap og abonnere på ressurser. Google-malen jeg vanligvis bruker er “problemspråk / rammeverk / bibliotek” i så få ord som mulig og uten fyllstoff. Så "sorter array JavaScript", "spin element CSS" eller "create router Vue."

21. Bygg prosjekter du er glad i

Når du lærer, bygger du forskjellige prosjekter for å øve (og vise frem) ferdighetene dine. Velg prosjektideer som er interessante for deg - det er mye mer sannsynlig at du blir ferdig med dem og vil legge arbeid i dem. Relatert: fullfør prosjektene. Noen få virkelig gode ferdige prosjekter er langt mer imponerende enn en haug med halvferdige!

22. Sammenlign deg bare med deg selv

Det er mange som lærer å kode der ute. Ikke sammenlign fremgangen din med andres. Sammenlign i stedet deg med tidligere deg og fokuser på din egen vekst.

23. Gjør en haug med kodeutfordringer

Å gjøre raske kodeutfordringer kan virkelig bidra til å styrke grunnleggende. De er ypperlige til problemløsing og øving til intervjuer. Jeg legger ut en på Twitter hver dag med hashtaggen #CodingPuzzle hvis du vil at noen andre skal løse dem med!

"""
Finn elementet i en matrise som bare oppstår en gang
fra https://www.hackerrank.com/challenges/ctci-lonely-integer
"""
fra samlinger importerer Counter
def lonely_integer (a):
    a_counter = Teller (a)
    for l, tell i a_counter.items ():
        hvis telle == 1:
            retur l

24. Feir gevinsten din

Å lære å programmere kan være en veldig vanskelig prosess, så når du oppnår noe, selv om det er lite, feir det! Jeg holder rede på gevinstene mine i Google Keep, så hvis jeg har en dårlig dag, kan jeg komme tilbake til disse gevinstene og huske dem.

25. Programmering er kjempebra

Programmering er veldig kult fordi du får bygge ting. Jeg kommer alltid tilbake til dette Sandi Metz-sitatet:

De av oss som jobber med å skrive programvare er utrolig heldige. Å bygge programvare er en skyldfri glede fordi vi får bruke vår kreative energi til å få ting gjort. Vi har arrangert livene våre for å ha det begge veier; vi kan glede oss over den rene handlingen med å skrive kode i sikker kunnskap om at koden vi skriver har bruk. Vi produserer ting som betyr noe. Vi er moderne håndverkere, bygger strukturer som utgjør dagens virkelighet, og ikke mindre enn murere eller brobyggere, vi er forsvarlige stolte av våre prestasjoner.
Dette deler alle programmerere, fra den mest entusiastiske nybegynneren til den tilsynelatende skråstilte eldsten, enten de jobber med den letteste oppstarten av Internett eller den mest faste, langtrukket virksomhet. Vi ønsker å gjøre vårt beste arbeid. Vi ønsker at arbeidet vårt skal ha mening. Vi vil ha det moro underveis.
Sandi Metz

Hold kontakten!

Hvis du likte denne artikkelen, er det mye mer hvor den kom fra! Jeg sender ut et nyhetsbrev hver uke med favorittkoblingene mine og det jeg har skrevet den uken. Du kan også følge meg på Twitter for å se innleggene mine når de kommer ut!

Opprinnelig publisert på zen-of-programming.com.