
Du côté iOS, le développement peut sembler être un club fermé. Pour fonctionner, vous avez absolument besoin d'un ordinateur Apple, l'écosystème est étroitement surveillé par une seule entreprise. Des contradictions sont aussi parfois entendues de l'intérieur - quelqu'un dit que le langage Objective-C est vieux et maladroit, et quelqu'un que le nouveau langage Swift est trop brut.
Néanmoins, les développeurs vont dans ce domaine et, arrivés sur place, sont satisfaits.
Cette fois, Marat Nurgaliev et Boris Pavlov nous ont raconté leur expérience - comment ils ont étudié la profession, comment les premiers entretiens ont eu lieu, pourquoi ils ont été refusés. Et l'expert était Andrei Antropov, doyen
du département de
développement iOS chez GeekBrains.
En 2016, Marat Nurgaliev de la région d'Astrakhan est venue chercher un emploi de développeur mobile dans une société de télévision locale. C'était sa première interview. Il venait de rentrer de l'armée, sans pratique ni expérience, ayant même oublié la théorie avec laquelle il y avait des problèmes de toute façon. La seule expérience en développement mobile chez Marat a été une thèse sur l'analyse des flux de fuite d'informations via les applications Android. Lors de l'entretien, il a été interrogé sur l'étude, l'OLP et d'autres théories, mais Marat n'a pas pu cacher les lacunes dans les connaissances.
Néanmoins, il n'a pas été refusé, mais s'est vu confier une tâche pratique - mettre en œuvre l'affichage de la liste des actualités à l'aide de l'API dans deux semaines. Sous iOS et sous Android. «Si j'avais une expérience sur Android, il n'y avait même pas d'outil pour créer la version iOS. L'environnement de développement ios est uniquement disponible sur Mac. Mais deux semaines plus tard, je suis revenu, j'ai montré que je pouvais sur Android. Avec iOS, je devais sortir en déplacement. En conséquence, ils m'ont emmené. J'ai ensuite vécu à Astrakhan. Tout emploi en informatique avec un salaire supérieur à vingt me convenait. »
Qui sont les développeurs iOS
Les développeurs mobiles créent des applications pour tout appareil portable. Smartphones, tablettes, montres intelligentes et toutes les autres plates-formes prenant en charge Android ou iOS. La base fondamentale du développement mobile ne diffère pas de l'habituel, mais en raison des outils spécifiques, il a été choisi dans une direction distincte. Il utilise ses propres outils, langages de programmation et frameworks.
«Pour utiliser iOS, vous avez besoin d'un macbook, car seul il possède l'environnement de développement Xcode nécessaire. Il est gratuit et distribué via l'App Store d'AppStore. Pour l'installer, vous devez avoir votre identifiant Apple et rien d'autre. Dans Xcode, vous pouvez développer des applications pour n'importe quoi - un téléphone, une tablette, une montre. Il y a un simulateur et un éditeur intégrés pour tout », explique Andrei Antropov, doyen du département de développement iOS chez GeekBrains.
«Mais l'environnement de développement peut également être installé sur Windows, si vous utilisez Hackintosh. C'est une option qui fonctionne, mais qui est détournée - aucun des développeurs sérieux ne le fait. Les débutants achètent un vieux MacBook. Et les plus expérimentés peuvent généralement se permettre le dernier modèle. »
Langues - Swift ou Objective-C
Presque tout le développement iOS se fait à l'aide du langage de programmation Swift. Il est apparu il y a cinq ans et remplace désormais progressivement l'ancien langage Objective-C qu'Apple utilise dans toutes ses applications depuis plus de 30 ans.
«Objective-C a une énorme base de code, donc les développeurs sont toujours requis dans les deux langues, selon l'entreprise, ses tâches et ses applications. Les applications écrites il y a plusieurs années sont basées sur Objective-C. Et tous les nouveaux projets sont développés par défaut sur Swift. Maintenant, Apple fait beaucoup pour mener un développement simultané pour le téléphone, la tablette, la montre et le MacBook aussi pratique que possible. Le même code peut être compilé et exécuté partout. Ce n'était pas le cas auparavant. Pour iOS, nous avons développé sur Swift, pour MacOS, nous avons utilisé Objective-C. »
Selon Andrey, Swift est une langue très simple, conviviale pour les débutants. Il est fortement typé, cela vous permet de détecter de nombreuses erreurs lors de la compilation du projet, et un code incorrect ne fonctionnera tout simplement pas.
«Objective-C est un langage assez ancien - du même âge que C ++. Au moment où il a été développé, les exigences en matière de langues étaient complètement différentes. Quand Swift est apparu, il y avait beaucoup de bugs, la fonctionnalité était limitée, la syntaxe était approximative. Et sur Objective-C, les gens avaient toute la main. Il s'est amélioré pendant de nombreuses années, toutes les erreurs y ont été corrigées. Mais maintenant, je pense que Swift n'est pas inférieur à Objective-C. Même si Apple utilise toujours les deux dans ses projets. Les langues sont largement interchangeables et complémentaires. Les structures et les objets d'une langue peuvent être transformés en objets et structures d'une autre langue. Ce serait bien de connaître les deux options, mais pour les débutants, Objective-C semble souvent intimidant et incompréhensible. "
La formation
«Lors de mon premier emploi, le chef m'a formé, a aidé à la mise en œuvre et à la configuration du projet», explique Marat, «mais travailler sur Android et iOS est en même temps difficile. Il faut du temps pour reconstruire, passer d'un projet à l'autre, d'une langue à l'autre. Finalement, j'ai décidé que je devais choisir une direction et l'étudier. J'ai été soudoyé par l'interface Xcode et la simple syntaxe Swift. »
Marat est entré dans le département de développement iOS chez GeekBrains. Au début, c'était très facile, car il savait beaucoup de choses de son expérience de travail. Le taux annuel est divisé en quatre trimestres. Selon Andrei, seule la base est donnée dans la première: «La base du langage Swift, la connaissance des frameworks de base, l'interaction réseau, le stockage des données, le cycle de vie de l'application, le contrôleur, les architectures de base, les principales bibliothèques que tout le monde utilise, le multithreading et la concurrence dans les applications».
Au deuxième trimestre, Objective-C est ajouté. Un cours sur l'architecture, les modèles de programmation de base. Le troisième trimestre apprend la bonne façon d'écrire du code. Il indique ce qu'est une usine, comment écrire correctement des tests, former des projets, ce qu'est Git-Flow, l'intégration continue via Fast Lane. Le quatrième et dernier trimestre est consacré au travail d'équipe, aux missions pratiques et aux stages.
«Le premier trimestre a été facile», explique Marat, «mais ensuite l'étude de la programmation en Objective-C, l'étude des modèles de conception, les principes de Solid, Git-Flow, l'architecture du projet, les applications de test unitaire et d'interface utilisateur, la configuration d'une animation personnalisée, puis j'ai commencé Il est devenu intéressant d'étudier. »
«Tout chez GeekBrains ne s'est pas très bien déroulé», explique Boris Pavlov, et son parcours vers le développement iOS en général n'a pas été le plus direct. Le gars a été élevé par sa grand-mère. Elle était architecte, mathématicienne et designer et a inculqué à Boris un amour du design, a appris à dessiner à la main et à dessiner. Son oncle était administrateur système et intéressait son neveu aux ordinateurs.
Boris était un excellent élève, mais a perdu tout intérêt à étudier et a quitté l'école après neuf cours. Après l'université, il est allé faire du vélo et les ordinateurs ont été abandonnés. Mais une fois Boris a reçu une blessure à la colonne vertébrale, ce qui ne lui a pas permis de poursuivre sa carrière sportive.
Il a commencé à étudier le C ++ avec un professeur de l'Institut d'Irkoutsk de physique solaire et terrestre. Puis il s'est intéressé au développement de jeux et a essayé de passer en C #. Et enfin, comme Marat, il a été soudoyé par Swift.
«J'ai décidé de suivre un cours d'introduction gratuit chez GeekBrains. Pour être honnête, il était très ennuyeux, léthargique et incompréhensible », se souvient Boris,« l'enseignant a parlé des caractéristiques de la langue, mais est passé d'un sujet à l'autre sans en révéler l'essence. À la fin du cours, je ne comprenais toujours rien. »
Par conséquent, après le cours d'introduction, Boris est entré non pas dans un cours d'un an, mais dans un court cours de trois mois, où les bases de la profession sont enseignées. «Là, je suis tombé sur de très bons professeurs et j'ai tout expliqué très clairement.»
«Nous sommes souvent critiqués, soi-disant nous n'avons pas de manuels de formation tout à fait pertinents, il y a des inexactitudes. Mais les cours sont constamment mis à jour et les enseignants parlent toujours d'innovations. Parmi les groupes que je dirige, beaucoup sont déjà employés après le premier trimestre. Bien sûr, ce sont généralement des personnes ayant une expérience en programmation », explique Andrey,« D'un autre côté, toutes les connaissances ne peuvent pas être transmises en un seul cours. L'interaction du client réseau dans la vie ne peut pas tenir en dix conférences pendant deux heures. Et si vous allez uniquement aux cours et ne faites rien d'autre, alors il n'y aura pas assez de connaissances. Si vous pratiquez tous les jours toute l'année, à ce rythme, seuls les paresseux ne fonctionneront pas. Parce que la demande dans la profession est très importante. "
Vous pouvez voir les dernières offres d' emploi pour les développeurs iOS et vous inscrire pour de nouveaux.
Travail
Mais ni Marat ni Boris n'ont trouvé un travail facile.
«Certaines grandes entreprises ont développé depuis longtemps des applications iOS sur Objective-C et continuent de prendre en charge l'ancienne base de code. Malheureusement, je n'ai pas d'argument solide pour les forcer à utiliser exclusivement Swift. Surtout ceux qui utilisent la règle «ne touchez pas à ce qui fonctionne», explique Marat, «peu d'attention est accordée à la direction d'Objective-C chez Geekbrains. Il s'agit plutôt d'un caractère d'enquête. Mais chaque entreprise que j'ai interviewée a posé des questions sur Objective-C. Et comme mes études se concentrent sur Swift, comme mon travail précédent, j'ai reçu des refus lors des entretiens. »
"Après avoir étudié, je ne connaissais que les bases les plus superficielles avec lesquelles je pouvais créer l'application la plus simple", explique Boris. "Bien sûr, ce n'était pas suffisant pour travailler, mais j'en étais heureux. Il était difficile de trouver du travail à Irkoutsk. Plus précisément, rien du tout. J'ai décidé de chercher dans d'autres villes. Par le nombre de postes vacants, les plus pertinents étaient Krasnodar, Moscou et Saint-Pétersbourg. J'ai décidé d'aller à Saint-Pétersbourg - plus près de l'Europe.
Mais tout s'est avéré moins rose. Même le junior est demandé ce qu'il ne peut pas savoir. Je n'ai pas encore trouvé d'emploi. Je travaille pour «merci», acquérir de l'expérience. Je comprends que ce n'est pas ce que je voulais, mais ça m'intéresse et ça me motive. Je veux acquérir des connaissances. "
Andrei estime que les nouveaux arrivants ne devraient pas chercher du travail, mais des stages. S'il y a très peu de connaissances, c'est normal lorsque le stage n'est pas rémunéré. Andrei conseille d'aller aux postes vacants juniors dans les grandes entreprises, où le processus de travail a déjà été établi.
«Quand il s'agit de comprendre le fonctionnement du processus de développement logiciel, il deviendra beaucoup plus facile de naviguer et de trouver du travail, en fonction de vos désirs. Quelqu'un entre dans le développement indépendant, crée des jeux pour lui-même, il les verse lui-même dans le magasin et le monétise lui-même. Quelqu'un travaille pour une grande entreprise avec des règles strictes. Quelqu'un gagne de l'argent dans de petits studios qui fabriquent des logiciels sur commande, et là, ils peuvent observer l'ensemble du processus - de la création d'un projet à partir de zéro jusqu'à sa mise en magasin. »
Les salaires
Le salaire d'un développeur iOS, comme tout autre, dépend de la question «Moscou ou Russie». Mais en raison des spécificités de l'industrie - beaucoup de travail à distance, des opportunités de délocalisation et de travail non sur le marché régional - les chiffres se rapprochent de plus en plus.
Selon le calculateur de salaire "My Circle", le salaire moyen d'un développeur iOS est d'un peu moins de 140 000 roubles .«Un junior d'un niveau très bas travaille souvent gratuitement ou pour de l'argent symbolique - 20-30 mille roubles. Si le junior est délibérément amené à son poste, il recevra de 50 à 80 mille. Les intermédiaires en reçoivent de 100 à 150, et parfois même jusqu'à 200. Les signataires de moins de 200 n'en reçoivent pas. Je pense que leur salaire est d'environ 200-300. Et les Timlids, respectivement, pour 300. "

Entretiens d'embauche
«La première interview était sur Skype. À ma grande surprise, c'était Google », se souvient Boris,« puis je viens de déménager à Saint-Pétersbourg et j'ai commencé à chercher du travail. J'ai reçu une réponse au développeur iOS vacant. Pas un junior, pas un milieu, pas un signataire - juste un développeur. J'étais ravi, a commencé à correspondre avec le directeur. On m'a demandé de terminer la tâche technique: j'ai dû écrire une demande de blagues sur Chuck Norris. Je l'ai écrit. On m'a dit que tout allait bien et j'ai prévu une interview en ligne.
Nous avons téléphoné. Une gentille fille m'a parlé. Mais ils n'ont posé aucune question sur la connaissance de la langue - seulement différentes tâches logiques, par exemple, "Heure 15:15, combien de degrés y a-t-il entre les aiguilles des heures et des minutes?" Ou "Pilier 10 mètres, l'escargot grimpe jusqu'à 3 mètres l'après-midi, descend 1 mètre la nuit. Combien de jours va-t-elle ramper jusqu'au sommet? », Et quelques autres comme ça.
Puis il y a eu des questions très étranges - sur ce que j'aime Apple et sur ce que je ressens pour Tim Cook. J'ai dit que c'était positif pour l'entreprise dans son ensemble, mais plutôt négatif pour elle, car l'argent est important pour elle, pas pour les produits.
Lorsque des questions sur Swift ont commencé, mes connaissances étaient suffisantes uniquement pour les modèles de programmation et les bases de la POO. Nous avons dit au revoir, une semaine plus tard, ils m'ont rappelé et m'ont dit que je n'étais pas convenable. En fait, j'ai beaucoup appris de cela: des connaissances sont nécessaires, beaucoup d'entre elles sont nécessaires - à la fois la théorie et la pratique. "
Andrei dit que «la première chose que tout le monde demande lors d'un entretien est le cycle de vie du contrôleur. Ils aiment demander un modèle de programmation simple. N'oubliez pas de vous renseigner sur l'expérience d'utilisation des bibliothèques populaires. Il y aura certainement une question sur les différences entre les types de valeurs Swift et les types de référence, sur le comptage automatique des références et la gestion de la mémoire. Ils peuvent demander comment ils ont mis en œuvre le stockage de données dans les applications et si les requêtes réseau ont été mises en œuvre. Renseignez-vous sur les bases de REST et JSON. Junior ne demandera pas de choses et de subtilités spécifiques. Au moins, je ne demande pas. "
Boris, en revanche, a vécu une expérience différente: «Même lorsque j'ai demandé des stages, effectué des tâches techniques et déclaré que mon salaire n'était pas important, si seulement cela suffisait pour louer un appartement, ils m'ont toujours refusé. J'ai lu des articles, essayé de comprendre ce dont un recruteur a besoin d'un débutant. Mais accumulé principalement sur la théorie. Pour une raison quelconque, ils ont posé des questions à la Premier League, qui ne concernent pas les débutants. »
Marat a eu plus de chance. Maintenant, il travaille dans une entreprise de transport et l'un est responsable de la direction iOS, poursuivant ses études à la faculté. "Étant donné que je suis seul responsable d'iOS, mon travail n'est évalué que par la capacité à réaliser les tâches définies pour moi, et non par la connaissance de la théorie."
Communauté
Andrei vit à Nizhny Novgorod et dit que même là, une excellente communauté s'est formée. Il était une fois un développeur back-end en Python, mais ses amis l'ont entraîné dans le développement mobile - et maintenant il incite tout le monde à le faire.
«La communauté mondiale communique généralement via Twitter. Les gens gardent leurs blogs, enregistrent des vidéos sur Youtube, s'appellent sur des podcasts. Un jour, j'avais une question sur une présentation où le chef d'équipe HQTrivia s'est produit. Il s'agit d'un quiz américain qui est joué par plusieurs millions de personnes en même temps. Je l'ai tweeté, il m'a répondu, nous avons parlé, j'ai remercié. La communauté est extrêmement sympathique et c'est formidable. »
Liste de lecture recommandéeNiveau débutant:Niveau intermédiaire:Niveau avancé: