Entretien avec le président de la conférence RubyRussia Marcus Schirp

Bonjour à tous! Un peu plus d'une semaine plus tard, la conférence RubyRussia se tiendra à Moscou. Dans l'interview d'aujourd'hui, le développeur d' Evrone , Mikhail Morgunov, s'est entretenu avec l'un de nos conférenciers, Markus Shirp , créateur de l'outil de test de mutation Ruby .


La première question concerne Mutant . Que devons-nous savoir sur cet outil? Quel sera le rapport sur RubyRussia?

Je vais raconter l'histoire de l'outil de test de mutation - Mutant. Je veux présenter au public des concepts clés: les gens apprendront les différents niveaux de couverture, leur signification et leur valeur.

Cela mettra en lumière ces choses dans Ruby auxquelles nous sommes habitués et que nous considérons correctes, mais en fait il y a des problèmes. Parce que Ruby nous donne très souvent une excellente occasion de se tirer une balle dans le pied.

Comment avez-vous commencé à développer un mutant?

Cette histoire est liée à mon travail sur DataMapper et à sa prochaine implémentation de DataMapper 2, qui a fini par s'appeler ROM. Projectlide Dan Kubb a écrit une bibliothèque d'algèbre relationnelle appelée axiome pour soutenir ces nouveaux développements. Lorsqu'il a écrit axiome, il a utilisé la stratégie du "développement limité". Il comprend de nombreux outils pour travailler avec des métriques et des tests mutationnels.

L'outil que nous avons ensuite utilisé pour les tests de mutation s'appelait Hackle. Il avait certains défauts opérationnels et conceptuels. Une fois, j'ai pensé: "Merde, je ne vais même pas essayer de le réparer! Écrivons simplement un nouveau et résolvons tous les problèmes de mise à l'échelle des tests mutationnels que nous avons dans DataMapper2. »

C'était il y a 5 ou 6 ans, depuis que Mutant a traversé plusieurs itérations. Tous sont liés non pas à ma volonté d'écrire en open source, mais aux exigences des projets commerciaux sur lesquels j'ai travaillé. Le développement de Mutant dépend donc fortement de mes activités de conseil.

Chaque fois que je démarre un nouveau projet Ruby, je dois être sûr de chaque morceau de code. Et Mutant est l'outil que j'utilise pour cela.

Autrement dit, les clients commerciaux veulent utiliser Mutant?

Oui Cela est confirmé par le fait que toutes les fonctionnalités que vous voyez sont des fonctionnalités que les clients commerciaux m'ont demandé d'ajouter ces dernières années. Il y a des fonctions qui ne sont pas dans la version publique, car le client ne m'a pas donné le droit d'ouvrir son code source. Mais parfois, le client dit: «Il n'y a pas de problème si quelqu'un en profite», ce que j'aime beaucoup.

Pour le moment, j'ai quitté DataMapper2. Je n'ai jamais écrit de fonctionnalités juste pour le plaisir. Ce ne sont que des effets secondaires d'une utilisation commerciale.

Personnellement, je ne suis pas amoureux de Ruby, c'est juste un outil pour moi. Mutant est un moyen de rendre Ruby plus efficace. Le seuil d'entrée dans Mutant est très élevé, mais lorsque vous commencez, cela aide beaucoup. Le besoin de formation est quelque chose à supporter.

C'est dans la nature des choses lors de l'utilisation d'un joyau gratuit :)

95% des gemmes gratuites ne sont que des projets de loisir. Ils ne conviennent pas à un usage commercial. Les auteurs les fabriquent par intérêt personnel. Je ne leur en veux pas. Mais je conseille à l'équipe de développement de projets commerciaux de garder cela à l'esprit lorsqu'ils prennent quelque chose de RubyGems.

Je ne lis que le fichier README Mutant sur GitHub. Mais jusqu'à présent, j'ai peu compris.

C'est pour cette raison que j'ai besoin de passer plus de temps à rédiger un fichier Lisezmoi et une documentation d'entrée de gamme supplémentaire.

Pour des raisons personnelles, je suis resté silencieux dans la communauté pendant 3 ans: j'ai eu deux autres enfants, j'ai déménagé dans un autre pays.
RubyRussia est la première conférence après la pause où je peux parler avec la communauté. Et je veux utiliser le temps que je consacre à la préparation de mon rapport et de mon atelier comme source de documentation pour une documentation supplémentaire.

Qu'est-ce qui nous attend?

Le 6 octobre, il y aura une conférence sur Mutant et le 7 octobre un atelier. Il sera basé sur des exemples réels tirés d'un projet open source qui utilise des rails et rspec.

Si je comprends bien, vous utilisez un langage de programmation différent, pas Ruby?

Ce n'est pas tout à fait vrai. J'utilise souvent Ruby, mais seulement s'il y a une bonne raison à cela. Il s'agit généralement du salut des applications héritées qui sont sur le point de tomber en panne sous le poids de leur propre code.

Dans ce cas, vous ne pouvez pas simplement remplacer Ruby en une seule étape. Faire du refactoring incrémentiel / "étrangler" le code Ruby est mon travail principal. Et pendant ce processus, mes mains sont à mes côtés en Ruby, et ici Mutant est mon principal outil pour relier les cycles de refactorisation / modification.

Quelles langues préférez-vous?

Surtout Haskell. Maintenant, pour moi, c'est le langage le plus équilibré en termes de convivialité et d'aptitude à développer des programmes de valeur commerciale. Haskell Type Checker garantit immédiatement de nombreuses propriétés; propriétés que je devrais me battre pour Ruby.

Il y a plusieurs autres langages et extensions sympas à l'horizon. Je pense que les types dépendants prendront "l'exactitude après avoir passé la vérification de type" à un nouveau niveau.

Pensez-vous que Ruby et Rails ont un avenir?

Ruby and Rails ont un seuil d'entrée bas, ce qui aide les gens à atteindre rapidement le point où l'application gagne de l'argent. Alors que les gens croient que Ruby et Rails ont cette qualité, ces technologies ont un avenir.

Une petite déclaration hérétique: les applications Rails ne peuvent pas croître en raison de la complexité héritée du framework, en raison des choix faits par les créateurs du langage et du framework. Mais ce devoir technique est OK si vous avez une raison commerciale de le faire. Ayez simplement un plan prêt à l'emploi pour rembourser cette dette.

Que pensez-vous de Rust?

Je l'aime vraiment. Maintenant, je ne l'utilise pas souvent - il n'y avait pas de bonne raison, car les projets de travail ne pouvaient rien tirer des avantages de Rust par rapport aux autres options que j'avais.

Je fais principalement du développement backend. Ou appelons-le "RPC massif avec la logique du sujet". Ici, tout d'abord, il est important de garantir l'exactitude du programme, mais ce n'est que dans le second que sont ses performances. La rouille est très efficace sur le plan informatique, mais pour cela, elle nécessite un contrôle manuel des pièces de bas niveau. Cela prend du temps, ce qui est mieux dépensé pour optimiser les modèles d'E / S de haut niveau (groupement RPC, minimiser les allers-retours, vérifier les propriétés transactionnelles, etc.). Il vaut mieux le faire avant d'optimiser les primitives individuelles au détriment du langage, ce qui me donne plus de possibilités d'optimisation.

Si je faisais quelque chose de plus lourd en termes de calcul, un codec vidéo par exemple, Rust serait l'outil que j'ai choisi.

Et la dernière question. Que pouvez-vous conseiller aux programmeurs débutants?

En tant que programmeur débutant, trouvez un projet favori et intégrez-le à des intérêts en dehors de la programmation. Cela est nécessaire pour être emporté assez longtemps jusqu'à ce que l'apprentissage de la programmation commence à faire de l'argent.

Très intéressant! Ça devrait marcher!

Oui, c'est comme ça que j'ai commencé :)

Bon conseil! Merci pour l'interview! Rendez-vous à Ruby Russie.

Nous vous attendons également à la conférence! Soit dit en passant, il reste moins de 30 billets, nous ne recommandons donc pas de reporter l'inscription si vous décidez d'y aller. Et si vous souhaitez approfondir Mutant, nous attendons Markus lors de l'atelier du 7 octobre. Tous les détails sur le site .

Vous pouvez lire l'original en anglais sur hype.codes .

Et voici un endroit pour remercier les grandes entreprises qui soutiennent le principal événement Ruby en Russie:

Associé commandité - Toptal
Partenaires Or - Gett et Cookpad
Partenaires Silver - Instamart , UCHi.ru , JetBrains et Qlean
Partenaires Bronze - Bookmate et InSales

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


All Articles