L'équipe Apiqa est engagée dans le développement de produits pour un secteur du logement spécifique. Il n'est pas facile de trouver des développeurs expérimentés à Iekaterinbourg - de grandes sociétés informatiques les recherchent ici, de nombreux candidats partent pour la capitale ou quittent le pays, et la coopération à distance au stade actuel ne nous convient pas. Nous développons des employés au sein de l'entreprise, les rencontrons et essayons de fournir des conditions de travail confortables. L'an dernier, l'un de nos développeurs Web a donc décidé de s'essayer à la programmation pour iOS. Nous l'avons aidé à faire cette transition en douceur, maintenant il est simultanément engagé dans le développement web et mobile. Et maintenant, il est prêt à partager son histoire à la première personne. Bienvenue au chat.
Qui suis-je
Bonjour, Habr! Je suis Sasha Kalinin, développeur chez Apiqa. J'ai toujours aimé écrire des sites Web, assembler des ordinateurs et comprendre des choses techniques compliquées, mais sur l'insistance de mes parents, j'ai reçu une éducation économique et je suis allé travailler dans le secteur bancaire.

En 2015, il a commencé à étudier la programmation et a obtenu un stage à UrZPI (Ural Software Products Plant), qui s'est ensuite associé à l'agence interactive Everything Is Clear, et Apiqa est apparu. J'ai donc plongé dans le monde du développement web. L'année dernière, je voulais m'essayer à l'immensité d'iOS, et la société est allée me rencontrer.
Début: programmation Web
UrZPI s'est engagé dans le développement de sites: «Golden Apple», «League of Housing and Public Utilities», une marque de bijoux, des salons de beauté et autres. Nous avons réalisé un projet à grande échelle Digital Pathology - une plate-forme pour l'étude du cancer. Parallèlement à mon travail principal, j'étais mentor dans deux écoles en ligne: Loftschool et HTML Academy.
En 2018, PIK Comfort, la plus grande société de gestion en Russie, est devenue le client phare d'Apiqa, à la suite de laquelle la spécialisation a été déterminée, et nous avons commencé à nous engager dans le développement de produits dans le secteur du logement et des services communaux.

En mai de l'année dernière, nous avions une demande d'applications mobiles et des développeurs natifs sont venus dans l'entreprise. À ce moment-là, j'étais fatiguée du Web et je voulais m'essayer avec un téléphone portable. Comme je suis un grand fan d'Apple, j'ai décidé d'écrire pour iOS.
Immersion dans le monde mobile
Le premier jour, j'ai demandé à notre développeur iOS de me conseiller par où commencer. Il s'est révélé réactif et a joué le rôle de mon mentor, aidant à différentes étapes de la formation. Vers l'automne, j'ai commencé à lire des livres: «Swift. Bases du développement d'applications pour iOS et macOS »(4e édition) par Vasily Usov et« Swift 3. Développement d'applications dans l'environnement Xcode pour iPhone et iPad à l'aide du SDK iOS »(3e édition) Molly Maskri. Six mois, j'ai lu, terminé des devoirs, écrit quelque chose en même temps, reçu des idées d'application d'un mentor pour améliorer mes compétences.

J'ai aimé Swift - il s'est avéré assez simple et similaire à TypeScript dans la syntaxe sur laquelle j'écris sur le Web. Les outils de développement pour les plates-formes Apple sont plus compliqués - il y a beaucoup d'héritage de l'époque d'Objective-C, une ancienne API système peu pratique. J'ai lu le deuxième livre avec un grincement.
La première demande de tirage a échoué, et pour la première fois, j'ai voulu tout laisser tomber, mais je ne l'ai pas fait. Et le processus s'alignait dans environ six mois: maintenant j'écris pour le web et pour iOS.
Nous distribuons les tâches courantes. J'aime faire quelque chose d'inhabituel, inaccessible à un développeur Web - par exemple, 3D Touch, mais les animations ne sont pas encore prêtes, je n'ai pas de sensation de design. L'animation d'une interface sur le web est bien sûr plus simple - là, le code est plus compréhensible, il n'y a pas de problèmes compliqués.
Développement mobile et web: quelle différence
Sur le Web, l'ensemble du visuel est créé à l'aide de code. Vous pouvez le lire et imaginer le produit final. Dans Xcode, il s'agit d'un IDE pour les développeurs iOS, il existe Interface Builder - un outil qui vous permet de composer à l'aide de l'interface graphique en faisant glisser le curseur avec le curseur - c'est-à-dire que vous n'avez pas besoin d'écrire du code pour la partie visuelle.

Cela semble cool, mais cela fonctionne très instable - c'est soit buggy, puis se fige, puis se casse. Parfois, des conflits surviennent entre le code natif et Interface Builder - de nombreuses erreurs tombent dans la console, l'application elle-même peut se bloquer, tout peut aller en enfer.
Que choisir: web ou mobile?
La décision vous appartient. Vous devez comprendre qu'ils ont une situation de marché fondamentalement différente. Le Web est une plate-forme gratuite et les législateurs du téléphone mobile sont des entreprises qui possèdent iOS et Android - ils décident où développer, quels outils les développeurs doivent utiliser. Lors de la programmation pour le Web, vous pouvez utiliser différents cadres, écrire dans différents langages, utiliser différents IDE, tandis que pour iOS, il n'y a que Swift, Cocoa et Xcode. Si une nouvelle fonctionnalité sort pour Xcode, elle apparaît pour tous les développeurs, mais sinon, non. Une telle limitation d'Apple fournit de l'ordre lors de l'écriture de code, mais sur le Web, vous devez définir cet ordre vous-même.
Je peux également nommer un plus du Web un grand nombre de solutions open source qui ne sont pas pour iOS. Quand j'ai commencé à écrire des applications mobiles, je cherchais des outils similaires au Web pour automatiser quelque chose, mais ici je dois écrire avec mes mains.
À son tour, plus le développement iOS en nativité, Apple donne au développeur plus de liberté en termes d'implémentation de fonctionnalités - Face ID, iCloud, stockage et bien plus encore. Vous avez un excellent accès au matériel personnalisé. Et dans le navigateur, vous êtes limité par ce que ce navigateur vous permet.
Plus loin
Mon développement potentiel sur le web est l'étude de choses peu sollicitées au quotidien. Dans iOS, j'ai encore beaucoup de questions, il y a où développer, grandir et apprendre. Je suis attiré par la possibilité d’appliquer des compétences pratiques dans le cadre de la vie quotidienne et du travail: il faut écrire quelque chose pour le téléphone - je vais l’écrire, j’en ai besoin pour le Mac - je vais me tourmenter, le trier et écrire, pour la montre et l’Apple TV aussi. Je voulais déjà écrire des jouets, mais j'ai réalisé que c'était une direction complexe distincte, une immersion dans laquelle cela prendrait trop de temps. Je ne suis pas encore prêt pour ça.
Maintenant, je suis plus engagé dans le développement pour iOS, mais à tout moment je peux revenir. Je suis régulièrement mis à jour sur le Web, j'obtiens des notes de version et je comprends où tout se dirige. Sur les plateformes mobiles, les mises à jour ont lieu pratiquement une fois par an.
Immédiatement après l'annonce de SwiftUI et des nouvelles versions d'OS, j'ai voulu les toucher. J'ai installé une bêta ... et tué la montre - elle s'est transformée en brique. Pour les faire fonctionner à nouveau, j'ai également dû mettre à niveau le téléphone vers la version bêta brute et boguée d'iOS.
En général, j'ai beaucoup aimé l'approche avec SwiftUI que celle avec laquelle nous travaillons actuellement - Mise en page automatique. SwiftUI est simple et direct, vous écrivez le code et voyez immédiatement ce que vous obtenez. En fait, il est similaire au Web: vous écrivez le code, et tout apparaît immédiatement dans le navigateur, il ne nécessite pas de longue compilation et d'assemblage constant de l'application.

Quel est le résultat?
Je ne regrette pas d'avoir fait ce chemin. Si vous souhaitez répéter mon expérience, évaluez vos compétences et capacités de votre entreprise. Des collègues d'Apiqa sont venus me rencontrer, mais pas le fait que vous ayez la même chose, donc avant de commencer une telle transition, discutez-en avec la direction.
Il est important de consacrer suffisamment de temps au développement mobile et d'appliquer de nouvelles connaissances dans un environnement de combat - la création d'une application simple ne donnera pas une image complète, une expérience précieuse ne vient que lorsqu'il y a une tâche qui ne peut pas être abandonnée.
Si vous n'êtes pas du tout familier avec la programmation, gardez à l'esprit que sur le web la barre d'entrée est plus basse, il y a beaucoup plus de ressources éducatives en russe disponibles. iOS est plus difficile à maîtriser en termes d'écriture de code - ici, vous devez penser, en tant que programmeur, à avoir suffisamment de connaissances de base.
Toute personne qui s'est fixé une telle tâche peut devenir développeur Web ou Android - il vous suffit de rechercher des informations, de les étudier et d'acquérir de l'expérience. Mais pour se consacrer à iOS, il faut au moins se procurer un Mac.