Hur man blir en iOS -utvecklare 2021 - En ultimat guide

I den här artikeln kommer jag att gå igenom vad jag tror att det krävs för att bli en iOS -utvecklare 2021. 

Jag riktar detta helt och hållet till två grupper av människor, absoluta Swift-nybörjare-människor som aldrig har byggt något för iOS tidigare-och så kallade falska nybörjare-människor som har försökt lära sig Swift tidigare men aldrig riktigt uppnått sitt mål att få en heltidsjobb.

Betraktaless av din nuvarande nivå är målet här detsamma. För att ge dig möjlighet att ansöka om en roll som junior iOS-utvecklare på ett företag.

Vi kommer att titta på de färdigheter du borde lära dig, de kurser du kan gå, hur du får kontakt med gemenskapen, vanliga misstag människor gör och mer. 

Bäst av allt, allt jag kommer att diskutera är helt gratis, så du behöver inte betala en krona för att följa med.

Allvarligt allvar tror alldeles för många att att spendera mycket pengar kommer att sätta dem på snabbspår till sitt drömjobb, när de viktigaste faktorerna är beslutsamhet och viljestyrka. 

Här är ett tips: om du redan funderar på att hoppa framåt i den här artikeln bör du antagligen jobba på din viljestyrka!

Denna artikel är indelad i sju avsnitt:

  1. Grundläggande färdigheter som du måste ha för att få ett jobb.
  2. Förlängningskunskaper som är trevliga att ha – de som skiljer dig från mängden om du anstränger dig för att lära dig dem
  3. Vanliga misstag gör folk när de försöker lära sig.
  4. De många gratis resurser som finns tillgängliga för att lära dig Swift.
  5. Hur man kommer i kontakt med iOS -utvecklingsgemenskapen.
  6. En uppskattning av hur lång tid det tar att nå ditt mål.
  7. Du gör dig redo att söka ditt första jobb.

De grundläggande färdigheter som krävs för att bli en iOS -utvecklare

De grundläggande färdigheter som krävs för att bli en iOS -utvecklare

Vad är det absoluta minimum av färdigheter som krävs för att få ett jobb inom iOS -utveckling? 

Jag tror att det finns fem totalt:

  1. Snabb 
  2. SwiftUI 
  3. nätverk
  4. Arbeta med data
  5. Versionshantering

Den listan hålls avsiktligt kort av olika skäl:

Ju mer du lär dig, desto mer inser du att det finns att lära, så det är lätt att lägga så mycket tid på att studera och öva att du tappar huvudmålet ur sikte.

Du vill arbeta som iOS-utvecklare, inte bara sitta och lära dig nya saker!

Det är nästan säkert att du kommer att gå med i ett team som redan har en app som de vill att du ska hjälpa till att utveckla, så unless du har extremt tur, de kommer att behöva lära dig en hel massa sakerless.

Om du försöker klämma in en massa extra ämnen i förväg slösar du förmodligen din tid.

Två av dessa fem saker är enorma och komplicerade, och du kan spendera månader på att bara försöka linda huvudet runt dem utan att våga dig någon annanstans.

Viktigast av allt, om du får de fem sakerna rätt kan du skapa en mängd olika appar. Visst, din kod kommer inte att vara perfekt, men det är okej eftersom det enda sättet att skriva bra kod är att först skriva en massa dålig kod.

Låt mig dela upp de fem föremålen i mindre bitar.

Att lära sig snabbt

Swift är först på listan. Detta är Appleär kärnprogrammeringsspråk. Det har inget koncept att visa information på en iPhones skärm eller ladda ner data från internet. 

Det är helt enkelt ett språk som liknar JavaScript eller Python. Det är bara ren kod som du använder för att skapa variabler, skriva funktioner och så vidare.

Swift är bara några år gammal, så den använder nästan alla banbrytande språkfunktioner som finns tillgängliga. 

Å ena sidan betyder det att du kan undvika alla de knasiga gamla beteenden som är vanliga på äldre språk som C ++ och Java. Det betyder också att den har en massa mer avancerade funktioner som kan förstöra dig först.

Och det är bra. Många delar av Swift är relativt enkla, medan andra kommer att ta längre tid för dig att förstå, så det är bara att ta dig tid och hålla ut – du kommer dit!

SwiftUI

Den andra kärnfärdigheten jag nämnde är SwiftUI, som är en Apple ram som gör att vi kan använda Swift för att skapa appar för iOS, macOS, tvOS och till och med watchOS. 

Så, medan Swift är programmeringsspråket, tillhandahåller SwiftUI verktygen för utvecklare för att skapa appar, till exempel hur du visar bilder, text, knappar, textrutor, datatabeller och mer. 

För att vara tydlig är SwiftUI inte en ersättning för Swift – det är ett ramverk byggt ovanpå Swift som låter oss skapa appar. Du måste känna till både Swift och SwiftUI för att lyckas.

Om du trodde att Swift var nytt har du inte sett något än! 

Så vitt jag kan se är SwiftUI bara två år gammal! Trots sin ungdom har iOS -gemenskapen omfamnat det helhjärtat eftersom det är så lätt att använda.

Apple har också en äldre ram för att bygga iOS -appar som heter UIKit, och om du frågar ett gäng människor om du ska lära dig SwiftUI eller UIKit först får du en mängd olika svar. 

Jag tycker att du ska lära dig SwiftUI.

Så om du undrar, här är varför jag tror att du bör prioritera SwiftUI som en kärnkunnighet.

Det är betydligt enklare än UIKit, och jag menar betydligt - det tar kanske en fjärdedel av koden för att uppnå samma resultat som UIKit, och det finns färre saker att lära sig på vägen. 

Detta innebär att du får mycket fart eftersom du kan bygga saker snabbare, se resultat snabbare och itereera resultaten snabbare, vilket är extremt motiverande när du lär dig.

Skapad för Swift

Skapad för Swift

SwiftUI skapades för Swift och använder språkfunktioner för att hjälpa dig att undvika problem och uppnå maximal prestanda. 

Till exempel, om du ändrar vissa data på en skärm i en app, kommer SwiftUI automatiskt se till att den nya data uppdateras någon annanstans i din app som använder den – du behöver inte skriva kod för att hålla allt synkroniserat själv, vilket är förvånansvärt komplicerat. 

UIKit, å andra sidan, skrevs för Apples äldre språk, Objective-C, och har som ett resultat alla möjliga egenheter som är resultatet av dess ålder.

SwiftUI är kompatibel med alla Appleplattformar, så att du kan använda det du lärt dig på iOS för att skapa en macOS- eller watchOS -app med nästan identisk kod. 

Visst, vissa funktioner, till exempel Digital Crown, är exklusiva för en enda enhet, men de allra flesta av det du lär dig fungerar på vilken enhet som helst.

Men, viktigast av allt, SwiftUI är i vilken riktning saker går. 

Om du sökte ett jobb just nu skulle du förmodligen behöva känna till UIKit, men det faktum att du läser detta betyder att du är mycket längre i processen. 

Ja, UIKit är mer populärt nu, men SwiftUI kommer att vara det dominerande gränssnittet för användargränssnitt när du är färdig med att lära dig det om 6, 9 eller till och med 12 månader.

På allvar, världens största företag, inklusive Apple, väljer SwiftUI.

När Apple nyligen lanserade widgets i iOS 14, gjorde de det till ett krav att du använder SwiftUI.

Nätverk och datahantering

Den tredje och fjärde färdigheten jag nämnde var nätverk och datahantering. Jämfört med Swift och SwiftUI är dessa en bit av kakan, eller åtminstone på den nivå som krävs för att få ett yngre iOS -utvecklarjobb.

Nätverk är praktiken att hämta data från internet eller skicka data från en lokal enhet till en fjärrserver. 

Det finns många metoder för att åstadkomma detta, men det viktigaste att förstå är hur man hämtar JSON från en server.

Och det är här den andra väsentliga färdigheten kommer in i bilden, att arbeta med data. 

Återigen, det finns många sätt att ladda och spara data, men det absoluta minimum du måste kunna göra är att konvertera data du fått från en server med hjälp av din nätverkskod till information som din app kan visa.

Så, den tredje och fjärde kärnkompetensen är oupplösligt kopplade. Hämta lite data från en server och konvertera den sedan till information som kan visas i din app. Vissa utvecklare skämtar med att skriva denna typ av kod är halva jobbet för en iOS -utvecklare, och det är verkligen sant att vi litar starkt på det.

Version control

Den sista färdigheten kodar inte alls, det är version control, till exempel Git. Återigen, du behöver inte mycket här, men det är viktigt att du kan publicera din kod någonstans offentligt, till exempel GitHub, så att rekryterare kan se ditt arbete.

Ingen i världen förstår verkligen hur Git fungerar, men det är okej - du behöver bara veta tillräckligt om grunderna för att lagra dina data säkert och samarbeta med andra.

Så när dessa fem läggs ihop finns det två massiva - Swift och SwiftUI - samt tre mindre men viktiga. 

Om du bara kan fokusera på de fem sakerna utan att bli distraherad kommer du att vara på god väg till ditt första iOS -utvecklarjobb.

Det är det: det är de fem viktiga färdigheter som jag tror att du behöver vara en iOS -utvecklare. 

Det finns tusentals människor som bara har den kompetensen och kan bygga och skicka fantastiska appar i App Store.

Vad som kommer efter grunderna

Vad kommer efter grunderna?

När du väl har bemästrat de fem grundläggande färdigheterna kommer du att kunna skicka dina egna appar och arbeta som en indieutvecklare, samt ansöka om yngre iOS -utvecklingspositioner och arbeta för ett företag om det är vad du vill göra. 

Det finns inga andra särskilda kvalifikationer som krävs - bara spik de grundläggande färdigheterna och du kommer att bli bra.

Men om du har bemästrat dessa färdigheter och vill avancera, finns det ytterligare fem färdigheter som jag rekommenderar att du lär dig. Det här är de färdigheter som kommer att driva dig från en bra till en fantastisk position – du kommer att bli ännu mer anställningsbar, och utbudet av appar du kommer att kunna bygga kommer att utökas ytterligare.

Förmågan är följande:

  • UIKit 
  • Kärndata 
  • Validering
  • Testning
  • Programvaruarkitektur
  • multitrådning

Som tidigare skulle jag vilja gå igenom var och en av dessa mer i detalj så att du förstår varför jag tycker att de är viktiga - och varför jag tänker på dem som förlängningskunskaper snarare än kärnkompetenser.

UIKit

Först finns det UIKit. Detta är Apples äldre ramverk för användargränssnitt, som har använts för apputveckling sedan 2008 – det är 13 år gammalt när jag skriver detta, vilket är gammalt i mjukvarutermer. Men det betyder inte att UIKit är dåligt. Faktum är att när du vänjer dig vid hur det fungerar kommer du att bli förvånad över hur elegant det kan vara.

Det finns många anledningar till att UIKit är värt att lära sig, inklusive:

Hundratusentals appar har redan skrivits i UIKit, så om du går med i ett företag som har en stor, väletablerad app, kommer du nästan säkert att behöva skriva UIKit-kod för att behålla den appen.

UIKit är mycket kraftfullare än SwiftUI - det finns många saker du kan göra i UIKit som för närvarande inte är möjliga i SwiftUI.

Med hjälp av Auto Layout -teknik kan du skapa extremt exakta layouter.

Om du stöter på problem med din kod har UIKit fler lösningar än SwiftUI helt enkelt för att den har funnits under mycket längre tid.

Allt detta får UIKit att låta fantastiskt, så varför gjorde jag det till en förlängningsförmåga snarare än en kärnkunnighet? 

Eftersom UIKit också har problem:

Nästan allt är svårare att göra i UIKit än i SwiftUI, med vissa uppgifter som kräver hundra gånger, om inte mer, kod. 

SwiftUI designades specifikt för modern iOS-utveckling, så det gör mycket av det tunga lyftet för dig.

Eftersom UIKit inte skrevs i Swift, har det många funktioner som SwiftUI inte har – många implicit oinpackade tillval, märkning av kod med ett speciellt @objc-attribut för att göra det tillgängligt för UIKits Objective-C-underbuk och behovet av att använda protokoll och delegater för att visa enkla data.

Inget om Auto Layout är "automatiskt" - om du någonsin försöker bygga en komplex layout kan du ha mardrömmar om Auto Layout. Det är extremt smart, men det är också extremt svårt på vissa ställen.

Och det är därför jag anser att UIKit är en förlängningsförmåga: det tar betydligt mer tid och ansträngning att lära sig än SwiftUI, vilket innebär att det kräver mycket mer beslutsamhet - du måste verkligen lära dig det, annars blir du förvirrad , uttråkad, arg eller potentiellt alla tre. 

Visst, SwiftUI har inte alla funktioner i UIKit, men det låter dig göra snabba framsteg och få fart innan du går vidare till UIKit.

Hantera kärndata

Hantera kärndata

Kärndata, Appleram för att arbeta med applikationsdata, är den andra tilläggsfärdigheten jag nämnde. 

Jag nämnde nätverk och att arbeta med data i kärnkompetensavsnittet, och det är sant. Med dessa färdigheter på plats kan du hämta vad du vill från en server och visa det i din app. 

Kärndata tar det ett steg längre genom att låta dig manipulera den informationen när du har fått den, som att söka efter specifika värden, sortera resultaten och mer, allt mycket effektivt. 

Den kan också enkelt ansluta till iCloud, vilket säkerställer att dina användares data synkroniseras mellan alla deras enheter.

Core Data har en massa nackdelar, den allvarligaste av dem är att det inte alltid är trevligt att arbeta med. Core Data är nästan lika gammal som UIKit, och även om det fungerade bra i Objective-C känns det inte lika naturligt i Swift. 

Det integreras bra med SwiftUI, vilket får det att kännas less konstigt, men det är fortfarande ett förvånansvärt komplext ämne.

Så varför inkluderade jag det som en förlängningsförmåga? För, liksom UIKit, är Core Data extremt populärt - hundratusentals appar har byggts med det, och det används i många stora och små företag. 

Kärndata, som UIKit, är extremt kraftfull, och även om du kan återskapa de viktigaste delarna av den i din egen kod, varför skulle du det?

Testar din kod

Den tredje färdigheten på min lista över tillägg är testning. Skriva specialkod för att säkerställa att din huvudsakliga appkod fungerar som förväntat. 

Tester gör att vi kan se till att vår kod fungerar korrekt, och ännu viktigare, att den fortsätter att fungera korrekt även efter att vi har gjort betydande ändringar i den.

Till exempel, om du ändrar 500 rader kod för att implementera en ny funktion och alla dina test klarar, är du klar.

Som ett resultat är testning avgörande och hjälper dig att skriva programvara av högre kvalitet. 

Så varför anses det vara en förlängningsförmåga snarare än en kärnkunnighet? 

Det finns tre skäl till detta:

IOS -gemenskapen som helhet är fruktansvärd att testa, oavsett historiska skäl. Jag menar, riktigt dåligt - många stora appar har inga tester alls, och jag har tappat räkningen på antalet senior iOS -utvecklare jag har träffat som nästan är stolta över att de aldrig skriver tester. 

När du tänker på alla de fantastiska saker du kan skapa med AppleMed verktyg och ramverk verkar det inte vara roligt att skriva test i jämförelse. 

Personligen tycker jag om att skriva tester på samma sätt som jag tycker om att använda tandtråd, men jag vet att många inte gör det, särskilt när de arbetar med personliga projekt.

När du söker jobb kan du Swift och AppleDe viktigaste ramarna kommer alltid att vara mer användbara än att veta hur man skriver tester. 

Företag föredrar att du vet hur du använder SwiftUI, UIKit eller en av de andra stora hittersna, eftersom tester är ett mycket mindre ämne - det finns inte nästan lika många saker att lära sig.

Så testning är viktigt, testning är viktigt, och jag skulle älska att lära dig hur du skriver bra tester. Men först efter att du har behärskat grunderna i apputveckling - efter att du har lyckats, känt bråttom att ha din app live i App Store och behärskar tester.

Programvaruarkitektur

Programvaruarkitektur

Den fjärde tilläggsfärdigheten jag skulle vilja diskutera är mjukvaruarkitektur, som egentligen handlar om hur vi skriver kod. 

Du kommer att skriva en hemsk kod när du börjar första gången - kod så illa att det förmodligen bryter mot Genèvekonventionen. 

Det är okej för det är så man lär sig. Du börjar inte bra - du blir bra av att vara dålig länge, precis som LeBron James inte föddes som en mästare i basket.

Poängen är att du håller dig till din dåliga kod tills du kommer på hur du kan göra det bättre. Det är där mjukvaruarkitektur kommer in. Tittar på beprövade tekniker för att strukturera din kod för att göra det lättare att läsa, använda, ändra och underhålla i längden. 

Dessa tekniker förlitar sig ibland på hur Swift fungerar – språkfunktioner som kan användas för att skriva bättre kod. 

Det finns dock många andra tekniker som fungerar i alla programmeringsspråk och som vanligtvis kallas designmönster.

En viktig aspekt av denna färdighet som du bör börja lära dig är hur du bryter upp din kod. 

Om du till exempel skapar en enda skärm i din app kan den innehålla en inloggningsknapp, ett bildgalleri och en lista över vänner. 

Du bör dock helst separera var och en av dessa delar - en inloggningsknappskomponent, en bildgallerikomponent och en kompislistkomponent - så att du kan återanvända någon av dessa komponenter i andra delar av din app.

Programvaruarkitektur är mycket mer subjektiv än de andra färdigheter jag har diskuterat hittills. För de andra, till exempel SwiftUI, kan du resonera: "Jo, jag vet hur jag gör X, Y och Z, så jag är säker på att jag är en bra SwiftUI -utvecklare."

 Programvaruarkitektur är ett mycket brett ämne, och det finns ofta inget självklart "rätt" sätt att lösa ett problem, så jag tror att det bästa riktmärket för det är detta: ser du tillbaka på din kod från för sex månader sedan, för ett år sedan och så vidare.

Återigen, att skriva dålig kod är acceptabelt så länge det kommer dig närmare att skriva bättre kod. 

Jag grimaserar verkligen på platser när jag ser tillbaka på kod som jag skrev för fem år sedan, för jag vet mer nu än då - och det är bra.

multitrådning

Den sista tilläggsfärdigheten jag skulle vilja diskutera är multithreading, vilket är praxis att få din kod att göra mer än en sak i taget. 

Multithreading kan vara en verklig smärta i nacken eftersom det är svårt för våra hjärnor att förstå. När din kod gör en sak i taget kan vi tänka igenom det linjärt, men när två eller tre saker händer samtidigt, potentiellt överlappande, kan det verkligen böja din hjärna.

Så, medan multithreading är en stor skicklighet att ha som en förlängningsförmåga, bör du vara försiktig. Ditt mål bör vara att förstå tillräckligt med begreppen och koden för att få det att fungera bra utan att gå för långt. 

För att vara ärlig tror många utvecklare att multithreading omedelbart kommer att göra att deras kod körs tre eller fyra gånger snabbare. 

Även om detta är sant i vissa fall, i många andra fall kommer din kod faktiskt att köras långsammare, och du kommer nu att behöva ta itu med all extra kodkomplexitet.

Om du inte tror mig, överväg detta citat från David Smith - Han är medlem i Apple's Swift -team och har tidigare ägnat år åt att arbeta med själva kärnan i Appleramar:

”Min specifika rekommendation är att du undviker att skriva asynkroniserad/samtidig kod så mycket som möjligt. Detta kan tyckas konstigt under 2018, men kostnaden för komplexitet och prestanda är hög.

Så lär dig lite om hur multithreading fungerar i Swift för att visa att du förstår koncepten och implementeringen, men gå inte överbord!”

Vanliga misstag nya iOS-utvecklare gör

Vanliga misstag nya iOS-utvecklare gör

Vid denna tidpunkt har jag listat alla kärn- och förlängningskunskaper som jag tror att du kommer att behöva arbeta som en heltidsutvecklare av iOS. 

Men jag vill också diskutera några av de vanligaste misstagen människor gör när de lär sig, eftersom jag ser dem hela tiden och vet hur de ställer människor tillbaka.

Det finns sju stora problem som människor står inför, och jag skulle vilja gå igenom dem i ordning. 

De är som följer:

  1. Kommer ihåg allt
  2. Syndrom av det glänsande föremålet
  3. Lone wolf -lärande
  4. Att använda betaprogramvara
  5. Beroende på Apples dokumentation
  6. Att fastna i Objective-C
  7. Siktar på andra språk

Låt oss gå igenom var och en av dem en efter en.

Sluta försöka komma ihåg allt

Sluta försöka komma ihåg allt

Den första och överlägset vanligaste frågan människor stöter på är att försöka memorera allt - att läsa igenom en handledning och tro att de måste komma ihåg allt som finns i den utantill. 

Snälla, snälla, snälla gör inte det. Det är ett recept på katastrof och kommer att tappa all din viljestyrka till den grad att du aldrig kommer att vilja programmera igen.

Ingen kommer ihåg allt. Ingen kommer i närheten av att komma ihåg allt. Även om du bara överväger API: erna publicerade av Apple, som är kodbitarna vi kan använda för att bygga våra appar, måste det finnas långt över hundra tusen tillgängliga. 

Även om du begränsar det till kärnkomponenterna i apputveckling, tittar du fortfarande på flera hundra - allt fungerar på ett mycket exakt sätt som kräver mycket inlärning att använda.

Istället lär du dig hur du gör något nytt och glömmer sedan omedelbart hur du gör det igen. 

Så du slår upp det, använder det igen och glömmer det sedan genast. Så du slår upp det en tredje gång och använder det, och den här gången glömmer du det mest – vissa delar stannar kvar med dig. 

Denna cykel fortsätter på obestämd tid, med att du måste hänvisa till en handledning eller någon annan referensguide varje gång, tills det grundläggande är inarbetat i ditt sinne till den punkt där du kan göra det utan att rådfråga någon annan.

Om du inte redan visste att glömma är en viktig del av inlärningen. 

Varje gång du glömmer något och lär dig om det sjunker det djupare och mer grundligt in i din hjärna. När du lär dig om någonting knyter din hjärna nya kopplingar till andra saker du har lärt dig, vilket hjälper dig att förstå mer om kontexten för vad du försöker göra. 

Och varje gång du lär dig igen signalerar du till din hjärna att just det här ämnet är tillräckligt viktigt för att lagra det i sitt långsiktiga minne.

Men om du bestämmer dig för att memorera allt, kommer du att kämpa. 

Istället, oroa dig inte för att glömma saker. Att veta var man ska leta upp dem är mycket viktigare än att memorera specifik Swift-kod för att åstadkomma något. 

När du glömmer något och måste lära dig om det, se det som en bra sak – den informationen kommer att sjunka in djupare andra, tredje och tionde gången du lär dig det, så du hjälper din hjärna.

Undvik shiny object syndrome

Det näst vanligaste problemet jag ser människor stöter på är vad jag kallar "shiny object syndrome", där de hittar en handledningsserie som fungerar bra för dem och börjar göra framsteg, men efter en vecka eller två märker de en annan handledningsserie som de vill följa och hoppa skepp till det istället. 

Jag har fått folk att maila mig med att de har provat fyra, fem eller till och med sex olika serier och inte lär sig något av någon konstig anledning.

Frågan här är att många aspekter av att lära sig något är ointressanta. Det är inte nödvändigtvis lärarens fel. 

Det är bara ett faktum att lära sig att koda - vissa saker ger dig bra resultat med liten ansträngning, medan andra tar mycket mer tid att förstå, inte ger snygga resultat eller bara är en del av ett större koncept.

När du träffar dessa branta inlärningskurvor börjar det glänsande objektsyndromet - med så många gratis handledning finns det möjlighet att hoppa till någon av dem och starta om, så kommer du tillbaka i den grunda änden av poolen och täcker lättare delar du har redan lärt dig. 

Men, unless den ursprungliga kursen valde ett ovanligt ämne att täcka, du kommer förmodligen att behöva lära dig det så småningom, och du skjuter bara upp det oundvikliga.

Så jag ber dig inte att alltid motstå glänsande objektsyndrom eftersom jag förstår hur svårt det är. Istället, var åtminstone medveten om det: när du stöter på ett problem, försök att be någon annan om hjälp och hålla ut i stället för att byta.

Gå inte ensam

Gå inte ensam

På tal om att fråga någon annan, den tredje frågan jag ser människor stöta på är när de går ensamma varg med sitt lärande - de tror att de är fullt kapabla att lära sig att bygga iOS -appar med Swift helt själva och behöver inte hjälp av andra .

Denna metod fungerar för ett mycket litet antal människor, vanligtvis de med stor erfarenhet av andra programmeringsspråk eller plattformar. 

Men för de allra flesta människor är lärande på detta sätt en fruktansvärd upplevelse - varje misstag eller missförstånd tar fem gånger så lång tid att lösa, det är extremt lätt att tappa motivationen och du går miste om mycket inspiration från att titta på andra lyckas.

Om du är en naturlig "ensamvarg" -elever uppmuntrar jag dig att ändra ditt sätt. 

Dela det du lär dig, ta kontakt med andra som lär sig och utveckla vanan att ställa frågor. 

Du kommer inte bara att upptäcka en fantastisk gemenskap av elever som kommer att stödja och uppmuntra dig, du kommer också att inspireras av deras arbete och i sin tur inspirera dem med ditt. Lita på mig, jag har sett detta hundratals gånger, och det är helt transformerande.

Använd inte betaversioner

Den fjärde stora frågan jag ser är när folk insisterar på att använda betaversioner av Apples utvecklingsverktyg. 

Jag förstår: varje år, Apple släpper en ny iOS, en ny macOS och andra produkter, och levererar alltid spännande nya saker för oss att prova. Det är naturligt att människor vill lära sig det senaste och bästa, särskilt om de vet att Swift har en lång historia av förändringar.

Men när människor försöker lära sig med betaprogramvara, stöter de på en mängd problem:

Eftersom tutorials inte har uppdaterats för betaversionen kommer det inte alltid att vara möjligt att följa instruktionerna eller misslyckas.

Fel är vanliga i betor, särskilt de som släpps för större iOS -uppdateringar.

AppleDet tar tid att stabilisera beta -ramarna, vilket betyder att kod som fungerade i beta 1 kanske inte fungerar i beta 3.

Så även om det är spännande att lära sig nya saker och du kanske tror att du går före spelet med nya funktioner, lita på mig: det är inte värt det. 

Använd alltid de senaste offentliga utgåvorna av Apples utvecklarverktyg tills du är bekväm med dem.

Lita på officiell dokumentation

Lita på officiell dokumentation

Den femte stora frågan som människor står inför när de försöker lära sig är att lita på Appledokumentation. 

AppleUtvecklarpublikationsteamet arbetar hårt för att dokumentera så mycket som möjligt från företagets stora utbud av ramar, men deras huvudsakliga jobb är att skriva referensmaterial - saker du läser när du försöker använda en specifik del av deras verktyg - snarare än skapa en strukturerad kurs som hjälper dig att lära dig att bygga iOS -appar.

Jag har tappat räkningen på hur många gånger människor har frågat mig, "Hur kan jag lära mig Swift?" bara för att få veta: "Läs Apples Swift referensguide." 

Detta tillvägagångssätt fungerar för vissa människor, och jag vet eftersom det fungerade för mig när Swift först tillkännagavs - jag läste det från pärm till pärm. 

Men för de flesta liknar det att försöka lära sig ett mänskligt språk genom att läsa en ordbok. Det är tänkt att täcka allt på språket snarare än att lära dig de viktigaste delarna och hur du använder dem.

Så, om du har stor erfarenhet av andra språk, läsning AppleReferensguider kan vara användbara, men om du precis har börjat kanske du vill besöka dem igen efter några månader.

Att fastna i Objective-C

Den sjätte stora frågan som människor står inför är att försöka lära sig Objective-C. Detta var AppleDet främsta utvecklingsspråket innan Swift introducerades, och även om det finns rester i några gamla kodbaser, är den stora majoriteten av befintlig kod nu Swift, och nästan all ny kod är också Swift.

Jag tillbringade år med att skriva Objective-C före Swift och blev verkligen glad av det, men det har en extremt brant inlärningskurva och saknar de flesta Swifts viktiga funktioner. 

jag minns när Apple tillkännagav först iPhone SDK och blev skräckslagen av Objective-C eftersom det inte liknade allt annat jag sett hittills.

Objective-C och Swift har nästan ingenting gemensamt för en nybörjare. 

Ja, de delar samma sak Apple ramar, men unless du planerar att arbeta på Apple – det enda företaget i världen som fortfarande producerar stora mängder Objective-C – du bör lämna Objective-C ifred och koncentrera dig helt på Swift.

Ignorerar andra språk

Ignorerar andra språk

Det sista stora misstaget jag ser människor gör när de lär sig Swift är att avfärda andra språk som underlägsna Swift. 

Det vanligaste målet är JavaScript, men du kommer också att se människor ta sikte på Python, Java, Ruby, Go och andra språk, och för vad? Det är ingen ras, folk - dessa språk behöver inte förlora för att Swift ska vinna.

Faktum är att Swift och SwiftUI ofta inspireras av andra språk och ramar - när nya språkfunktioner övervägs tittar samhället på liknande implementeringar i Rust, Python, Haskell och andra språk, och SwiftUI påverkas starkt av JavaScript React ramverk. 

Så när jag hör folk i vår community hävda att SwiftUI är JavaScript-fritt eller något liknande, ryser jag – ingenting kan vara längre från sanningen.

iOS -utvecklingsresurser och kurser

iOS -utvecklingsresurser och kurser

Nu för den del som de flesta är intresserade av: vilka är de faktiska resurserna som jag tror att du bör använda för att lära dig Swift, SwiftUI och mer - för att uppnå ditt mål att bli en iOS -utvecklare?

Det finns många där ute, och jag uppskattar det faktum att Swift -samhället har en så varierad grupp människor som delar sin kunskap. 

Men i den här artikeln kommer jag att fokusera på gratis resurser - platser där du kan lära dig att bygga fantastiska appar utan att spendera en krona.

Detta beror på två faktorer:

  1. Vissa människor tror att ju högre priset på en Swift -kurs, desto bättre måste det vara, så de betalar orimliga priser utan att få tillräcklig nytta.
  2. Många sajter, som Udemy, förlitar sig på att sälja ett stort antal lågpriskurser, övertygade om att om du inte gillar en, kommer du bara att köpa en till. De har också en affärsmodell som liknar Steams genom att det finns konstant försäljning, vilket uppmuntrar människor att samla ett stort antal kurser för att studera "en dag".

Så jag listar bara gratis resurser här eftersom jag inte vill att du ska falla i dessa fällor - lägg inte hundra dollar eller mer på din första kurs och köp inte ett dussin billiga kurser som tänker du en utvecklare.

Handledning

Att börja, Apple har två stora resurser som kan hjälpa dig. Den första är webbplatsen Teaching Code, som innehåller resurser för studenter och lärare för att lära sig Swift från grunden, ända upp till professionella certifieringar. 

Deras läroplan är omfattande, så det kan ta lite tid att hitta den bästa startpunkten för dig, men väl där kommer du att hitta mycket att utforska.

För det andra, Apple har en serie SwiftUI-handledningar som leder dig genom processen att skapa verkliga appar. Dessa lär dock inte ut Swift, så du måste först slutföra deras Swift-fokuserade läroplan.

Som jag tidigare sagt, Apple publicerar också en guide specifikt för programmeringsspråket Swift, men det finns en god chans att det inte fungerar för dig - det är tänkt som en referens snarare än en strukturerad självstudie, så det är ganska tät läsning.

Vad Apples tutorials gör inte är att försöka tillhandahålla en strukturerad metod för inlärning. 

YouTube och andra webbplatser

Det finns några utmärkta YouTube -videor som leder dig igenom grunderna i SwiftUI, till exempel:

VlhcNR7Qrno
, där han leder dig genom processen att skapa ett slots spel från grunden.

51xIHDm_BDs
förklarar fem SwiftUI-koncept som alla bör lära sig när de börjar programmera.

aP-SQXTtWhY
som innehåller både Swift och SwiftUI medan du tar publikfrågor.

Det finns andra webbplatser med högkvalitativa Swift- och SwiftUI-tutorials, inklusive BLCKBIRDS, Ray Wenderlich, Donny Wals, Antoine van der Lee och mer – jag uppmuntrar verkligen folk att besöka en mängd olika resurser och hitta det som fungerar för dem.

Appbaserad utbildning

Om du föredrar att lära dig genom appar, rekommenderar jag två som båda är helt gratis. Det första är Apple's Swift Playgrounds -app, som låter dig lära dig Swift direkt från din iPad eller Mac. 

Det finns många interaktiva lessriktade till barn, men det finns också några mer avancerade lesssom hjälper dig att utveckla dina färdigheter.

Den andra appen heter Unwrap, och den är skapad av mig. Unwrap är kompatibel med alla iPhones och iPads och låter dig lära dig, granska och öva Swifts grunder genom videor, tester och andra verktyg. Den täcker alla grunderna i Swift och kompletterar 100 Days of SwiftUI-läroplanen perfekt.

Skaffa lösningar

Slutligen måste du lära dig hur du hittar svar online. Det här kan innebära att gå till Stack Overflow, men jag hoppas att det inte är eftersom det inte är en särskilt trevlig plats.

Ställ istället frågor på Hacking with Swift-forumen, din favorit Slack-grupp, iOS Dev Happy Hour-sessionerna, Twitter och på andra ställen – vi är en genuint varm, välkomnande gemenskap med många människor som är ivriga att hjälpa dig att nå dina mål.

Att engagera sig i samhället

Att engagera sig i samhället

På tal om vårt samhälle, skulle jag vilja diskutera ett riktigt viktigt ämne som hjälper dig att träffa människor i liknande positioner som dig, lära dig mer effektivt och hitta lediga jobb-det är en win-win-situation överallt.

Ämnet är kopplat till iOS-utvecklingsgemenskapen. Detta inkluderar att veta var du ska leta efter nyheter och intressanta idéer, vart du ska gå för att träffa människor och dela tips och vart du ska gå för att ställa frågor.

Vem ska jag följa på Twitter?

Låt oss börja med det enklaste, som är att använda Twitter. Twitter är ett fantastiskt sätt att följa saker som intresserar dig, och det finns några personer som jag starkt skulle rekommendera när det gäller iOS-utveckling.

Ja, dessa personer twittrar om sitt eget arbete, men jag tycker att de är fantastiska att följa eftersom de också twittrar mycket om andra människors arbete – de hjälper dig att se en mängd olika perspektiv på ett visst ämne, och de delar alla möjliga intressanta idéer och saker att prova.

Här är 9 personer jag rekommenderar att du följer på Twitter:

Sean Allen spenderar mycket tid på YouTube att göra Swift- och iOS -utvecklingsvideor, men han arbetar också hårt för att sprida ordet om andras arbete - han gör verkligen ett bra jobb för att hjälpa alla att upptäcka något nytt varje vecka.

Antoine van der Lee driver en iOS-utvecklingswebbplats på https://www.avanderlee.com, men han delar också med sig av några bra länkar till användbara resurser han hittar på GitHub, nyhetsbrev och mer.

Novall Khan fungerar för Apple, men det hindrar henne inte från att regelbundet lägga upp videor om vad hon arbetar med, vad hon lär sig, vad hon har problem med och mer - hon är verkligen inspirerande.

Steve Troughton-Smith är känd för sitt tidigare arbete med att pyssla med iOS, men du borde verkligen följa honom för det fantastiska utbudet av länkar han delar till imponerande arbete. Jag gillar hur han delar utvecklingen av sina egna appar, så att du kan se dem växa från början till slut.

Kaya Thomas är en av vårt communitys mest välkända indieutvecklare, och hon har varit med av Apple fler gånger än jag kan räkna. Hon twittrar ofta om sitt eget arbete och presentationer, men hon delar också länkar till böcker hon läser, artiklar hon läst och andra resurser.

Majid Jabrayilov skriver inte bara en fantastisk Swift och SwiftUI-blogg, utan han är också ett däckless andras promotor – om du följer honom på Twitter får du idé efter idé skickad till dig från en mängd olika källor.

Donny Wals skriver en Swift-blogg och, på senare tid, böcker om Combine och Core Data, men han uppmuntrar också människor att dela vad de arbetar med på Twitter. Även att bara läsa den tråden en gång i veckan kommer att inspirera dig att prova nya saker, så du bör definitivt följa Donny.

Sommer Panage fungerar på Apples tillgänglighetsteam, så även om hon är något begränsad i vad hon kan säga, tweetar hon ut många förstklassiga tips från sig själv och andra som alla kan använda för att bygga bättre appar.

Natascha Fadeeva skriver en blogg om Swift och iOS-utveckling, inklusive artiklar om Core Data, intervjufrågor och andra ämnen, men hon twittrar också om saker hon hittar någon annanstans.

Nyhetsbrev med mera

Nyhetsbrev med mera

Naturligtvis är Twitter inte det enda stället att hålla kontakten med samhället; det finns också nyhetsbrev, Slack-grupper, Zoom-träffar, forum, konferenser och andra platser. Jag vill inte tråka ut dig för mycket, så jag listar bara en av varje här:

Du kan inte gå fel med iOS Dev Weekly för nyhetsbrev. När jag skriver detta har det precis passerat 500 nummer, en varje vecka, vilket jag tror berättar allt du behöver veta om hur viktigt det är.

Om du vill publicera på ett webbforum, https://www.hackingwithswift.com/forums är ganska bra. Det finns många kategorier att välja mellan, och vem som helstless av erfarenhetsnivå, är välkommen att delta. Du är mer än välkommen att posta dina nybörjarfrågor här, tro mig!

Varje månad, iOS Dev Happy Hour hålls på ett Zoom -gruppsamtal med över 300 personer, men det riktigt roliga är i breakout -rummen, där du kan chatta med grupper om 6 till 8 personer åt gången. Det är mycket roligt, och du kommer att träffa nya människor.

Att delta i konferenser har varit svårt på grund av coronavirus-pandemin, men Apple's WWDC var en stor framgång förra året, och det åtföljdes av en massa gemenskapsevenemang. En grupp vänner och jag skapade en GitHub repository för att hålla koll på alla andra händelser, artiklar och annat som hände - ta en titt!

Slutligen, om du föredrar att chatta på Slack där du kan få svar snabbare, kan du gå med gratis Hacka med Swift Slack-gruppen och gå med i en av Swift, SwiftUI och andra kanaler.

Hur lång tid tar det att lära sig iOS?

Det här är en av mina vanliga frågor: hur lång tid tar det att utvecklas från att inte veta något om Swift till att kunna få en iOS-utvecklarposition på grundnivå?

Det uppenbara svaret är "det beror på", men det skulle vara en polis ute i det här fallet, så låt mig ta upp det på några olika sätt.

Den gyllene regeln är att inte rusa

Först och främst kan du inte gå flera kurser samtidigt. Kommer du ihåg vad jag sa om det ”glänsande objektsyndromet”? Ja, många tror att de kan gå två kurser samtidigt, för att sedan klämma i fyra, fem eller ännu fler timmar varje dag och ändå ha en högkvalitativ förståelse för de ämnen de behandlade.

För att vara tydlig, jag har sett människor prova detta så många gånger och det misslyckas alltid. Varje gång - det fungerar aldrig, och jag hör människor säga att det är för att handledningarna var dåliga, eller för att Swift var för svårt, eller av bokstavligen någon annan anledning än att försöka rusa igenom något komplext.

Jag fick bokstavligen precis ett e-postmeddelande där det stod: "Hej Paul! Hur snabbt kan jag avsluta Swift om jag studerar fyra eller fem timmar om dagen?" Och det är helt enkelt inte så inlärning fungerar – oavsett om det är att lära sig Swift, lära sig spela piano, lära sig att åka skridskor eller något annat.

Att lära sig Swift kan ibland vara svårt, och att lära sig bygga appar kräver mycket försök och misstag, att göra misstag och ta fel svängar. Och det är bra – det är bättre än bra, det är fantastiskt! 

För varje gång du försöker något, gör ett misstag eller tar fel vändning lär du dig något längs vägen, och när du äntligen kommer fram till lösningen förstår du det mycket bättre.

Så, TL;DR här är inte bråttom – ta dig tid, var inte rädd för att utforska tangenter som uppstår, var inte rädd för att experimentera med dina projekt och var inte rädd för att gå tillbaka till något du har tidigare lärt dig och läser om det efter behov.

Vad har du för utbildningsbakgrund

Vad har du för utbildningsbakgrund?

För det andra bör du överväga din bakgrund innan du kommer till Swift. Du ser, att lära sig att bygga appar kräver ett brett spektrum av färdigheter, och om du kommer till bordet med en mängd förkunskaper som t.ex. version control, datastrukturer, algoritmer och mer, har du en betydande fördel gentemot dem som är nya inom datavetenskap i allmänhet, liksom Swift och andra Apple ramar.

Så här är några möjligheter för var du kan vara just nu:

Om du har en datavetenskaplig examen kommer du redan att vara bekant med många av CS-grunderna som behövs för att komma igång med Swift. Variabler, arrayer, loopar, arrayer, uppsättningar, funktioner, OOP och andra koncept kommer att vara användbara i Swift, liksom allt ditt arbete med datastrukturer och algoritmer. Detta kan spara dig 4-6 månaders studietid beroende på vilka ämnen du studerat, och det kommer också att ge dig en fördel när du söker jobb på många företag.

Om du inte har en CS -examen men har gått en kodande bootcamp, har du många av de grundläggande elementen du behöver för att komma igång med Swift. Detta ger dig inte samma fördel när du söker jobb på dessa företag eftersom de ofta förväntar sig en examen bara för att markera en ruta på deras lista över godtyckliga krav, men det kommer fortfarande att spara dig tre eller fyra månader.

Om du inte har en CS-examen och inte deltog i ett bootcamp, men du har kodat på din fritid, sparar du lite tid – förmodligen två månader eller så, beroende på vilket språk eller ramverk du använde .

Vad händer om du inte har en CS -examen, inte har gått en bootcamp och inte har någon tidigare erfarenhet av kodning? Då skulle jag uppskatta 9 till 12 månader att gå från ingenting till ett jobb på grundnivå. Ja, det kan vara ett helt års arbete utöver vad ditt nuvarande heltidsjobb är, och det är bara för att få ditt första jobb som iOS-utvecklare.

Är det alltid samma år? Nej. Om du har tidigare erfarenhet kan du skära ner den tiden till 1 till 6 månader, som jag tidigare sagt. Om du tar de bästa siffrorna på båda sidor – 9 månader från ingenting till ett nybörjarjobb, plus 6 månader för att ha en CS-examen – betyder det att du kan anställas på bara 3 månader, vilket är otroligt.

Du kanske tror att det är omöjligt att hitta ditt första jobb på tre månader, men det är det inte. Fan, jag träffade någon som gick min 100 Days of Swift -kurs och fick jobb före dag 50 - de hade redan lärt sig tillräckligt om apputveckling i less än två månader eftersom de ansträngde sig för att få varje dag att räknas.

Så du behöver inte en CS -examen eller en bootcamp, men du måste vara villig att arbeta hårt.

Ge dig själv lite utrymme

Den tredje punkten jag skulle vilja göra innan vi går vidare är att "det tar så lång tid som det tar." Jag älskar en text av John Lennon som säger: "Livet är vad som händer när du är upptagen med att göra andra planer."

Det är fantastiskt om du har stora planer på lärande och stora drömmar för jobbet du vill ha, men ibland är du trött, ibland är du stressad, ibland läcker taket eller din hund behöver gå till veterinären eller dina barn behöver extra. hjälpa till med sina läxor, eller vad som helst, och det är bara livet. 

Så var inte för hård mot dig själv om du hamnar efter med ditt inlärningsschema, eller om du saknar några dagar eller till och med några veckor och så vidare - så länge du är motståndskraftig kommer du att få där.

Det är fantastiskt om du jobbar riktigt hårt och får ett jobb efter 50 dagar - bra jobbat! Om det tar dig 500 dagar är det också fantastiskt, och du borde vara lika stolt över dig själv. Fan, om det tar dig fem år är jag säker på att det inte var vad du ville, men slutresultatet är detsamma, och det är allt som spelar roll.

Gör dig redo att ansöka

Gör dig redo att ansöka

Sist men inte minst, om du är lite längre fram i din iOS-inlärningsresa och funderar på att landa ditt första jobb på grundnivå, skulle jag vilja peka dig på en massiv samling resurser som jag sammanställt för att hjälpa dig.

Jag skulle rekommendera Sean Allens Swift -intervju tipsar videor - han har en hel spellista för dem där du kan arbeta igenom individuella diskussioner som klasser vs strukturer, funktionell programmering, felhantering och mer. Inga av videorna är särskilt långa, men de är alla utformade för att ge dig de färdigheter du behöver för att prestera bra i en intervjusituation.

Var nu?

Okej, så jag har gått igenom de grundläggande och förlängningskunskaper du behöver, vanliga inlärningsfel, kurser du kan ta, hur du ansluter dig till iOS -gemenskapen och hur du förbereder dig för din anställningsintervju - det är mycket att ta upp, och jag hoppas att det har varit till hjälp.

Dessutom hoppas jag att jag har visat hur mycket information som är tillgänglig gratis. 

Ja, frestelsen att spendera hundra dollar eller mer på en kurs är stark, men slappna av - kom igång först, hitta lite fart och hitta också någon som lär Swift på ett sätt som fungerar för dig. När du är på ett bra ställe och känner dig redo, spendera lite pengar om du vill.

Bästa hälsningar på din resa!

Om författaren
David Attard
Författare: David Attardwebbplats: https://www.linkedin.com/in/dattard/
David har arbetat i eller runt online / digital industrin under de senaste 18 åren. Han har stor erfarenhet av mjukvaru- och webbdesignindustrin med WordPress, Joomla och nischer som omger dem. Som digital konsult fokuserar han på att hjälpa företag att få en konkurrensfördel med en kombination av deras webbplats och digitala plattformar som finns idag.

En sak till... Visste du att människor som delar användbara saker som det här inlägget ser fantastiska ut också? ;-)
Tveka inte, lämna en användbara kommentera med dina tankar, dela sedan detta på din Facebook-grupp (er) som skulle tycka att det var användbart och låt oss skörda fördelarna tillsammans. Tack för att du delade och var trevlig!

Upplysningar: Denna sida kan innehålla länkar till externa webbplatser för produkter som vi älskar och rekommenderar helhjärtat. Om du köper produkter vi föreslår kan vi tjäna en remissavgift. Sådana avgifter påverkar inte våra rekommendationer och vi accepterar inte betalningar för positiva recensioner.

Författare Utvalda på:  Inc Magazine-logotyp   Sitepoint-logotyp   CSS Tricks-logotyp    webbdesignerdepot-logotyp   WPMU DEV-logotyp   och många fler ...