Microtasks for programmers and an alternative cryptocurrency payment method

    Guest Run Loop second release - a podcast about those who make products with their own hands - Egor Bugaenko. We will ask him about the purpose of creating his own Zold cryptocurrency. Find out why Ruby is used to write it. We'll immediately talk about many things, starting from the daily routine and books, ending with provocative questions about the quality of the work of programmers. And finally, we will discuss that developers who do not know how to participate in Open Source projects will soon become unnecessary to anyone.



    Hosts: Ilya Tsarev, Alexey Mileev, Roman Busygin.

    Ilya Tsarev is engaged in iOS development at Alfa-Bank, speaks at various meetings and conferences.

    Alexey Mileev develops the Android version of App in the Air, leads the Telegram channel for Android development, and oversees reports at AppsConf.

    Roman Busygin  is a leading Yandex.music developer for iOS, often speaking at conferences and participating in podcasts.

    Away: Yegor Bugayenko  - founder and CEO of Zerocracy, a company that develops AI-robots for controlling programmers; OOP fundamentalist; the author of "Elegant Objects" - a series of books about object-oriented programming; the creator of Cactoos, Takes Framework, JCabi and Rultor, as well as a blogger and philanthropist.

    Alexey : Tell about yourself, what are you doing?

    Egor : I mainly program and manage programmers. These are two areas of my business.

    Ilya : Please tell me how you combine it. At what point do you manage development, and at what point do you program? Please tell us more about your company.

    About company


    Egor : Our company is called Zerocracy and is a freelance exchange, where freelancers, programmers, testers, designers and all sorts of other technical talents are connected on the one hand. On the other hand, there are customers who need these talents, and they want to carry out a software project.

    The key core of the site is automated artificial intelligence. This robot is the chat bot that controls the development process. He sets tasks for programmers, collects results from them, pays them money, assesses the quality of their work and organizes the entire development process. Initially, I myself wrote this robot, artificial intelligence. Now I am taking little part in its development, the development team continues to refine and improve.

    I am the CEO of Zerocracy. My main time is spent on it. In the field of programming, I have several projects that I am actively developing. One of them is our pilot project zold.io. This is a cryptocurrency created by us inside our company, which is an alternative to existing blockchain solutions. I am the architect of this solution. I am not the only one working on it, but I am an architect. This product is interesting because it is written in the current version of Ruby.

    The zold.io project is an alternative way to solve the problem of distributed payments.. Blockchain is a fairly well-known, widely popular solution for organizing distributed data on servers with zero trust. We proposed our solution, which does not use blocks, chains, and everything that is in the blockchain. We solve this problem in our own way. It seems to us that our decision is also interesting. This is what I do in active programming.

    Why ruby


    Roman : Egor, it is very interesting to hear about the blockchain. This is a very computationally complex thing. You use Ruby, which is famous for its slowness. Almost everyone tries to avoid it on large projects. Please tell me why ruby?

    Egor : We are not blokcheyn. We have Cryptocurrency, but not the blockchain . Very often, people combine two concepts. It seems to them that cryptocurrency = blockchain. These things can be in one package, as in Bitcoin, for example, but in reality the blockchain is just a way to store data on multiple servers with zero trust in each individual server. Blockchain is really a technology or method of storing data that requires significant speed and computational resources.

    Our project does not use blockchain. Therefore, other aspects were important. For us, the speed of calculation is not the first role. I wrote an article in our blog that is called “ Why Ruby? ” And pointed out three points that answer this question.

    • Ruby is a very compact language compared to other languages ​​I speak: Java, C ++ and JavaScript. Ruby code is much shorter and easier to write. The fact that Java takes 100 lines of code, Ruby can fit in 20.
    • Thanks to its compactness, Ruby is very convenient for experiments . The solution was not created immediately, several months were spent on samples, errors and non-working versions. Accordingly, many corresponded. It would be less convenient to do this and repeatedly rewrite in Java.
    • Ruby is a very convenient system for deployment , installation and reinstallation of a version that is not found, for example, in Java. For JavaScript, there is npm, and in C ++ and Java, if such systems exist, then they are platform dependent. Ruby is a cross-platform system and is very convenient for reinstalling new versions. It is very important for us, because we are dealing with a community of contributors that are located on different platforms, they are not subordinate to us. A system is by definition distributed and anonymous. Therefore, it was very important to us that our solution was easy to install.

    Therefore - Ruby.

    The purpose of the created cryptocurrency


    Alexey : What was your goal when you created your cryptocurrency, when you created gold?

    Egor : We had several motives, goals appeared later. I will say frankly that the first motive was a purely technical motive. It was interesting to solve such a technical problem. I am an engineer and technician, and solving complex technical problems gives me pleasure.

    I heard a lot about the blockchain and that the cryptocurrency is now becoming more and more popular. The question of the market is a question of economics. He was not very interested in me, I was more interested in the question of technology. That is, how do they make blockchain decisions that we trust a system that does not have a centralized server and a central point of control. Since everyone is talking about the blockchain, it was interesting for me to try to solve this problem in my own way.Such a purely technical challenge: let's try, it should work out.

    It did not work out right away. Three months did not work, but in the end the solution was found. It is already working, and even with this currency, we are already paying programmers who work on our platform. Transactions go live, although so far there has been no advertising, but for our internal use, in production mode, but we run it in on small transactions.

    The second motive is large economic. We didn’t like the existing methods of paying programmersthat work on the Zerocracy platform. We currently use PayPal and Bitcoin. In both cases, transactions are quite expensive. We have to pay large fees for transferring funds to programmers, and in the Zerocracy micropayments. For microtasks we pay programmers micropayments of up to several tens of cents. As you know, PayPal, Bitcoin in this regard is very expensive and not suitable for microtransactions. On Bitcoin, the commission per transaction will be about 50 cents, on PayPal 30-40 cents. It is very expensive if the entire transaction amount is 1 dollar. Therefore, the economic motive was to make a payment solution that would be many times cheaper and very well suited for micropayments , and not for large payments, as in Bitcoin.

    Goals have appeared recently. it consists in using a cryptocurrency, this financial instrument of attracting investment funds to the project, to attract a sufficient amount of funds to the Zerocracy platform . Using the funds raised, we want to increase the salaries of programmers working on the platform. And thus make this platform attractive to a larger circle of professional developers.

    Now on the platform, unfortunately, there are no such big budgets to pay developers $ 100-150 per hour. With our management model - microtasking, microbudgeting - everything is at the micro level, we have result oriented work at the micro level. It is therefore very important that people work and want to work for the result, and not just spend time in the project, as often happens in other development models, including in Agile. To make the model attractive, people need to pay a lot. We have come to this conclusion. In the traditional model, people used to work for 15-20 dollars per hour, but when they pay for 8 working hours, regardless of what they did these 8 hours. In our model, he is forced to provide 8 result blocks in order to receive payment in 8 hours. Accordingly, $ 15 per hour is no longer interesting, because astronomically eight hours, for which they pay for a full working day, people usually work 15-20% of the time. All the rest of the time is spent reading news, resting, and other parallel supporting activities. In our case, these activities are not paid.

    We understand that in our model the hourly rate should be 5-10 times higher than the traditional one. We have no such means yet. Using the Zold cryptocurrency, we are planning, through the financial cryptographic markets, to attract investment capital through our interest in a new means of payment and use them to raise the tariffs of our developers. This will give a boost to this platform, a marketing lever with which we can subsequently attract valuable customers.

    How is the working day


    Alexey : You mentioned that as an engineer, you like to solve complex tasks. Let's talk about you a little more. How does your working day usually go?

    Roman : I specify a little bit. Perhaps you wake up and work right away. I suggest not to limit the working day to the moment of arrival at the office.

    Egor : First of all, I don’t have an office: I don’t come anywhere. Secondly, I do not work. That is, I do not perceive what I am doing as work , and do not perceive myself as an office person. I enjoy the things that I do. I do them because I like them, and not because I came to the office and have to do something, perform some tasks. I just like what I do.

    Fortunately, I have projects in which I can enjoy programming or managing these processes. Therefore, I wake up, open the laptop and see how to rejoice, how to occupy myself in the next 16 hours. I do not drink coffee, I drink tea, so first tea, then a laptop .

    People often ask me how I organize my time. I try to organize it, but I’m not good at it. I often give up and just do what I want. Often, this is the most effective way to organize your time. I always try to listen to my inner desires and do only what I want, and not what I need. Usually, what you want takes me in the right direction.

    Alexey: You focused on the fact that you are not a man of the office. Have you ever worked in an office or was it time, but then you switched to your tasks?

    Egor : I had an office. I worked in offices for more than a year. It seems to me that this work for me personally is stressful and depressive. She drives me into depression much faster than I feel any effect from the office.

    I do not understand why in the modern world we need offices as such.

    I understand why we need some places where you can drink coffee and lie on the couches. I understand why hookahs and restaurants are needed. I understand why we need places where you can spend time. But I absolutely do not understand why we should sit in rows, look at the monitors and go for a coffee to a certain point, then come back and sit in the same place again. It seems to me unreasonable. There are plenty of other places where it is more interesting and more comfortable to work: in a cafe, at home, in nature. I do not see the point in uniting people into such office spaces. In the last books, I quite often and seriously criticize in general the idea of ​​organizing and motivating people to work by connecting them geographically. This concept of connecting people in one place and directing them in one direction so that they do something one and together achieve something, in my opinion, should become a thing of the past. Now there is no special need, there are high-quality communication methods, good software, high-quality management tools. We just don't have to sit together for work anymore.

    Roman : I will clarify a bit when I talked about the office, I meant to work for someone. Did you work for someone and what did you start to do for yourself? At what point and why did the transition from employment to self-employment happen?

    Egor : I worked a little for hire, but I never worked for someone. I have always worked for myself. The question is who pays me the money, on whose funds I do it. It changes at certain points in my life. Once it was paid by one company, then another. Now my work is paid by my clients. Tomorrow my investors can pay for it, the day after tomorrow the readers of my book. The question “Where does the money come from?” Always has options . There can always be a different answer to this question. I have always worked only on myself.

    It is hard for me to imagine that I spend my time, my efforts and my energy on something that someone else will get then. For me, this is unacceptable. It will demotivate me very much, and I will last very long: a couple of days, maybe a couple of weeks, but I will try to get out of it. Being in the office, working on someone else’s project, doing something that looks like a job for someone, I always work for myself. I find out how this activity can be useful to me personally.. If I am in a project, and I need to install a new deployment system in it, they pay me for it, then I will definitely make this system so that later I can write about it somewhere, tell about it, so that I can open a product from to endure it, so that I can personally endure something for myself. Then all the work on this system looks like work for myself. Customers will also receive, of course, a working system as a result. But first of all, I personally will get the benefit . So I always do.

    Ilya : Yegor, tell me, please, if you don’t have a place where you go to work, you still choose: today you are in a cafe, tomorrow at home or in nature. Do you have a schedule or do you just wake up and wherever you want to go there?

    Egor: Rather, wherever you want. I try not to plan it, because if you listen to your desires and inner, often inexplicable motives, you will end up with a better result. I don’t know, maybe it would be more convenient for someone on the contrary to go according to the schedule, according to the plan, but I try to listen to the inner voice that says: “Tired of the house, let's go somewhere”. I take a laptop and just go out . Sometimes I just walk down the street and go to any cafe that I see, order something and for three or four hours, until the laptop sits down, I work. Then I get bored, and I go back home.

    Code ahead


    Alexey : You mentioned your latest book. It's called “Code Ahead.” Come on, Egor, we will try to briefly formulate in one sentence what your last book is about.

    Egor : Good question. Indeed, in early July, a book came out, which I wrote longer than everyone else, spent 8 months writing it. In total, it started 1 year and 8 months ago. I was preparing for a long time, and then I wrote almost 8 months, rewriting a lot, changing and throwing out whole chapters. Efforts made a lot . I can not judge what happened. I would be interested to hear feedback, but there are no reviews on Amazon yet.

    What is interesting, "Code Ahead" - an art book. That is, it is not written in technical language, there are characters and a certain plot, dialogues, monologues, conversations. But at the same time it is, of course, a mixed genre. I have not seen this before, but I chose this genre. In a free artistic presentation of a large number of technical and scientific references. The characters talk among themselves, and in the course of the dialogue to their allegations, observations and facts in question, at the bottom of the page there is a large number of footnotes that either confirm or refute the statements made by the characters.

    There are more than three hundred such references to books, articles, scientific articles and everything else in the book. I connected the artistic genre and almost half-scientific. How it happened - I do not know. Try to buy and read. It seems to me that is interesting. I read it many times, which was not the case with the previous books. I wrote previous books, once read and published. I read this cut ten.

    Roman : To write books, you need to read a lot of books, pump yourself in this direction. Yegor, what could you advise to read to our readers, but not from what you wrote, but something else. What first comes to mind?

    Egor : My blog has an article called “ My favorite books". There are 16 books that I definitely recommend reading. These are books that I have read more than once. They are valuable to me, and I often return to them. Beyond that, I would recommend the Code Ahead book. Ten percent of those three hundred links are marked with a special icon with an asterisk. The rest of the links simply confirm the facts or disprove them. Links with an asterisk is a literature that I would definitely recommend reading and even more than once.

    Report on AppsConf


    Ilya : Please tell us about the topic of your report. Soon you will be speaking at AppsConf, what are you going to talk about?

    Egor : I will offer to look at the situation with programming and its quality, and I will try to offer my own solution to this conflict. The conflict, it seems to me, is that the standard expectations of management, technical and organizational, from programmers are reduced to the fact that the programmer must write code in which there are no errors. This expectation is quite traditional and popular. I met him both in real practice and in literature, and I can cite several references to books, where it is said that a good programmer writes code with no bugs. If we use this concept as a fundamental one and start from it, then in practice we very quickly come to the problem: what to do so that programmers write code without errors? How to find a good programmer and what to do if the programmer is bad?

    There are two solutions:

    • hire "good programmers";
    • from the bad to do good by reinforcing the negative around the very idea of ​​a mistake or a bug that they can potentially create.

    We hire good ones, on the one hand, and on the other hand, we frighten the bad ones so that they become good. I see this approach everywhere. In the report I will try to offer an alternative solution that works in our company and in our projects we work. We have a positive attitude towards bugs. We believe that the errors and defects that programmers create are a natural component of any process of creating a software product. Errors are needed, they must be, they are necessary. Thus, it is necessary to build a quality control system, identify these errors and prevent these errors from getting into Production, so that both customers and programmers are satisfied in the end. It is necessary to eliminate the element of fear that programmers have, who are told that bugs are bad. At the same time to make sure that the quality was still high. I will propose such an approach and decompose it into components.

    Why such a topic


    Alexey : Tell me, please, how was the topic of this report born? What situation happened that you understood the existence of this conflict, recognized the need to resolve it and proposed your solution?

    Egor: We work with freelancers. We have this conflict is very sharp and probably more acute than in other companies. Therefore, for us his decision is a matter of life or death of the project. Freelancers are rather chaotic guys, mostly undisciplined, hard to manage and often replaced. These are people who come to the project, leaves it. In our case, the project can change the team several times in three months . Therefore, for us this question was very important.

    How to make so that people who come to the project by chance, from the outside, it is not known for how long, anyway, they would give out such code with which we could stay even after losing these programmers, even after changing the command to 100%? In addition, in order for us to survive after a team change, we need to do more so that these people can contribute at high speed. A freelancer, coming to our project, should be able to quickly turn on and start giving away codeand then quickly leave the project. We have such extreme conditions. It was conceived, and now it is. The question arose of how to make this programmer, without experiencing any emotions to the project, not trying to make it better for some of its internal motives, not even trying to penetrate deeply into the project, but simply wanting to earn some money in a short period time, while still giving us the quality of the code as we want. And we do it. We solved this problem with the help of the methods I will discuss in the report. I will not just share this at the conference, not just because it is interesting to share the achievement, but I am going to use it also as a way of informing programmers of the future.

    Novel: Yegor, this is a very provocative topic. Whenever I hear about all-in and Production, developers think a little about architecture, about some conceptual things. It turns out that with micro tasks in the project, no one at all thinks about high-level architectural things? After all, it is impossible to come up with a big something, a skeleton of a project in a short period of time?

    Yegor : Yes, indeed, we do not have everything in microtasks. The skeleton of the project is created by the architect. The architect does it at the start of the project with his own efforts, spending a small amount of time for this, but he does it as a whole block of work that can take a week or two. Then the project lives its own life. The architect, while remaining in the project, can control that the architecture does not spread, simply by making Code review. In our experience, it is enough for an architect to be central, such a final Code reviewer, who, either receiving a contribution from a programmer, imposes a veto or accepts it in Production.

    Mobile Application Development


    Roman : Egor, are there any mobile applications in your portfolio and is this approach used in their development?

    Egor : Personally, I am not a mobile developer. Therefore, I am not the architect of any mobile application. But we have projects on the platform where people develop mobile applications.

    Roman : I think it’s not for me alone to be interested in catching you later on the sidelines and asking you how this approach is applied when developing mobile applications

    Yegor: I often hear questions of such a plan: “Does it apply to the development of Big Data applications? Can this be applied in artificial intelligence? ”I don’t see much difference between applications, different domains, domain zones where the application is used. What difference does it make to us, this mobile offer or web. There is still architecture, code. This code has strings, classes, and methods. This means that it can be broken down into microincrements and continue to look at them individually, analyze the quality and take one after the other hundreds, thousands, tens of thousands. Therefore, I do not see much difference between the mobile application and the Big Data offer.

    Help people in projects


    Ilya : Egor, you have a very interesting profile on GitHub, you have more than 1,700 followers and more than 300 stars, a lot of repositories and projects. You participate in a very large number of projects. Tell me, how do you find people who help you with them? Do they come by yourself, are you doing something on purpose or is it all your employees with whom you pay money?

    Egor : Firstly, this community did not appear yesterday. Since 2009 I have been actively writing code on GitHub. I wrote maybe a million lines of code. I write some code every day, mainly in the Open Source format, there is practically nothing that would be in the closed mode. The code of any projects that I personally do, I always try to open. I had such a desire five years ago, and when I started on a githaba, and before that, and now.

    It seems to me,the more a developer does in the clear, the better it is for him, for his employer, for the company and for the whole community. I am such an active adept and evangelist of Open Source. I believe that the closed code is a relic of the past . He certainly exists. Programmers often come to us who show an empty github account and say that they are very professional programmers, they simply have nothing in the open source code, because they have been working behind the scenes for the last 10 years. We try not to take such programmers, because we have a lot of experience working with such guys. Basically everything ends with the fact that they do not know how to work in the Open Source ecosystem.

    They can be good programmers, they can write algorithms, understand Java and data processing technologies, but they don’t know how to communicate in an ecosystem, they don’t know how to be part of a software product development system. And this, in my opinion, is a much more important quality in the modern market than algorithms and data processing methods. We will somehow cope with the algorithms, we will find them, a lot of them are written - we will understand. This problem is less difficult than the ability to make your pull request end up in production.

    Most people simply do not know how to work in the Open Source ecosystem. They send a pull request. And when you write comments to them in this pull request, they call you on the phone and try to explain why you are wrong. They have no skill, no discipline and communication in the Open Source project. They do not understand that not every programmer can call and not every programmer can ask a question. They do not understand that a programmer can be in a project today, and tomorrow he is no longer there. No need to call anyone, write in github. If you ask a person directly, and tomorrow this person left the project, all the information you exchanged is lost, and you just lost time. Therefore, these people do not have the discipline of working through the code. They do not know how to document it, they do not know how to write comments on it, they do not know how to work in branches. They do not understand, what a deployment looks like, that it should be maintained along with the code. They do not have a huge amount of skills that make a coder programmer.

    I have an article on this topic, where I wrote, addressing the reader: “Determine whether you are a coder or a programmer? Either you can write code, or you really can be part of a software project. ” These are completely different things. Just a coder is 15% of success, the remaining 85% is the ability to work in a team. I'm not talking about the ability to sit in the office, drink coffee and be friends with colleagues. I am talking about being a member of a living team, to which people come and go, in which technologies change, conflicts arise. The inability to do this is a huge disadvantage of the modern market.

    Ten new people come to our platform every day. Nine out of ten simply do not know how to do this, they are ordinary coders. They do not have this skill. I blame the offices, the lack of open source, their laziness and the lack of information. Many people work in private code and are proud of it. Addressing such people, I say: “This is your fault, your fault. You spend your time sitting in a closed code, not going to Open Source, not pulling out any pieces of this code in Open Source. "

    Find a way to get some library out of your private code. Find a way to do something like this in open source. Log out to Open Source, make yourself an account on GitHub and Stack Overflow. Be a public person, then you will see what open source is. When random people write to you, where you are wrong, when they send you pull requests that you won’t know what to answer when you pull requests. Then you will become part of this ecosystem, for which the future. Closed code is the past . Office work is the past. It will take 10-15 years, and these people will be needed by anyone, like Kobol programmers. People who are on GitHub will be necessary.

    Automatic deployment


    Alexey : Egor, every day you are confronted with a variety of tasks on the code, on management. Tell, please, about any task that caused you incredible joy. No matter, it was something complicated or simple. What did you like so much from the last?

    Egor : I am even going to make a report on this topic in the near future. I liked the fact that in my 25 years of programming I have not yet seen. Our cryptocurrency system consists of a large number of servers. At the moment we have not so many of them - 70, but, nevertheless, these are 70 servers. They belong to completely unknown people for me, they are anonymous users. Each server has our software installed - Zold, Ruby gem, which is installed on each server.

    I developed a deployment system that when the version is updated on one of the servers, the other servers automatically restart themselves, update their version and start anew. In the development it was interesting. I cannot write to these 70 people an e-mail, as Bitcoin does, and say that you need to upgrade and install a new version. Each of the miners of Bitcoin should update their own version with their hands. We have no such opportunity and I did not want to do so. I wanted to make sure that I updated the version with one click, and then the whole grid changed its version. Anonymous servers, which are beyond my control, are automatically updated to the next version themselves. It was great to see how it began to work in live mode. I enter unknown cars through the frontend, and I see how they click-click-click one by one to change the version, and in 5-7 minutes the whole grid is updated. That was interesting to see. I did not do such an automatic deployment without direct control with feedback in my life. I will show this someday at a conference how it technically works. I think that the future belongs to systems that consist of anonymous participants and at the same time work under common control, without having a person at all in this scheme.

    Ilya : I want to remind you that Yegor can be seen at the AppsConf conference , which will be held on October 8-9 in Moscow. Come, ask questions, listen to the report of Egor.

    Yegor : Yes, be sure to come. About everything that I said today, the report will be in more detail. I will tell you exactly how we achieve our goals, show real examples. I think it will inspire you.

    Thank you, dear listeners and readers, see you in new releases.

    Also popular now: