Lærdomme fra min rejse som en selvlært udvikler

Den selvlærede udviklers sti er hård og fyldt med usikkerhed. Der er ingen lige linje fra nybegynder til karriereprogrammerer. På grund af dette tror jeg, at alle selvlærede udviklere har en unik historie at fortælle.

I denne artikel deler jeg min koderejse gennem en række lektioner, jeg har lært undervejs. Forhåbentlig læser jeg om min erfaring med at lære mig selv at kode, vil hjælpe dig med at reflektere over din egen fortid og motivere dig til at komme videre.

Lektion 1: Fokus på processen

Da jeg først begyndte at lære at programmere, havde jeg aldrig den hensigt at lave en karriere ud af det. Jeg ville bare lave en bestemt app.

Min rejse startede, da jeg var senior på college. Jeg er lige færdig med Richard Bransons biografi, og jeg læste sandsynligvis for meget TechCrunch. Jeg blev pumpet fuld af iværksætterenergi.

Jeg læste konstant om, hvordan universitetsbørn modtog store mængder investering for deres ideer til mobilapp. Jeg troede, jeg kunne være en af ​​disse universitetsbørn.

En dag, mens jeg gik mellem klasser, ramte en app-idé mig. Jeg blev hurtigt overbevist om, at jeg havde fundet den næste store ting.

Jeg blev fortæret af ideen og holdt op med at være opmærksom på foredrag. Min begejstring for appideen voksede hurtigt til det punkt, hvor jeg følte, at jeg var nødt til at gribe ind.

Der var et stort problem. Min idé var en mobilapp, og jeg kendte ikke nogen, der kunne bygge mobilapps.

Så jeg tænkte, "hvad fanden, hvor svært kunne programmering være?" Jeg mistede interessen for min major og brugte meget tid på at spille Xbox. Jeg kunne bruge noget af min fritid på at opbygge min mobilapp-idé.

Undertiden at være naiv hjælper dig med at handle, når du normalt ikke ville.

Jeg var universitetsstuderende uden programmering, forretning eller designerfaring, da jeg prøvede at lære Android, så jeg kunne opbygge en kompleks mobilapp. Jeg antager, at det er hvad du får, når du blander en stor idé med Silicon Valley-hype-maskinen.

Jeg ville ønske jeg kunne fortælle dig, at tingene gik godt herfra.

Jeg købte et par bøger om Android-udvikling og tilbragte utallige timer på mit værelse til at forsøge at duct-tape min app sammen. Jeg var ligeglad med, hvordan appen fungerede, jeg ville bare have et færdigt produkt.

Tiden gik, og appen blev til en Frankenstein med kopi og indsat kode. Appen havde ikke mange funktioner, og den løb næppe uden at gå ned.

Det var først, da jeg ved et uheld kom ind i en datalogikurs, at jeg indså, at jeg skulle fokusere mere på faktisk at prøve at lære softwareudvikling.

Min manglende evne til at programmere får mig til at opgive min oprindelige appidé. Jeg ville indse, at jeg ikke ville lave den næste store ting, i det mindste ikke endnu.

Over tid korrigerede jeg min opførsel og tog læring mere alvorligt. Jeg begyndte at nyde programmeringen og startede til sidst en karriere som softwareudvikler.

Min store app-idé forbrugte mig i lang tid. Det satte mit fokus på slutresultatet snarere end processen med at komme derhen.

Når du bliver for fokuseret på slutresultatet, begynder du at tage genveje. Genveje kan føre til nogle kortsigtede fremskridt, men i det lange løb vil din manglende viden altid indhente dig.

Det er vigtigt at huske, at det at lære noget stort, som programmering, kræver mange små trin. Hvert trin skal behandles med omhu.

At lære nye ting er som at bygge et hus. Du starter med fundamentet og bygger op. Hvis fundamentet er defekt, vil det hele smuldre ned før eller senere.

Nogle gange kræver det, at du bygger et stærkt fundament, at du sænker farten. Der er ingen skam ved at gå langsomt. De mennesker, der forstår det grundlæggende første gang, ender med at komme foran de mennesker, der er nødt til at gå tilbage og genlære dem.

Der er et gammelt kinesisk ordsprog, der lyder:

"Det er bedre at tage mange små skridt i den rigtige retning end at tage et stort spring fremad for kun at snuble bagud."

Det er ikke hvor hurtigt du kan gøre noget, det er hvor langsomt du kan gøre det korrekt.

Jeg var et perfekt eksempel. Udefra så det måske ud som om jeg var et programmerings-whiz-barn. I virkeligheden kunne jeg ikke oprette en app for at redde mit liv.

Fokuser på processen, og du vil overraske dig selv med, hvor mange fremskridt du gør hver dag.

Lektion 2: Stakoverløb er fantastisk (men farligt)

Da jeg byggede min killer-app, blev Stack Overflow min bedste ven.

Hver gang jeg sidder fast, prøver jeg at sammensætte et perfekt spørgsmål til at stille Stack Overflow-samfundet. Jeg gennemsnitede et par spørgsmål om dagen.

Ikke kun ville jeg stille spørgsmål, men jeg ville også behandle svarene på Stack Overflow som et evangelium. Jeg ville bruge en skør mængde tid på at søge på siden for at prøve at finde et nøjagtigt stykke kode, der ville løse mit problem.

Da jeg fandt et passende svar, ville jeg kopiere og indsætte det lige ind i min codebase og forsøge at få det til at fungere med min eksisterende kode. Jeg brugte lidt tid på at forstå koden, jeg tilføjede.

Jeg lavede brute-force trial and error til en ny kunstform.

Denne proces fortsatte et stykke tid, indtil jeg til sidst blev klar over og indså manglerne ved min tilgang.

Stack Overflow er en velsignelse og en forbandelse. Det er fantastisk at hjælpe dig med at løse problemer - men hvis du ikke er forsigtig, kan du hurtigt blive afhængig af hjemmesiden.

Nogle gange er webstedet for god til at løse problemer. Det skaber en falsk følelse af selvtillid, der kan føre til mere hovedpine på vejen.

Stack Overflow viser dig, hvordan du får noget til at fungere, men det fortæller normalt ikke eksplicit, hvorfor det fungerer.

At forstå, hvordan det er vigtigt. Fejl skal rettes, og kode skal køre.

At forstå, hvorfor noget fungerer, er dog, hvad der hjælper dig med at anvende viden igen i fremtiden.

Det er ligesom citatet ...

"Giv en mand en fisk, og du giver ham en dag. Lær en mand at fiske, og du giver ham et liv."

Kopiering og indsættelse af kode fra Stack Overflow er som at give nogen en fisk. At forstå, hvorfor et kodestykke fungerer, er som at lære dem at fiske.

Der er ikke noget galt med at kopiere og indsætte kode. Vi gør det alle sammen. Det er kun et problem, når det bliver en krykke og stunter vores vækst som udvikler.

Det, jeg måtte lære på den hårde måde, var, at det er umuligt at lære noget, hvis svarene konstant bliver givet til dig. Der er ingen genveje i læringsprocessen.

Når du sidder fast, skal du prøve at løse dit kodningsproblem mindst et par gange, før du går til Google.

Når du finder dig selv i at kopiere og indsætte kode, skal du bruge lidt tid på at prøve at forstå kodestykket, inden du går videre.

Lektion 3: Lær hvordan du finder erfaren hjælp

Den første ting, jeg gjorde, efter at jeg besluttede, at jeg ville lære programmering, var at købe to Android-udviklingsbøger.

I starten fulgte jeg øvelserne i bøgerne nøje og arbejdede igennem eksempelprojekterne. Imidlertid blev jeg hurtigt frustreret over de fremskridt, jeg gjorde efter bogen, og besluttede at gå ud og finde ud af, hvordan jeg kunne programmere alene.

Som du har læst ovenfor, resulterede det langsomt i katastrofe.

Jeg tilbragte utallige timer isoleret på mit værelse og prøvede at finde ud af enkle programmeringsproblemer. Jeg sad fast på hver nye linje kode, og det føltes ikke som om jeg gjorde meget fremskridt.

Jeg sad hjælpeløst fast, og mit liv var en cocktail af tvivl, frustration og en overvældende følelse af at være tabt.

For at gøre tingene værre havde jeg den lyse idé at begynde at bruge et massivt C-bibliotek kaldet FFMPEG. Min app havde brug for at redigere videoer, så jeg syntes, det var en god ide at udnytte bibliotekets robuste funktionalitet.

Det var ikke mit smarteste træk, i betragtning af på det tidspunkt kunne jeg næppe få min Android-app til at fungere.

Jeg spildte meget tid på at prøve at læse C-koden og finde ud af, hvordan jeg kunne bruge den i min app. Jeg kæmpede for endda at få biblioteket importeret til mit Android-projekt. Android-koden og C-koden ville ikke spille pænt.

Efter mange timers komme udenfor blev jeg til sidst frustreret og forlod biblioteket.

Omkring samme tid som FFMPEG-debaklen tilmeldte jeg mig en objektorienteret programmeringsklasse. Jeg er ærligt talt ikke sikker på, hvordan jeg kom ind. Jeg fandt senere ud af, at jeg var den eneste ikke-datalogiske major i klassen. Jeg tror, ​​der var en fejl i tilmeldingssoftwaren.

Den første opgave var at opbygge et Blackjack-program. Jeg havde undervist mig selv i programmering i 5-6 måneder på dette tidspunkt, og jeg følte mig noget selvsikker med mine færdigheder.

Jeg afsluttede opgaven og følte mig godt om mit arbejde.

Det tog ikke lang tid, før den følelse forsvandt.

Hele mit program var skrevet i en enorm metode. Næsten alle andre i klassen kunne opfange det faktum, at programmet skulle opdeles i klasser.

Ikke godt.

Heldigvis tillod klassearbejdet og vejledningen fra læreren mig at tage et skridt tilbage fra min Android-app og reflektere over mine programmeringsevner. Jeg begyndte at værdsætte læring og regerede tilbage mine ønsker om at lave en færdig app.

Jeg er nu klar over, at hvis jeg bare havde talt med en erfaren udvikler i de tidlige dage, ville de have set, hvad jeg lavede. Jeg kunne have sat mine prioriteter lige og talt noget fornuft ind i mig. De ville have hjulpet mig med at rette op på min sti, da jeg gik ned på ubrugelige blindgange (som at prøve at arbejde med FFMPEG).

I stedet isolerede jeg mig delvis fra verden, fordi jeg følte, at der ikke var nogen, der kunne hjælpe mig.

Isolation er et tveægget sværd. På den ene side hjælper det dig med at fokusere på den aktuelle opgave. På bagsiden fjerner det dig fra verden og sulter dig af vigtig feedback.

Der var mange måder, jeg kunne have fundet hjælp på. Jeg kunne have prøvet at finde en professor / studerende ved universitetet med Android-oplevelse eller kigget til lokalsamfundet for at få hjælp. Jeg kunne også have prøvet at finde et online Android-community.

Erfarne udviklere er som et kompas. De bringer dig ikke til din destination, men de sørger for, at du bliver peget i den rigtige retning. Deres hjælp kan ofte være forskellen mellem succes og fiasko.

Sørg for at søge vejledning, uanset hvor du kan finde den. Det sparer tid og frustration på vejen.

Lektion 4: Lav dit miljø

Dette var måske det eneste, jeg følte, at jeg gjorde lige, da jeg lærte mig selv at programmere.

I hele mit liv har jeg været rigtig dårlig til at studere til prøver eller lave mine lektier derhjemme. Der er bare for mange distraktioner på et givet tidspunkt. Jeg forsøgte ofte at finde tilflugt i biblioteker eller kaffebarer.

Heldigvis anvendte jeg denne regel, da jeg lærte mig selv at programmere.

Jeg endte med at blive fast hos et par lokale kaffebarer. Jeg foretrak kaffebarer frem for andre undersøgelsessteder, fordi de gav en række variationer, og det er let at skjule (let adgang til koffein gør heller ikke ondt).

Hvis jeg studerede derhjemme, sørgede jeg for, at min dør var lukket, og mine værelseskammerater vidste, at de ikke forstyrrede mig i en bestemt periode.

Uanset hvor jeg var, ville jeg sørge for, at min musik var høj nok, så jeg ikke kunne høre, hvad der foregik omkring mig.

Jeg kan ikke sige, at jeg var perfekt til at finde et distraktionsfrit arbejdsmiljø, men jeg kunne lykkes det meste af tiden.

At have det rigtige arbejdsmiljø er ofte en overset del af læringen.

Fokus er en grundlæggende komponent i hukommelse og erhvervelse af færdigheder. Når du prøver at lære noget nyt, er styrken ved læringen direkte knyttet til intensiteten af ​​dit fokus. Når dit fokus er svagt, vil nye oplysninger være mindre klæbrige, hvilket vil resultere i langsommere læring og mere tid på at studere.

Dit arbejdsmiljø skal være distraktionsfrit og skulle give mulighed for lange uafbrudte fokusstrækninger. Selv med COVID-19, der gør det nødvendigt at arbejde eksternt, er der stadig handlinger, du kan tage for at designe dit læringsmiljø.

Her er et par ting, du kan gøre:

  • Find et sted, hvor folk ikke forstyrrer dig
  • Sæt din telefon i flytilstand
  • Brug en slags tidsbestemt webstedsblokker til sociale medier og nyhedswebsteder
  • Brug hovedtelefoner, og lyt til ikke-distraherende musik (helst en lang afspilningsliste, så du ikke altid skal skifte sange)
  • Undgå tv eller andre meget stimulerende omgivelser
  • Har en notesbog i nærheden for at skrive ned opgaver eller ideer, der dukker op i dit hoved
  • Gør det kendt for menneskerne omkring dig, at du ikke ønsker at blive forstyrret

Kun du kan beslutte, hvor og hvordan du skal skabe dit miljø. Men sørg for at gøre det, for det er det værd.

Lektion nr. 5: Kom ud i verden og mød mennesker

At lande mit første programmeringsjob var en slags tilfældig begivenhed.

Jeg flyttede lige til Omaha, Nebraska, og jeg havde omkring et år med selvlært udvikling under mit bælte.

Jeg kendte meget få mennesker i Omaha, så jeg søgte på Meetup.com for at prøve at finde andre mennesker, der er interesserede i Android-udvikling. Jeg fandt et Meetup med fokus på mobiludvikling, der dækkede både iOS- og Android-udvikling, og jeg besluttede at gå.

At gå til det første møde var nervepirrende. Jeg tilbragte ca. 10 minutter i min bil på lokalet og besluttede, om jeg skulle gå ind eller køre.

Jeg blev skræmt. Jeg var ikke sikker på mine programmeringsfærdigheder, og jeg vidste, at alle på Meetup havde meget mere erfaring end jeg gjorde.

Til sidst sagde jeg, skru det ind og gik ind.

Det er jeg glad for.

Jeg begyndte at deltage regelmæssigt og under et møde, ikke så længe efter jeg flyttede til Omaha, mødte jeg en rekrutterer, der ledte efter en Android-entreprenør. Vi talte et stykke tid, og jeg fik et interview til jobbet senere den uge.

Før interviewet følte jeg mig selvsikker. Under interviewet var jeg en hjort i forlygterne.

Intervieweren talte om det projekt, jeg ville arbejde på, og det hele gik lige over mit hoved. Jeg forsøgte at forblive forlovet, men de kunne fortælle, at det var uden for min rækkevidde.

Efter interviewet bad de mig om at være i en time, så jeg kunne tale med en anden. Da jeg vidste, at jeg blæste det, gik jeg rundt i centrum og forsøgte at rydde hovedet.

Jeg endte med at interviewe med en anden i virksomheden, og kort tid efter tilbød de mig en praktikophold.

Jeg var så chokeret, at efter at jeg havde underskrevet al papirarbejde og fået min bærbare pc til at køre, gik jeg over til administrerende direktør og spurgte, om det var en betalt praktikplads eller ej.

Praktikken blev til et fuldtidsjob, og jeg startede min karriere som softwareudvikler.

Når du er selvlært, kommer folk ikke til at søge dig. Du bliver nødt til at finde muligheder for dig selv.

Kandidater fra fireårige universiteter og kodeskoler har fordelen ved at udnytte deres skoles netværk, når de finder et job. Selvlærte udviklere har ikke denne luksus.

Selvlærede udviklere bliver nødt til at gå ud i verden og selv opbygge deres netværk.

Koldopkald til arbejdsgivere og udsendelse af CV'er kan fungere. Jeg har dog fundet folk som at ansætte folk, der er tæt på dem i deres sociale netværk.

Websteder som Meetup.com er gode til at finde månedlige programmeringsspecifikke grupper. Selv i en pandemi er der stadig mange virtuelle Meetups, der er meget informative og gavnlige.

Der er også andre Slack-kanaler eller Discord-samfund, som du kan udnytte for at skabe meningsfulde relationer. Du kan også prøve at nå ud til forskellige mennesker i dit område og bede om at få en hurtig 15-minutters virtuel kaffe med dem.

Gør hvad du kan for at opbygge nerven for at nå ud og tale med mennesker. Vær venlig og tal med dem om dine oplevelser. Sørg for, at folk kender dit langsigtede mål om at finde et job.

Sæt dig selv i situationer, hvor der kan ske noget positivt. Du kan ikke vinde lodtrækning, hvis du aldrig køber en billet.

Overvej enhver mulighed, der kommer din vej, for selvom det ser ud som en blindgyde, har det potentialet til at føre til noget større.

Min praktik var en enorm nedskæring til de andre tilbud, jeg havde dengang. Jeg vidste dog, at hvis jeg arbejdede hårdt, ville det være en mulighed for mig at bryde ind i den tekniske industri.

Nøglen er at tænke på jobmuligheder på lang sigt. Praktikophold eller deltidsjob giver dig muligvis ikke den ønskede løn på forhånd, men de kan muligvis åbne døre i fremtiden.

Jeg håber, du lærer af mine fejl og laver spændende egne fejl

Som du kan se, lavede jeg en masse fejl i min rejse med at blive en selvlært udvikler.

At lære dig selv at kode er aldrig en lige vej. Alle vores historier er unikke.

Nøglen er at fortsætte og undgå at blive modløs, når tingene ikke går din vej.

Jeg opfordrer andre selvlærede udviklere til at dele deres historier. Ikke kun vil de give værdifuld indsigt, men de vil også hjælpe med at skinne et lys på de unikke stier, vi har taget.

Forhåbentlig vil min historie og de erfaringer, jeg har lært, hjælpe dig med at komme videre.

Tak for læsningen. Hvis du vil høre om andre indsigter, jeg har lært undervejs, skal du følge min konto Zero to Programmer på Twitter. Mit mål er at hjælpe dig med at lære programmering mere effektivt.