Hvordan bli en iOS -utvikler i 2021 - En ultimate guide

I denne artikkelen skal jeg gå gjennom hva jeg tror det tar å bli en iOS-utvikler i 2021. 

Jeg sikter dette rett og slett mot to grupper mennesker, absolutte Swift-nybegynnere – folk som aldri har bygget noe for iOS før – og såkalte falske nybegynnere – folk som har prøvd å lære Swift før, men som aldri har oppnådd målet sitt om å få en fulltidsjobb.

Regardless av ditt nåværende nivå, er målet det samme. For å sette deg i stand til å søke om en junior iOS -utviklerrolle i et selskap.

Vi skal se på ferdighetene du bør lære, kursene du kan ta, hvordan du kan koble deg til fellesskapet, vanlige feil folk gjør og mer. 

Best av alt, alt jeg vil diskutere vil være helt gratis, så du trenger ikke betale en krone for å følge med.

Seriøst, altfor mange tror at å bruke mye penger vil sette dem på sporet til drømmejobben, når de viktigste faktorene er besluttsomhet og viljestyrke. 

Her er et hint: Hvis du allerede tenker på å hoppe videre i denne artikkelen, bør du sannsynligvis jobbe med viljestyrken din!

Denne artikkelen er delt inn i syv seksjoner:

  1. Kjerneferdigheter du må ha for å få jobb.
  2. Utvidelsesferdigheter som er fine å ha – de som vil skille deg ut fra mengden hvis du anstrenger deg for å lære dem
  3. Vanlige tabber mennesker gjør når de prøver å lære.
  4. De mange gratis ressursene som er tilgjengelige for å hjelpe deg med å lære Swift.
  5. Hvordan komme i kontakt med iOS -utviklingssamfunnet.
  6. Et estimat på hvor lang tid det vil ta å nå målet ditt.
  7. Du gjør deg klar til å søke din første jobb.

De grunnleggende ferdighetene som kreves for å bli en iOS-utvikler

De grunnleggende ferdighetene som kreves for å bli en iOS-utvikler

Hva er det absolutte minimum av ferdigheter som kreves for å få en jobb i iOS -utvikling? 

Jeg tror det er fem totalt:

  1. Swift 
  2. SwiftUI 
  3. nettverk
  4. Arbeider med data
  5. Versjonshåndtering

Denne listen holdes bevisst kort av en rekke årsaker:

Jo mer du lærer, jo mer innser du at det er å lære, så det er lett å bruke så mye tid på å studere og øve at du mister hovedmålet av syne.

Du vil jobbe som en iOS -utvikler, ikke bare sitte og lære nye ting!

Det er nesten sikkert at du blir med i et team som allerede har en app de vil at du skal være med på å utvikle, så unless Hvis du er ekstremt heldig, må de lære deg en hel masse tingless.

Hvis du prøver å stappe inn en hel haug med ekstra emner på forhånd, kaster du sannsynligvis bort tiden din.

To av disse fem tingene er enorme og kompliserte, og du kan bruke måneder på å prøve å vikle hodet rundt dem uten å begi deg noe annet sted.

Viktigst av alt, hvis du får de fem tingene riktig, kan du lage et stort utvalg av apper. Visst, koden din vil ikke være perfekt, men det er greit fordi den eneste måten å skrive god kode er å først skrive mye dårlig kode.

La meg dele de fem elementene ned i mindre biter.

Læring Swift

Swift er først på listen. Dette er Appleer kjerneprogrammeringsspråket. Den har ingen idé om å vise informasjon på en iPhone-skjerm eller laste ned data fra internett. 

Det er ganske enkelt et språk som ligner JavaScript eller Python. Det er bare ren kode du bruker til å lage variabler, skrivefunksjoner og så videre.

Swift er bare noen få år gammel, så den bruker nesten alle banebrytende språkfunksjoner som er tilgjengelige. 

På den ene siden betyr dette at du kan unngå all den sprø gamle oppførselen som er vanlig på eldre språk som C ++ og Java. Det betyr også at den har en rekke mer avanserte funksjoner som kan forvirre deg i begynnelsen.

Og det er greit. Mange deler av Swift er relativt enkle, mens andre vil ta deg lengre tid å forstå fullt ut, så bare ta deg god tid og fortsett - du kommer dit!

SwiftUI

Den andre kjerneferdigheten jeg nevnte er SwiftUI, som er en Apple rammeverk som lar oss bruke Swift til å lage apper for iOS, macOS, tvOS og til og med watchOS. 

Så, mens Swift er programmeringsspråket, gir SwiftUI verktøyene for utviklere for å lage apper, for eksempel hvordan du viser bilder, tekst, knapper, tekstbokser, datatabeller og mer. 

For å være klar, SwiftUI er ikke en erstatning for Swift – det er et rammeverk bygget på toppen av Swift som lar oss lage apper. Du må kjenne både Swift og SwiftUI for å lykkes.

Hvis du trodde Swift var ny, har du ikke sett noe ennå! 

Så vidt jeg kan se, er SwiftUI bare to år gammel! Til tross for sin ungdom har iOS -fellesskapet omfavnet det helhjertet fordi det er så enkelt å bruke.

Apple har også et eldre rammeverk for å bygge iOS -apper kalt UIKit, og hvis du spør en haug om du bør lære SwiftUI eller UIKit først, får du en rekke svar. 

Jeg synes du bør lære SwiftUI.

Så hvis du lurer på, er det derfor jeg tror du bør prioritere SwiftUI som en kjerneferdighet.

Det er betydelig enklere enn UIKit, og jeg mener betydelig – det krever kanskje en fjerdedel av koden for å oppnå samme resultater som UIKit, og det er færre ting å lære underveis. 

Dette betyr at du får mye fart fordi du kan bygge ting raskere, se resultater raskere og gjenta disse resultatene raskere, noe som er ekstremt motiverende mens du lærer.

Laget for Swift

Laget for Swift

SwiftUI ble laget for Swift, og bruker språkfunksjoner for å hjelpe deg med å unngå problemer og oppnå maksimal ytelse. 

For eksempel, hvis du endrer noen data på én skjerm i en app, vil SwiftUI automatisk sørge for at de nye dataene oppdateres andre steder i appen din som bruker den – du trenger ikke å skrive kode for å holde alt synkronisert selv, som er overraskende komplekst. 

UIKit, derimot, ble skrevet for Appleer eldre språk, Objective-C, og har som et resultat alle slags finesser som skyldes alderen.

SwiftUI er kompatibel med alle Appleplattformer, slik at du kan bruke det du lærte på iOS til å lage en macOS- eller watchOS -app med nesten identisk kode. 

Visst, noen funksjoner, for eksempel Digital Crown, er eksklusive for en enkelt enhet, men de aller fleste av det du lærer vil fungere på hvilken som helst enhet.

Men viktigst av alt, SwiftUI er retningen ting går i. 

Hvis du søkte på en jobb akkurat nå, trenger du sannsynligvis å kjenne UIKit, men det at du leser dette betyr at du er langt videre i prosessen. 

Ja, UIKit er mer populært nå, men SwiftUI vil være det dominerende UI -rammeverket når du er ferdig med å lære det om 6, 9 eller til og med 12 måneder.

Seriøst, verdens største selskaper, inkludert Apple, velger SwiftUI.

Når Apple nylig lanserte widgets i iOS 14, gjorde de det til et krav at du bruker SwiftUI.

Nettverk og datamanipulering

Den tredje og fjerde ferdigheten jeg nevnte var nettverk og datamanipulering. Sammenlignet med Swift og SwiftUI, er disse et stykke kake, eller i det minste på nivået som kreves for å få en junior iOS -utviklerjobb.

Nettverk er praksis for å hente data fra internett eller sende data fra en lokal enhet til en ekstern server. 

Det er mange metoder for å oppnå dette, men det viktigste å forstå er hvordan du henter JSON fra en server.

Og det er her den andre essensielle ferdigheten kommer inn i bildet, å jobbe med data. 

Igjen, det er mange måter å laste og lagre data på, men det absolutte minimum du må kunne gjøre er å konvertere dataene du mottok fra en server ved å bruke nettverkskoden din til informasjon som appen din kan vise.

Så den tredje og fjerde kjerneferdigheten er uløselig knyttet til hverandre. Hent noen data fra en server, og konverter dem deretter til informasjon som kan vises i appen din. Noen utviklere spøker med at å skrive denne typen kode er halve jobben til en iOS -utvikler, og det er absolutt sant at vi stoler sterkt på det.

Version control

Den siste ferdigheten er ikke koding i det hele tatt version control, for eksempel Git. Igjen, du trenger ikke mye her, men det er viktig at du kan publisere koden din et sted offentlig, for eksempel GitHub, slik at rekrutterere kan se arbeidet ditt.

Ingen i verden forstår virkelig hvordan Git fungerer, men det er greit – du trenger bare å vite nok av det grunnleggende for å lagre dataene dine trygt og samarbeide med andre.

Så når de fem legges sammen, er det to massive - Swift og SwiftUI - samt tre mindre, men viktige. 

Hvis du bare kan fokusere på de fem tingene uten å bli distrahert, er du godt i gang med din første iOS -utviklerjobb.

Det er det: det er de fem essensielle ferdighetene jeg tror du trenger for å være en iOS-utvikler. 

Det er tusenvis av mennesker som bare har disse ferdighetene og kan bygge og sende fantastiske apper på App Store.

Hva kommer etter det grunnleggende

Hva kommer etter det grunnleggende?

Når du har mestret de fem kjerneferdighetene, kan du sende dine egne apper og jobbe som en indieutvikler, samt søke om yngre iOS -utviklingsstillinger og jobbe for et selskap hvis det er det du vil gjøre. 

Det er ingen andre spesielle kvalifikasjoner som kreves - bare spik disse kjerneferdighetene, så går det bra.

Men hvis du har mestret disse ferdighetene og vil gå videre, er det fem flere ferdigheter jeg anbefaler deg å lære. Dette er ferdighetene som driver deg fra en god til en fantastisk stilling - du blir enda mer ansettbar, og utvalget av apper du kan bygge vil utvide seg ytterligere.

Evnene er som følger:

  • UIKit 
  • Kjernedata 
  • Validering
  • Testing
  • Programvarearkitektur
  • multithreading

Som før vil jeg gå mer detaljert over hver av disse, slik at du forstår hvorfor jeg synes de er viktige - og hvorfor jeg tenker på dem som forlengelsesferdigheter i stedet for kjerneferdigheter.

UIKit

Først er det UIKit. Dette er Applesitt eldre rammeverk for brukergrensesnitt, som har blitt brukt til apputvikling siden 2008 – det er 13 år gammelt når jeg skriver dette, som er gammelt i programvaretermer. Men det betyr ikke at UIKit er dårlig. Faktisk, når du blir vant til hvordan det fungerer, vil du bli overrasket over hvor elegant det kan være.

Det er mange grunner til at UIKit er verdt å lære, inkludert:

Hundretusenvis av apper har allerede blitt skrevet i UIKit, så hvis du blir med i et selskap som har en stor, veletablert app, vil du nesten helt sikkert bli pålagt å skrive UIKit-kode for å vedlikeholde den appen.

UIKit er langt kraftigere enn SwiftUI - det er mange ting du kan gjøre i UIKit som for øyeblikket ikke er mulig i SwiftUI.

Ved å bruke Auto Layout -teknologien kan du lage ekstremt presise oppsett.

Hvis du får problemer med koden din, har UIKit flere løsninger enn SwiftUI ganske enkelt fordi den har eksistert i mye lengre tid.

Alt dette får UIKit til å høres fantastisk ut, så hvorfor gjorde jeg det til en utvidelsesferdighet i stedet for en kjerneferdighet? 

Fordi UIKit har problemer også:

Nesten alt er vanskeligere å gjøre i UIKit enn i SwiftUI, med noen oppgaver som krever hundre ganger, om ikke mer, kode. 

SwiftUI ble designet spesielt for moderne iOS-utvikling, så det gjør mye av det tunge løftet for deg.

Fordi UIKit ikke ble skrevet i Swift, har den mange funksjoner som SwiftUI ikke har-mange implisitt upakket tilleggsutstyr, som markerer kode med et spesielt @objc-attributt for å gjøre den tilgjengelig for UIKits Objective-C underbelly, og behovet for å bruke protokoller og delegater for å vise enkle data.

Ingenting om Auto Layout er "automatisk" - faktisk, hvis du noen gang prøver å bygge et komplekst layout, kan du ha mareritt om Auto Layout. Det er ekstremt smart, men det er også ekstremt vanskelig noen steder.

Og dette er grunnen til at jeg anser UIKit for å være en utvidelsesferdighet: det tar betydelig mer tid og krefter å lære enn SwiftUI, noe som betyr at det krever mye mer besluttsomhet – du må virkelig ønske å lære det, ellers blir du forvirret , lei, sint eller potensielt alle tre. 

Visst, SwiftUI har ikke alle funksjonene i UIKit, men det lar deg gjøre raske fremskritt og få fart før du går videre til UIKit.

Håndtering av kjernedata

Håndtering av kjernedata

Kjernedata, Applerammeverket for å jobbe med applikasjonsdata, er den andre utvidelsesferdigheten jeg nevnte. 

Jeg nevnte nettverksbygging og arbeid med data i kjernekompetanse-delen, og det er sant. Med disse ferdighetene på plass, kan du hente det du vil fra en server og vise det i appen din. 

Kjernedata tar det et skritt videre ved å la deg manipulere disse dataene når du har fått dem, for eksempel å søke etter spesifikke verdier, sortere resultatene og mer, alt veldig effektivt. 

Den kan også enkelt koble til iCloud, og sikre at brukernes data er synkronisert på tvers av alle enhetene deres.

Core Data har en rekke ulemper, hvorav den alvorligste er at det ikke alltid er hyggelig å jobbe med. Core Data er nesten like gammel som UIKit, og selv om det fungerte bra i Objective-C, føles det ikke så naturlig i Swift. 

Den integreres godt med SwiftUI, noe som får den til å føles less merkelig, men det er fortsatt et overraskende komplekst tema.

Så hvorfor inkluderte jeg det som en utvidelsesferdighet? Fordi, i likhet med UIKit, er Core Data ekstremt populært - hundretusenvis av apper er bygget med det, og det brukes i mange store og små bedrifter. 

Kjernedata, som UIKit, er ekstremt kraftig, og mens du kunne gjenskape de viktigste delene av det i din egen kode, hvorfor skulle du det?

Tester koden din

Den tredje ferdigheten på listen min over utvidelser er testing. Skrive spesialkode for å sikre at hovedappkoden din fungerer som forventet. 

Tester lar oss sikre at koden vår fungerer riktig, og enda viktigere, at den fortsetter å fungere riktig selv etter at vi har gjort betydelige endringer i den.

For eksempel, hvis du endrer 500 linjer med kode for å implementere en ny funksjon og alle testene dine består, er du klar.

Som et resultat er testing kritisk og vil hjelpe deg med å skrive programvare av høyere kvalitet. 

Så hvorfor betraktes det som en utvidelsesferdighet i stedet for en kjerneferdighet? 

Det er tre grunner til dette:

iOS-fellesskapet som helhet er forferdelig til å teste, uansett historiske grunner. Jeg mener, veldig ille - mange store apper har ingen tester i det hele tatt, og jeg har mistet tellingen av antall senior iOS -utviklere jeg har møtt som nesten er stolte over at de aldri skriver tester. 

Når du tenker på alle de fantastiske tingene du kan lage med Applesine verktøy og rammeverk, virker det ikke som mye moro å skrive tester i sammenligning. 

Personlig liker jeg å skrive tester på samme måte som jeg liker å bruke tanntråd, men jeg vet at mange ikke gjør det, spesielt når de jobber med personlige prosjekter.

Når du søker jobb, kjenne Swift og AppleDe viktigste rammene vil alltid være mer nyttige enn å vite hvordan man skriver tester. 

Selskaper foretrekker at du vet hvordan du bruker SwiftUI, UIKit eller en av de andre store hitters, fordi testing er et mye mindre tema - det er ikke på langt nær så mange ting å lære.

Så testing er viktig, testing er viktig, og jeg vil gjerne lære deg hvordan du skriver gode tester. Men bare etter at du har mestret det grunnleggende for apputvikling - etter at du har lykkes, følt det travelt med å ha appen din live i App Store og mestret testing.

Programvarearkitektur

Programvarearkitektur

Den fjerde utvidelsesferdigheten jeg vil diskutere er programvarearkitektur, som egentlig handler om hvordan vi skriver kode. 

Du kommer til å skrive en forferdelig kode når du først starter – kode så dårlig at det sannsynligvis bryter med Genève-konvensjonen. 

Det er greit fordi det er slik du lærer. Du starter ikke bra - du blir god av å være dårlig lenge, akkurat som LeBron James ikke ble født som en mesterbasketballspiller.

Poenget er at du holder deg til den dårlige koden din til du finner ut hvordan du kan gjøre det bedre. Det er der programvarearkitektur kommer inn. Ser på velprøvde teknikker for å strukturere koden din for å gjøre det lettere å lese, bruke, endre og vedlikeholde i det lange løp. 

Disse teknikkene er noen ganger avhengige av måten Swift fungerer på - språkfunksjoner som kan brukes til å skrive bedre kode. 

Imidlertid er det mange andre teknikker som fungerer i et hvilket som helst programmeringsspråk, og som ofte refereres til som designmønstre.

Et viktig aspekt ved denne ferdigheten du bør begynne å lære er hvordan du bryter koden din. 

For eksempel, hvis du oppretter en enkelt skjerm i appen din, kan den inneholde en påloggingsknapp, et bildegalleri og en venneliste. 

Imidlertid bør du helst skille hver av disse delene - en påloggingsknappkomponent, en bildegallerikomponent og en vennelistekomponent - slik at du kan gjenbruke noen av disse komponentene i andre deler av appen din.

Programvarearkitektur er langt mer subjektiv enn de andre ferdighetene jeg har diskutert så langt. For de andre, for eksempel SwiftUI, kan du resonnere: "Vel, jeg vet hvordan jeg gjør X, Y og Z, så jeg er sikker på at jeg er en god SwiftUI -utvikler."

 Programvarearkitektur er et veldig bredt tema, og det er ofte ingen åpenbar "riktig" måte å løse et problem på, så jeg tror den beste målestokken for det er dette: ser du tilbake på koden din for seks måneder siden, for et år siden og så videre.

Igjen, å skrive dårlig kode er akseptabelt så lenge det kommer deg nærmere å skrive bedre kode. 

Jeg grimas sikkert noen steder når jeg ser tilbake på kode jeg skrev for fem år siden, fordi jeg vet mer nå enn jeg gjorde da - og det er bra.

multithreading

Den siste utvidelsesferdigheten jeg vil diskutere er multithreading, som er praksisen med å få koden til å gjøre mer enn én ting om gangen. 

Multithreading kan være en skikkelig smerte i nakken fordi det er vanskelig for hjernen vår å forstå. Når koden din gjør en ting om gangen, kan vi tenke igjennom det lineært, men når to eller tre ting skjer samtidig, potensielt overlappende, kan det virkelig bøye hjernen din.

Så selv om multithreading er en stor ferdighet å ha som en forlengelsesferdighet, bør du være forsiktig. Målet ditt bør være å forstå akkurat nok av konseptene og koden for å få det til å fungere bra uten å gå for langt. 

For å være ærlig, tror mange utviklere at multithreading umiddelbart vil få koden til å kjøre tre eller fire ganger raskere. 

Selv om dette er sant i noen tilfeller, i mange andre tilfeller, vil koden din faktisk kjøre langsommere, og du må nå håndtere all den ekstra kodekompleksiteten.

Hvis du ikke tror meg, bør du vurdere dette sitatet fra David Smith - Han er medlem av Apple's Swift -team og har tidligere brukt år på å jobbe med selve kjernen i Applesine rammer:

"Min spesifikke anbefaling er at du unngår å skrive asynkron/samtidig kode så mye som mulig. Dette kan virke rart i 2018, men kostnaden i kompleksitet og ytelse er høy.

Så lær litt om hvordan multithreading fungerer i Swift for å demonstrere at du forstår konseptene og implementeringen, men ikke gå for langt! "

Vanlige feil nye iOS -utviklere gjør

Vanlige feil nye iOS -utviklere gjør

På dette tidspunktet har jeg listet opp alle kjerne- og utvidelsesferdighetene jeg tror du må jobbe som iOS-utvikler på heltid. 

Men jeg vil også diskutere noen av de vanligste feilene folk gjør mens de lærer, fordi jeg ser dem hele tiden og vet hvordan de setter folk tilbake.

Det er syv store problemer som folk står overfor, og jeg vil gjerne gå over dem i rekkefølge. 

De er som følger:

  1. Husker alt
  2. Syndrom av det skinnende objektet
  3. Ensom ulv læring
  4. Gjør bruk av beta -programvare
  5. Avhengig Applesin dokumentasjon
  6. Blir fast i Objective-C
  7. Siktet mot andre språk

La oss gå over hver av dem en etter en.

Slutt å prøve å huske alt

Slutt å prøve å huske alt

Det første, og desidert vanligste problemet folk møter, er å prøve å huske alt – å lese gjennom en opplæring og tro at de må huske alt i den utenat. 

Vær så snill, vær så snill, ikke gjør det. Det er en oppskrift på katastrofe og vil tappe all viljestyrken din til et punkt hvor du aldri vil ønske å programmere igjen.

Ingen husker alt. Ingen kommer i nærheten av å huske alt. Selv om du bare vurderer API -ene publisert av Apple, som er kodebitene vi kan bruke til å bygge appene våre, må det være godt over hundre tusen tilgjengelig. 

Selv om du begrenser det til kjernekomponentene i apputvikling, ser du fortsatt på flere hundre – alle fungerer på en veldig presis måte som krever mye læring å bruke.

I stedet lærer du hvordan du gjør noe nytt, og deretter glemmer du raskt hvordan du gjør det igjen. 

Så du slår det opp, bruker det igjen og glemmer det umiddelbart. Så du slår det opp en tredje gang og bruker det, og denne gangen glemmer du det stort sett – noen deler blir med deg. 

Denne syklusen fortsetter i det uendelige, med du må referere til en opplæring eller annen referanseveiledning hver gang, inntil det grunnleggende er inngrodd i tankene dine til det punktet hvor du kan gjøre det uten å konsultere noen andre.

Hvis du ikke allerede visste det, er det å glemme en viktig del av læringen. 

Hver gang du glemmer noe og lærer det på nytt, synker det dypere og grundigere ned i hjernen din. Når du lærer noe på nytt, får hjernen din nye forbindelser med andre ting du har lært, noe som hjelper deg å forstå mer om konteksten for det du prøver å gjøre. 

Og hver gang du lærer på nytt, signaliserer du til hjernen din at dette emnet er viktig nok til å lagre i langtidshukommelsen.

Men hvis du legger ut for å huske alt utenat, kommer du til å slite. 

Ikke vær bekymret for å glemme ting i stedet. Å vite hvor du skal slå dem opp er langt viktigere enn å huske spesifikk Swift -kode for å oppnå noe. 

Når du glemmer noe og må lære det på nytt, anser det som en god ting - at informasjonen vil synke dypere andre, tredje og tiende gangen du lærer det, så du hjelper hjernen din.

Unngå skinnende objektsyndrom

Det nest vanligste problemet jeg ser folk støter på er det jeg kaller "skinnende objektsyndrom", der de finner en opplæringsserie som fungerer bra for dem og begynner å gjøre fremgang, men etter en eller to uker merker de en annen opplæringsserie som de vil følge og hoppe til det i stedet. 

Jeg har fått folk til å sende meg en e -post om at de har prøvd fire, fem eller til og med seks forskjellige serier og ikke lærer noe av en eller annen merkelig grunn.

Problemet her er at mange aspekter ved å lære noe er uinteressante. Det er ikke nødvendigvis lærerens skyld. 

Det er bare et faktum å lære å kode – noen ting gir deg gode resultater med liten innsats, mens andre tar mye mer tid å forstå, ikke gir fancy resultater, eller bare er en del av et større konsept.

Når du treffer disse bratte læringskurvene, starter shiny object syndrome – med så mange gratis veiledninger tilgjengelig, kan du hoppe til en av dem og starte på nytt, og du vil være tilbake i den grunne enden av bassenget og dekke lettere deler du har allerede lært. 

Men, unless det originale kurset valgte et uvanlig emne å dekke, du må sannsynligvis lære det til slutt, og du utsetter bare det uunngåelige.

Så jeg ber deg ikke alltid motstå skinnende objekt-syndrom fordi jeg forstår hvor vanskelig det er. I stedet, vær i det minste oppmerksom på det: når du støter på et problem, prøv å be noen andre om hjelp og holde ut i stedet for å bytte.

Ikke gå alene

Ikke gå alene

Når vi snakker om å spørre noen andre, det tredje problemet jeg ser folk støter på er når de går ensom ulv med læringen sin – de tror de er fullt i stand til å lære å bygge iOS-apper ved hjelp av Swift helt alene og ikke trenger hjelp fra andre .

Denne metoden fungerer for et veldig lite antall mennesker, vanligvis de med lang erfaring med andre programmeringsspråk eller plattformer. 

Men for de aller fleste mennesker er det å lære på denne måten en forferdelig opplevelse – hver feil eller misforståelse tar fem ganger så lang tid å løse, det er ekstremt lett å miste motivasjonen, og du går glipp av mye inspirasjon fra å se andre lykkes.

Hvis du er en naturlig "ensom ulv"-lærer, oppfordrer jeg deg til å endre dine måter. 

Del det du lærer, ta kontakt med andre som lærer, og skap en vane med å stille spørsmål. 

Ikke bare vil du oppdage et fantastisk fellesskap av elever som vil støtte og oppmuntre deg, men du vil også bli inspirert av arbeidet deres og igjen inspirere dem med ditt. Stol på meg, jeg har sett dette hundrevis av ganger, og det er fullstendig transformerende.

Ikke bruk betaversjoner

Det fjerde store problemet jeg ser er når folk insisterer på å bruke betaversjoner av Appleutviklingsverktøy. 

Jeg forstår: hvert år, Apple lanserer en ny iOS, en ny macOS og andre produkter, og leverer alltid spennende nye ting som vi kan prøve. Det er naturlig at folk vil lære det siste og det beste, spesielt hvis de vet at Swift har en lang historie med endringer.

Men når folk prøver å lære med betaprogramvare, får de en rekke problemer:

Fordi opplæringen ikke har blitt oppdatert for betaversjonen, vil det ikke alltid være mulig å følge instruksjonene eller mislykkes.

Bugs er vanlige i betaversjoner, spesielt de som er utgitt for store iOS-oppdateringer.

AppleDet tar tid å stabilisere beta -rammeverkene, noe som betyr at kode som fungerte i beta 1 kanskje ikke fungerer i beta 3.

Så selv om det er spennende å lære nye ting, og du kanskje tror du kommer i forkant av spillet med nye funksjoner, stol på meg: det er ikke verdt det. 

Bruk alltid de siste offentlige utgivelsene av Appleutviklerverktøyene til du er komfortabel med dem.

Stol på offisiell dokumentasjon

Stol på offisiell dokumentasjon

Det femte store problemet som folk står overfor når de prøver å lære er å stole på Apple's dokumentasjon. 

AppleUtviklerpublikasjonsteamet jobber hardt med å dokumentere så mye som mulig fra selskapets store utvalg av rammer, men deres viktigste jobb er å skrive referansemateriale - ting du leser når du prøver å bruke en bestemt del av verktøyene deres - i stedet for lage et strukturert kurs for å lære deg å bygge iOS -apper.

Jeg har mistet tellingen av antall ganger folk har spurt meg, "Hvordan kan jeg lære Swift?" bare for å bli fortalt, "Les Apple's Swift referanseguide. " 

Denne tilnærmingen fungerer for noen mennesker, og jeg vet fordi den fungerte for meg da Swift først ble annonsert – jeg leste den fra perm til perm. 

Men for de fleste ligner det på å prøve å lære et menneskespråk ved å lese en ordbok. Den er ment å dekke alt på språket i stedet for å lære deg de viktigste delene og hvordan du bruker dem.

Så hvis du har lang erfaring med andre språk, lesing AppleReferanseveiledningene til kan være nyttige, men hvis du nettopp har begynt, kan det være lurt å se dem på nytt etter noen måneder.

Blir fast i Objective-C

Det sjette store problemet som folk står overfor er å prøve å lære Objective-C. Dette var AppleDet viktigste utviklingsspråket før Swift ble introdusert, og mens det er rester i noen gamle kodebaser, er de aller fleste eksisterende koder nå Swift, og nesten all ny kode er også Swift.

Jeg brukte år på å skrive Objective-C før Swift og ble veldig glad i det, men det har en ekstremt bratt læringskurve og mangler de fleste av Swifts viktige funksjoner. 

Jeg husker når Apple kunngjorde først iPhone SDK og ble forferdet over Objective-C fordi den var ulik noe annet jeg hadde sett så langt.

Objective-C og Swift har nesten ingenting til felles for en nybegynner. 

Ja, de deler det samme Apple rammer, men unless du planlegger å jobbe hos Apple – det eneste selskapet i verden som fortsatt produserer store mengder Objective-C – du bør la Objective-C være i fred og konsentrere deg helt om Swift.

Ignorerer andre språk

Ignorerer andre språk

Den siste store feilen jeg ser folk gjør når de lærer Swift er å avvise andre språk som dårligere enn Swift. 

Det vanligste målet er JavaScript, men du vil også se folk ta sikte på Python, Java, Ruby, Go og andre språk, og for hva? Det er ikke et løp, folkens – disse språkene trenger ikke å tape for at Swift skal vinne.

Faktisk er Swift og SwiftUI ofte inspirert av andre språk og rammeverk – hver gang nye språkfunksjoner vurderes, ser fellesskapet på lignende implementeringer i Rust, Python, Haskell og andre språk, og SwiftUI er sterkt påvirket av JavaScript. React rammeverk. 

Så når jeg hører folk i samfunnet vårt påstå at SwiftUI er JavaScript-fritt eller noe lignende, skriker jeg-ingenting kan være lenger fra sannheten.

iOS -utviklingsressurser og -kurser

iOS -utviklingsressurser og -kurser

Nå for den delen som de fleste er interessert i: hva er de faktiske ressursene jeg tror du bør bruke for å lære Swift, SwiftUI og mer - for å nå målet ditt om å bli en iOS -utvikler?

Det er mange der ute, og jeg setter pris på det faktum at Swift-fellesskapet har en så mangfoldig gruppe mennesker som deler kunnskapen sin. 

I denne artikkelen skal jeg imidlertid fokusere på gratis ressurser - steder hvor du kan lære å bygge fantastiske apper uten å bruke en krone.

Dette skyldes to faktorer:

  1. Noen mennesker tror at jo høyere pris på et Swift -kurs, jo bedre må det være, så de ender med å betale ublu priser uten å få tilstrekkelig fordel.
  2. Mange nettsteder, som Udemy, er avhengige av å selge et stort antall rimelige kurs, og er sikre på at hvis du ikke liker ett, vil du bare kjøpe et annet. De har også en forretningsmodell som ligner på Steams ved at det er konstant salg, og oppmuntrer folk til å samle et stort antall kurs for å studere «en dag».

Så jeg viser bare gratis ressurser her fordi jeg ikke vil at du skal falle i disse fellerne - ikke bruk hundre dollar eller mer på ditt første kurs, og ikke kjøp et dusin billige kurs som tenker du en utvikler.

Guider

Å begynne, Apple har to store ressurser som kan hjelpe deg. Den første er nettstedet Teaching Code, som inneholder student- og lærerressurser for å lære Swift fra grunnen av, helt opp til profesjonelle sertifiseringer. 

Læreplanen deres er omfattende, så det kan ta litt tid å finne det beste inngangspunktet for deg, men når du er der, finner du mye å utforske.

For det andre, Apple har en serie SwiftUI-veiledninger som leder deg gjennom prosessen med å lage apper fra den virkelige verden. Disse lærer imidlertid ikke Swift, så du må først fullføre deres Swift-fokuserte læreplan.

Som jeg tidligere sa, Apple publiserer også en veiledning spesifikt for programmeringsspråket Swift, men det er en god sjanse for at det ikke vil fungere for deg – det er ment som en referanse i stedet for en strukturert opplæring, så det er ganske tett lesing.

Hva Appleopplæringen ikke gjør er å prøve å tilby en strukturert metode for læring. 

YouTube og andre nettsteder

Det er noen utmerkede YouTube-videoer som leder deg gjennom det grunnleggende ved SwiftUI, for eksempel:

VlhcNR7Qrno
, der han leder deg gjennom prosessen med å lage et spilleautomater fra bunnen av.

51xIHDm_BDs
forklarer fem SwiftUI -konsepter som alle bør lære når de begynner å programmere.

aP-SQXTtHvorfor
som har både Swift og SwiftUI mens du tar spørsmål fra publikum.

Det finnes andre nettsteder med Swift- og SwiftUI-opplæringsprogrammer av høy kvalitet, inkludert BLCKBIRDS, Ray Wenderlich, Donny Wals, Antoine van der Lee og mer-jeg oppfordrer virkelig folk til å besøke en rekke ressurser og finne det som fungerer for dem.

App-basert utdanning

Hvis du foretrekker å lære gjennom apper, anbefaler jeg to som begge er helt gratis. Den første er Apple's Swift Playgrounds -app, som lar deg lære Swift direkte fra iPad eller Mac. 

Det er mange interaktive lessrettet mot barn, men det er også noen mer avanserte lesssom hjelper deg med å fremme dine ferdigheter.

Den andre appen heter Unwrap, og den ble laget av meg. Unwrap er kompatibel med alle iPhones og iPads og lar deg lære, gjennomgå og øve på Swift grunnleggende gjennom videoer, tester og andre verktøy. Den dekker alt det grunnleggende i Swift og kompletterer 100 Days of SwiftUI-pensumet perfekt.

Å skaffe løsninger

Til slutt må du lære hvordan du finner svar på nettet. Dette kan bety å gå til Stack Overflow, men jeg håper det ikke fordi det ikke er et spesielt hyggelig sted.

Still i stedet spørsmål om forumene for hacking med Swift, din favoritt Slack -gruppe, iOS Dev Happy Hour -økter, Twitter og andre steder - vi er et virkelig varmt og innbydende fellesskap med mange mennesker som er ivrige etter å hjelpe deg med å nå dine mål.

Engasjere seg i samfunnet

Engasjere seg i samfunnet

Når vi snakker om samfunnet vårt, vil jeg gjerne diskutere et veldig viktig emne som vil hjelpe deg å møte mennesker i lignende stillinger som deg, lære mer effektivt og finne ledige stillinger – det er en vinn-vinn-situasjon.

Emnet er i kontakt med iOS -utviklingssamfunnet. Dette inkluderer å vite hvor du skal lete etter nyheter og interessante ideer, hvor du skal dra for å møte mennesker og dele tips, og hvor du kan gå for å stille spørsmål.

Hvem skal jeg følge på Twitter?

La oss starte med det enkleste, det vil si å bruke Twitter. Twitter er en fantastisk måte å følge ting som interesserer deg, og det er noen få mennesker jeg vil anbefale på det sterkeste når det gjelder iOS -utvikling.

Ja, disse menneskene twitrer om sitt eget arbeid, men jeg synes de er flotte å følge fordi de også twitrer mye om andres arbeid - de vil hjelpe deg med å se en rekke perspektiver på et bestemt emne, og de deler alle slags interessante ideer og ting å prøve.

Her er 9 personer jeg anbefaler deg å følge på Twitter:

Sean Allen bruker mye tid på YouTube til å lage Swift- og iOS -utviklingsvideoer, men han jobber også veldig hardt med å spre ordet om andres arbeid - han gjør virkelig en god jobb med å hjelpe alle med å oppdage noe nytt hver uke.

Antoine van der Lee driver et utviklingsnettsted for iOS på https://www.avanderlee.com, men han deler også noen gode lenker til nyttige ressurser han finner på GitHub, nyhetsbrev og mer.

Novall Khan jobber for Apple, men det hindrer henne ikke i å legge ut videoer med jevne mellomrom om hva hun jobber med, hva hun lærer, hva hun har problemer med og mer - hun er virkelig inspirerende.

Steve Troughton-Smith er kjent for sitt tidligere arbeid med iOS, men du bør virkelig følge ham for det fantastiske utvalget av lenker han deler til imponerende arbeid. Jeg liker hvordan han deler utviklingsfremgangen til sine egne apper, slik at du kan se dem vokse fra begynnelse til slutt.

Kaya Thomas er en av samfunnets mest kjente indieutviklere, og hun har blitt omtalt av Apple flere ganger enn jeg kan telle. Hun tweeter ofte om sitt eget arbeid og presentasjoner, men hun deler også lenker til bøker hun leser, artikler hun har lest og andre ressurser.

Majid Jabrayilov ikke bare skriver en fantastisk Swift og SwiftUI blogg, men han er også et dekkless promoter for andre - hvis du følger ham på Twitter, får du idé etter idé sendt fra mange forskjellige kilder.

Donny Wals skriver en Swift -blogg og nylig bøker om Kombiner og kjernedata, men han oppfordrer også folk til å dele det de jobber med på Twitter. Selv å bare lese den tråden en gang i uken vil inspirere deg til å prøve nye ting, så du bør definitivt følge Donny.

Sommer Panage fungerer på Appleer tilgjengelighetsteamet, så selv om hun er litt begrenset i det hun kan si, tweeter hun ut mange førsteklasses tips fra seg selv og andre som alle kan bruke til å bygge bedre apper.

Natascha Fadeeva skriver en blogg om Swift og iOS -utvikling, inkludert artikler om kjernedata, intervjuspørsmål og andre emner, men hun tweeter også om ting hun finner andre steder.

Nyhetsbrev og mer

Nyhetsbrev og mer

Selvfølgelig er Twitter ikke det eneste stedet å holde kontakten med samfunnet; Det er også nyhetsbrev, Slack -grupper, Zoom -møter, fora, konferanser og andre arenaer. Jeg vil ikke kjede deg for mye, så jeg vil bare liste en av hver her:

Du kan ikke gå galt med iOS Dev Ukentlig for nyhetsbrev. Mens jeg skriver dette, har det nettopp passert 500 nummer, en hver uke, som jeg tror forteller deg alt du trenger å vite om hvor viktig det er.

Hvis du vil legge ut på et webforum, https://www.hackingwithswift.com/forums er ganske bra. Det er mange kategorier å velge mellom, og alle, ta hensynless av erfaringsnivå, er velkommen til å delta. Du er mer enn velkommen til å legge ut nybegynnerspørsmålene dine her, tro meg!

Hver måned, iOS Dev Happy Hour holdes på en Zoom-gruppesamtale med over 300 personer, men den virkelige moroa er i grupperom, hvor du kan chatte med grupper på 6 til 8 personer om gangen. Det er veldig gøy, og du vil møte nye mennesker.

Det har vært vanskelig å delta på konferanser på grunn av koronaviruspandemien, men Apple's WWDC var en stor suksess i fjor, og det ble ledsaget av en rekke samfunnsarrangementer. En gruppe venner og jeg opprettet en GitHub repository for å holde styr på alle andre hendelser, artikler og andre ting som har skjedd – ta en titt!

Til slutt, hvis du foretrekker å chatte på Slack hvor du kan få svar raskere, kan du bli med gratis Hacking med Swift Slack -gruppen og bli med i en av Swift, SwiftUI og andre kanaler.

Hvor lang tid tar det å lære iOS?

Dette er mitt vanlige spørsmål: Hvor lang tid tar det å gå fra jeg ikke vet noe om Swift til å kunne få en iOS-utviklerposisjon på inngangsnivå?

Det åpenbare svaret er "det avhenger", men det ville være en politimann i denne saken, så la meg ta det opp på noen forskjellige måter.

Den gylne regelen er å ikke skynde seg

Først og fremst kan du ikke ta flere kurs samtidig. Husker du hva jeg sa om "skinnende objektsyndrom"? Ja, mange tror at de kan ta to kurs samtidig, for deretter å stappe i fire, fem eller enda flere timer hver dag, og fortsatt ha en høy kvalitet på temaene de dekker.

For å være tydelig har jeg sett folk prøve dette så mange ganger, og det mislykkes alltid. Hver gang - det fungerer aldri, og jeg hører folk si at det er fordi opplæringen var dårlig, eller fordi Swift var for vanskelig, eller av bokstavelig talt en annen grunn enn å prøve å skynde seg gjennom noe komplekst.

Jeg fikk bokstavelig talt en e -post som sa: "Hei Paul! Hvor raskt kan jeg fullføre Swift hvis jeg studerer i fire eller fem timer om dagen?" Og det er ganske enkelt ikke hvordan læring fungerer - enten det er å lære Swift, lære å spille piano, lære å skøyte eller noe annet.

Det kan til tider være vanskelig å lære Swift, og å lære å bygge apper krever mye prøving og feiling, feil og ta feil svinger. Og det er greit – det er bedre enn greit, det er fantastisk! 

For hver gang du prøver noe, gjør en feil eller tar feil, lærer du noe underveis, og når du endelig kommer frem til løsningen, vil du forstå det mye bedre.

Så, TL; DR her er ikke rush - ta deg tid, ikke vær redd for å utforske tangenter som oppstår, ikke vær redd for å eksperimentere med prosjektene dine, og ikke vær redd for å gå tilbake til noe du har lært tidligere og lærer det på nytt etter behov.

Hva er din utdanningsbakgrunn

Hva er din utdanningsbakgrunn?

For det andre bør du vurdere bakgrunnen din før du kommer til Swift. Du skjønner, å lære å bygge apper krever et bredt spekter av ferdigheter, og hvis du kommer til bordet med et vell av forkunnskaper som f.eks. version control, datastrukturer, algoritmer og mer, vil du ha en betydelig fordel i forhold til de som er nye innen informatikk generelt, så vel som Swift og andre Apple rammer.

Så, her er noen muligheter for hvor du kan være akkurat nå:

Hvis du har en informatikk -grad, vil du allerede være kjent med mange av de grunnleggende CS -elementene som trengs for å komme i gang med Swift. Variabler, matriser, sløyfer, matriser, sett, funksjoner, OOP og andre konsepter vil være nyttige i Swift, det samme vil alt arbeidet ditt med datastrukturer og algoritmer. Dette kan spare deg for 4-6 måneders studietid, avhengig av fagene du studerte, og det vil også gi deg en fordel når du søker på jobber i mange selskaper.

Hvis du ikke har en CS-grad, men har deltatt på en koding-bootcamp, vil du ha mange av det grunnleggende du trenger for å komme i gang med Swift. Dette vil ikke gi deg den samme fordelen når du søker på jobber hos disse selskapene fordi de ofte forventer en grad bare for å merke av i en boks på listen over vilkårlige krav, men det vil fortsatt spare deg for tre eller fire måneder.

Hvis du ikke har en CS -grad og ikke deltok på en bootcamp, men du har kodet på fritiden, sparer du litt tid - sannsynligvis to måneder eller så, avhengig av språket eller rammene du brukte .

Hva om du ikke har en CS-grad, ikke har deltatt på en bootcamp og ikke har noen tidligere erfaring med koding? Da anslår jeg 9 til 12 måneder å gå fra ingenting til en nybegynnerjobb. Ja, det kan være et helt års arbeid på toppen av hva din nåværende heltidsjobb er, og det er bare for å få din første jobb som iOS-utvikler.

Er det alltid samme år? Nei. Hvis du har tidligere erfaring, kan du kutte den tiden ned til 1 til 6 måneder, som jeg tidligere sa. Hvis du tar de beste tallene på begge sider – 9 måneder fra ingenting til en nybegynnerjobb, pluss 6 måneder for å ha en CS-grad – betyr det at du kan ansettes på bare 3 måneder, noe som er utrolig.

Du tror kanskje at det er umulig å finne din første jobb på tre måneder, men det er det ikke. Pokker, jeg møtte noen som tok 100 Days of Swift-kurset mitt og fikk jobb før dag 50 – de hadde allerede lært nok om apputvikling i less enn to måneder fordi de anstrenger seg for å få hver dag til å telle.

Så du trenger ikke en CS-grad eller en bootcamp, men du må være villig til å jobbe hardt.

Gi deg selv litt spillerom

Det tredje poenget jeg vil komme med før vi går videre er at «det tar så lang tid det tar». Jeg elsker en tekst av John Lennon som sier: "Livet er det som skjer når du er opptatt med å lage andre planer."

Det er fantastisk hvis du har store læringsplaner og store drømmer for jobben du vil ha, men noen ganger er du sliten, noen ganger er du stresset, noen ganger lekker taket ditt eller hunden din trenger å gå til veterinæren eller barna dine trenger ekstra hjelpe med leksene sine, eller hva som helst, og det er bare livet. 

Så ikke vær for hard mot deg selv hvis du faller etter med læringsplanen din, eller hvis du mangler noen dager eller noen få uker, og så videre - så lenge du er motstandsdyktig, får du der.

Det er fantastisk hvis du jobber hardt og får jobb etter 50 dager – godt gjort! Hvis det tar deg 500 dager, er det også fantastisk, og du bør være like stolt av deg selv. Pokker, hvis det tar deg fem år, er jeg sikker på at det ikke er det du ønsket, men sluttresultatet er det samme, og det er alt som betyr noe.

Gjør deg klar til å søke

Gjør deg klar til å søke

Sist, men ikke minst, hvis du er litt lengre på din iOS-læringsreise og tenker på å lande din første jobb på inngangsnivå, vil jeg peke deg på en massiv samling av ressurser jeg har satt sammen for å hjelpe deg.

Jeg vil anbefale Sean Allens Swift-intervjutipsvideoer - han har en hel spilleliste for dem der du kan jobbe gjennom individuelle diskusjoner som klasser vs strukturer, funksjonell programmering, feilhåndtering og mer. Ingen av videoene er spesielt lange, men de er alle laget for å gi deg ferdighetene du trenger for å prestere godt i en intervjusituasjon.

Hvor nå?

Ok, så jeg har gått gjennom kjerne- og utvidelsesferdighetene du trenger, vanlige læringsfeil, kurs du kan ta, hvordan du kobler deg til iOS-fellesskapet og hvordan du forbereder deg til jobbintervjuet ditt – det er mye å dekke, og jeg håper det har vært nyttig.

Videre håper jeg at jeg har demonstrert hvor mye informasjon som er tilgjengelig gratis. 

Ja, fristelsen til å bruke hundre dollar eller mer på et kurs er sterk, men slapp av – kom i gang først, finn litt fart, og finn også noen som underviser Swift på en måte som fungerer for deg. Når du er på et bra sted og føler deg klar, fortsett og bruk litt penger hvis du vil.

Beste ønsker på reisen!

om forfatteren
David Attard
Forfatter: David Attardnettside: https://www.linkedin.com/in/dattard/
David har jobbet i eller rundt den elektroniske / digitale industrien de siste 18 årene. Han har lang erfaring innen programvare- og webdesignindustrien ved å bruke WordPress, Joomla og nisjer rundt dem. Som digital konsulent er hans fokus på å hjelpe bedrifter med å få et konkurransefortrinn ved å bruke en kombinasjon av deres nettside og digitale plattformer som er tilgjengelige i dag.

En ting til... Visste du at folk som deler nyttige ting som dette innlegget også ser FANTASTISK ut? ;-)
Vær så snill forlate en nyttig kommenter med tankene dine, så del dette på Facebook-gruppen din (e) som synes dette er nyttig, og la oss høste fordelene sammen. Takk for at du delte og var hyggelig!

Avsløring: Denne siden kan inneholde lenker til eksterne nettsteder for produkter som vi elsker og anbefaler helhjertet. Hvis du kjøper produkter vi foreslår, kan vi tjene et henvisningsgebyr. Slike avgifter påvirker ikke våre anbefalinger, og vi godtar ikke betaling for positive anmeldelser.

Forfatter (e) Fremvist på:  Inc Magazine-logoen   Sitepoint-logo   CSS Tricks-logo    webdesignerdepot-logo   WPMU DEV-logo   og mange flere ...