L'invité du deuxième numéro de
Run Loop - un podcast sur ceux qui fabriquent des produits de leurs propres mains - Yegor Bugaenko. Nous lui poserons des questions sur l'objectif de créer sa propre crypto-monnaie Zold. Découvrez pourquoi Ruby est utilisé pour l'écrire. Parlons tout de suite de beaucoup, à partir de la routine quotidienne et des livres, pour finir par des questions provocantes sur la qualité du travail des programmeurs. Et enfin, nous discuterons que les développeurs qui ne savent pas comment participer à des projets Open Source deviendront bientôt inutiles pour personne.

Présentateurs: Ilya Tsarev, Alexey Mileev, Roman Busygin.
Ilya Tsarev est engagée dans le développement iOS chez Alfa Bank, intervient lors de diverses réunions et conférences.
Alexey Mileyev développe la version Android d'App in the Air, dirige la chaîne Telegram pour le développement Android et supervise les rapports sur AppsConf.
Roman Busygin - un développeur leader de Yandex.Music pour iOS, parle souvent lors de conférences et participe à des podcasts.
Away:
Yegor Bugaenko - fondateur et PDG de Zerocracy, une société développant des robots d'IA pour la gestion des programmeurs; OOP fondamentaliste; auteur d'Elegant Objects, une série de livres sur la programmation orientée objet; créateur de Cactoos, Takes Framework, JCabi et Rultor, ainsi que blogueur et philanthrope.
Alexey : Parle-moi de ce que tu fais.Egor : Je programme et gère principalement des programmeurs. Ce sont deux domaines de mon activité.
Ilya : Veuillez me dire comment vous combinez cela. À quel moment gérez-vous le développement, et à quel moment programmez-vous? Veuillez nous en dire plus sur votre entreprise.
À propos de la société
Egor : Notre société s'appelle Zerocracy et est un échange indépendant où des pigistes, des programmeurs, des testeurs, des concepteurs et toutes sortes d'autres talents techniques sont connectés. Et d'autre part, les clients qui ont besoin de ces talents et qui souhaitent réaliser un projet logiciel.
Le cœur du site est l'intelligence artificielle automatisée. Il s'agit d'un robot - un bot de chat qui contrôle le processus de développement. Il définit les tâches des programmeurs, en recueille les résultats, leur verse de l'argent, évalue la qualité de leur travail et organise l'ensemble du processus de développement. Au départ, j'ai moi-même écrit ce robot, l'intelligence artificielle. Maintenant je prends une part insignifiante dans son développement, l'équipe de développement continue de s'affiner et de s'améliorer.
Je suis le PDG de Zerocracy. La plupart de mon temps est consacré à cela. Dans le domaine de la programmation, j'ai plusieurs projets que je développe activement. L'un d'eux est notre projet pilote zold.io. Il s'agit d'une crypto-monnaie créée par nous au sein de notre entreprise, qui est une alternative aux solutions de blockchain existantes. Je suis l'architecte de cette solution. Je ne suis pas le seul à y travailler, mais je suis architecte. Ce produit est intéressant car il est écrit dans la version actuelle en Ruby.
Le projet zold.io est un
moyen alternatif de résoudre le problème des paiements distribués . La blockchain est une solution assez connue et largement populaire pour organiser les données distribuées sur des serveurs sans confiance. Nous avons proposé notre solution, qui n'utilise pas de blocs, de chaînes et tout ce qui se trouve dans la blockchain. Nous résolvons ce problème à notre manière. Il nous semble que notre solution est également intéressante. C'est ce que je fais en programmation active.
Pourquoi rubis
Roman : Egor, c'est très intéressant d'entendre parler de la blockchain. C'est une chose très compliquée sur le plan informatique. Vous utilisez Ruby, qui est célèbre pour sa lenteur. Presque tout le monde essaie de l'éviter sur les grands projets. Veuillez me dire pourquoi Ruby?Egor : Nous n'avons pas de blockchain.
Nous avons la crypto-monnaie, mais pas la blockchain . Très souvent, les gens associent deux concepts. Il leur semble que crypto-monnaie = blockchain. Ces choses peuvent être dans un package, comme dans Bitcoin, par exemple, mais en fait, la blockchain n'est qu'un moyen de stocker des données sur de nombreux serveurs sans aucune confiance dans chaque serveur individuel. La blockchain est vraiment une technologie ou une méthode de stockage de données qui nécessite des vitesses et des ressources informatiques importantes.
Notre projet n'utilise pas de blockchain. Par conséquent, d'autres aspects étaient importants. Pour nous, la vitesse de calcul ne joue pas un rôle majeur. J'ai écrit un article sur notre blog intitulé «
Pourquoi Ruby? » Et j'ai souligné trois points qui répondent à cette question.
- Ruby est un langage très compact par rapport aux autres langages que je parle: Java, C ++ et JavaScript. Le code Ruby est beaucoup plus court et plus facile à écrire. En Java, il faut 100 lignes de code, en Ruby il peut en contenir 20.
- En raison de sa compacité, Ruby est très pratique pour l'expérimentation . La solution n'a pas été créée tout de suite; plusieurs mois ont été consacrés aux échantillons, aux erreurs et aux versions cassées. En conséquence, beaucoup de correspondance. Il serait moins pratique de le faire et de le réécrire à plusieurs reprises en Java.
- Ruby dispose d'un système très pratique pour déployer , installer et réinstaller une version qui n'est pas disponible, par exemple, en Java. Pour JavaScript, il y a npm, et en C ++ et Java, si de tels systèmes existent, ils dépendent de la plateforme. Ruby est un système multiplateforme et est très pratique pour réinstaller de nouvelles versions. C'est très important pour nous, car nous avons affaire à une communauté de contributeurs qui sont sur différentes plateformes, ils ne nous sont pas subordonnés. Un système est, par définition, distribué et anonyme. Il était donc très important pour nous que notre solution soit facile à installer.
Par conséquent - Ruby.
Le but de la crypto-monnaie créée
Alexei : Quel objectif avez-vous poursuivi lorsque vous avez créé votre crypto-monnaie, lorsque vous avez créé de l'or?Egor : Nous avions plusieurs motifs, des buts sont apparus plus tard. Franchement, le premier motif était un motif purement technique. Il était intéressant de résoudre un tel problème technique. Je suis ingénieur et technicien, résoudre des problèmes techniques complexes me fait plaisir.
J'ai beaucoup entendu parler de la blockchain et du fait que la crypto-monnaie est de plus en plus populaire. La question du marché est une question d’économie. Il n'était pas très intéressé par moi, j'étais plus intéressé par la question de la technologie. C'est-à-dire, comment ils prennent la décision de la blockchain afin que nous fassions confiance à un système qui n'a pas de serveur centralisé et un point de contrôle central. Étant donné que tout le monde parle de blockchain, il était intéressant pour moi d'essayer de résoudre ce problème à ma manière.
Un tel défi purement technique: essayons, ça devrait marcher.Ça n'a pas marché tout de suite. Trois mois n'ont pas fonctionné, mais finalement une solution a été trouvée. Cela fonctionne déjà maintenant, et même avec cette devise, nous payons déjà des programmeurs qui travaillent sur notre plate-forme. Les transactions sont mises en ligne, bien qu'il n'y ait eu jusqu'à présent aucune publicité, mais pour notre usage interne, en mode production, mais pour les petites transactions, nous les exécutons.
Le deuxième motif est d'ordre économique important.
Nous n'aimions
pas les méthodes de rémunération existantes pour les programmeurs qui travaillent sur la plate-forme Zerocracy. Actuellement, nous utilisons PayPal et Bitcoin. Dans les deux cas, les transactions sont assez chères. Nous devons payer de grosses commissions pour transférer des fonds aux programmeurs et aux micropaiements Zerocracy. Pour les microtâches, nous payons aux programmeurs des micropaiements pouvant atteindre plusieurs dizaines de cents. Comme vous le savez, PayPal, Bitcoin à cet égard sont très chers et ne conviennent pas aux microtransactions. Sur Bitcoin, la commission pour une transaction sera d'environ 50 cents, sur PayPal de 30 à 40 cents. C'est très cher si le montant total de la transaction est de 1 dollar. Par conséquent, le motif économique était
de prendre une décision de paiement qui serait beaucoup moins chère et serait très bien adaptée aux micropaiements , et non aux gros paiements, comme dans le bitcoin.
Des objectifs sont apparus récemment. il consiste à
attirer un montant suffisant de fonds vers la plateforme Zerocracy en utilisant
la crypto- monnaie, cet instrument financier pour attirer des fonds d'investissement vers le projet. En utilisant les fonds récoltés, nous voulons
augmenter les salaires des programmeurs travaillant sur la plateforme. Et ainsi rendre cette plate-forme attrayante pour un large éventail de développeurs professionnels.
Maintenant, malheureusement, il n'y a pas de budgets aussi importants sur la plate-forme pour payer aux développeurs
100-150 $ par heure . Avec notre modèle de contrôle - microtâche, micro-budget - tout est au niveau micro, nous avons un travail axé sur les résultats au niveau micro. Par conséquent, il est très important que les gens travaillent et souhaitent travailler pour le résultat, et pas seulement passer du temps dans le projet, comme c'est souvent le cas dans d'autres modèles de développement, y compris Agile. Pour que le modèle devienne attrayant, les gens doivent payer beaucoup. Nous sommes arrivés à cette conclusion. Dans le modèle traditionnel, une personne est habituée à travailler pour 15-20 $ de l'heure, mais quand elle paie 8 heures de travail, indépendamment de ce qu'il a fait ces 8 heures. Dans notre modèle, il est obligé de fournir 8 blocs de résultat afin de recevoir le paiement pendant 8 heures. En conséquence, 15 $ de l'heure n'est déjà pas intéressant, car astronomiquement huit heures, pour lesquelles ils paient une journée complète, les gens travaillent généralement 15 à 20% du temps. Le reste du temps est consacré à la lecture des actualités, au repos et à d'autres activités de soutien parallèles. Dans notre cas, ces activités ne sont pas rémunérées.
Nous comprenons que dans notre modèle, le taux horaire devrait être 5 à 10 fois plus élevé que le taux traditionnel. Nous n'avons pas encore de tels fonds. En utilisant la crypto-monnaie Zold, nous prévoyons d'attirer des capitaux d'investissement à travers le marché de la crypto-monnaie financière, par l'intérêt pour un nouveau moyen de paiement, et de les utiliser pour augmenter les tarifs de nos développeurs. Cela donnera un coup de fouet à cette plateforme, un levier marketing, avec l'aide de laquelle nous pourrons plus tard attirer de précieux clients.
Comment est la journée de travail
Alexei : Vous avez mentionné qu'en tant qu'ingénieur, vous aimez résoudre des problèmes complexes. Parlons un peu plus de vous. Comment se déroule généralement votre journée de travail?Roman : Je vous donne un petit détail. Peut-être que vous vous réveillez et travaillez tout de suite. Je suggère de ne pas limiter la journée de travail au moment où vous arrivez au bureau.Egor : Premièrement, je n'ai pas de bureau: je ne viens nulle part. Deuxièmement, je ne travaille pas. Autrement dit,
je ne perçois pas ce que je fais comme un travail et
je ne me perçois pas comme un employé de bureau. J'aime les choses que je fais. Je les fais parce que je les aime, et non pas parce que je suis venu au bureau et que je dois faire quelque chose, pour accomplir certaines tâches. J'aime juste ce que je fais.
Heureusement, j'ai des projets dans lesquels je peux profiter de la programmation ou de la gestion de ces processus. Je me réveille donc, ouvre mon ordinateur portable et vois ce dont je suis content, ce que j'aimerais faire dans les 16 prochaines heures. Je ne bois pas de café, je bois du thé, donc d'
abord du thé, puis un ordinateur portable .
Les gens me demandent souvent comment j'organise mon temps. J'essaie de l'organiser, mais ça ne marche pas bien pour moi. J'abandonne souvent et je fais juste ce que je veux. C'est souvent le moyen le plus efficace d'organiser votre temps. J'essaie toujours d'écouter mes désirs intérieurs et de ne faire que ce que je veux, pas ce dont j'ai besoin. Habituellement, ce que je veux me mène dans la bonne direction.
Alexei : Vous vous êtes concentré sur le fait que vous n'êtes pas un employé de bureau. Vous n'avez jamais travaillé au bureau ou il y avait du temps, mais vous êtes ensuite passé à vos tâches?Egor : J'avais un bureau. Je travaille dans des bureaux depuis des années. Il me semble que ce travail est personnellement stressant et déprimant pour moi. Elle me déprime beaucoup plus vite que je ne ressens aucun effet du bureau.
Je ne comprends pas pourquoi dans le monde moderne des bureaux sont nécessaires en tant que tels.
Je comprends pourquoi nous avons besoin de quelques endroits où vous pouvez boire un café et vous allonger sur les canapés. Je comprends pourquoi le narguilé et les restaurants sont nécessaires. Je comprends pourquoi vous avez besoin d'endroits où vous pouvez passer du temps. Mais je ne comprends absolument pas pourquoi nous devrions nous asseoir en rangées, regarder les moniteurs et aller prendre un café à un certain moment, puis revenir et nous asseoir à nouveau au même endroit. Cela me semble déraisonnable. Il existe de nombreux autres endroits où il est plus intéressant et plus confortable de travailler: dans un café, à la maison, dans la nature. Je ne vois aucune raison d'unir les gens dans de tels espaces de bureaux. Dans des livres récents, je critique beaucoup et sérieusement l'idée d'organiser et de motiver les gens à travailler en les combinant géographiquement. Ce concept de connecter les gens en un seul endroit et de les diriger dans une direction, afin qu'ils fassent une chose et accomplissent quelque chose ensemble, à mon avis, devrait être une chose du passé. Maintenant, il n'y a pas de besoin particulier pour cela, il existe des méthodes de communication de haute qualité, de bons logiciels, des outils de gestion de haute qualité. Nous n'avons plus à nous asseoir ensemble pour travailler.
Roman : Je vais clarifier un peu quand j'ai parlé du bureau, je voulais dire travailler pour quelqu'un. Avez-vous travaillé pour quelqu'un et qu'avez-vous commencé à faire pour vous-même? À quel moment et pourquoi la transition des travailleurs indépendants aux travailleurs autonomes s'est-elle produite?Egor : J'ai travaillé un peu pour les indépendants, mais je n'ai jamais travaillé pour quelqu'un. J'ai toujours travaillé pour moi. La question est de savoir qui me paie l'argent, sur les fonds duquel je le fais. Cela change à certains moments de ma vie. Une fois payé par une entreprise, puis par une autre. Maintenant, mon travail est payé par mes clients. Demain, mes investisseurs pourront payer, après-demain les lecteurs de mon livre.
La question "D'où vient l'argent?" a toujours des options . Il peut toujours y avoir une réponse différente à cette question. Je n'ai toujours travaillé que pour moi.
J'ai du mal à imaginer que je passerais mon temps, mes efforts et mon énergie sur quelque chose qui irait ensuite à quelqu'un d'autre. C'est inacceptable pour moi. Cela me démotivera beaucoup et je ne durerai pas très longtemps: quelques jours, peut-être quelques semaines, mais j'essaierai de m'échapper. Au bureau, travaillant sur le projet de quelqu'un d'autre, faisant quelque chose qui ressemble à du travail pour quelqu'un, je travaille toujours pour moi-même. Je trouve
comment cette activité peut me servir personnellement . Si je suis dans un projet et que je dois y installer un nouveau système de déploiement, ils me le paient, alors je vais certainement créer ce système pour que je puisse en parler quelque part plus tard, dites-le-moi afin que je puisse un produit Open Source à partir de de le supporter, afin que je puisse personnellement porter quelque chose pour moi dans cela. De plus, tout le travail sur ce système ressemble à du travail pour moi. Les clients recevront également, bien sûr, un système fonctionnel.
Mais tout d'abord, j'en profite personnellement . Donc je le fais toujours.
Ilya : Egor, dites-moi, si vous n’avez pas d’endroit où vous allez travailler, vous choisissez toujours: aujourd’hui vous êtes dans un café, demain chez vous ou dans la nature. Avez-vous un emploi du temps ou êtes-vous juste en train de vous réveiller et où vous voulez aller?Egor : Plutôt, où vous voulez. J'essaie de ne pas planifier cela, parce que si vous écoutez vos désirs et vos motivations internes, souvent inexplicables, alors au final, cela se passera mieux. Je ne sais pas, il serait peut-être plus pratique pour quelqu'un de respecter le calendrier, selon le plan, mais j'essaie d'écouter ma voix intérieure, qui dit: "Je suis fatigué de rentrer, allons quelque part."
Je prends un ordinateur portable et je sors . Parfois, je marche juste le long de la rue et je vais dans n'importe quel café que je vois, je commande quelque chose et trois ou quatre heures, jusqu'à ce que l'ordinateur portable s'assoit, je travaille. Puis je m'ennuie et je rentre chez moi.
Code à venir
Alexei : Vous avez mentionné votre dernier livre. Cela s'appelle Code Ahead. Allez, Egor, essayons de formuler brièvement en une phrase le sujet de votre dernier livre.Egor : Bonne question. En effet, début juillet, un livre a été publié, que j'ai écrit plus longtemps que tous les autres, j'ai passé 8 mois à l'écrire. Au total, cela a commencé il y a 1 an et 8 mois. J'ai préparé pendant longtemps, puis pendant près de 8 mois, j'ai écrit, réécrit beaucoup, changeant et jetant des chapitres entiers.
Il a mis beaucoup d'efforts . Je ne peux pas juger de ce qui s'est passé. J'adorerais entendre des commentaires, mais il n'y a pas encore d'avis sur Amazon.
Fait intéressant,
Code Ahead est un livre d'art . Autrement dit, il n'a pas été écrit en langage technique, il y a des personnages et une intrigue, des dialogues, des monologues, des conversations. Mais en même temps, c'est, bien sûr, un genre mixte. Je n'ai jamais vu ça auparavant, mais j'ai choisi ce genre. Dans une présentation artistique gratuite, un grand nombre de références techniques et scientifiques. Les personnages parlent entre eux, et au cours du dialogue avec leurs déclarations, commentaires et faits en question, au bas de la page il y a un grand nombre de notes de bas de page qui confirment ou réfutent les déclarations faites par les personnages.
Au total, le livre contient plus de trois cents références à des livres, articles, articles scientifiques et tout le reste. J'ai combiné le genre artistique et presque semi-scientifique. Comment c'est arrivé - je ne sais pas. Essayez d'acheter et de lire. Cela me semble intéressant. Je l'ai lu plusieurs fois, ce qui n'était pas le cas avec les livres précédents. J'ai écrit des livres précédents, lu et publié une fois. J'ai lu cette coupe dix.
Roman : Pour écrire des livres, vous devez lire beaucoup de livres, pompez-vous dans cette direction. Egor, que conseilleriez-vous à nos lecteurs de lire, mais pas d'après ce que vous avez écrit, mais d'un autre. Qu'est-ce qui vous vient à l'esprit en premier?Egor : Il y a un article dans mon blog intitulé "
Mes livres préférés ". Il y a 16 livres que je recommande vivement de lire. Ce sont des livres que j'ai lus plus d'une fois. Ils sont précieux pour moi et j'y reviens souvent. De plus, je recommanderais le livre Code Ahead. Environ dix pour cent de ces trois cents liens sont marqués d'une icône astérisque spéciale. D'autres liens confirment simplement les faits ou les réfutent. Les liens avec un astérisque sont de la littérature que je recommanderais certainement de lire, et même plus d'une fois.
Rapport AppsConf
Ilya : Veuillez nous parler du sujet de votre rapport. Vous allez bientôt parler à AppsConf, de quoi allez-vous parler?Egor :
J'offrirai un aperçu de la situation de la programmation et de sa qualité, et j'essaierai de proposer ma propre solution à ce conflit. Le conflit, me semble-t-il, réside dans le fait que les attentes standard de gestion, techniques et organisationnelles, des programmeurs se résument au fait que le
programmeur doit écrire du code dans lequel il n'y a pas d'erreur . Cette attente est assez traditionnelle et populaire. Je l'ai rencontré à la fois dans la pratique et dans la littérature, et je peux donner plusieurs liens vers des livres qui disent qu'un bon programmeur écrit du code dans lequel il n'y a pas de bugs. Si nous utilisons ce concept comme un élément fondamental et que nous en tirons parti, dans la pratique, nous arrivons très rapidement au problème: que faire pour que les programmeurs écrivent du code sans erreur?
Comment trouver un bon programmeur et si le programmeur est mauvais?Il existe deux solutions:
- embaucher de «bons programmeurs»;
- pour corriger les mauvaises en renforçant le négatif autour de l'idée même d'une erreur ou d'un bug qu'ils peuvent potentiellement créer.
Nous embauchons les bons, d'une part, et d'autre part, effrayons les mauvais pour qu'ils deviennent bons. Je retrouve cette approche partout. Dans le rapport, je vais essayer de proposer une solution alternative qui fonctionne dans notre entreprise et nous travaillons dans nos projets.
Nous avons une attitude positive envers les bugs . Nous pensons que les erreurs et défauts que les programmeurs créent sont une composante naturelle de tout processus de création d'un produit logiciel. Des erreurs sont nécessaires, elles doivent l'être, elles sont nécessaires. , Production, , . , , , — . , - . .
: , , ? , , ?: . , , , . . — , , . , , .
. .
, , , , , , , 100%? , , , . , ,
, . . . , , , , - , , - , , . . , . , , .
: , . , - Production, , - . , ? -, ?: , , .
. , , , , —. . , , , , Code review. , Code review-, contribution , , Production.
: , ?: . . , .
: , ,: : « Big Data ? ?» , , , . , web. , . , . , , , , . Big Data .
: , GitHub, 1700 300 , . . , , ? , - , ?: -, . 2009 GitHub. , , . - , Open Source , , . , , . , , , .
,
, , , . Open Source. ,
. , , . , - , , , 10 . , . , Open Source .
, , Java , , . , , , . - , , — . , , pull request production.
Open Source. pull request. A pull request , , . , Open Source . , . , , . , . , , , , , . . , , . , deployment, . , .
, , : «, ? , ». . — 15% , 85% — . , . , , , , . — .
. , . . , , . . , : « , . , , Open Source, - Open Source».
- . - . Open Source, GitHub Stack Overflow. , , . , , pull request-, , , pull request-. , .
— . — . 10-15 , , . , GitHub.
deployment
: , , . , , - , . , - . ?: . , 25 . . — 70, , , 70 . , . — Zold, Ruby gem, .
deployment, , , . . 70 e-mail, Bitcoin, , . . . , , . , , . , . , , -- , 5-7 . . deployment . - , . , , , .
: , AppsConf , 8-9 . , , .: , . , , . , , . , .
, , .