Buona domanda!
Prova una di queste idee:
- Immersione profonda in un framework. Basta scaricare il tuo framework o libreria preferita e iniziare a leggere il codice. Dall'alto verso il basso, cercate di capire cosa sta succedendo. Dove inizia? Dove salta? Qual è il risultato? Vedete se riuscite a capire il quadro generale. Ricordo di aver scoperto che i metodi di Alamofire sono legati al framework, non a una classe o a un singleton. E' eccitante!
- Impara un acronimo pazzo ogni giorno. Non perché siano così importanti, ma perché ce ne sono così tanti. Migliorare il tuo mestiere significa che hai bisogno di trovare nuove cose e applicarle a ciò che già conosci. Mettendo insieme quello che sai con quello che ancora non sai, si creano nuove idee. Una lista per iniziare: TDD, BDD, ORM, MVC, MVW ...
- Conoscere il linguaggio. Stai già usando Swift? Ha molte caratteristiche eleganti, come le chiusure, i generici, la gestione degli errori, eccetera. Proprio come il linguaggio è un componente, anche l'IDE lo è. Swift in realtà gira all'interno di un "runtime" -- che cos'è? Scopri come funziona.
- Far lavorare insieme un paio di librerie. Penso che questa sia una delle belle caratteristiche di un nuovo linguaggio come Swift: una grande quantità di librerie viene avviata ogni giorno. Queste librerie sono nuove, e crescono tra le altre librerie. Gli autori cercano di integrare le loro librerie con altre, per esempio, Alamofire funziona molto bene con SwiftyJSON. Vedi se riesci a trovare un modo per lavorare con queste 2, e combinarle nel tuo codice. Il vostro obiettivo è quello di ridurre il numero di linee del vostro codice, e rendere le linee più eleganti, più descrittive, e più performanti.
- Imparare a conoscere come le cose non funzionano. La creazione di app per iOS ha una lunga storia. Mai sentito parlare di ARC? Probabilmente no, perché siete così abituati ad usarlo. Quando ho iniziato a fare app, dovevo mantenere e rilasciare tutte le mie variabili e istanze manualmente. Che orrore! Ma... e se provaste ad addentrarvi nelle profondità della gestione della memoria? O i diritti delle app, o l'Auto Resizing (predecessore dell'Auto Layout). Non è molto produttivo, ma amplia il tuo mestiere (e probabilmente è anche divertente).
- Lavora per un vero cliente. Mettiti in contatto con un'organizzazione non-profit e chiedi se puoi costruire un'app per loro. Il business e le app sono due mondi ben distinti. Ti imbatti in problemi come: il mio cliente vuole XYZ, ma io non posso costruirlo. Cosa faccio ora? Nel migliore dei casi fai un po' di soldi. (Un consiglio: se sei bravo, non farlo mai gratis)
- Scrivi una libreria da solo. Può essere qualsiasi cosa: uno strumento, un componente intelligente, un mucchio di utility. Mettila su GitHub, inizia a parlare con i tuoi colleghi, fagli vedere il tuo codice e ricevi un feedback su di esso.
- Guarda il Progetto Euler o Interview Cake. Combina la tua abilità nella programmazione con la matematica, le strutture dati, gli algoritmi -- abbastanza da imparare.
- Insegna agli altri come codificare. Ho imparato così tanto insegnando, dalle domande che la gente mi fa. In molte occasioni non avevo nemmeno pensato alle cose che chiedevano, mi veniva naturale. In altre occasioni ho imparato errori nella mia comprensione, perché ho spiegato male l'argomento. Molti insegnanti professionisti vi diranno: insegnare è il massimo dell'apprendimento.
Solo una cosa: imparare è una cosa completamente diversa dal costruire. Potresti imparare per tutta la vita e non farne nulla. Il mio consiglio: applica ciò che impari, ogni giorno. Costruite progetti reali! L'unico modo per imparare a costruire app complesse, è costruire app complesse.
Fammi sapere se stai cercando una risorsa di apprendimento specifica, ne ho a tonnellate :-).
Buona fortuna!