“No one tells others what they need to do”: Nicolò Ribaudo on Babel development and more





Nicolò Ribaudo is one of Babel’s key developers, a visiting TC39 expert, and also a mathematics student.



Nicolò will perform tomorrow at HolyJS 2019 Moscow. And in anticipation of this, the participants in the HolyJS program committee Yevgeny Kot ( bunopus ) and Dmitry Makhnev ( DmitryMakhnev ) talked with him about developing Babel, the tasks of an invited expert, studying, the upcoming report on HolyJS ... and how, at the same time, you can manage to get enough sleep.



Eugene: Let's start with a simple question. Can you tell me a little about yourself, what are you doing?



Nicolò: I've been working on Babel for two years now. I am studying mathematics, now in my second year at the university. Programming and learning takes up most of my time; I've been programming for ten years, and JavaScript is my favorite language. I think that I started contributing to open source precisely because of JavaScript, this happened a few years ago.



Eugene: Now you work in the Babel core team, and this is impressive: after all, most products written in JavaScript use Babel every day. How come you got into the team?



Nicolò: I started contributing to it because I used it myself and wanted to do something for the community. When I first appeared in the open source community, I first contributed to other projects and then found out about Babel, and he interested me. Actually, there was another reason, somewhat selfish: I wanted to become famous! I wanted to work on something that many people know. But then I realized the real reason that people are working on open source, and just continued to work because I liked it.



Eugene: But why exactly Babel? There are many various open source projects in the world.



Nicolò: Before Babel, I smuggled into JSHint, I like it too. There I learned a lot about parsers. That is why I met Babel. At first, I did not smuggle into a transformer, but into a parser. Moreover, I was already familiar with this project and managed to try it in my personal projects, and therefore to deal with Babel seemed like a good idea.



Eugene: Now you are studying mathematics, and this is a rather complicated thing. Open source is also not easy to write. How do you manage to combine all these things at the same time? Do you have 30 hours in a day?



Nicolò: Last year it was so hard, I studied 20 hours a week and had a lot of free time. Now it’s harder, because you have to study for 30 hours. And I want to work on open source projects for at least 20 hours a week. It is required to do this in the evenings and nights, or on weekends.



Eugene: Do you even sleep?



Nicolò: After lunch, I work maybe three or four hours. I try not to recycle. But sometimes it’s difficult: when you solve a difficult task and are passionate about the process, you have to force yourself to stop and go to sleep so that you don’t fall asleep the next day.



Eugene: Is it somehow regulated by Babel? I mean, is there some kind of backlog or can you do anything that comes to mind? How it works?



Nicolò: We do not have a strict process organization. Of course, we draw roadmaps, but basically we decide what to do. For example, we select tasks for the next release, and then everyone can work on any of them.



Eugene: There are always some cool tasks, and something tedious that no one wants to do. How to combine it? Do you have any, I don’t know, product manager who will tell you what to do next week or month?



Nicolò: We hold rallies every two weeks, and during these rallies, if there are any uninteresting tasks, we usually decide together what to do with them. For example, one of the most boring tasks is to troubleshoot bugs: we have about 700 open tickets, and many of them are no longer relevant. Maybe they have already been repaired elsewhere, or the problem there was in the configuration of a specific user. We still try to triage them once a month or once every two weeks. But no one tells others what they need to do: we take it upon ourselves.



Dmitry: Will you be working on Babel full time after graduation?



Nicolò: We are now trying to understand whether the Open Collective brings us enough money so that this year someone from the team could start working on Babel part-time for payment. Since we devote a lot of time to the project, it would be great to consider it as a “real” work. But even if you fail to turn Babel into such a job, after university I would still like to work on open source projects.



Eugene: I am not familiar with this scheme, with Open Collective ... Do you have any kind of donations and money piling up, and how then the team decides who will work for full time?



Nicolò: This is a complex topic, and we usually discuss it for hours, sometimes to no avail. Right now, Henry is the only person who works full time. Because he had the first opportunity and because he was the maintainer the longest. But now we are trying to understand if there are still people in the team who want and can work on Babel.



Trying to turn a community-funded project into one is fraught with complexity. If you work in a regular company, you always have the same salary, and you are guaranteed to receive it. But we are dependent on donations, and it turns out that it is difficult to make important life decisions when there is always a risk. Therefore, it is quite difficult to find people who want to work on it for full time or even part time, and whom we trust. So there is no competition inside the team in this regard. The main problem is finding money for those who still want to do this kind of work.



Eugene: Well, you collected money in the Open Collective, you understood who will work for full time, but what will be the salary? Who decides this?



Nicolò: We don’t know yet. This is difficult to determine because we need to understand how much we must pay together. And she doesn’t want to keep track of time, so the hourly rate is not suitable. You can, of course, pay for the result, but then what to do with long-playing or some tedious tasks that do not give an instantly visible result? For example, triage of bugs or help people in Slack. So we would like to somehow determine the size of the monthly salary, but it is very difficult to determine how much it should be. In addition, since we are in different parts of the world, what for me may seem wealth will turn out to be very little money to someone. So everything is complicated.



Eugene: That's it! So you said that after university you are going to work on open source, and meanwhile - all these financial problems ... On the other hand, there are many large commercial companies like Google and Apple, and they pay pretty well. What do you think about them? Work in such a super-international company can have its advantages (and disadvantages).



Nicolò: These are not mutually exclusive things, because there are many companies with large open source projects. You can work in a large company and at the same time work on open source. I don’t know if I will work in such. So far, I do not need a lot of money, but after university I will have to find a job.



Dmitry: As far as I know, you are a visiting expert at TC39. I was impressed when Sergey Rubanov said that there are only 20 such people. Can you tell me how you got into this group?



Nicolò: The role of the invited expert is for people who either know a lot in a particular field, or help with many prozolos, or help TC39 from the community. I became a guest expert through my work at Babel. He worked on all the class related items (like decorators or class fields). I also need to analyze many other propositions for their implementation at Babel and in order to help external contributors implement them.



So far, I only participated in the TC39 rally once, but in the future I would be happy to help TC39 with all I can.



Dmitry: Do you want to become a TC39 delegate in the future?



Nicolò: Maybe. TC39 is generally not for single people: usually you need to work for a company that joins TC39. But if I work in such a company, I would be happy to help and become a delegate.



Eugene: Why do you think that TC39 is so important? Why do you want to work with them?



Nicolò: Because I love JavaScript and I really like to help develop the language. Working with TC39 is another way to help develop JavaScript. We need to do this for the sake of the community and listen to people to make JavaScript even better for everyone.



Dmitry: Do you think that studying at a university is a strict requirement in order to become a successful developer?



Nicolò: I don't think so. I'm not studying computer science, and I’m unlikely to do it. I programmed long before I entered university. I joined the Babel developers when I was a high school student. I know many other young people who also do not have a university degree in computer science, but they have already become excellent developers and can get a good job.



Eugene: Nevertheless, studying at a university can provide some additional benefits at work, right? In a career plan or something like that. By the way, why did you go to math?



Nicolò: I agree that the university can give something else, but I’m sure that you can be a successful developer without it. I decided to study math because I like it. This is my favorite subject from ten years. I chose this faculty not because I need it for work, but because I like it.



If I chose a university solely on what I needed, I would probably prefer computer science. But at the same time, if you like to study, a university is one of the best ways.



Dmitry: If you like mathematics so much that you went to university for it, then why choose JavaScript as the main language you invest in and want to improve? Why not take Haskell or some machine learning and data science languages?



Eugene: Mathematics is usually associated with machine learning and other complex things. And most people in my environment consider JavaScript to be something entirely about the frontend, buttons, divs, and that all this is completely unsuitable for scientists and mathematicians.



Nicolò: I started programming in JavaScript because I have an aunt who is teaching web development. When I wanted to understand computers, I turned to her, and JS was one of the languages ​​she proposed. My first program was a browser extension, a cheat for an online game that I was playing at that time. And JavaScript was the only language that allowed me to do this.



Later I tried Haskell and I liked it. I like that he is close to math. But I never learned it enough to write large applications on it. So, in fact, I like JavaScript just because I started learning it first and therefore I know it best.



Dmitry: What do you think about solving everyday tasks in some programming language yourself? Could this be considered a good way to teach programming?



Nicolò: I'm not very good at teaching programming. Students usually think about how to learn something, and hope that teachers can teach them :) I think we at Babel are in a good position to make JavaScript learning easier for beginners. For example, we once discussed the possibility of translating JavaScript into other human languages ​​- so, for example, if you are Russian, then you could write “if” instead of “if”. We didn’t do that, and I don’t know if we will do it in the future. But this is a good example of how to lower the entry bar.



Dmitry: Does mathematics need a modern JavaScript developer?



Nicolò: It depends a lot on what you are going to do. Most JavaScript applications do not need any math, well, or the minimum is needed there. If you are engaged in web design, understanding the sines and cosines may come in handy, that's all. I think there are many other languages ​​where mathematics come in handy much more: for example, in machine learning or data science, where JavaScript is almost never used, you need to know more about mathematics. But if you just write servers on Node.js or client applications, you are unlikely to need this.



Eugene: What do you study with? Well, we already know about the university, but maybe there is something else. Any podcasts, videos, mitaps, articles on the Internet ...



Nicolò: I mostly read blogs or just documentation on libraries or languages. I have never really used videos or podcasts because it is difficult for me to listen to them for more than an hour. As I already said, in my childhood I had an aunt who taught me the basics of programming. And then I began to study myself. I used to have blog services applications like Medium installed on my smartphone, but then I deleted them because I read too many tutorials and explanations of new chips instead of concentrating on my tasks.



Eugene: What about offline sources like meetings and conferences? Do you participate in them?



Nicolò: I am not very familiar with the community in my city. Been at the mitap once or twice. I visited my first conference just a few months ago. I would like to interact with the local community, but when I tried last time, it turned out that I was the only one there who was under 20 years old. I felt out of place. But I will try again later and see what happens.



Eugene: Do you think there is ageism in the community? I mean, everyone who is under 20 is looked at as a junior?



Nicolò: If all the people you see around ten years older, it makes you uncomfortable. Usually young people do not hang out with a much older generation. I think this will change over time, it will be easier to communicate. So far I have always been close to people of my age, so the situation on the meetings was completely different. But at the same time I was never forbidden to participate and they did not say that I was too young. No one questioned my abilities by age.



Eugene: A lot of such offline events - meetings, conferences, workshops - this is not only about acquiring new knowledge, but also about networking. What do you think of networking in general? I mean, meeting people, building connections, exploring the local community ...



Nicolò: I think networking is important. Especially, because it allows you to find work or people of similar interests. But right now I’m not really feeling the urgent need to look for people offline in my city, because I’m already busy with studying and working on Babel, and I just don’t have time to communicate with new people. I would also like to find new contributors in Babel, to show people that although this is a popular project, anyone can contribute there.



Eugene: Have you been to any Babel team meeting live?



Nicolò: Yes, I met part of the team at JSConf in Berlin. This was not the whole team, but a significant part of the active contributors. It was a wonderful experience, because I used to communicate with these people only online. Although we sometimes make video calls, it was very nice to meet them live.



Dmitry: This is your first time in Russia. Anything you expect from the trip?



Nicolò: Well, when I travel, I try not to make any assumptions or expectations. I think that if I don’t expect anything in advance, then the surprise will turn out much better! And also, about Moscow, I know only one thing - the bar, which my friend advised to visit. However, he no longer lives in Moscow, he moved to Italy a year ago or so. Maybe this bar is just next to his former home. In general, there are no expectations, I want to look at everything with a fresh look.



Dmitry: I hope we will visit that bar together. By the way, well, do you have any plans for HolyJS?



Nicolò: I expect to get a lot of pleasure from meeting people. Getting to know people, discussing Babel with them, and trying to interest people in them is the most enjoyable part. I think that any conference should help people unite. And from the point of view of not the participant, but the speaker, - well, I just hope that everything goes well.



Dmitry: Of course it will pass, we are working on it.



Nicolò will give a presentation on @ babel / how-to at HolyJS 2019 Moscow on November 8th.



All Articles