Come diventare uno sviluppatore iOS nel 2021: una guida definitiva

In questo articolo, esaminerò ciò che credo serva per diventare uno sviluppatore iOS nel 2021. 

Mi rivolgo esattamente a due gruppi di persone, principianti assoluti di Swift - persone che non hanno mai costruito nulla per iOS prima - e i cosiddetti falsi principianti - persone che hanno provato a imparare Swift prima ma non hanno mai veramente raggiunto il loro obiettivo di ottenere un lavoro a tempo pieno.

Regardless del tuo livello attuale, l'obiettivo qui è lo stesso. Per metterti in condizione di candidarti per un ruolo di sviluppatore iOS junior presso un'azienda.

Vedremo le abilità che dovresti imparare, i corsi che puoi seguire, come entrare in contatto con la comunità, gli errori comuni commessi dalle persone e altro ancora. 

La cosa migliore è che tutto ciò di cui parlerò sarà completamente gratuito, quindi non dovrai pagare un centesimo per seguirlo.

Seriamente, troppe persone credono che spendere un sacco di soldi li metterà sulla strada giusta per il lavoro dei loro sogni, quando i fattori più importanti sono la determinazione e la forza di volontà. 

Ecco un suggerimento: se stai già pensando di saltare avanti in questo articolo, probabilmente dovresti lavorare sulla tua forza di volontà!

Questo articolo è diviso in sette sezioni:

  1. Competenze fondamentali che devi avere per ottenere un lavoro.
  2. Competenze di estensione che è bello avere – quelle che ti distingueranno dalla massa se ti impegni per impararle
  3. Errori comuni che le persone commettono quando cercano di imparare.
  4. Le numerose risorse gratuite disponibili per aiutarti a imparare Swift.
  5. Come entrare in contatto con la comunità di sviluppo iOS.
  6. Una stima di quanto tempo ci vorrà per raggiungere il tuo obiettivo.
  7. Ti stai preparando per candidarti per il tuo primo lavoro.

Le competenze fondamentali necessarie per diventare uno sviluppatore iOS

Le competenze fondamentali necessarie per diventare uno sviluppatore iOS

Qual è il minimo indispensabile di competenze richieste per ottenere un lavoro nello sviluppo di iOS? 

Credo che siano cinque in totale:

  1. Swift 
  2. SwiftUI 
  3. Networking
  4. Lavorare con i dati
  5. Gestione della versione

Tale elenco è intenzionalmente ridotto per una serie di motivi:

Più impari, più ti rendi conto che c'è da imparare, quindi è facile dedicare così tanto tempo allo studio e alla pratica che perdi di vista l'obiettivo principale.

Vuoi lavorare come sviluppatore iOS, non solo sederti a imparare cose nuove!

È quasi certo che ti unirai a un team che ha già un'app che vuole che tu aiuti a sviluppare, quindi nonless sei estremamente fortunato, avranno bisogno di insegnarti un sacco di cose riguardoless.

Se provi a stipare in anticipo un sacco di argomenti extra, probabilmente stai perdendo tempo.

Due di queste cinque cose sono enormi e complicate, e potresti passare mesi a cercare di avvolgerci la testa senza avventurarti da nessun'altra parte.

Ancora più importante, se ottieni queste cinque cose nel modo giusto, puoi creare un'ampia varietà di app. Certo, il tuo codice non sarà perfetto, ma va bene perché l'unico modo per scrivere un ottimo codice è scrivere prima un sacco di cattivo codice.

Permettetemi di suddividere i cinque elementi in pezzi più piccoli.

Imparare velocemente

Swift è il primo della lista. Questo è Appleil linguaggio di programmazione principale di. Non ha il concetto di visualizzare informazioni sullo schermo di un iPhone o scaricare dati da Internet. 

È semplicemente un linguaggio simile a JavaScript o Python. È solo puro codice che usi per creare variabili, scrivere funzioni e così via.

Swift ha solo pochi anni, quindi utilizza quasi tutte le funzionalità linguistiche all'avanguardia disponibili. 

Da un lato, questo significa che puoi evitare tutti i vecchi comportamenti irritabili che sono comuni nei linguaggi più vecchi come C++ e Java. Significa anche che ha una sfilza di funzionalità più avanzate che all'inizio potrebbero farti impazzire.

E va bene. Molte parti di Swift sono relativamente semplici, mentre altre ti richiederanno più tempo per comprenderle appieno, quindi prenditi il ​​​​tuo tempo e persevera: ci arriverai!

SwiftUI

La seconda abilità di base che ho menzionato è SwiftUI, che è un Apple framework che ci consente di utilizzare Swift per creare app per iOS, macOS, tvOS e persino watchOS. 

Quindi, mentre Swift è il linguaggio di programmazione, SwiftUI fornisce gli strumenti per sviluppatori per creare app, ad esempio come visualizzare immagini, testo, pulsanti, caselle di testo, tabelle di dati e altro. 

Per essere chiari, SwiftUI non è un sostituto di Swift: è un framework basato su Swift che ci consente di creare app. Dovrai conoscere sia Swift che SwiftUI per avere successo.

Se pensavi che Swift fosse nuovo, non hai ancora visto niente! 

Per quanto ne so, SwiftUI ha solo due anni! Nonostante la sua giovinezza, la comunità iOS lo ha abbracciato con tutto il cuore perché è così facile da usare.

Apple ha anche un vecchio framework per la creazione di app iOS chiamato UIKit, e se chiedi a un gruppo di persone se dovresti imparare prima SwiftUI o UIKit, otterrai una varietà di risposte. 

Penso che dovresti imparare SwiftUI.

Quindi, nel caso ve lo stiate chiedendo, ecco perché credo che dovreste dare la priorità a SwiftUI come abilità di base.

È significativamente più semplice di UIKit, e intendo in modo significativo: ci vuole forse un quarto del codice per ottenere gli stessi risultati di UIKit e ci sono meno cose da imparare lungo la strada. 

Ciò significa che ottieni molto slancio perché puoi costruire cose più velocemente, vedere i risultati più velocemente e iterare su quei risultati più velocemente, il che è estremamente motivante durante l'apprendimento.

Creato per Swift

Creato per Swift

SwiftUI è stato creato per Swift, utilizzando le funzionalità del linguaggio per aiutarti a evitare problemi e ottenere le massime prestazioni. 

Ad esempio, se modifichi alcuni dati su una schermata di un'app, SwiftUI assicurerà automaticamente che i nuovi dati vengano aggiornati in qualsiasi altra parte dell'app che li utilizza: non devi scrivere codice per mantenere tutto sincronizzato da solo, che è sorprendentemente complesso. 

UIKit, d'altra parte, è stato scritto per Apple's vecchio linguaggio, Objective-C, e di conseguenza ha tutti i tipi di stranezze che derivano dalla sua età.

SwiftUI è compatibile con tutti Apple's, quindi puoi utilizzare ciò che hai imparato su iOS per creare un'app macOS o watchOS con codice quasi identico. 

Certo, alcune funzionalità, come la Digital Crown, sono esclusive di un singolo dispositivo, ma la stragrande maggioranza di ciò che impari funzionerà su qualsiasi dispositivo.

Ma, soprattutto, SwiftUI è la direzione in cui stanno andando le cose. 

Se ti stessi candidando per un lavoro in questo momento, probabilmente avresti bisogno di conoscere UIKit, ma il fatto che stai leggendo questo significa che sei molto più avanti nel processo. 

Sì, UIKit è più popolare ora, ma SwiftUI sarà il framework dell'interfaccia utente dominante quando avrai finito di impararlo tra 6, 9 o anche 12 mesi.

Seriamente, le più grandi aziende del mondo, tra cui Apple, stanno scegliendo SwiftUI.

quando Apple widget lanciati di recente in iOS 14, hanno reso obbligatorio l'utilizzo di SwiftUI.

Reti e manipolazione dei dati

La terza e la quarta abilità che ho menzionato erano il networking e la manipolazione dei dati. Rispetto a Swift e SwiftUI, questi sono un gioco da ragazzi, o almeno al livello richiesto per ottenere un lavoro di sviluppatore iOS junior.

Il networking è la pratica di recuperare dati da Internet o inviare dati da un dispositivo locale a un server remoto. 

Esistono numerosi metodi per ottenere ciò, ma la cosa più importante da capire è come recuperare JSON da un server.

Ed è qui che entra in gioco l'altra abilità essenziale, lavorare con i dati. 

Di nuovo, ci sono molti modi per caricare e salvare i dati, ma il minimo assoluto che devi essere in grado di fare è convertire i dati che hai ricevuto da un server usando il tuo codice di rete in informazioni che la tua app può visualizzare.

Quindi, la terza e la quarta abilità fondamentali sono indissolubilmente legate. Recupera alcuni dati da un server, quindi convertili in informazioni che possono essere visualizzate nella tua app. Alcuni sviluppatori scherzano sul fatto che scrivere questo tipo di codice è metà del lavoro di uno sviluppatore iOS, ed è certamente vero che ci facciamo molto affidamento.

Version control

L'abilità finale non è affatto programmare, è version control, come Git. Ancora una volta, non hai bisogno di molto qui, ma è importante che tu sia in grado di pubblicare il tuo codice in un luogo pubblico, come GitHub, in modo che i reclutatori possano vedere il tuo lavoro.

Nessuno al mondo capisce veramente come funziona Git, ma va bene così: devi solo conoscere le nozioni di base sufficienti per archiviare i tuoi dati in modo sicuro e collaborare con gli altri.

Quindi, quando quei cinque vengono sommati, ce ne sono due enormi – Swift e SwiftUI – oltre a tre minori ma importanti. 

Se riesci a concentrarti su queste cinque cose senza distrarti, sarai sulla buona strada per il tuo primo lavoro da sviluppatore iOS.

Questo è tutto: queste sono le cinque competenze essenziali che credo tu abbia bisogno per essere uno sviluppatore iOS. 

Ci sono migliaia di persone che hanno solo queste abilità e possono creare e distribuire fantastiche app sull'App Store.

Cosa viene dopo i fondamentali

Cosa viene dopo i fondamentali?

Una volta acquisite le cinque competenze fondamentali, sarai in grado di spedire le tue app e lavorare come sviluppatore indipendente, nonché candidarti per posizioni di sviluppo iOS junior e lavorare per un'azienda, se è quello che vuoi fare. 

Non sono richieste altre qualifiche speciali: basta inchiodare quelle abilità di base e starai bene.

Tuttavia, se hai imparato queste abilità e vuoi avanzare, ci sono altre cinque abilità che ti consiglio di imparare. Queste sono le abilità che ti porteranno da una buona posizione a una fantastica: diventerai ancora più occupabile e la gamma di app che sarai in grado di creare si espanderà ulteriormente.

Le abilità sono le seguenti:

  • UIKit 
  • Dati principali 
  • Convalida
  • Testing
  • Architettura del software
  • multithreading

Come prima, vorrei esaminare ciascuno di questi in modo più dettagliato in modo che tu capisca perché penso che siano importanti e perché li considero competenze di estensione piuttosto che competenze di base.

UIKit

Innanzitutto, c'è UIKit. Questo è AppleIl vecchio framework dell'interfaccia utente, che è stato utilizzato per lo sviluppo di app dal 2008, ha 13 anni mentre scrivo questo, che è vecchio in termini di software. Ma questo non significa che UIKit sia cattivo. In effetti, quando ti abituerai a come funziona, rimarrai sorpreso da quanto possa essere elegante.

Ci sono numerosi motivi per cui vale la pena imparare UIKit, tra cui:

Centinaia di migliaia di app sono già state scritte in UIKit, quindi se ti unisci a un'azienda che ha un'app grande e ben consolidata, quasi sicuramente ti verrà richiesto di scrivere il codice UIKit per mantenere quell'app.

UIKit è molto più potente di SwiftUI: ci sono molte cose che puoi fare in UIKit che attualmente non sono possibili in SwiftUI.

Utilizzando la tecnologia Auto Layout, puoi creare layout estremamente precisi.

Se riscontri problemi con il tuo codice, UIKit ha più soluzioni di SwiftUI semplicemente perché è in circolazione da molto più tempo.

Tutto ciò fa sembrare UIKit fantastico, quindi perché l'ho reso un'abilità di estensione piuttosto che un'abilità di base? 

Perché anche UIKit ha problemi:

Quasi tutto è più difficile da fare in UIKit che in SwiftUI, con alcune attività che richiedono cento volte, se non di più, codice. 

SwiftUI è stato progettato specificamente per lo sviluppo iOS moderno, quindi fa molto del lavoro pesante per te.

Poiché UIKit non è stato scritto in Swift, ha molte funzionalità che SwiftUI non ha: molti optional implicitamente scartati, contrassegnando il codice con uno speciale attributo @objc per renderlo disponibile al ventre Objective-C di UIKit e la necessità di utilizzare protocolli e delegati per visualizzare dati semplici.

Nulla di Auto Layout è "automatico" - infatti, se mai provi a costruire un layout complesso, potresti avere incubi su Auto Layout. È estremamente intelligente, ma in alcuni punti è anche estremamente difficile.

Ed è per questo che considero UIKit un'abilità di estensione: richiede molto più tempo e sforzi per imparare rispetto a SwiftUI, il che significa che richiede molta più determinazione: devi davvero volerlo imparare, altrimenti ti confonderai , annoiato, arrabbiato o potenzialmente tutti e tre. 

Certo, SwiftUI non ha tutte le funzionalità di UIKit, ma ti consente di fare rapidi progressi e guadagnare slancio prima di passare a UIKit.

Gestione dei dati principali

Gestione dei dati principali

Dati principali, Apple's framework per lavorare con i dati delle applicazioni, è la seconda abilità di estensione che ho menzionato. 

Ho menzionato il networking e il lavoro con i dati nella sezione delle competenze di base, ed è vero. Con queste abilità in atto, puoi recuperare tutto ciò che vuoi da un server e visualizzarlo nella tua app. 

Core Data fa un ulteriore passo avanti consentendo di manipolare quei dati una volta ottenuti, come la ricerca di valori specifici, l'ordinamento dei risultati e altro ancora, il tutto in modo molto efficiente. 

Può anche connettersi facilmente a iCloud, assicurando che i dati dei tuoi utenti siano sincronizzati su tutti i loro dispositivi.

Core Data ha una serie di inconvenienti, il più grave dei quali è che non è sempre piacevole lavorarci. Core Data è vecchio quasi quanto UIKit e, sebbene abbia funzionato bene in Objective-C, non sembra così naturale in Swift. 

Si integra bene con SwiftUI, il che lo fa sentire less strano, ma è ancora un argomento sorprendentemente complesso.

Quindi, perché l'ho inclusa come abilità di estensione? Perché, come UIKit, Core Data è estremamente popolare: centinaia di migliaia di app sono state create con esso ed è utilizzato in molte aziende grandi e piccole. 

Core Data, come UIKit, è estremamente potente e, sebbene tu possa ricrearne le parti più importanti nel tuo codice, perché dovresti?

Testare il tuo codice

La terza abilità nel mio elenco di estensioni è il test. Scrivere codice speciale per garantire che il codice dell'app principale funzioni come previsto. 

I test ci consentono di garantire che il nostro codice funzioni correttamente e, cosa più importante, che continui a funzionare correttamente anche dopo aver apportato modifiche significative.

Ad esempio, se modifichi 500 righe di codice per implementare una nuova funzionalità e tutti i tuoi test passano, sei a posto.

Di conseguenza, i test sono fondamentali e ti aiuteranno a scrivere software di qualità superiore. 

Quindi, perché è considerata un'abilità di estensione piuttosto che un'abilità di base? 

Ci sono tre ragioni per questo:

La comunità iOS nel suo insieme è terribile nei test, per qualsiasi motivo storico. Voglio dire, davvero male: molte app di grandi dimensioni non hanno alcun test e ho perso il conto del numero di sviluppatori iOS senior che ho incontrato che sono quasi orgogliosi di non scrivere mai test. 

Quando consideri tutte le cose incredibili con cui puoi creare Applestrumenti e framework, scrivere test non sembra molto divertente in confronto. 

Personalmente, mi diverto a scrivere i test allo stesso modo in cui mi diverto a usare il filo interdentale, ma so che molte persone non lo fanno, soprattutto quando lavorano su progetti personali.

Quando fai domanda per un lavoro, conoscendo Swift e Applei principali framework saranno sempre più utili del sapere come scrivere i test. 

Le aziende preferirebbero che tu sappia come usare SwiftUI, UIKit o uno degli altri grandi successi, perché i test sono un argomento molto più piccolo: non ci sono così tante cose da imparare.

Quindi, il test è importante, il test è importante e mi piacerebbe insegnarti come scrivere ottimi test. Ma solo dopo aver padroneggiato i fondamenti dello sviluppo di app, dopo aver avuto un certo successo, aver sentito la fretta di avere la tua app live sull'App Store e aver padroneggiato i test.

Architettura del software

Architettura del software

La quarta abilità di estensione di cui vorrei discutere è l'architettura software, che riguarda in realtà il modo in cui scriviamo il codice. 

Scriverai un codice terribile quando inizierai per la prima volta, un codice così cattivo che probabilmente viola la convenzione di Ginevra. 

Va bene perché è così che impari. Non inizi bene, diventi buono rimanendo cattivo per molto tempo, proprio come LeBron James non è nato campione di basket.

Il punto è che ti attieni al tuo cattivo codice finché non capisci come fare meglio. È qui che entra in gioco l'architettura software. Esaminare le tecniche collaudate per strutturare il codice per renderlo più facile da leggere, utilizzare, modificare e mantenere a lungo termine. 

Queste tecniche a volte si basano sul modo in cui funziona Swift: funzionalità del linguaggio che possono essere utilizzate per scrivere codice migliore. 

Tuttavia, esistono numerose altre tecniche che funzionano in qualsiasi linguaggio di programmazione e sono comunemente chiamate modelli di progettazione.

Un aspetto importante di questa abilità che dovresti iniziare a imparare è come suddividere il tuo codice. 

Ad esempio, se stai creando una singola schermata nella tua app, potrebbe includere un pulsante di accesso, una galleria di immagini e un elenco di amici. 

Tuttavia, dovresti idealmente separare ciascuna di queste parti (un componente del pulsante di accesso, un componente della galleria di immagini e un componente dell'elenco di amici) in modo da poter riutilizzare qualsiasi di questi componenti in altre parti della tua app.

L'architettura del software è molto più soggettiva delle altre abilità che ho discusso finora. Per gli altri, come SwiftUI, puoi ragionare: "Beh, so come fare X, Y e Z, quindi sono sicuro di essere un buon sviluppatore SwiftUI".

 L'architettura del software è un argomento molto ampio e spesso non esiste un modo "giusto" ovvio per risolvere un problema, quindi credo che il miglior punto di riferimento sia questo: guardi indietro al tuo codice di sei mesi fa, un anno fa e presto.

Ancora una volta, scrivere codice errato è accettabile purché ti avvicini a scrivere codice migliore. 

Certamente faccio una smorfia quando ripenso al codice che ho scritto cinque anni fa, perché ora ne so più di quanto ne sapessi allora – e questa è una buona cosa.

multithreading

L'ultima abilità di estensione di cui vorrei discutere è il multithreading, che è la pratica di far fare al codice più di una cosa alla volta. 

Il multithreading può essere una vera seccatura perché è difficile da comprendere per il nostro cervello. Quando il tuo codice fa una cosa alla volta, possiamo pensarci in modo lineare, ma quando due o tre cose accadono contemporaneamente, potenzialmente sovrapposte, può davvero piegare il tuo cervello.

Quindi, mentre il multithreading è una grande abilità da avere come abilità di estensione, dovresti essere cauto. Il tuo obiettivo dovrebbe essere quello di comprendere quanto basta dei concetti e del codice per farlo funzionare bene senza andare troppo lontano. 

Ad essere onesti, molti sviluppatori credono che il multithreading renderà istantaneamente il loro codice eseguito tre o quattro volte più velocemente. 

Mentre questo è vero in alcuni casi, in molti altri casi, il tuo codice verrà effettivamente eseguito più lentamente e ora dovrai affrontare tutta la complessità aggiuntiva del codice.

Se non mi credi, considera questa citazione di David Smith: è un membro di Apple's Swift e in precedenza ha trascorso anni a lavorare sul nucleo di Applele strutture di:

“La mia raccomandazione specifica è di evitare il più possibile di scrivere codice asincrono/concorrente. Questo può sembrare strano nel 2018, ma il costo in termini di complessità e prestazioni è elevato.

Quindi, impara un po' come funziona il multithreading in Swift per dimostrare che comprendi i concetti e l'implementazione, ma non esagerare!"

Errori comuni che fanno i nuovi sviluppatori iOS

Errori comuni che fanno i nuovi sviluppatori iOS

A questo punto, ho elencato tutte le competenze di base e di estensione che credo dovrai lavorare come sviluppatore iOS a tempo pieno. 

Ma voglio anche discutere di alcuni degli errori più comuni che le persone commettono durante l'apprendimento, perché li vedo sempre e so come ostacolano le persone.

Ci sono sette problemi principali che le persone devono affrontare e vorrei esaminarli in ordine. 

Essi sono i seguenti:

  1. Ricordando tutto
  2. Sindrome dell'oggetto lucido
  3. L'apprendimento del lupo solitario
  4. Utilizzo del software beta
  5. A seconda di Applela documentazione di
  6. Impantanarsi in Objective-C
  7. Mirando ad altre lingue

Esaminiamoli uno per uno.

Smettila di cercare di ricordare tutto

Smettila di cercare di ricordare tutto

Il primo, e di gran lunga il più comune, problema che le persone incontrano è cercare di memorizzare tutto, leggendo un tutorial e credendo di dover ricordare tutto a memoria. 

Per favore, per favore, per favore non farlo. È una ricetta per il disastro e fiaccherà tutta la tua forza di volontà al punto che non vorrai più programmare.

Nessuno ricorda tutto. Nessuno si avvicina a ricordare tutto. Anche considerando solo le API pubblicate da Apple, che sono i pezzi di codice che possiamo usare per costruire le nostre app, devono essercene ben più di centomila disponibili. 

Anche se lo limiti ai componenti principali dello sviluppo di app, ne stai ancora esaminando diverse centinaia, tutte funzionanti in un modo molto preciso che richiede molto apprendimento per l'uso.

Invece, impari come fare qualcosa di nuovo e poi dimentichi subito come farlo di nuovo. 

Quindi, lo cerchi, lo usi di nuovo e poi te ne dimentichi prontamente. Quindi, lo cerchi una terza volta e lo usi, e questa volta per lo più lo dimentichi: alcune parti rimangono con te. 

Questo ciclo continua indefinitamente, con ogni volta che devi fare riferimento a un tutorial o a qualche altra guida di riferimento, fino a quando i fondamenti non sono radicati nella tua mente al punto da poterlo fare senza consultare nessun altro.

Se non lo sapevi già, dimenticare è una parte importante dell'apprendimento. 

Ogni volta che dimentichi qualcosa e la impari di nuovo, sprofonda sempre più profondamente nel tuo cervello. Quando impari di nuovo qualcosa, il tuo cervello crea nuove connessioni con altre cose che hai imparato, il che ti aiuta a capire di più il contesto di ciò che stai cercando di fare. 

E ogni volta che impari di nuovo, stai segnalando al tuo cervello che questo particolare argomento è abbastanza importante da essere memorizzato nella sua memoria a lungo termine.

Ma se ti metti a memorizzare tutto, farai fatica. 

Invece, non preoccuparti di dimenticare le cose. Sapere dove cercarli è molto più importante che memorizzare un codice Swift specifico per realizzare qualcosa. 

Quando dimentichi qualcosa e devi impararla di nuovo, considerala una buona cosa: quell'informazione affonderà più in profondità la seconda, la terza e la decima volta che la impari, quindi stai aiutando il tuo cervello.

Evita la sindrome dell'oggetto lucido

Il secondo problema più comune che vedo incontrare è quello che chiamo "sindrome dell'oggetto brillante", in cui trovano una serie di tutorial che funziona bene per loro e iniziano a fare progressi, ma dopo una o due settimane, notano un'altra serie di tutorial che voglio seguire e saltare la nave a quello invece. 

Ho ricevuto email da persone che mi dicono che hanno provato quattro, cinque o anche sei serie diverse e non stanno imparando nulla per qualche strana ragione.

Il problema qui è che molti aspetti dell'apprendimento di qualsiasi cosa non sono interessanti. Non è necessariamente colpa dell'insegnante. 

È solo un fatto di imparare a programmare: alcune cose ti danno grandi risultati con poco sforzo, mentre altre richiedono molto più tempo per capire, non producono risultati fantasiosi o sono solo una parte di un concetto più ampio.

Quando colpisci queste ripide curve di apprendimento, entra in gioco la sindrome dell'oggetto lucido: con così tanti tutorial gratuiti disponibili, puoi saltare la nave a uno di essi e riavviare, e tornerai nella parte bassa della piscina, coprendo le parti più facili hai già imparato. 

Ma, unless il corso originale ha scelto un argomento insolito da trattare, probabilmente alla fine dovrai impararlo e stai solo rimandando l'inevitabile.

Quindi, non ti sto chiedendo di resistere sempre alla sindrome dell'oggetto lucido perché capisco quanto sia difficile. Invece, almeno sii consapevole: quando incontri un problema, prova a chiedere aiuto a qualcun altro e persevera piuttosto che cambiare.

Non andare da solo

Non andare da solo

Parlando di chiedere a qualcun altro, il terzo problema in cui vedo le persone incapparsi è quando diventano un lupo solitario con il loro apprendimento: credono di essere pienamente in grado di imparare a creare app iOS utilizzando Swift da soli e non richiedono l'assistenza di altri .

Questo metodo funziona per un numero molto ridotto di persone, in genere quelle con una vasta esperienza con altri linguaggi o piattaforme di programmazione. 

Tuttavia, per la stragrande maggioranza delle persone, imparare in questo modo è un'esperienza terribile: ogni errore o malinteso richiede cinque volte più tempo per essere risolto, è estremamente facile perdere la motivazione e ti perdi molta ispirazione guardando altri riescono.

Se sei uno studente naturale del "lupo solitario", ti incoraggio a cambiare i tuoi modi. 

Condividi ciò che stai imparando, connettiti con gli altri che stanno imparando e sviluppa l'abitudine di fare domande. 

Non solo scoprirai una fantastica comunità di studenti che ti sosterranno e incoraggeranno, ma sarai anche ispirato dal loro lavoro e, a sua volta, ispirerai loro con il tuo. Credimi, l'ho visto centinaia di volte ed è completamente trasformativo.

Non usare le versioni beta

Il quarto problema principale che vedo è quando le persone insistono nell'usare le versioni beta di Applegli strumenti di sviluppo. 

Capisco: ogni anno, Apple rilascia un nuovo iOS, un nuovo macOS e altri prodotti, offrendoci sempre cose nuove ed entusiasmanti da provare. È naturale che le persone vogliano imparare le ultime novità e le migliori, soprattutto se sanno che Swift ha una lunga storia di cambiamenti.

Tuttavia, quando le persone cercano di imparare con il software beta, si imbattono in una serie di problemi:

Poiché i tutorial non sono stati aggiornati per la versione beta, seguire le loro istruzioni non sarà sempre possibile o fallirà.

I bug sono comuni nelle beta, in particolare quelli rilasciati per i principali aggiornamenti iOS.

AppleI framework beta richiedono tempo per stabilizzarsi, il che significa che il codice che funzionava nella beta 1 potrebbe non funzionare nella beta 3.

Quindi, anche se è eccitante imparare cose nuove e potresti credere di essere all'avanguardia con nuove funzionalità, fidati di me: non ne vale la pena. 

Utilizza sempre le versioni pubbliche più recenti di Applefino a quando non ti senti a tuo agio con loro.

Basandosi sulla documentazione ufficiale

Basandosi sulla documentazione ufficiale

Il quinto problema principale che le persone affrontano quando cercano di imparare è fare affidamento su Applela documentazione. 

AppleIl team delle pubblicazioni degli sviluppatori lavora duramente per documentare il più possibile dalla vasta gamma di framework dell'azienda, ma il loro compito principale è scrivere materiale di riferimento - cose che leggi quando stai cercando di utilizzare un pezzo specifico dei loro strumenti - piuttosto che creando un corso strutturato per aiutarti a imparare a costruire app iOS.

Ho perso il conto del numero di volte in cui le persone mi hanno chiesto "Come posso imparare Swift?" solo per sentirsi dire: "Leggi Applela guida di riferimento Swift." 

Questo approccio funziona per alcune persone e lo so perché ha funzionato per me quando Swift è stato annunciato per la prima volta: l'ho letto dall'inizio alla fine. 

Tuttavia, per la maggior parte delle persone, è simile a cercare di imparare una lingua umana leggendo un dizionario. Ha lo scopo di coprire tutto nella lingua piuttosto che insegnarti le parti più importanti e come applicarle.

Quindi, se hai una vasta esperienza con altre lingue, leggi AppleLe guide di riferimento possono essere utili, ma se sei appena agli inizi, potresti volerle rivisitare dopo alcuni mesi.

Impantanarsi in Objective-C

Il sesto problema principale che le persone affrontano è il tentativo di imparare l'Obiettivo-C. Questo era Apple's principale linguaggio di sviluppo prima dell'introduzione di Swift, e mentre ci sono resti in alcune vecchie basi di codice, la stragrande maggioranza del codice esistente ora è Swift, e quasi tutto il nuovo codice è anche Swift.

Ho passato anni a scrivere Objective-C prima di Swift e ho imparato ad amarlo, ma ha una curva di apprendimento estremamente ripida e manca della maggior parte delle caratteristiche importanti di Swift. 

mi ricordo quando Apple ha annunciato per la prima volta l'SDK per iPhone ed è rimasto inorridito da Objective-C perché era diverso da qualsiasi altra cosa avessi visto finora.

Objective-C e Swift non hanno quasi nulla in comune per un principiante. 

Sì, condividono lo stesso Apple quadri, ma unless hai intenzione di lavorare a Apple – l'unica azienda al mondo che produce ancora grandi quantità di Objective-C – dovresti lasciare da solo Objective-C e concentrarti interamente su Swift.

Ignorando altre lingue

Ignorando altre lingue

L'ultimo grande errore che vedo fare alle persone quando imparano Swift è respingere altre lingue come inferiori a Swift. 

L'obiettivo più comune è JavaScript, ma vedrai anche persone prendere di mira Python, Java, Ruby, Go e altri linguaggi, e per cosa? Non è una gara, gente: quelle lingue non devono perdere per vincere Swift.

In effetti, Swift e SwiftUI sono spesso ispirati da altri linguaggi e framework: ogni volta che vengono prese in considerazione nuove funzionalità linguistiche, la comunità esamina implementazioni simili in Rust, Python, Haskell e altri linguaggi e SwiftUI è fortemente influenzato da JavaScript React struttura. 

Quindi, quando sento persone nella nostra comunità affermare che SwiftUI è privo di JavaScript o qualcosa di simile, mi commuovo: niente potrebbe essere più lontano dalla verità.

Risorse e corsi di sviluppo iOS

Risorse e corsi di sviluppo iOS

Ora per la parte a cui la maggior parte delle persone è interessata: quali sono le risorse effettive che credo dovresti usare per imparare Swift, SwiftUI e altro ancora, al fine di raggiungere il tuo obiettivo di diventare uno sviluppatore iOS?

Ce ne sono molti là fuori e apprezzo il fatto che la comunità Swift abbia un gruppo così diversificato di persone che condividono le loro conoscenze. 

Tuttavia, in questo articolo, mi concentrerò sulle risorse gratuite, luoghi in cui puoi imparare a creare app fantastiche senza spendere un centesimo.

Ciò è dovuto a due fattori:

  1. Alcune persone credono che più alto è il prezzo di un corso Swift, migliore deve essere, quindi finiscono per pagare prezzi esorbitanti senza ricevere un beneficio adeguato.
  2. Molti siti, come Udemy, si affidano alla vendita di un gran numero di corsi a basso costo, sicuri che se non ti piace uno, ne comprerai un altro. Hanno anche un modello di business simile a quello di Steam in quanto ci sono vendite costanti, incoraggiando le persone ad accumulare un gran numero di corsi da studiare "un giorno".

Quindi, sto solo elencando le risorse gratuite qui perché non voglio che tu cada in quelle trappole: non spendere un centinaio di dollari o più per il tuo primo corso e non comprare una dozzina di corsi economici pensando che renderanno sei uno sviluppatore.

Tutorial

Iniziare, Apple dispone di due risorse principali che possono assistervi. Il primo è il suo sito web Teaching Code, che contiene risorse per studenti e insegnanti per imparare Swift da zero, fino alle certificazioni professionali. 

Il loro curriculum è ampio, quindi potrebbe volerci del tempo per trovare il miglior punto di ingresso per te, ma una volta lì, troverai molto da esplorare.

Secondo, Apple ha una serie di tutorial SwiftUI che ti guidano attraverso il processo di creazione di app del mondo reale. Questi, tuttavia, non insegnano a Swift, quindi devi prima completare il loro curriculum incentrato su Swift.

Come ho affermato in precedenza, Apple pubblica anche una guida specifica per il linguaggio di programmazione Swift, ma ci sono buone probabilità che non funzioni per te: è inteso come riferimento piuttosto che come tutorial strutturato, quindi è una lettura piuttosto densa.

Che AppleI tutorial di non cercano di fornire un metodo strutturato di apprendimento. 

YouTube e altri siti

Ci sono alcuni eccellenti video di YouTube che ti guidano attraverso i fondamenti di SwiftUI, come:

VlhcNR7Qrno
, in cui ti guida attraverso il processo di creazione di un gioco di slot da zero.

51xIHDm_BDs
spiega cinque concetti SwiftUI che tutti dovrebbero imparare quando iniziano a programmare.

aP-SQXTtWhY
che presenta sia Swift che SwiftUI mentre risponde alle domande del pubblico.

Esistono altri siti con tutorial Swift e SwiftUI di alta qualità, tra cui BLCKBIRDS, Ray Wenderlich, Donny Wals, Antoine van der Lee e altri ancora: incoraggio davvero le persone a visitare una varietà di risorse e a trovare ciò che funziona per loro.

Istruzione basata su app

Se preferisci imparare attraverso le app, ti consiglio due che sono entrambe completamente gratuite. Il primo è Applel'app Swift Playgrounds, che ti consente di imparare Swift direttamente dal tuo iPad o Mac. 

Ci sono molti interattivi lesson rivolti ai bambini, ma ce ne sono anche di più avanzati lesson che ti aiuteranno a migliorare le tue abilità.

L'altra app si chiama Unwrap ed è stata creata da me. Unwrap è compatibile con tutti gli iPhone e iPad e ti consente di apprendere, rivedere e fare pratica con i fondamenti di Swift attraverso video, test e altri strumenti. Copre tutti i fondamenti di Swift e integra perfettamente il curriculum 100 Days of SwiftUI.

Ottenere soluzioni

Infine, dovrai imparare a trovare risposte online. Questo potrebbe significare andare a Stack Overflow, ma spero di no perché non è un posto particolarmente piacevole.

Invece, fai domande sui forum Hacking with Swift, sul tuo gruppo Slack preferito, sulle sessioni Happy Hour di iOS Dev, su Twitter e altrove: siamo una comunità davvero calorosa e accogliente con molte persone desiderose di aiutarti a raggiungere i tuoi obiettivi.

Impegnarsi nella comunità

Impegnarsi nella comunità

Parlando della nostra community, vorrei discutere di un argomento davvero importante che ti aiuterà a incontrare persone in posizioni simili alle tue, a imparare in modo più efficace e a trovare opportunità di lavoro: è una situazione vantaggiosa per tutti.

L'argomento è il collegamento con la comunità di sviluppo iOS. Ciò include sapere dove cercare notizie e idee interessanti, dove andare per incontrare persone e condividere suggerimenti e dove andare per porre domande.

Chi dovrei seguire su Twitter?

Cominciamo con il più semplice, ovvero usare Twitter. Twitter è un modo fantastico per seguire le cose che ti interessano e ci sono alcune persone che consiglio vivamente nel caso dello sviluppo di iOS.

Sì, queste persone twittano sul proprio lavoro, ma penso che siano fantastici da seguire perché twittano anche molto sul lavoro di altre persone: ti aiuteranno a vedere una varietà di prospettive su un particolare argomento e condividono tutti i tipi di idee interessanti e cose da provare.

Ecco 9 persone che ti consiglio di seguire su Twitter:

Sean Allen passa molto tempo su YouTube realizzando video sullo sviluppo di Swift e iOS, ma lavora anche duramente per spargere la voce sul lavoro di altre persone: fa davvero un ottimo lavoro nell'aiutare tutti a scoprire qualcosa di nuovo ogni settimana.

Antoine van der Lee gestisce un sito Web di sviluppo iOS su https://www.avanderlee.com, ma condivide anche ottimi collegamenti a risorse utili che trova su GitHub, newsletter e altro ancora.

Novall Khan lavori per Apple, ma questo non le impedisce di pubblicare regolarmente video su cosa sta lavorando, cosa sta imparando, con cosa ha problemi e altro ancora: è davvero stimolante.

Steve Troughton-Smith è noto per i suoi precedenti lavori su iOS, ma dovresti davvero seguirlo per la fantastica gamma di collegamenti che condivide con un lavoro impressionante. Mi piace come condivide i progressi di sviluppo delle sue app, così puoi vederle crescere dall'inizio alla fine.

Kaya Thomas è uno degli sviluppatori indipendenti più famosi della nostra community ed è stata descritta da Apple più volte di quante ne possa contare. Twitta spesso sul suo lavoro e sulle sue presentazioni, ma condivide anche link a libri che sta leggendo, articoli che ha letto e altre risorse.

Majid Jabrayilov non solo scrive un fantastico blog Swift e SwiftUI, ma è anche uno pneumaticoless promotore di altri: se lo segui su Twitter, riceverai un'idea dopo l'altra da un'ampia varietà di fonti.

Donny Wals scrive un blog Swift e, più recentemente, libri su Combine e Core Data, ma incoraggia anche le persone a condividere ciò su cui stanno lavorando su Twitter. Anche solo leggere quel thread una volta alla settimana ti ispirerà a provare cose nuove, quindi dovresti assolutamente seguire Donny.

Panage estivo funziona su Apple's, quindi, sebbene sia in qualche modo limitata in ciò che può dire, twitta molti suggerimenti di prim'ordine da se stessa e da altri che tutti possono utilizzare per creare app migliori.

Natascha Fadeeva scrive un blog sullo sviluppo di Swift e iOS, inclusi articoli su Core Data, domande per interviste e altri argomenti, ma twitta anche su cose che trova altrove.

Newsletter e altro

Newsletter e altro

Ovviamente Twitter non è l'unico posto dove rimanere in contatto con la community; ci sono anche newsletter, gruppi Slack, incontri Zoom, forum, conferenze e altri luoghi. Non voglio annoiarvi troppo, quindi ne elencherò solo uno qui:

Non puoi sbagliare iOS Dev Weekly per le newsletter. Mentre scrivo questo, ha appena superato 500 numeri, uno ogni settimana, che credo ti dica tutto ciò che devi sapere su quanto sia importante.

Se vuoi postare su un forum web, https://www.hackingwithswift.com/forums è abbastanza buono. Ci sono molte categorie tra cui scegliere, e chiunque, riguardoless di livello di esperienza, è il benvenuto a partecipare. Sei più che benvenuto a postare qui le tue domande da principiante, credimi!

Ogni mese, il Happy Hour per sviluppatori iOS si svolge in una chiamata di gruppo Zoom con oltre 300 persone, ma il vero divertimento è nelle salette di gruppo, dove puoi chattare con gruppi da 6 a 8 persone alla volta. È molto divertente e incontrerai nuove persone.

Partecipare alle conferenze è stato difficile a causa della pandemia di coronavirus, ma Apple's WWDC è stato un enorme successo l'anno scorso ed è stato accompagnato da una sfilza di eventi comunitari. Un gruppo di amici ed io abbiamo creato un Repository GitHub per tenere traccia di tutti gli altri eventi, articoli e altre cose accadute, dai un'occhiata!

Infine, se preferisci chattare su Slack dove puoi ottenere risposte più velocemente, puoi partecipare gratuitamente Hacking con il gruppo Swift Slack e unisciti a uno dei canali Swift, SwiftUI e altri.

Quanto tempo ci vuole per imparare iOS?

Questa è una mia domanda frequente: quanto tempo ci vuole per passare dal non sapere nulla di Swift all'essere in grado di ottenere una posizione di sviluppatore iOS entry-level?

La risposta ovvia è "dipende", ma in questo caso sarebbe un poliziotto, quindi permettetemi di affrontarlo in diversi modi.

La regola d'oro è non avere fretta

Innanzitutto, non puoi seguire più corsi contemporaneamente. Ricordi cosa ho detto sulla "sindrome dell'oggetto brillante"? Sì, molte persone credono di poter seguire due corsi contemporaneamente, quindi stipare per quattro, cinque o anche più ore ogni giorno e avere comunque una comprensione di alta qualità degli argomenti trattati.

Per essere chiari, ho visto persone provare così tante volte e fallisce sempre. Ogni volta non funziona mai, e sento persone dire che è perché i tutorial erano pessimi, o perché Swift era troppo difficile, o letteralmente per qualsiasi altra ragione diversa dal tentativo di affrettare qualcosa di complesso.

Ho letteralmente appena ricevuto un'e-mail che diceva: "Ciao Paul! Quanto velocemente posso finire Swift se studio per quattro o cinque ore al giorno?" E non è così che funziona l'apprendimento, che si tratti di imparare Swift, imparare a suonare il piano, imparare a pattinare sul ghiaccio o qualsiasi altra cosa.

L'apprendimento di Swift può essere difficile a volte e imparare a creare app richiede molte prove ed errori, commettere errori e prendere le svolte sbagliate. E va bene – è meglio che bene, è fantastico! 

Perché ogni volta che provi qualcosa, commetti un errore o prendi una strada sbagliata, impari qualcosa strada facendo e quando finalmente arriverai alla soluzione, la capirai molto meglio.

Quindi, il TL;DR qui è non avere fretta: prenditi il ​​​​tuo tempo, non aver paura di esplorare le tangenti che si presentano, non aver paura di sperimentare i tuoi progetti e non aver paura di tornare a qualcosa hai imparato in precedenza e impara di nuovo se necessario.

Qual è il tuo background formativo

Qual è il tuo background formativo?

In secondo luogo, dovresti considerare il tuo background prima di venire in Swift. Vedete, imparare a creare app richiede un'ampia gamma di competenze e, se si arriva al tavolo con un patrimonio di conoscenze pregresse come version control, strutture dati, algoritmi e altro ancora, avrai un vantaggio significativo rispetto a coloro che sono nuovi all'informatica in generale, così come Swift e altri Apple quadri.

Quindi, ecco alcune possibilità per dove potresti essere in questo momento:

Se hai una laurea in informatica, avrai già familiarità con molti dei fondamenti di CS necessari per iniziare con Swift. Variabili, array, loop, array, set, funzioni, OOP e altri concetti saranno utili in Swift, così come tutto il tuo lavoro con strutture dati e algoritmi. Questo potrebbe farti risparmiare 4-6 mesi di tempo di studio a seconda delle materie che hai studiato e ti darà anche un vantaggio quando fai domanda per un lavoro in molte aziende.

Se non hai una laurea in CS ma hai frequentato un bootcamp di programmazione, avrai molte delle nozioni fondamentali di cui avrai bisogno per iniziare con Swift. Questo non ti darà lo stesso vantaggio quando fai domanda per un lavoro in quelle aziende perché spesso si aspettano una laurea solo per selezionare una casella nel loro elenco di requisiti arbitrari, ma ti farà comunque risparmiare tre o quattro mesi.

Se non hai una laurea in CS e non hai frequentato un bootcamp, ma hai programmato nel tempo libero, risparmierai un po' di tempo, probabilmente due mesi circa, a seconda del linguaggio o dei framework che stavi utilizzando .

Cosa succede se non hai una laurea CS, non hai frequentato un bootcamp e non hai esperienza di programmazione precedente? Quindi stimerei dai 9 ai 12 mesi per passare dal nulla a un lavoro di livello base. Sì, potrebbe essere un anno intero di lavoro oltre a qualunque sia il tuo attuale lavoro a tempo pieno, e questo è solo per ottenere il tuo primo lavoro come sviluppatore iOS.

È sempre lo stesso anno? No. Se hai esperienza precedente, puoi ridurre quel tempo da 1 a 6 mesi, come ho affermato in precedenza. Se prendi i migliori numeri da entrambe le parti - 9 mesi da zero a un lavoro di livello base, più 6 mesi per avere una laurea CS - significa che potresti essere assunto in soli 3 mesi, il che è incredibile.

Potresti credere che trovare il tuo primo lavoro in tre mesi sia impossibile, ma non lo è. Diamine, ho incontrato qualcuno che stava seguendo il mio corso 100 Days of Swift e ha ottenuto un lavoro prima del giorno 50: avevano già imparato abbastanza sullo sviluppo di app in less di due mesi perché si sforzano di far contare ogni giorno.

Quindi, non hai bisogno di una laurea CS o di un bootcamp, ma devi essere disposto a lavorare sodo.

Concediti un po' di margine

Il terzo punto che vorrei sottolineare prima di andare avanti è che "ci vuole tutto il tempo che serve". Adoro un testo di John Lennon che dice: "La vita è ciò che accade quando sei impegnato a fare altri piani".

È fantastico se hai grandi progetti per l'apprendimento e grandi sogni per il lavoro che desideri, ma a volte sei stanco, a volte sei stressato, a volte il tuo tetto perde o il tuo cane ha bisogno di andare dal veterinario o i tuoi figli hanno bisogno di extra aiutare con i compiti, o qualsiasi altra cosa, e questa è solo la vita. 

Quindi, non essere troppo duro con te stesso se rimani indietro con il tuo programma di apprendimento, o se ti ritrovi a perdere qualche giorno o anche qualche settimana, e così via - finché sarai resiliente, otterrai là.

È fantastico se lavori davvero duramente e ottieni un lavoro dopo 50 giorni – ben fatto! Se ti ci vogliono 500 giorni, anche questo è fantastico e dovresti essere altrettanto orgoglioso di te stesso. Diamine, se ti ci vogliono cinque anni, sono sicuro che non è quello che volevi, ma il risultato finale è lo stesso, e questo è tutto ciò che conta.

Prepararsi a candidarsi

Prepararsi a candidarsi

Ultimo ma non meno importante, se sei un po' più avanti nel tuo viaggio di apprendimento su iOS e stai pensando di ottenere il tuo primo lavoro di livello base, vorrei indicarti una vasta raccolta di risorse che ho messo insieme per aiutarti.

lo consiglierei Video di suggerimenti per l'intervista a Swift di Sean Allen – ha un'intera playlist per loro in cui puoi lavorare attraverso discussioni individuali come classi vs strutture, programmazione funzionale, gestione degli errori e altro. Nessuno dei video è particolarmente lungo, ma sono tutti progettati per fornirti le competenze necessarie per ottenere buoni risultati in una situazione di colloquio.

Dove ora?

Ok, ho esaminato le competenze di base e di estensione di cui avrai bisogno, errori di apprendimento comuni, corsi che puoi seguire, come connetterti con la comunità iOS e come prepararti per il tuo colloquio di lavoro: è molto da coprire, e spero di esserti stato utile.

Inoltre, spero di aver dimostrato quante informazioni sono disponibili gratuitamente. 

Sì, la tentazione di spendere un centinaio di dollari o più per un corso è forte, ma rilassati: muoviti prima, trova un po' di slancio e trova anche qualcuno che insegni Swift in un modo che funzioni per te. Quando sei in un buon posto e ti senti pronto, vai avanti e spendi un po' di soldi se vuoi.

Tanti auguri per il tuo viaggio!

L'autore
David Attard
Autore: David AttardSito web: https://www.linkedin.com/in/dattard/
David ha lavorato nel o intorno al settore online / digitale negli ultimi 18 anni. Ha una vasta esperienza nei settori del software e del web design utilizzando WordPress, Joomla e le nicchie che li circondano. In qualità di consulente digitale, il suo obiettivo è aiutare le aziende a ottenere un vantaggio competitivo utilizzando una combinazione del loro sito Web e delle piattaforme digitali disponibili oggi.

Un'altra cosa... Sapevi che anche le persone che condividono cose utili come questo post sembrano FANTASTICHE? ;-)
Fatti un favore: lasciare un utile commenta con i tuoi pensieri, quindi condividi questo articolo sui tuoi gruppi di Facebook che lo troverebbero utile e raccogliamo insieme i frutti. Grazie per la condivisione e per essere gentile!

Disclosure: Questa pagina può contenere collegamenti a siti esterni per prodotti che amiamo e consigliamo vivamente. Se acquisti prodotti che ti suggeriamo, potremmo guadagnare una commissione per segnalazione. Tali commissioni non influenzano le nostre raccomandazioni e non accettiamo pagamenti per recensioni positive.

Autore / i in primo piano su:  Inc Magazine Logo   Logo di Sitepoint   Logo CSS Tricks    logo webdesignerdepot   Logo WPMU DEV   e molti altri ...