«Le manager doit continuer à coder»: entretien avec Stephen Chin



De nombreux développeurs Java connaissent Stephen Chin . Quelqu'un a vu ses émissions d'événements Java, quelqu'un - ses interviews avec d'autres javistes célèbres, et quelqu'un - des reportages sur Java sur le Raspberry Pi. Mais qu'y a-t-il sur Twitter, il @steveonjava - c'est-à-dire que même avec un nom d'utilisateur montre combien sa vie est consacrée à cette langue.

Jusqu'à récemment, il travaillait chez Oracle et a maintenant déménagé chez JFrog. Cela peut sembler inattendu: quitter Oracle lorsque votre vie est Java? Mais le deuxième nom est également bien connu des Javistes russes, à bien des égards grâce à Baruh joguch Sadogursky qui y travaille.

Bientôt, les développeurs russes pourront voir personnellement Stephen et Baruch à la conférence Joker , mais jusqu'à présent, Stephen nous a parlé de diverses choses, par exemple, telles que:

  • Que fait-il exactement maintenant;
  • Comment est-il plus correct pour un développeur de devenir gestionnaire;
  • Quelle taille pouvez-vous faire un cluster de Raspberry Pi (et pourquoi);
  • JavaFX est-il vivant?
  • Comment une moto est-elle utile pour un activiste Java?

Oleg Chirukhin: JFrog est engagé dans CI / CD et d'autres, mais il est particulièrement bien connu du russe javis que Barukh y travaille. Vous le connaissez probablement, non?

Stephen: Oui, lui et moi sommes de grands amis. Je l'ai connu avant le chapeau!

Oleg: Vous êtes maintenant «directeur principal des relations avec les développeurs», et le poste de Baruch est appelé «chef du plaidoyer pour les développeurs». Qu'est-ce qui se cache exactement derrière cela?

Steven: DevRel est tout un tas d'activités différentes. Y compris ceux-ci sont les défenseurs des développeurs - des gens comme moi et Baruch s'exprimant lors de conférences avec des présentations. Ce sont aussi des événements pour les développeurs, la communication avec les gens lors de conférences, la création de contenu pour les développeurs, etc. En général, maintenant je suis également connecté à tout cela, et nous allons augmenter l'activité en travaillant avec la communauté.

Oleg: À en juger par votre profil LinkedIn, vous avez une carrière très intéressante. D'abord, vous avez obtenu un baccalauréat en informatique, puis pendant trois ans, vous avez été en gestion, puis pendant un an - programmation, puis à nouveau en gestion. Pourquoi avez-vous eu de tels zigzags dans votre carrière? En général, est-il raisonnable pour un junior de changer si souvent de domaine d'activité?

Stephen: C’est tout à fait raisonnable, c’est ainsi que tout le monde devrait commencer une carrière! * rires *

Je dirais que l'une des difficultés communes aux personnes qui connaissent bien leur domaine technique est que la croissance de carrière est plus facile à réaliser en devenant manager. Mais si vous vous engagez dans la gestion depuis longtemps, vos compétences, votre compréhension de la technologie et, en général, ce qui vous rend précieux en tant que leader cesse de se développer. Par conséquent, je suis convaincu que nous ne devons pas abandonner la technologie. Continuez à créer quelque chose, continuez à étudier, continuez à vous développer. Pour une carrière, c'est juste le plus important.

Si nécessaire, prenez une position de leadership et aidez vos collègues à grandir - c'est formidable, j'en suis heureux. Mais ensuite je retrousse mes manches et fais quelque chose de spécifique. Je pense qu'il est important de ne pas oublier que c'est votre principale compétence en tant que développeur.

Oleg: Est-il facile de combiner les compétences d'un manager et d'un programmeur en une seule personne?
Après tout, ce sont des domaines très différents.

Stephen: Oui, mais je ne m'occupe de la gestion que dans des domaines que je comprends moi-même. Je sais écrire du code, tester, appliquer des méthodologies Agile, car j'ai tout appris moi-même. De plus, je suis impliqué dans le plaidoyer pour les développeurs depuis plusieurs années maintenant, donc j'ai aussi des compétences dans ce domaine.

Je pense que la plupart des managers ont la partie la plus productive de leur carrière lorsqu'ils, en tant qu'experts dans un certain domaine, organisent leur équipe et contribuent à son efficacité. Et puis ils sont promus cadres intermédiaires typiques, ce qui n'apporte pas beaucoup d'avantages. Par conséquent, je crois que pour réussir, il est nécessaire de ne pas s'éloigner de ce que vous êtes bon à l'origine.

Oleg: Vous avez déjà occupé un poste de chef cuisinier agile. J'ai même peur de suggérer ce que cela devrait signifier.

Stephen: Eh bien, nous avons tous eu des erreurs dans nos vies! * rires *

À un certain moment, les méthodologies Agile et l'infrastructure DevOps ont commencé à très bien fonctionner pour moi. J'ai commencé à aider non seulement mon équipe, mais aussi d'autres équipes de l'entreprise, et j'ai également commencé à planifier de grandes versions. Ensuite, j'ai même écrit un outil en Java pour similaire. La société a commencé à l'utiliser, au fil du temps, elle s'est développée et, grâce à cela, nous avons pu sortir de l'enfer des tableaux Excel (si vous vous y trouvez, vous savez quel endroit terrible c'est).

Mais quand même, travailler avec des méthodologies n'est pas aussi intéressant pour moi que les technologies. Par conséquent, à la fin, je suis retourné à nouveau aux affaires précédentes.

Oleg: Je sais que vous avez beaucoup travaillé avec JavaFX. Qu'est-ce qui vous a poussé au départ à cette technologie?

Steven: C'est une histoire assez intéressante. Avant même la sortie de JavaFX 1.0, je travaillais sur un framework de widgets de bureau. J'ai envoyé un prototype de ce cadre à Joshua Marinacci de Sun, qui à l'époque travaillait comme évangéliste Java. Personnellement, je ne le connaissais pas, même si je le respectais, donc je n'attendais aucune réponse. Mais il a répondu, a dit qu'il aimait l'idée et a suggéré d'essayer JavaFX, qui à l'époque était complètement hors de ma vue. J'ai eu trois jours de congé (en raison des vacances), et pendant ces trois jours, j'ai réécrit mon framework sur JavaFX, après quoi Joshua a envoyé à nouveau le résultat.

En général, c'est ainsi que ma connaissance de JavaFX a commencé et que mon WidgetFX est apparu. Je pense que vous savez que tout ne s'est pas bien passé dans l'histoire de cet outil, mais maintenant je pense qu'il est absurde d'utiliser AWT ou Swing pour écrire des outils de bureau en Java.

Oleg: Je suis complètement d'accord. Certes, IntelliJ IDEA utilise toujours Swing.

Stephen: Eh bien, IDEA elle-même a été créée au début des années 2000. Bien sûr, il y a des gens qui prennent en charge de grandes applications avec un grand nombre de Java2D hérités, et dans ce cas, bien sûr, vous n'avez pas à choisir. Mais pour les nouveaux outils, à mon avis, c'est fou d'utiliser la boîte à outils, qui a plus de 20 ans.

Oleg: Qu'attend JavaFX à l'avenir? Après tout, elle a maintenant cessé de faire partie du JDK.

Stephen: Eh bien, JavaFX fait toujours partie du projet OpenJDK. Il a été supprimé de l'assemblage Oracle, mais cet assemblage est toujours commercial, donc la perte est faible. Que puis-je dire - utilisez les versions JavaFX de Gluon. Soit dit en passant, ils sont également impliqués dans JavaFX mobile, en général, ils font beaucoup de choses importantes pour l'écosystème.

Oleg: Et qu'en est-il des projets JavaFX comme votre WidgetFX maintenant?

Stephen: Plus précisément, le travail sur WidgetFX n'est plus en cours, mais il y a d'autres projets que la communauté soutient. En général, l'écosystème JavaFX est dynamique. Il existe de nombreux cas dans lesquels JavaFX est indispensable et vous permet d'écrire des choses difficiles à reproduire en JavaScript.

Oleg: Avez-vous un projet Nighthacking - pouvez-vous nous en parler?

Stephen: Avant même de commencer à travailler chez Oracle, j'ai commencé une grande série d'entretiens sous le nom général Nighthacking. J'ai pris un sac à dos avec de l'équipement, je suis venu à la conférence et j'ai enregistré des entrevues vidéo similaires à celle que vous me prenez maintenant.

J'ai utilisé divers services pour les publier sur Internet, mais j'ai finalement choisi Periscope, que Chris Thalinger m'a proposé. Il s'agit d'une excellente plateforme pour publier des interviews et aider les gens à se familiariser avec les nouvelles technologies.

De plus, Baruch et moi avons eu l'idée de créer un programme dans un format similaire sur le sujet de DevOps. Nous prévoyons de le lancer lors de votre conférence Joker, il s'appellera DevOps Speakeasy.

Oleg: Ce serait formidable. Pour autant que je sache, vous avez voyagé à moto avec un autre développeur Java que nous connaissons, Sebastian Dashner?

Stephen: Oui, nous avons voyagé partout dans le monde, nous étions en Europe, au Japon. À première vue, il peut sembler qu'une moto est un moyen de transport étrange, mais lorsque vous devez visiter dix groupes d'utilisateurs différents dans différentes villes en deux semaines, comme nous l'avons fait au Japon, la moto est très efficace.

Oleg: Puisque vous avez vu beaucoup de groupes d'utilisateurs Java dans le monde - y a-t-il des différences culturelles entre les groupes dans différentes parties du monde?

Steven: Je pense qu'il y a plus de similitudes que de différences. Le plus souvent, ces groupes existent aux dépens des geeks eux-mêmes, qui les organisent, c'est-à-dire qu'ils fonctionnent sur une base volontaire. Moi-même, en dirigeant un groupe d'utilisateurs dans la région de la baie de San Francisco, j'ai ressenti cela comme un moyen d'aider les autres, tout comme ils m'ont aidé à mon époque. Les groupes d'utilisateurs vous permettent de partager des connaissances, j'aime vraiment y marcher, l'esprit de la communauté vibre en eux. Pour les défenseurs des développeurs, il est préférable de créer des groupes d'utilisateurs.

Oleg: Vous avez beaucoup de vidéos sur la robotique, le Raspberry Pi et plus encore. Faites-vous cela professionnellement ou est-ce plutôt un hobby?

Steven: J'ai commencé à travailler sur la robotique car chez Oracle, nous avions des projets Java pour le Raspberry Pi et d'autres plates-formes embarquées. Et puis j'ai vu qu'il était très pratique pour Raspberry Pi d'enseigner la programmation aux enfants. Et j'ai fait beaucoup de cela, organisé des séminaires pour les enfants lors de diverses conférences. Auparavant, ma fille m'a aidée lors de ces séminaires, maintenant elle dirige elle-même les mêmes séminaires. Il connecte des capteurs intégrés (tels que des capteurs de lumière, des accéléromètres) au Raspberry Pi, montre des exemples de code très simples avec ces capteurs et enseigne ainsi aux enfants. Grâce à ces leçons, une nouvelle génération de programmeurs peut apparaître dans le futur dont l'intérêt pour le code est apparu très tôt.

Oleg: Peut - être qu'un jour elle jouera au Joker. Le Raspberry Pi est-il toujours la meilleure plateforme robotique? Ils disent que les nouvelles versions surchauffent beaucoup, rappelle les tweets d'Alexei Shipilev. Bien qu'il soit effrayant d'imaginer les charges que Shipilev leur impose, alors parlez-nous d'une utilisation plus «normale».



Stephen: Pour ceux qui se livrent à ce métier comme passe-temps, l'avantage du Raspberry Pi est que le système est très facile à soulever: branchez-le sur un port USB, insérez une carte SD ordinaire, il faut environ une demi-heure pour tout faire. Comme je l'ai déjà dit, chez Oracle, je travaillais dans une équipe engagée dans les systèmes embarqués commerciaux - même si j'étais moi-même impliquée dans le plaidoyer pour les développeurs, mais il y avait beaucoup de gens autour de moi qui ont testé et mis en place diverses plates-formes embarquées. Donc, pour exécuter les choses les plus simples sur un système commercial, il a fallu plusieurs semaines.

Les plates-formes conçues pour le développement et non pour la production ne fonctionnent pas dans de nombreux domaines et nécessitent des tests supplémentaires. Divers problèmes surviennent, par exemple, il peut n'y avoir aucun pilote pour l'affichage, certaines fonctionnalités peuvent ne pas fonctionner, les plateformes elles-mêmes ne fonctionnent souvent pas (s'il s'agit de prototypes). Et en général, les gens sont habitués à cet état de choses: si vous avez une nouvelle plate-forme, alors pour commencer à y travailler, vous devez passer environ un mois.

En utilisant les mêmes technologies, la Fondation Raspberry Pi au Royaume-Uni a créé une plate-forme facile à utiliser dans l'éducation, simple, efficace et dotée d'un excellent écosystème. En particulier, c'est bon pour ceux qui veulent faire un projet simple dans leur temps libre - au fait, j'ai écrit un livre sur Java et Raspberry Pi.

Raspberry Pi supprime la plupart des incertitudes qui sont ouvertes à l'utilisateur d'autres plates-formes intégrées, et avec lui, il n'est pas nécessaire de développer des composants pour la plate-forme vous-même. Ainsi, sur le Raspberry Pi, vous pouvez faire vos petits projets pendant votre temps libre, cela n'a pas à être fait professionnellement.

Oleg: Le côté robotique du Raspberry Pi a-t-il changé au fil des ans? Je ne l'ai pas fait exprès, mais pour autant que je sache, Java a GPIO par défaut. Existe-t-il des cadres ou peut-être que les fabricants de matériel fournissent eux-mêmes un support?

Steven: Il existe de nombreux projets financés par la communauté, comme Robo4J: c'est une plate-forme robotique dans IOT basée sur le Raspberry Pi. Un autre grand projet avec accès GPIO est le Pi4J. Il utilise la même bibliothèque C que tout le monde, WiringPi, mais en plus il fournit un shell Java très efficace qui a d'excellentes performances.

J'ai effectué des sondages GPIO de bas niveau pour simuler des broches analogiques. Habituellement, dans Raspberry Pi, cela est très difficile à faire, car il ne s'agit pas d'un système d'exploitation en temps réel. L'encapsuleur Java ajoute des pauses pour la compilation JIT et similaires. Mais avec l'aide de la bibliothèque Pie4J de bas niveau, j'ai pu utiliser le capteur de distance analogique sur le contrôleur en Java. En général, avec Raspberry Pi, vous pouvez faire beaucoup de choses intéressantes directement à partir de Java. Et bien sûr, en plus de cela, il existe un vaste écosystème en C, Python, et plus encore.

Oleg: J'ai vu que les gens créent des clusters à partir de Raspberry Pi. Cela a-t-il une signification pratique?

Steven: Sur Oracle Code One, il y aura bientôt une présentation du projet auquel j'ai participé, c'est un cluster de 1024 Raspberry Pi.

Comme vous le savez, il n'est pas difficile d'assembler un cluster de 10 ou 20 Pi, même si cela prendra un certain temps. Si le cluster a plus de 1000 Pi, il y a des problèmes de consommation d'énergie, de chargement à partir d'une carte SD ou sur le réseau, avec la topologie et l'infrastructure réseau appropriées - le message entre les nœuds du réseau ne devrait pas devenir un goulot d'étranglement dans les calculs. De plus, le refroidissement d'une telle quantité de Pi dans une pièce n'est pas une tâche triviale. Mais lorsque nous surmonterons toutes ces difficultés, ce sera le plus grand cluster de Raspberry Pi au monde. Soit dit en passant, ce sera sous la forme d'une cabine téléphonique bleue de la police britannique - comme vous le savez vous-même ce qu'est une série télévisée de science-fiction. J'espère que nous n'avons violé les droits d'auteur de personne.

Un cluster de ce type, c'est comme avoir un petit train avec des trains, mais en même temps, il simule un réseau ferroviaire à grande échelle. Selon ce modèle, un véritable train ne peut jamais passer, et la même histoire ici: un cluster de 1024 Raspberry Pi ne sera pas plus puissant qu'un seul GPU moderne avec plusieurs centaines de cœurs, mais ce cluster est utile pour simuler le comportement de grands systèmes. De plus, il est idéal pour certaines tâches très fortement parallélisées. Mais très souvent, le réseau ou la vitesse de lecture et d'écriture des cartes SD devient un goulot d'étranglement. Et pour les algorithmes complexes, ce sont précisément ces choses qui sont de réelles limites.

Oleg: Oui, et ce cluster peut être utilisé comme modèle de formation, vous pouvez essayer de déployer quelque chose en utilisant Kubernetes, Docker et certains produits JFrog.

Stephen: Pourquoi pas! * rires *

Oleg: Vous êtes un ancien employé d'Oracle et êtes impliqué dans Java depuis longtemps. Comment voyez-vous l'avenir de la langue? C'est peut-être pour GraalVM, Valhalla ou quelque chose comme ça?

Stephen: Avec les versions Java dans un avenir proche, de nombreuses technologies intéressantes apparaîtront. Les deux plus importants, l'un d'entre eux que vous avez déjà nommé, est GraalVM. Il s'agit de l'infrastructure de compilation de nouvelle génération. Nous parlons d'un compilateur écrit en Java et pour Java, qui peut fonctionner avec plusieurs langages, et qui est beaucoup plus facile à optimiser qu'un HotSpot classique. Je pense qu'à long terme, ce compilateur surclassera les autres compilateurs JVM et deviendra une partie importante de l'architecture Java.

Un avantage significatif de GraalVM est la compilation AOT. Il est particulièrement utile pour les appareils mobiles et embarqués. Le code est compilé à l'avance, le binaire est déployé sur l'appareil et le temps de démarrage et la mémoire requise sont comparables au code en C, Go et dans d'autres langages. De plus, la compilation AOT permet de travailler avec des microservices ou une architecture sans serveur beaucoup plus efficacement, où de nombreux processus sont exécutés simultanément sur plusieurs serveurs ou dans différents threads sur la même machine. Si nécessaire, vous pouvez exécuter une machine virtuelle Java distincte pour chaque conteneur Docker ou environnement virtuel. En général, pour des choses comme sans serveur en Java aujourd'hui, GraalVM est devenu presque indispensable.

Fibres est une autre nouvelle technologie intéressante sur laquelle l'équipe JVM travaille. Ils vous permettent de créer des applications Java de manière traditionnelle, avec des threads, mais ont en même temps les mêmes performances que si vous utilisiez un framework asynchrone, par exemple, Vert.x, Node.js ou autre.

Il y a toujours une contradiction dans la programmation: d'une part, la nécessité d'optimiser les performances du code, d'autre part, le désir d'écrire du code clair et facile à maintenir. Un système avec des threads est plus facile à lire et plus facile à rechercher des bogues. Les systèmes asynchrones vous permettent d'extraire des performances supplémentaires du code, car chaque thread est utilisé au maximum, car les demandes sont tirées à l'intérieur d'un processus. Mais pour réaliser cet avantage, il faut changer le modèle de programmation, le système devient alors plus difficile à maintenir. Les fibres permettent d'écrire du code avec des threads, mais ont en même temps les performances d'un framework asynchrone.

Oleg: En fait, certains changements ont déjà été effectués dans OpenJDK pour préparer l'arrivée de Loom. Par exemple, dans JEP 353: Réimplémentez l'API Legacy Socket .

Stephen: Pour autant que je sache, l'infrastructure de base pour Fibres et Loom est en cours de mise en œuvre, mais elle ne sera pas ouverte aux utilisateurs, car les développeurs ne veulent pas que les gens travaillent directement avec eux. Alors maintenant, nous travaillons sur une API pour les fibres.

Oleg: Utilisez-vous les dernières versions de Java?

Steven: Bien sûr, j'ai toujours la dernière version. Sinon, comment? Certes, je n'écris pas de code de production pour le moment. Lorsque vous travaillez avec des prototypes ou lorsque vous explorez de nouvelles bibliothèques et frameworks, il n'y a aucune raison de ne pas utiliser la dernière version d'OpenJDK. Si le travail va avec le système en production, il peut être difficile de passer rapidement à la dernière version.

Les grandes organisations ont le plus de mal à franchir la frontière de Java 9. Ensuite, il y a eu la modularité, et elle a apporté de nombreux autres changements. Souvent, de nombreux cadres et technologies dont dépend le projet n'ont pas encore migré vers Java 9 et versions ultérieures, ce qui rend également la transition difficile. Si cette ligne est passée, il est beaucoup plus facile de mettre à jour davantage, car les versions suivantes (10, 11, 12 et, si je ne mélange rien, bientôt 13) sont assez similaires. En termes de compatibilité, le plus gros changement est la modularité.

Oleg: Et quitter Java Enterprise.

Stephen: Oui.

Oleg: Enfin, pouvez-vous nous parler de votre nouveau rapport, avec lequel vous venez chez Joker?

Stephen: Lorsque vous parlez beaucoup avec des conférenciers, vous suivez les applications qui sont présentées lors de la conférence, et en général, les tendances de l'industrie, vous pouvez voir à quel point le battage médiatique monte toujours autour des nouvelles technologies, que ce soit les robots de chat, sans serveur, l'apprentissage automatique, l'intelligence artificielle ou autre chose. Les gens ont toujours beaucoup d'enthousiasme à propos de ces choses en raison de leur nouveauté, vous voulez toujours tout savoir le plus rapidement possible.

Mais il est souvent difficile de déterminer si des percées importantes sont vraiment derrière ce battage médiatique, ou s'il n'y a rien à part le battage médiatique. Dans mon discours au Joker, je veux régler ce problème. , , , , . , , .

Joker. - , — , . — , , DevOps Speakeasy. , -.

: . , , . , — -! , -.

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


All Articles