«Je peux vous parler de la douleur commune à tous les développeurs iOS» - 10 questions pour le programmeur, numéro 2



Vous semblez aimer la version pilote . Et nous sommes toujours convaincus que les gars qui n’utilisent pas les objectifs de la caméra sont aussi intéressants que les stars de l’informatique. Et peut-être même plus, car ils parlent de vrais problèmes et de leurs solutions. Cette semaine, nous avons posé 10 questions à la personne qui soutient modestement Yandex.Maps pour iOS.


Nikolai Likhogrud ( likhogrud ) de Moscou. Commencé avec HTML et Basic en neuvième année. Ensuite, il a étudié de manière indépendante le C #, est entré à l'Université d'État de Moscou VMK, puis a rejoint l'équipe Any Void. Avec Any Void, il a déménagé chez Yandex; depuis 2,5 ans, il travaille en tant que chef d'équipe pour le groupe de développement Yandex.Maps pour iOS.

1. Parlez-nous de la fonctionnalité que vous avez implémentée et dont vous êtes fier.


- Ici, il est nécessaire de séparer les fonctionnalités de l'équipe et les fonctionnalités personnelles. Du plus personnel - le plus mémorable - c'est qu'il y a un an et demi, j'ai accéléré deux fois le temps de lancement de l'application. Et il en a parlé à ses collègues. J'ai déniché certaines des fonctionnalités d'iOS qui n'ont été décrites nulle part. Il y avait un problème dû au fait que Swift tire beaucoup de bibliothèques dynamiques. Pour chacun d'eux, vous devez vérifier la signature au début - elle ralentit. Il a fait un travail utile - cela a vraiment affecté la vie des utilisateurs. J'ai même parlé à Mobius alors .

En ce qui concerne le développement d'équipe, Maps est un énorme projet avec un tas de fonctionnalités différentes. Je n'ai probablement jamais revu ça. Et si vous vous asseyez pour comprendre, alors je peux montrer des choses que beaucoup ne connaissent même pas - il y a beaucoup de choses! Dans presque chaque nouvelle version, nous faisons de nouvelles choses sympas, et je suis fier de tout cela. Maintenant, nous essayons de pomper dans les "Cartes" non pas des scénarios de recherche et de routage historiquement établis, mais ceux qui parlent davantage de l'endroit où vous vous trouvez. Nous appelons cela un guide de la ville. En général, non plus référence à l'information, mais cognitive, divertissante. Et une fonctionnalité très cool - la réalité augmentée dans les cartes. Nous l'avons fait rapidement: tout s'est déroulé immédiatement, tout a décollé. Nous avons réussi dès le lancement d'iOS 11, avant les autres équipes. Ce fut un plaisir.

Le mannequin flotte sur la Neva, rien d'inhabituel

2. Et maintenant - sur le fakap le plus féroce.


Fakap l'était. C'était au début quand je viens de passer à Maps: le projet n'est pas familier, l'équipe précédente complètement dispersée, il n'y avait personne pour me vérifier. Et dans une version, j'ai zadosil des serveurs de géocodage, car j'ai oublié d'ajouter un chèque. Après quelques manipulations dans l'application, une demande a été envoyée au serveur pour chaque mise à jour de la position de l'utilisateur, qui a renvoyé des données sur l'emplacement de l'utilisateur. Et ces changements de géolocalisation peuvent être 10 fois par seconde. Et compte tenu du nombre d'utilisateurs que nous avons, même si chaque centième ou millième a effectué ces actions, nous avons eu une grosse charge sur le serveur.

Ce fut un tel moment qui est devenu perceptible en dehors du cadre de mon équipe. Les gens sont venus et ont dit: Eh bien, qu'est-ce que tu fais! Mais, en passant, cela s'est résolu normalement - ils ont soulevé le serveur pour faire face à la charge. Le bogue a été trouvé rapidement, corrigé rapidement, puis la mise à jour a été publiée. La véritable révision dans l'AppStore a pris environ une semaine. Maintenant, c'est devenu plus facile avec cela. J'étais alors plus offensé: comment cela pourrait-il être, j'ai juste commencé à travailler! Mais tout le monde a tout compris: que le projet était grand, j'étais seul là-bas, et il n'y avait personne pour me le dire ...

3. Décrivez votre espace de travail: du fauteuil et du moniteur aux environnements de programmation et à vos utilitaires préférés.


«Ils m'ont donné une chaise et une table aussi.» On y trouve un moniteur Thunderbolt et un ordinateur portable. Et aussi clavier et souris sans fil, de sorte que vous ne pouvez travailler qu'avec le moniteur.



La table est jonchée de morceaux de papier, où toutes mes pensées et mes plans sont écrits. Pour toutes sortes de Trello et Dapulse, je n'y suis pas allé. Quand j'ai commencé, tout n'était pas encore là, et en général le papier est en quelque sorte plus familier. Bien sûr, je prends toujours des notes sur l'ordinateur portable, mais l'écrire ainsi et le biffer est plus agréable. Il y a généralement beaucoup de choses sur la table qui s'accumulent simplement au fil du temps, mais récemment je les ai supprimées. Lego est toujours là - le confort. En général, je pense que ma place est confortable. Et quand je regarde les tables de mes collègues, où rien ne repose - un moniteur et un ordinateur portable - il me semble que je ne pourrais pas.

4. Selon quel principe choisissez-vous un emploi? Pile, produit, conditions de vie, argent?


- Je répondrais probablement à la question " si je choisissais ...". En effet, en fait, je n'ai jamais changé d'emploi. Je suis déjà devenu Yandex - je travaille depuis plus de cinq ans. Maintenant, j'ai un bon poste, une bonne équipe, des responsabilités, beaucoup de plans.

Donc, si je choisissais, je le ferais probablement sur commande. C'est-à-dire connaître à l'avance les personnes avec qui je travaillerai. Et si vous les connaissez, alors, en règle générale, vous savez quel produit vous allez développer. Si une personne ne se livre pas aux ordures, alors vous pouvez être sûr que ses projets sont bons. Il est important d'être dans la communauté: que vous soyez connu et que vous - les autres. Pour qu'il n'y ait rien de tel que vous allez quelque part à zéro, dans l'inconnu. Après tout, même les tâches dépendent des personnes. Si un nouvel employé est envoyé sans succès, il peut rapidement devenir inintéressant.

Un autre problème monétaire important. Mais ici, tout semble être plus ou moins. Je mène beaucoup d'entretiens et je sais combien ils offrent dans d'autres entreprises.

5. Quelles technologies et langages que vous utilisez souhaitez-vous corriger?


- Je peux vous parler de la douleur commune à tous les développeurs iOS. Dans Swift, le compilateur n'est pas optimisé, l'environnement de développement n'est pas finalisé. Sur notre projet, où 400 000 lignes de code, tout ralentit. L'indexation ralentit, l'ouverture des fichiers ralentit, l'ouverture des projets ralentit. La compilation prend beaucoup de temps, elle est très gourmande en ressources.

Même notre travail dépend de ce que Xcode compile depuis longtemps. Cela fonctionne très bien avec Objective-C, mais mauvais avec Swift. S'il le faisait normalement, il n'aurait pas à diviser l'application en modules - nous devions y investir. Maintenant, nous développons davantage dans des projets de test, plutôt que dans l'application principale. Ensuite, nous jetons des projets de test dans le principal. Bien que cela ait finalement profité à l'ensemble du projet, il y avait des coûts pour apprendre à travailler de cette façon.

6. Où vaut-il mieux apprendre de l'expérience de quelqu'un d'autre - dans une université, lors de conférences, dans une plaque tournante? Quelque part ailleurs?


- Le plus efficace est lorsque vous avez un problème spécifique et que vous cherchez une solution. «Apprendre par expérience» - je ne comprends pas vraiment ce que cela signifie. Mais «où chercher une solution au problème» est compréhensible. Où il se trouve. Il vous suffit de le remplir dans Google et de voir ce qu'il vous dit.

Et avec les conférences, il s'avère que je n'adopte même pas l'expérience des autres, allez-y, mais partagez la mienne. Il existe déjà une certaine expérience dans la gestion d'un grand projet qui intéresse beaucoup. On peut dire qu'il n'y a que quelques applications comme la nôtre, c'est pourquoi l'expérience est unique à sa manière. Ils me demandent: comment ils se sont divisés en modules, comment la révision du code est organisée, comment CI fonctionne pour vous là-bas.

7. Si vous aviez des ressources illimitées (temps, argent, pouvoir, personnes), quel projet prendriez-vous?


- J'ai une grande petite liste "Je veux depuis longtemps, mais je n'ai pas le temps" - ce que je veux faire dans Maps. Il y a des pièces que j'aimerais améliorer.

D'une manière générale, il serait intéressant de contacter l'industrie spatiale. L'idée d'une personne en dehors de la Terre, la connaissance de l'univers - ça m'intéresse beaucoup. Je me réjouis lorsque certains succès se produisent dans ce sens. Il n'y a probablement rien à écrire sous iOS là-bas, mais quelque part je pourrais être utile avec mes compétences en gestion d'équipe. Oui, au moins j'irais faire du café, si pour une idée.

8. Comment vous détendez-vous? Que faites-vous en dehors du travail?


- Vous devez redémarrer - à cent pour cent. Ce mode 5/2 a été inventé par des oncles vraiment intelligents. Si vous êtes impliqué dans un projet, vous brûlez, vous êtes malade pour lui, alors si vous travaillez dessus le week-end, ce sera mauvais. En conséquence, vous perdrez le fusible, mais vous devez au contraire le maintenir de manière stable afin de travailler pendant des mois et des années.

Le week-end, j'ai choisi de faire quelque chose de simple: me promener, regarder la télé, rien d'extrême. Bien que j'aimerais peut-être le faire, il n'y a tout simplement pas d'entreprise appropriée. À quelques reprises, les gars et moi sommes sortis pour faire du kayak sur Klyazma, c'était super. Parfois, il y a du paintball. Mais tout cela n'est pas régulier, car c'est un gaspillage actif d'énergie. Bien sûr, vous obtenez une sorte d'émotions en retour ... Mais cinq jours pour travailler, puis encore deux jours pour nager et courir quelque part, puis retravailler cinq jours? Et votre corps fait déjà mal! Je pense que je ne pouvais pas.

Je passe également du temps sur les réparations. Petit et sans fin. Il s'agit d'un monde séparé avec ses propres technologies, une expérience unique. C'est très intéressant là-bas.

9. Parlez de 3 livres préférés - éducatif, science populaire et fiction.


- Je n'ai pas travaillé avec les livres d'entraînement. Au travail, je peux dire que je n'ai pas lu un seul livre. Au tout début, c'était peut-être des livres sur C ++. Je me souviens avoir voyagé dans un camp pour enfants: les gens étaient normaux et j'avais C ++. Du coup, je n'ai vraiment rien lu, car il n'y avait pas d'ordinateur à portée de main. J'ai lu - cela semble compréhensible, mais comment puis-je l'appliquer à mes tâches? Comment acquérir de l'expérience? Je suis plus un pratiquant, pas un théoricien. Peut-être que je ne connais pas de termes intéressants que les autres gars utilisent, mais en même temps je peux faire mon travail. J'ai appris cela simplement en résolvant des tâches difficiles. J'ai toujours recherché de l'expérience et des solutions simplement sur Internet.

Je dirais à ceux qui se concentrent beaucoup sur la lecture de la littérature et des blogs que ce que vous lisez et voyez n'est pas une garantie que vous pouvez le reproduire vous-même. Il ne faut pas rompre avec ses propres tâches pour que la lecture soit toujours accompagnée de pratique.

De la communauté scientifique, j'ai lu Wikipédia, où vous pouvez tout lire. J'adore vraiment l'histoire et je peux y lire de Rurik à Ivan le Terrible, des premiers Romanov aux coups d'État du palais. Et puis sauter accidentellement sur le lien avec Alexandre le Grand. Je peux rester 2-3 heures. Il y a des articles intéressants sur les armes, sur les technologies de traitement des métaux. C'est dommage, je ne peux pas reproduire cela, mais comprendre comment les gens pensaient à tout cela avant - du four à lait cru au procédé Bessemer - est cool.

Une fiction dans ma vie ne suffit pas. Ces livres ont probablement supplanté les films. Car, en fait, leur mission est similaire, mais les films sont plus compacts. Bien que je mentionnerai un livre, il s’agit de «Oblomov» de Goncharov. J'étais très triste quand je l'ai lu pendant longtemps. Il semble même pleurer. Il serait maintenant intéressant de le relire. Maintenant, je penserais probablement qu'il en avait besoin, Oblomov.

10. Si, juste sous vos yeux, l'IA se réveille, que lui direz-vous?


- La question est, que signifie «conscience»? S'il est simplement fait pour réussir le test de Turing, ce n'est pas encore la conscience. Mais si l'on n'entre pas dans ces détails, alors je demanderais la solution de tout problème spécifique. Je suis toujours une personne de pratique. "Comment rendre Xcode plus rapide?" :).

Mais vous devez absolument commencer par "Bonjour, comment ça va?" "Comment allez-vous?", "Que faites-vous?" - les réponses à ces questions peuvent contenir quelques notes de réflexion. Comment la machine évalue-t-elle vraiment ses affaires et son humeur? Et que fait-elle maintenant?

Question du héros précédent: quelle technologie avez-vous le plus appréciée dans le processus d'apprentissage?


- C'est un plaisir? Je n'ai pas encore appris à apprécier le travail et les études. J'ai appris à les traiter calmement et à bien performer. Le SDK iOS, par exemple, ne m'a pas beaucoup intéressé, car il est généralement simple.

C'était intéressant à l'université quand j'ai utilisé l'apprentissage automatique dans un projet. Il était intéressant de comprendre qu'il n'y a essentiellement rien de compliqué en ML. Connaissant les paramètres d'entrée, vous pouvez plus ou moins prédire le résultat. Probablement, en partie à cause de cela, je ne ressens pas l'euphorie de l'IA, que beaucoup connaissent. Je sais que ce ne sont que des algorithmes.

Et c'était autrefois intéressant de comprendre les compilateurs avec parallélisation automatique. Il s'agit d'une technologie très développée, il y a beaucoup de choses différentes dans les compilateurs. Ils sont en fait intelligents et font beaucoup plus que vous ne pouvez l'imaginer. Par exemple, les conversions les plus complexes sur l'arbre de syntaxe. Ou l'optimisation la plus compliquée de la génération de code lorsque le compilateur fonctionne pour un matériel et un processeur spécifiques.

C'est formidable qu'il existe maintenant un framework LLVM open source qui vous permet de créer votre propre compilateur. Vous pouvez créer votre propre langue! Écrivez un analyseur pour cela, qui sera engagé dans le lexical et l'analyse, puis utilisez la puissance d'un compilateur moderne pour obtenir le code machine.

Bonus: posez n'importe quelle question à un autre développeur.


- Sachant que vous ne pouvez pas rentrer, vous envoleriez-vous vers Mars lors de la première expédition?

Source: https://habr.com/ru/post/fr420981/


All Articles