El invitado del segundo número de
Run Loop , un podcast sobre aquellos que fabrican productos con sus propias manos, Yegor Bugaenko. Le preguntaremos sobre el objetivo de crear su propia criptomoneda Zold. Aprende por qué Ruby se usa para escribirlo. Hablemos de inmediato sobre muchas cosas, comenzando por la rutina diaria y los libros, terminando con preguntas provocativas sobre la calidad del trabajo de los programadores. Y finalmente, discutiremos que los desarrolladores que no saben cómo participar en proyectos de código abierto pronto serán inútiles para cualquiera.

Presentadores: Ilya Tsarev, Alexey Mileev, Roman Busygin.
Ilya Tsarev se dedica al desarrollo de iOS en Alfa Bank, habla en varias reuniones y conferencias.
Alexey Mileyev está desarrollando la versión de Android de App in the Air, lidera el canal Telegram para el desarrollo de Android y supervisa los informes en AppsConf.
Roman Busygin , desarrollador líder de Yandex.Music para iOS, a menudo habla en conferencias y participa en podcasts.
Lejos:
Yegor Bugaenko , fundador y CEO de Zerocracy, una compañía que desarrolla robots de IA para administrar programadores; OOP fundamentalista; autor de Elegant Objects, una serie de libros sobre programación orientada a objetos; creador de Cactoos, Takes Framework, JCabi y Rultor, además de blogger y filántropo.
Alexey : Cuéntame sobre ti lo que estás haciendo.Egor : Principalmente programo y gestiono programadores. Estas son dos áreas de mi actividad.
Ilya : Por favor dime cómo combinas esto. ¿En qué momento gestionas el desarrollo y en qué punto estás programando? Cuéntanos más sobre tu empresa.
Acerca de la empresa
Egor : Nuestra empresa se llama Zerocracy y es un intercambio independiente donde se conectan freelancers, programadores, probadores, diseñadores y todo tipo de talentos técnicos. Y, por otro lado, los clientes que necesitan estos talentos y desean completar un proyecto de software.
El núcleo clave del sitio es la inteligencia artificial automatizada. Este es un robot, un bot de chat que controla el proceso de desarrollo. Establece tareas para los programadores, recopila resultados de ellos, les paga dinero, evalúa la calidad de su trabajo y organiza todo el proceso de desarrollo. Inicialmente, yo mismo escribí este robot, inteligencia artificial. Ahora tomo una parte insignificante en su desarrollo, el equipo de desarrollo continúa perfeccionando y mejorando.
Soy el CEO de Zerocracy. La mayor parte de mi tiempo lo paso en esto. En el campo de la programación, tengo varios proyectos que estoy desarrollando activamente. Uno de ellos es nuestro proyecto piloto zold.io. Esta es una criptomoneda creada por nosotros dentro de nuestra empresa, que es una alternativa a las soluciones existentes de blockchain. Soy el arquitecto de esta solución. No soy el único que trabaja en ello, pero soy arquitecto. Este producto es interesante porque está escrito en la versión actual en Ruby.
El proyecto zold.io es una
forma alternativa de resolver el problema de los pagos distribuidos . Blockchain es una solución bastante conocida y muy popular para organizar datos distribuidos en servidores con cero confianza. Propusimos nuestra solución, que no utiliza bloques, cadenas y todo lo que está en la cadena de bloques. Resolvemos este problema a nuestra manera. Nos parece que nuestra solución también es interesante. Esto es lo que hago en la programación activa.
Por que ruby
Roman : Egor, es muy interesante escuchar sobre blockchain. Esta es una cosa computacionalmente complicada. Usas Ruby, que es famoso por su lentitud. Casi todos están tratando de evitarlo en grandes proyectos. Por favor dime por qué Ruby?Egor : No tenemos una cadena de bloques.
Tenemos criptomonedas, pero no blockchain . Muy a menudo las personas conectan dos conceptos. Les parece que cryptocurrency = blockchain. Estas cosas pueden estar en un paquete, como en bitcoin, por ejemplo, pero en realidad blockchain es solo una forma de almacenar datos en muchos servidores con cero confianza en cada servidor individual. Blockchain es realmente una tecnología o método de almacenamiento de datos que requiere velocidades serias y recursos informáticos.
Nuestro proyecto no usa blockchain. Por lo tanto, otros aspectos eran importantes. Para nosotros, la velocidad informática no juega un papel importante. Escribí un artículo en nuestro blog llamado "
¿Por qué Ruby? " Y señalé tres puntos que responden a esta pregunta.
- Ruby es un lenguaje muy compacto en comparación con otros idiomas que hablo: Java, C ++ y JavaScript. El código Ruby es mucho más corto y más fácil de escribir. Que en Java toma 100 líneas de código, en Ruby puede caber en 20.
- Debido a su tamaño compacto, Ruby es muy conveniente para la experimentación . La solución no se creó de inmediato; se pasaron varios meses en muestras, errores y versiones rotas. En consecuencia, mucha correspondencia. Sería menos conveniente hacer esto y reescribirlo repetidamente en Java.
- Ruby tiene un sistema muy conveniente para implementar , instalar y reinstalar una versión que no está disponible, por ejemplo, en Java. Para JavaScript, hay npm, y en C ++ y Java, si tales sistemas existen, entonces dependen de la plataforma. Ruby es un sistema multiplataforma y es muy conveniente para reinstalar nuevas versiones. Esto es muy importante para nosotros, porque estamos tratando con una comunidad de contribuyentes que están en diferentes plataformas, no están subordinados a nosotros. Un sistema es, por definición, distribuido y anónimo. Por lo tanto, fue muy importante para nosotros que nuestra solución fuera fácil de instalar.
Por lo tanto, Ruby.
El propósito de la criptomoneda creada
Alexei : ¿Qué objetivo perseguiste cuando creaste tu criptomoneda, cuando creaste oro?Egor : Teníamos varios motivos, los objetivos aparecieron más tarde. Francamente, el primer motivo fue un motivo puramente técnico. Fue interesante resolver un problema tan técnico. Soy ingeniero y técnico, resolver problemas técnicos complejos me da placer.
Escuché mucho sobre blockchain y esa criptomoneda ahora es cada vez más popular. La cuestión del mercado es una cuestión de economía. Él no estaba muy interesado en mí; yo estaba más interesado en la cuestión de la tecnología. Es decir, cómo toman la decisión de blockchain para que confiemos en un sistema que no tiene un servidor centralizado y un punto de control central. Como todos hablan de blockchain, fue interesante para mí tratar de resolver este problema a mi manera.
Un desafío tan puramente técnico: intentemos, debería funcionar.No funcionó de inmediato. Tres meses no funcionaron, pero al final se encontró una solución. Ya está funcionando ahora, e incluso con esta moneda ya pagamos a los programadores que trabajan en nuestra plataforma. Las transacciones se activan, aunque hasta ahora no ha habido publicidad, pero para nuestro uso interno, en modo de producción, pero en pequeñas transacciones lo ejecutamos.
El segundo motivo es el gran económico.
No nos gustaron los
métodos de pago existentes para los programadores que trabajan en la plataforma Zerocracy. Actualmente usamos PayPal y Bitcoin. En ambos casos, las transacciones son bastante caras. Tenemos que pagar grandes comisiones para transferir fondos a los programadores y en micropagos Zerocracy. Para microtask, pagamos a los programadores micropagos de hasta varias decenas de centavos. Como saben, PayPal, Bitcoin a este respecto son muy caros y no adecuados para microtransacciones. En Bitcoin, la comisión para una transacción será de aproximadamente 50 centavos, en PayPal de 30-40 centavos. Es muy costoso si el monto total de la transacción es de 1 dólar. Por lo tanto, el motivo económico era
tomar una decisión de pago que sería muchas veces más barata y sería muy adecuada para micropagos , y no para pagos grandes, como en bitcoin.
Los objetivos han aparecido recientemente. Consiste en
atraer una cantidad suficiente de fondos a la plataforma Zerocracy utilizando criptomonedas, este instrumento financiero para atraer fondos de inversión al proyecto. Con los fondos recaudados, queremos
aumentar los salarios de los programadores que trabajan en la plataforma. Y, por lo tanto, hace que esta plataforma sea atractiva para una amplia gama de desarrolladores profesionales.
Ahora, desafortunadamente, no hay presupuestos tan grandes en la plataforma para pagar a los desarrolladores de
$ 100 a $ 150 por hora . Con nuestro modelo de control, microtasking, microbudgeting, todo está en el nivel micro, tenemos un trabajo orientado a los resultados en el nivel micro. Por lo tanto, es muy importante que las personas trabajen y quieran trabajar para el resultado, y no solo para pasar tiempo en el proyecto, como suele ser el caso en otros modelos de desarrollo, incluido Agile. Para que el modelo se vuelva atractivo, las personas deben pagar mucho. Hemos llegado a esta conclusión. En el modelo tradicional, una persona está acostumbrada a trabajar por $ 15-20 por hora, pero cuando paga 8 horas de trabajo, independientemente de lo que haya hecho estas 8 horas. En nuestro modelo, se ve obligado a proporcionar 8 bloques de resultados para recibir el pago durante 8 horas. En consecuencia, $ 15 por hora ya no es interesante, porque astronómicamente ocho horas, por las cuales pagan por un día completo, las personas generalmente trabajan entre el 15 y el 20% del tiempo. El resto del tiempo lo pasa leyendo noticias, descansando y otras actividades de apoyo paralelas. En nuestro caso, estas actividades no son pagadas.
Entendemos que en nuestro modelo la tarifa por hora debe ser 5-10 veces mayor que la tarifa tradicional. Todavía no tenemos esos fondos. Usando la criptomoneda Zold, planeamos atraer capital de inversión a través del mercado de criptomonedas financieras, a través del interés en un nuevo medio de pago, y usarlos para aumentar las tarifas de nuestros desarrolladores. Esto dará impulso a esta plataforma, una palanca de marketing, con la ayuda de la cual luego podremos atraer clientes valiosos.
Como es la jornada laboral
Alexei : Usted mencionó que, como ingeniero, le gusta resolver problemas complejos. Hablemos un poco más sobre ti. ¿Cómo es tu jornada laboral por lo general?Roman : Te estoy dando un pequeño detalle. Quizás te despiertes y trabajes de inmediato. Sugiero no limitar la jornada laboral al momento de su llegada a la oficina.Egor : en primer lugar, no tengo una oficina: no voy a ir a ninguna parte. En segundo lugar, no trabajo. Es decir,
no percibo lo que estoy haciendo como trabajo , y
no me percibo como una persona de oficina. Disfruto de las cosas que hago. Los hago porque me gustan, y no porque vine a la oficina y tengo que hacer algo para completar algunas tareas. Simplemente me gusta lo que hago.
Afortunadamente, tengo proyectos en los que puedo disfrutar de programar o administrar estos procesos. Así que me despierto, abro mi computadora portátil y veo lo que me hace feliz, lo que me gustaría hacer en las próximas 16 horas. No tomo café, tomo té, así que
primero té, luego una computadora portátil .
La gente a menudo me pregunta cómo organizo mi tiempo. Intento organizarlo, pero no me funciona bien. A menudo me rindo y hago lo que quiero. A menudo, esta es la forma más efectiva de organizar su tiempo. Siempre trato de escuchar mis deseos internos y hacer solo lo que quiero, y no lo que necesito. Por lo general, lo que quiero me lleva en la dirección correcta.
Alexei : Te enfocaste en el hecho de que no eres una persona de oficina. ¿Nunca trabajó en la oficina o hubo tiempo, pero luego cambió a sus tareas?Egor : Tenía una oficina. He estado trabajando en oficinas por años. Me parece que este trabajo es personalmente estresante y deprimente para mí. Ella me deprime mucho más rápido de lo que siento cualquier efecto de la oficina.
No entiendo por qué en el mundo moderno se necesitan oficinas como tales.
Entiendo por qué necesitamos algunos lugares donde puedas tomar café y recostarte en los sofás. Entiendo por qué se necesitan cachimba y restaurantes. Entiendo por qué necesitas lugares donde puedas pasar el tiempo. Pero no entiendo por qué deberíamos sentarnos en filas, mirar los monitores e ir a tomar un café en un punto determinado, luego regresar y sentarnos en el mismo lugar nuevamente. Me parece irracional. Hay muchos otros lugares donde es más interesante y más cómodo trabajar: en un café, en casa, en la naturaleza. No veo ninguna razón para unir a las personas en tales espacios de oficina. En libros recientes, critico bastante y critico seriamente la idea de organizar y motivar a las personas a trabajar combinándolas geográficamente. Este concepto de conectar a las personas en un lugar y dirigirlas en una dirección, para que hagan una cosa y logren algo juntas, en mi opinión, debería ser cosa del pasado. Ahora no hay una necesidad particular de esto, hay métodos de comunicación de alta calidad, buen software, herramientas de gestión de alta calidad. Simplemente ya no tenemos que sentarnos juntos para trabajar.
Roman : aclararé un poco cuando hablé de la oficina, me refería a trabajar para alguien. ¿Trabajaste para alguien y qué empezaste a hacer por ti mismo? ¿En qué momento y por qué ocurrió la transición de autónomo a autónomo?Egor : Trabajé un poco por cuenta propia, pero nunca trabajé para alguien. Siempre trabajé para mí. La pregunta es, quién me paga el dinero, en cuyos fondos lo hago. Cambia en ciertos momentos de mi vida. Una vez que fue pagado por una compañía, luego otra. Ahora mi trabajo es pagado por mis clientes. Mañana mis inversores pueden pagarlo, pasado mañana los lectores de mi libro.
La pregunta "¿De dónde viene el dinero?" Siempre tiene opciones . Siempre puede haber una respuesta diferente a esta pregunta. Siempre trabajé solo para mí.
Me cuesta imaginar que pasaría mi tiempo, mis esfuerzos y mi energía en algo que luego iría a otra persona. Esto es inaceptable para mí. Me desmotivará mucho y no duraré mucho: un par de días, tal vez un par de semanas, pero intentaré salir de esto. Mientras estoy en la oficina, trabajando en el proyecto de otra persona, haciendo algo que parece trabajar para alguien, siempre trabajo para mí. Encuentro
cómo esta actividad personalmente puede ser útil para mí . Si estoy en un proyecto y necesito instalar un nuevo sistema de implementación en él, me lo pagan, entonces definitivamente haré este sistema para poder escribir sobre él en algún lugar más tarde, dígame para que pueda obtener algún producto de código abierto de soportarlo, para que yo personalmente pueda soportar algo por mí mismo en esto. Además, todo el trabajo en este sistema parece trabajo para mí. Los clientes también recibirán, por supuesto, un sistema de trabajo como resultado.
Pero antes que nada, personalmente obtengo el beneficio . Entonces siempre lo hago.
Ilya : Egor, por favor dime, si no tienes ningún lugar donde ir a trabajar, aún así eliges: hoy estás en un café, mañana en casa o en la naturaleza. ¿Tiene un horario o simplemente se está despertando y donde quiera que vaya?Egor : Más bien, donde quieras. Intento no planear esto, porque si escuchas tus deseos y motivos internos, a menudo inexplicables, al final resultará mejor. No lo sé, tal vez sería más conveniente para alguien ir a tiempo, según el plan, pero trato de escuchar mi voz interior, que dice: "Estoy cansado de casa, vamos a algún lado".
Tomo una computadora portátil y salgo . A veces solo camino por la calle y voy a cualquier café que veo, ordeno algo y tres o cuatro horas, hasta que la computadora portátil se sienta, trabajo. Luego me aburro y regreso a casa.
Código por delante
Alexei : Mencionaste tu último libro. Se llama Code Ahead. Vamos, Egor, tratemos de formular brevemente en una oración de qué trata tu último libro.Egor : Buena pregunta. De hecho, a principios de julio se publicó un libro, que escribí más tiempo que todos los demás; pasé 8 meses escribiéndolo. En total, comenzó hace 1 año y 8 meses. Me preparé durante mucho tiempo, y luego durante casi 8 meses escribí, reescribí mucho, cambié y tiré capítulos enteros.
Puso mucho esfuerzo . No puedo juzgar lo que pasó. Me encantaría recibir comentarios, pero todavía no hay comentarios en Amazon.
Curiosamente,
Code Ahead es un libro de arte . Es decir, no fue escrito en lenguaje técnico, hay personajes y una trama, diálogos, monólogos, conversaciones. Pero al mismo tiempo, esto, por supuesto, es un género mixto. No he visto esto antes, pero elegí este género. En una presentación artística gratuita, una gran cantidad de referencias técnicas y científicas. Los personajes hablan entre ellos y, en el curso del diálogo con sus declaraciones, comentarios y hechos en cuestión, en la parte inferior de la página hay una gran cantidad de notas al pie que confirman o refutan las declaraciones hechas por los personajes.
En total, el libro contiene más de trescientas referencias a libros, artículos, artículos científicos y todo lo demás. Combiné el género artístico y casi semi-científico. Cómo sucedió, no lo sé. Intenta comprar y leer. Me parece interesante Lo leí muchas veces, lo que no sucedió con los libros anteriores. Escribí libros anteriores, leí y publiqué una vez. Leí este corte diez.
Roman : Para escribir libros, necesitas leer muchos libros, bombearte en esta dirección. Egor, ¿qué le recomendarías leer a nuestros lectores, pero no de lo que escribiste, sino de otro? ¿Qué viene primero a la mente?Egor : Hay un artículo en mi blog llamado "
Mis libros favoritos ". Hay 16 libros que definitivamente recomiendo leer. Estos son libros que he leído más de una vez. Son valiosos para mí, y a menudo vuelvo a ellos. Además, recomendaría el libro Code Ahead. Alrededor del diez por ciento de esos trescientos enlaces están marcados con un icono especial de asterisco. Otros enlaces simplemente confirman los hechos o los refutan. Los enlaces con un asterisco son literatura que definitivamente recomendaría leer, e incluso más de una vez.
Informe AppsConf
Ilya : Cuéntanos sobre el tema de tu informe. Pronto hablarás en AppsConf, ¿de qué hablarás?Egor :
Ofreceré un vistazo a la situación con la programación y su calidad, y trataré de ofrecer mi propia solución a este conflicto. Me parece que el conflicto radica en el hecho de que las expectativas estándar de gestión, técnicas y organizativas, de los programadores se reducen al hecho de que el
programador debe escribir código en el que no haya errores . Esta expectativa es bastante tradicional y popular. Lo conocí tanto en la práctica real como en la literatura, y puedo dar varios enlaces a libros que dicen que un buen programador escribe código en el que no hay errores. Si usamos este concepto como fundamental y lo desarrollamos, entonces en la práctica llegamos rápidamente al problema: ¿qué hacer para que los programadores escriban código sin errores?
¿Cómo encontrar un buen programador y qué pasa si el programador es malo?Hay dos soluciones:
- contratar "buenos programadores";
- para hacer bien a los malos reforzando lo negativo en torno a la idea misma de un error o error que potencialmente pueden crear.
Contratamos a los buenos, por un lado, y por otro, asustamos a los malos para que se vuelvan buenos. Encuentro este enfoque en todas partes. En el informe, intentaré ofrecer una solución alternativa que funcione en nuestra empresa y que trabajemos en nuestros proyectos.
Tenemos una actitud positiva hacia los errores . Creemos que los errores y defectos que crean los programadores son un componente natural de cualquier proceso de creación de un producto de software. Se necesitan errores, deben ser, son necesarios. , 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 . , , .: , . , , . , , . , .
, , .