Hvordan jeg lærte iOS-udvikling

Fra tid til anden spørger folk mig, hvordan man lærer iOS-udvikling. Så her går vi.

Før du begynder, skal du være seriøs med dit slutmål. Forsøger du at prototype et koncept, få finansiering og ansætte derefter en anden til at tackle det? Er du en "generalist", der har brug for at komme hurtigt op. Jeg har fået gode nyheder: Jeg har set folk sende apps inden for et par uger.

Men mit råd handler ikke om at optimere til dit første projekt. Jeg tænker mere på langtræket. Du ved allerede, hvordan man programmerer, og du er klar til at investere en god del af tiden til at mestre iOS-udvikling.

Trin 1: Vælg noget, du skal bygge for dig selv

Måske er jeg kablet anderledes, men kan ikke bare læse en lærebog. Jeg har brug for kontekst og praksis.

Når jeg lærer et sprog, har jeg brug for en rideblade til forstærkning. Jeg fandt Legepladser uvurderlige, når jeg lærte Swift.

For at lære iOS fra top til bund, kom med en lille app, der ridser en kløe. Hvis det motiverer dig, kan det være en todo-liste, meditationsapp eller en vejrkontrol. Jeg ville læne mig mod noget mere personligt. Hej, måske en app til at hjælpe dine forældres virksomhed?

Trin 2: Studer sprogene

Før du forstår platformen, skal du kende sprogene indefra og ud. Ja, sprog er flertal.

Mens Swift har nået kritisk masse, er der en hel masse Objekt-C-koder derude. Du behøver ikke beherske alle detaljer på sproget, men du skal være i stand til at læse det. Jeg plejede at undervise Objekt-C til ingeniører på en dag. Det er et lille sprog.

Swift: Læs Apples Swift-programmeringssprogbog. Hvis du vil have en hurtig introduktion, kan du se Kom godt i gang med Swift fra Apples årlige udviklerkonference, WWDC.

Mål-C: Apple har en gratis guide, der får jobbet gjort.

Kan jeg ikke bruge [yndlingssprog]?

Der er tredjepartsværktøjer til at oprette apps i JavaScript, C #, uanset hvad. Undgå dem som pesten. De fleste iPhone-apps bruger Swift og Objectivity-C. Hele Apples værktøjskæde er optimeret til disse sprog. Når dit alternative sprog bryder af mystiske grunde - og det vil det - er du på din egen.

Det meste af din tid vil blive brugt på at lære Apples rammer, ikke syntaks. Kodeprøverne for disse rammer er i Swift, så du er nødt til at lære Swift alligevel.

Trin 3: Læs Apples vejledninger

Der mangler ikke på bøger og tutorials og screencasts fra tredjeparter om iOS-udvikling. Nogle er gode, andre er dårlige, og for mange forsøger at sælge dig til noget, du ikke har brug for. Den ultimative autoritet er Apple, og de giver væk enestående gratis indhold.

Læs Start med at udvikle iOS-apps med Swift. Læs derefter hver guide i "Hvor skal jeg gå herfra." Så, hvis du vil høre et emne formuleret forskelligt, skal du gennemse WWDC-videoer. Hvis du derefter vil gå i dybden, skal du læse dokumenterne.

Hvis Apples dokumenter er lidt for tørre, dækker websteder som NSHipster mange nybegynderemner med en mere afslappet tone. Websteder som RayWenderlich.com dækker indhold i et tutorialformat. Objc.io har stor dybdegående skrivning, men det er sandsynligvis for avanceret til dig lige nu.

Der er tidspunkter, hvor tredjepartsforfattere er uenige med Apple. Prøv Apples måde lige nu.

Trin 4: Stop med at læse. Bare opbyg din app.

Du har optaget alt, hvad Apple har givet dig? Du kan fortælle mig, hvad MVC er? Hvad gør en UIView? Du ved, hvordan man skal Google, når du sidder fast? Du har alt, hvad du har brug for. Gå og bygg din app.

Helt seriøst. Bare gå og bygg det.

Du rammer et punkt, hvor du vil, "Hvordan ændrer jeg baggrundsfarven på en visning?" Det første søgeresultat er selvfølgelig Stack Overflow. Bekræft det med dokumentationen på UIView.

Når du først går ud over koncepter på højt niveau, og ind i "Hvordan gør jeg faktisk X," er det hele Googling. Spørg enhver udvikler, hvordan man skriver en tilpasset overgangsanimation mellem to visningskontrollere. Svaret: "Jeg google det."

Det er fristende at tro, at du kan mestre noget ved blot at læse kun et blogindlæg mere eller se en video mere. Nix. Du forstår sandsynligvis det grundlæggende. Du når det næste niveau gennem prøve og fejl.

Hvad med det her om MVVM / VIPER / FRP?

Hvis du læser for meget, før du bygger, og omstreber for langt fra Apple, vil du læse om forskellige iOS-arkitekturer. Disse forsøger at løse problemer, som du ikke forstår endnu. Disse blev opfundet af tredjepart, så Apple støtter dem ikke.

Lav en app ved hjælp af Apples kedelige arkitektur, MVC. Når du har gjort det i et stykke tid, skal du gå tilbage og derefter tage et kig på disse arkitekturer. Jeg bruger dem ikke, men hey, måske finder du værdi i dem.

Men hvad med pakkeledere og bygge værktøjer ?!

Et argument kunne fremsættes om, at du straks skulle lære om Carthage og CocoaPods, som er tredjepartsværktøjer til styring af afhængigheder. Eller Fastlane, der lover at automatisere komplekse build-opgaver.

Når du adskiller dig fra Apples understøttede værktøjskæde, bliver ting skrøbelige, da de er afhængige af ikke-understøttede API'er. På nogle projekter kan det være værd at lejlighedsvis brud være den tid, disse redskaber sparer.

Men da så mange hold undgår disse værktøjer på grund af deres hovedpine, ville jeg ikke betragte dem som vigtige. Tværtimod. Efter min mening bør du ikke bruge disse værktøjer, før du har forstået, hvad der foregår nedenunder.

Trin 5: Udforsk økosystemet

Apple kan være en autoritet, men du har brug for forskellige meninger for at afbalancere kølehjælpen. Krydret udviklere uden for Cupertino klager over alle edge cases i Apples API'er, og de forfærdelige hacks, det tog at arbejde omkring dem.

Men så snart du vove dig ind i det større iOS-økosystem, vil du støde på argumenter om Interface Builder, Core Data, Auto Layout og masser af andre ting. De er altid affyret af anekdoter og meninger, ikke data.

Brug kritisk tænkning. Gå tilbage og spørg, hvor forfatteren kommer fra. Det tager kun et par blogindlæg at blive en autoritet på et emne, selvom forfatteren aldrig har sendt noget markant omkring det.

Jeg anbefaler ikke, at du kun lytter til folk, der arbejder på Facebook / Instagram / Twitter / Pinterest. Disse apps har meget forskellige krav end 99% af apps i verden. Filtrer deres råd gennem linsen, "Det er hvad du gør, når du har hundrede udviklere, der arbejder på en app, der bruges af hundreder af millioner af mennesker." De læner sig mod risikoaversion.

I den anden ende af spektret har små konsulentfirmaer nyttig indsigt takket være mangfoldigheden af ​​projekter, de jonglerer. Men nogle gange anbefaler de nye sprog og rammer, før de er stabile nok til kritiske projekter.

Brug kritisk tænkning, især på mennesker med mange tilhængere.

Trin 6 til ∞: Lav en anden app

Har du lige afsluttet en Todo List-app? Store. Arbejd nu på noget andet, som en fotofilter-app, så du lærer om AVFoundation. Når du har gjort det, skal du opbygge noget, der kræver kort, og du lærer om GPS og MapKit.

Jeg begyndte i Cocoa-udviklingen for ti år siden på Mac, og jeg lærer stadig nye ting. Den eneste hemmelighed er at finde nye måder at udfordre dig selv på.