Kotlin, IT en Estonie et (du coup) le tunnel entre Tallinn et Helsinki: un entretien avec Anton Keks

Récemment, un article très spécifique sur Kotlin a été publié sur notre blog: pas très sérieux, plutôt superficiel et inattendu. Mais nous savons bien que critiquer une technologie en passant plusieurs jours à l'étudier est une mauvaise manière. Et cette fois, nous avons décidé de parler de Kotlin avec une personne qui écrit dessus sur prod à partir de la version 1.0.



Aujourd'hui, le nom Kotlin est déjà difficile à surprendre, surtout dans le développement Android. C'était peut-être au début de 2016: la demande était d'un ordre de grandeur inférieur, le soutien officiel de Google était toujours hors de question, et écrire sur Kotlin était un esprit audacieux. Anton Keks est devenu l'un de ces casse-cou, et plus tard, il a également prêté beaucoup d'attention à Kotlin (par exemple, il a joué deux fois à KotlinConf). Par conséquent, nous avons décidé de lui demander comment la vie du développeur Kotlin a changé au fil du temps.

Et pour ne pas se lever deux fois, ils ont couvert un autre sujet. Anton est co-fondateur de la société estonienne Codeborne, qui pratique une programmation extrême, par conséquent, en même temps, ils ont appris ce qu'il y a en Estonie avec l'informatique et comment créer votre propre entreprise là-bas.

- Comment avez-vous commencé à écrire dans Kotlin et comment l'utilisez-vous maintenant?
- A commencé à utiliser début 2016, à partir de la version 1.0. Mon premier projet à Kotlin était le plus sûr: un plug-in pour IntelliJ IDEA, que j'ai fait pour un client japonais. Après cela, j'ai commencé et transféré mes projets personnels de Java vers Kotlin, et j'ai essayé de l'utiliser pour le backend.

L'année dernière, nous avons utilisé le langage sur le backend dans l'environnement bancaire, nous déplaçons progressivement le grand projet Java vers Kotlin. Et nous écrivons des microservices dessus, et il y a du Kotlin propre. Lorsque vous avez un projet uniquement sur Kotlin, tout devient encore plus agréable: vous n'avez pas besoin de penser à l'interopérabilité avec Java.

- Depuis que vous avez vu le langage de la version 1.0 à la version 1.3 actuelle - comment a-t-il changé du point de vue du développeur qui y écrit?
- Au début, je pensais, depuis la version finale, alors tout est déjà génial et fonctionnera sans problème. Il s'est avéré que ce n'était pas tout à fait le cas, et le premier écart, entre 1.0 et 1.1, est en grande partie une correction des montants, une amélioration des performances, etc. Mais les versions 1.2 et 1.3 concernent de nouvelles fonctionnalités.

Par exemple, les coroutines qui sont devenues stables en 1.3 peuvent faire une grande différence. J'ai joué avec eux et je suis très content. Cependant, en production, nous ne les avons pas encore essayés: tout réside toujours dans les difficultés liées aux pilotes JDBC. Mais dans le développement pour Android, il est plus facile de construire un modèle asynchrone, donc les développeurs Android ont utilisé des coroutines jusqu'à 1.3.

Et ce qui est encore très intéressant: dans la version 1.2, un support expérimental pour les projets multi-plateformes est apparu, il est devenu possible de compiler en JavaScript avec Kotlin / JS, et en code natif avec Kotlin / Native. Mais pour l'instant, la compilation en JavaScript me fait peur, et avec Native, le principal problème est que Kotlin a une très petite bibliothèque standard. Dans le cas de la JVM, Kotlin est très dépendant de la bibliothèque Java standard. Et dans Kotlin / Native, en théorie, vous pouvez utiliser toutes les bibliothèques natives, mais vous perdez alors la "multiplateforme complète", tout devient séparé. Cependant, JetBrains y travaille actuellement, et la multiplateforme peut avoir un grand avenir. Beaucoup d'applications iOS / Android multiplateformes sont ce que beaucoup aimeraient.

- Xamarin et React Native ont déjà essayé de nous les donner ...
«Ils ont tous un problème auquel Kotlin n'est pas confronté.» Dans le cas de React Native, Xamarin et similaires, le framework doit suivre les versions du système d'exploitation. Quelque chose se brise constamment et tous ces cadres ne suivent pas. Vous êtes dans un état incompréhensible lorsqu'une nouvelle version du système d'exploitation a déjà été publiée et que votre infrastructure ne fonctionne toujours pas et que vous devez toujours faire quelque chose. C'est le moment le plus désagréable. Et avec Kotlin dans ce sens, tout est différent - ils utilisent directement toutes les API et bibliothèques standard du langage.

- Souvent, une fonctionnalité de Kotlin apparaît comme une fonctionnalité «expérimentale» et parvient à changer avant une version stable. Aimez-vous cette approche? Si vous utilisez des fonctionnalités expérimentales, combien changent-elles et combien devez-vous les refaire?
- Oui, j'aime ça. Parce qu'il y avait vraiment beaucoup de bugs dans les versions bêta et les candidats à la version 1.3 (même pour mon rapport avec des puzzlers, j'ai trouvé quelques puzzlers sur ce sujet), et dans la version finale, ils les ont corrigés, et c'est très bien.

Dans les coroutines, certaines choses sont devenues un peu plus compliquées, mais il est devenu plus clair ce qui se passe: par exemple, il est devenu nécessaire de transmettre plus explicitement le contexte aux coroutines. Et à la fin, le code avec des coroutines écrites sous Kotlin 1.2, ne compile tout simplement plus. Mais en même temps, ces changements ne sont pas si importants qu'il a été difficile de migrer.

- Si nous ne parlons pas de la langue elle-même, mais, par exemple, de l'IDE, où en est le développement? Comment étaient les choses avant et maintenant quoi?
- Puisque JetBrains produit à la fois le langage, le compilateur et les outils, il y avait une situation sans précédent en termes de support dans l'IDE. Très souvent, quand une langue est née, les premiers adoptants y sont d'abord écrits dans un éditeur de texte sans mise en évidence, etc. Et avec Kotlin, ce n'était même pas jusqu'à la version 1.0, le support dans l'IDE était tout de suite.

Cependant, ce n'était pas idéal, et avec le temps, il s'améliore constamment, avec chaque version mineure, des inspections sont ajoutées. Et ce qui est maintenant est bien meilleur qu'il ne l'était. Par exemple, un de ces bogues que j'attendais pour des correctifs: il y a des chaînes de modèle dans Kotlin, et je voulais essayer de les utiliser au lieu d'un autre langage de template dans mes projets, mais à cause d'un bogue dans l'EDI, la surbrillance s'est cassée dès que la variable à l'intérieur de la chaîne de modèle a commencé à Kotlin. Et maintenant, il est enfin résolu, alors j'ai commencé à l'utiliser. Pour le moment, je n'ai plus de choses spécifiques qui ne conviendraient pas.

- Qu'en est-il du développement de l'écosystème dans son ensemble - la communauté, les réponses à Stack Overflow, les cadres?
- Pour autant que je puisse voir, la communauté est très active, il y a beaucoup d'activité à Slack. Stack Overflow a déjà été assez écrit. Peut-être que le seul problème est que lorsque google, il y a parfois des messages qui ont été écrits avant la version 1.0, lorsque certaines fonctionnalités étaient complètement différentes. Vous devez suivre la pertinence.

Il existe des frameworks qui sont immédiatement conçus spécifiquement pour Kotlin. Par exemple, un excellent framework pour les tests unitaires MockK, il est fait sur mesure pour Kotlin, il y a des API beaucoup plus belles. De plus, de nombreux frameworks Java sont désormais également spécifiquement impliqués dans la prise en charge de Kotlin, non pas que cela soit strictement nécessaire avec son interopérabilité, mais ils ajoutent des puces ou rendent l'utilisation encore plus pratique.

- L'explosion de popularité dans le monde Android n'a pas conduit à un biais dans la communauté, alors que tout le monde ne se soucie que d'Android, et que d'autres plateformes se sont estompées en arrière-plan?
"Je ne ressens pas du tout un biais." Bien sûr, la décision de Google de faire de Kotlin la langue officielle d'Android a considérablement affecté l'augmentation de l'intérêt pour la langue, mais il me semble qu'il a non seulement tourné Android, mais l'intérêt pour la langue en général. Il y avait beaucoup de développeurs Android chez KotlinConf, mais il y a aussi beaucoup de ceux qui écrivent des applications serveur, de bureau, même JS: j'ai rencontré des gens qui utilisent vraiment l'écriture de code à la fois côté client et côté serveur. Et il n'y a aucun sentiment que c'est "une langue pour Android". Bien qu'Android soit devenu un moteur d'intérêt, il s'agit toujours d'un langage à usage général.

- Avec les nouvelles technologies, il y a une peur éternelle de "intéressant, mais vous ne pouvez pas encore le faire glisser en production", et dans Android il n'y a pas un tel problème, mais en dehors d'Android, il y a toujours une question. Si de telles préoccupations sont pertinentes pour Codeborne, alors pendant que vous utilisez Kotlin, qu'est-ce qui a changé?
- Nous choisissons principalement la technologie nous-mêmes, mais il arrive souvent que le client souhaite également participer à la prise de décision. Et pour le moment, lorsque nous amenons Kotlin à différents projets, il n'y a aucune objection. Ce qui a changé: avant, les clients n'avaient jamais entendu parler de Kotlin, mais maintenant c'est déjà à l'audience. Et maintenant, si nous disons «nous commençons à passer à Kotlin», il n'y a plus de crainte, par exemple, qu'il disparaisse. Il y a la Fondation Kotlin, il y a JetBrains et d'autres sociétés en bonne santé financière. Et le soutien communautaire est formidable. En général, il est absolument certain que Kotlin n'ira nulle part.

- Beaucoup viennent à Kotlin maintenant, après avoir sauté les étapes décrites du développement du langage. Cela ne peut qu'être envié, car ils ont déjà acquis une technologie plus mature, ou sans l'expérience des premiers adoptants, ils perdent quelque chose d'important?
- Cela dépend de la personne, ce qui est plus intéressant pour lui. En se connectant plus tôt, on pouvait personnellement participer au développement, influencer la formation. Surtout avant la version 1.0, il fut un temps où vous pouviez parler avec l'équipe JetBrains, influencer leurs décisions, les aider. Et maintenant, l'équipe se tourne toujours vers la communauté et tient compte de son opinion, mais en même temps, de nombreuses décisions de base ont déjà été prises et ne changeront pas. Par conséquent, tout dépend de l'intérêt personnel pour une telle chose.

À mon avis, commencer à utiliser la technologie pour le développement lorsqu'elle n'est plus brute aide beaucoup: vous passez du temps sur vos tâches, et non sur des défauts. Et votre outil fonctionne juste pour vous. Je pense que le moment est venu où ceux qui n'essaient pas Kotlin - maintenant ils sont vraiment très en retard et perdent beaucoup.

- Maintenant que tout va bien en général, qu'est-ce qui vous manque personnellement dans le cas de Kotlin?
"Peut-être deux petites choses." Assez mineur est un opérateur ternaire. Il est clair que puisque if est une expression, vous pouvez simplement l'utiliser, mais vous voulez écrire plus familièrement.

Un peu plus grand - accès local au package. Il me semble que interne à Kotlin est plus une erreur. Ils ont essayé d'améliorer ce qui se trouve à Java, mais, à mon avis, ils l'ont fait en vain. En Java, cela a plus ou moins bien fonctionné, et interne n'est utile que si vous écrivez une bibliothèque, pas une application régulière. Et je manque le contrôle d'accès à grain fin que Java a.

Eh bien, je veux développer le développement multiplateforme, dont j'ai déjà parlé. Là, vous devez travailler sur une bibliothèque standard. Mais il y a aussi le framework Ktor, et c'est maintenant un tel banc d'essai pour tout écrire sur Kotlin, et certaines bibliothèques sortent maintenant de ce projet



- Passons à la deuxième partie des questions: Estonie, Codeborne, entrepreneuriat. Pour commencer, une question inaccessible: à quoi ressemble la vie à Tallinn en général?
- Peut-être que je ne suis pas tout à fait la bonne personne pour cette question, parce que je suis fan de Tallinn, il me semble que c'est le meilleur endroit sur Terre. D'une part, nous avons l'Union européenne, la monnaie européenne, l'ordre européen et la pureté européenne. D'autre part, vous pouvez utiliser la langue russe assez largement (un tiers de la population la parle à coup sûr), et nous sommes géographiquement proches. De nombreux informaticiens de Russie, d'Ukraine et de Biélorussie viennent nous voir maintenant - je pense que c'est précisément pour ces raisons.

La ville n'est pas aussi grande que Moscou ou Saint-Pétersbourg, vous ne passez donc pas beaucoup de temps sur les transports, et il est souvent pratique de s'y rendre à pied. En même temps, si vous voulez de la variété, il est facile de partir à l'étranger. Et en termes de prix, Tallinn est moins cher que l'Angleterre et d'autres pays européens, donc le niveau de vie que vous pouvez vous permettre pour le même salaire à Tallinn est beaucoup plus élevé.

Parmi les inconvénients, seul le climat. En été c'est très bon, et en hiver c'est beau avec de la neige, mais novembre est un mois très déprimant.

- Eh bien, vous ne vous habituez pas aux derniers Pétersbourg / Moscovites. Et qu'en est-il du pays avec l'informatique?
- Nous avons un très haut niveau de développement technologique. Tout ce qui touche à «l'état électronique» se développe activement - jusqu'au programme de résidence électronique, lorsque vous pouvez devenir résident d'un pays en ligne, sans jamais y être. De nombreux services en ligne, nouveaux dans d'autres pays, sont considérés comme allant de soi. Des startups apparaissent - par exemple, Skype était à l'origine estonien. Les emplois sont également nombreux. Par conséquent, je dirais qu'il y a beaucoup de choses intéressantes pour les informaticiens.

- Cela semble soudain: intuitivement, il semble que de tels centres informatiques seront situés dans des endroits comme la vallée, et non dans un pays avec une population inférieure à celle de Novossibirsk.
- Eh bien, dans la vallée, c'est juste un informaticien qui pourrait être pire, il y a des prix immobiliers irréalistes et généralement le coût de la vie.

Et, peut-être, peu de choses sont écrites sur l'Estonie dans les sources russes, mais si vous regardez la presse internationale, il y a beaucoup de textes dans l'esprit de «l'état électronique, le premier au monde» (voici un excellent exemple ). Quand je vais à des conférences informatiques à travers le monde, ils me disent: «Estonie? Oh, vous avez un tel IT là-bas! "

Et d'ailleurs, près de Tallinn, il y a Helsinki, entre eux une heure et demie par eau ou 15 minutes en hélicoptère. Et il y a des négociations pour fusionner Tallinn-Helsinki en un seul centre informatique européen. Un tunnel entre deux villes est possible, alors ce sera le plus long tunnel du monde.

- Dans un pays avec une petite population de grandes technologies de l'information, est-il probable que cela fonctionne principalement pour des clients étrangers?
- Oui, toute entreprise qui émerge ici veut se lancer sur le marché international dès que possible. L'intérieur est petit en nombre de personnes. Mais grâce au fait que nous sommes dans l'Union européenne, nous avons tout de suite le marché de l'Union européenne. Et en plus, un petit marché domestique permet au service informatique de tester certaines choses avant la sortie mondiale.

- Beaucoup de Russes dans l'esprit des États baltes fusionnent, nous allons donc clarifier: dans quelle mesure ce qui a été dit sur l'Estonie s'applique-t-il à la Lettonie et à la Lituanie?
- Pas très applicable, en fait. Il y a quelques intersections, mais la mentalité est différente, pour les Lettons et les Lituaniens, elle est plus proche de l'Europe de l'Est. L'histoire des pays est également complètement différente. Par conséquent, si vous venez vous promener dans Tallinn, Riga et Vilnius, vous sentirez qu'ils sont différents, et si vous vivez plus longtemps, il y aura encore plus de différences.

Il était une fois j'ai travaillé avec des Lettons et des Lituaniens au travail - puis les Estoniens se sont avérés être les plus progressistes en TI, puis ils ont adopté les Lettons et les Lituaniens encore plus tard.

- Vous êtes l'un des co-fondateurs de la société estonienne Codeborne - pour commencer, parlez-nous-en.
- Nous sommes petits, nous sommes 32. Tous les développeurs, nous les appelons non pas «développeur», mais «artisan logiciel» - c'est une différence très importante, car nous n'avons pas d'analystes, de testeurs ou de chefs de produit. Nous avons des personnes fullstack universelles qui, en plus du développement fullstack, traitent également directement avec le client sans aucun intermédiaire qui peut définir des tâches pour lui-même. Grâce à cela, l'efficacité est plusieurs fois supérieure à celle de nombreuses autres sociétés informatiques. Nous pouvons construire des choses avec deux ou quatre personnes pour lesquelles des milliers de personnes seront nécessaires pour la Sberbank conditionnelle. Soit dit en passant, je ne plaisante pas, nous avons parlé avec Sberbank sur ce sujet, ils étaient intéressés à interagir. Mais il me semble qu'à grande échelle, une telle efficacité que les petites est impossible. C’est pourquoi nous ne voulons pas trop grandir. Culture d'entreprise - agissez rapidement, faites de petites quantités de personnes de manière très efficace, résolvez de gros problèmes afin que le client n'attende pas six mois. Pour cela, nous utilisons, par exemple, la programmation extrême et la programmation par paires.

- Tout cet extrême extrême est-il une caractéristique particulière de Codeborne, ou est-ce typique de l'Estonie en général? Dans un autre pays, pourriez-vous le faire?
- Disons simplement que l'aggel en Estonie est typique, les petites équipes sont assez typiques. Mais je pense que nous sommes différents et sommes allés encore plus loin. Il est peu probable qu'il existe de nombreuses entreprises qui font de la programmation en binôme en de tels nombres et qui sont tellement axées sur les développeurs.

Je pense que cela peut être fait dans n'importe quel pays, nous n'avons pas conçu de modèle à partir de zéro - nous nous sommes concentrés sur plusieurs sociétés, dont une à Chicago. Nous avons lu certains blogs, et surtout en Amérique, j'ai vu une approche la plus proche de la nôtre.

Je pense que l'approche des clients a d'abord aidé. Le salaire horaire est courant en Estonie, vous pouvez dire que vous voyez autant d'heures humaines, et ensemble, nous trouverons comment faire au mieux avec le budget disponible. En Estonie, cette idée n'a pas besoin d'être vendue. Et, par exemple, en Russie, la plupart des entreprises clientes ne sont pas prêtes pour cela, elles veulent payer pour le projet, bien qu'en fin de compte pour le client, cela se révèle généralement plus cher.

- Au début de l'interview, le client japonais a été mentionné - est-ce typique? Quand les clients à l'étranger, et même ceux avec quelles langues avez-vous affaire?
- A propos du Japon - oui, typiquement, l'Estonie travaille beaucoup avec les Japonais, ils viennent ici en tant que délégations entières.

Nous communiquons avec presque tous les clients en anglais, uniquement avec le russe en russe. Ils n'acceptent pas du tout de passer à l'anglais - peut-être que beaucoup le pourraient, mais sont timides. Pour cette raison, nous avons réalisé que nous avons des développeurs particulièrement précieux qui parlent russe.

Et nous travaillons avec d'autres pays en anglais - bien que le japonais ne soit généralement pas très anglais, mais ceux qui arrivent en Estonie pour des négociations parlent généralement. Et même à l'intérieur de l'Estonie, nous communiquons souvent en anglais, car au cours des dix dernières années, il a été très cosmopolite, en particulier l'informatique. De nombreux experts sont venus du monde entier, il s'avère donc presque toujours que toutes les personnes impliquées dans le dialogue ne parlent pas l'estonien. Je pense que c'est aussi la raison pour laquelle il est assez facile de déménager en Estonie - l'essentiel est de connaître l'anglais, l'estonien n'est pas requis.

- Je pense que de nombreux développeurs voudraient théoriquement créer leur propre entreprise, mais ils ont peur de ne pas avoir du temps pour la programmation, et le changement sera pour le pire. Que montre votre expérience de création d'entreprise en Estonie?
"Je dirais ça." Codeborne a environ neuf ans, et pendant cette période, lorsque quelqu'un a quitté l'entreprise, le plus souvent pour créer la sienne. D'une part, c'est insultant, parce que nous avons grandi et éduqué les gens, et d'autre part, il est flatteur que les gens croient que la prochaine étape après Codeborne peut être exactement cela.

Et je dirais que la création d'une entreprise est une option intéressante, mais soyez vraiment préparé au fait que la plupart du temps (surtout au début), vous aurez des tâches qui ne sont pas liées à l'informatique. « », , — .

, - . — , .

— — « ». , « »?
— , flat-. « », , , — « ». , , , core team 10 , 30 - . .

— « »: ? ?
— : . ( ), — . . : , , , .

— , - . ?
— . , , , . Codeborne, — , , - . , ( ) , — , - . . .

Kotlin- Mobius . , — (, «Kotlin Android iOS» ).


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


All Articles