Quali sono i consigli utili per la carriera di uno sviluppatore iOS junior?

Concetti fondamentali
Una differenza primaria tra uno sviluppatore che è nuovo nello sviluppo di iOS e Cocoa e un professionista esperto, è la conoscenza del "modo Apple" di fare le cose. Uno sviluppatore che viene da Java o da qualsiasi altro linguaggio o ambiente di sviluppo, potrebbe essere contrario a fare le cose alla maniera di Apple e potrebbe voler lavorare con strumenti con cui si trova a suo agio. Uno sviluppatore Cocoa ha familiarità con tutte le importanti tecnologie Apple (Core Data, GCD, Xcode Workspaces, Frameworks). Uno sviluppatore principiante sostituirà le sue tecnologie preferite con quelle progettate per lo sviluppo iOS.

main-qimg-31983979e389060f645ad1ad7e20dbf0

Uno sviluppatore professionista saprà cosa usare quando. Uno sviluppatore Cocoa esperto conosce i problemi della tecnologia Apple e sa quale approccio usare quando. Lo sviluppatore saprà quando usare il "modo Apple" e quando trovare un nuovo approccio.

Uno sviluppatore iOS professionista avrà esperienza con le tecniche di gestione dei progetti che sono specifiche di Apple. Conoscerà i segreti di Xcode (cosa significa ogni impostazione di compilazione, in grado di identificare rapidamente gli errori, ecc.) Saprà come pubblicare sull'App Store (profili di provisioning, certificati di sviluppatori, presentazione delle app). Conosceranno il deployment continuo del codice con servizi come TestFlight o HockeyApp o una soluzione personalizzata. Un professionista avrà qualche conoscenza di sviluppo agile e TDD (Test Driven Development) o BDD (Behavior Driven Development) con iOS.

Attitudine
Un grande sviluppatore iOS ha pazienza con Apple. Il modo di fare di Apple è "la loro strada o l'autostrada" e gli sviluppatori devono fare i conti con questo. Uno sviluppatore deve divertirsi ad imparare ogni nuova cosa che Apple rivela e deve persistere nonostante i problemi con la tecnologia Apple.

Uno sviluppatore iOS ha bisogno di passione. È facile sentire che ci sono un milione di applicazioni nell'app store e che una in più non farà la differenza. È necessaria una fede appassionata nel potere della tecnologia mobile.

Principi generali
Vedo la differenza principale tra uno sviluppatore iOS professionista e qualcuno nuovo di zecca nello sviluppo iOS come la volontà di lavorare in diverse aree. Uno sviluppatore guru prenderà l'iniziativa per assicurarsi che le cose vengano fatte. Sono pronti a costruire un'animazione personalizzata o un sistema di login sicuro. Metterà una cimice nel team di progettazione per assicurarsi che le risorse grafiche siano pronte. Parlerà con i ragazzi del server per assicurarsi che le API servano efficacemente l'applicazione mobile, e sarà sempre in contatto con gli altri sviluppatori del progetto. Uno sviluppatore iOS professionista è in parte manager, architetto di sistemi, ricercatore, ingegnere di costruzione e molto altro ancora.

Descrizione delle tre fasi

  • Junior Dev - Uno sviluppatore junior ha appena iniziato e non ha familiarità con la tecnologia Apple. Sono maldestri con Xcode e hanno problemi a far funzionare il loro software sul dispositivo. Sono incapaci quando gli si chiede di scrivere test per il loro software o di distribuire la loro app attraverso un build server come Jenkins.
  • Sviluppatore di medio livello - Uno sviluppatore di medio livello si sente a suo agio con Apple e gli strumenti coinvolti nello sviluppo iOS. Ha abbastanza fiducia ed esperienza per gestire la maggior parte dei problemi e ha a che fare con la maggior parte delle aree dell'SDK di iOS.
  • Senior Dev - Tutto quanto sopra, più la conoscenza al di fuori di iOS. Sanno come scrivere codice e architettare sistemi in modo che siano facilmente portabili su Android o altre piattaforme. Sanno come ottimizzare il processo di sviluppo con tecniche di sviluppo agile e deployment continuo. Hanno la sicurezza di dirigere altri sviluppatori e possono insegnare loro esattamente come usare gli strumenti di Apple. Sono raramente bloccati dai problemi, ma hanno l'umiltà di rispettare l'esperienza degli altri.

TL;DR I buoni sviluppatori iOS conoscono gli strumenti Apple molto, molto bene.