“No one would tell someone else what they should do”: Nicolò Ribaudo on developing Babel and other things

Nicolò Ribaudo is both a core Babel developer and a TC39 invited expert — while also being a mathematics student.
He’ll give a talk soon at HolyJS 2019 Moscow. In anticipation of that, HolyJS program committee members Dmitry Makhnev and Eugene Kot asked him about developing Babel, being an invited expert, studying, coming to conferences… and finding time to sleep.
Eugene: Let’s start with a simple question. Could you please tell us about yourself, what you’re doing?
Nicolò: I have been developing Babel for two years. I study math, and I started the second year a few weeks ago. Programming and studying are how I spend most of my time; I have been programming for ten years now, and JavaScript is my favorite language. I think that I’ve started contributing to open source thanks to JavaScript, and it was a few years ago.
Eugene: Right now you are working with the Babel core team and that’s pretty impressive because majority of the JavaScript products all around the world use Babel in the everyday work cycle. So, how did you join the team?
Nicolò: I started contributing because I used Babel, and I wanted to do something for the community. When I first approached the open source community, I contributed to some other projects and then learned about Babel, and I was interested in it. Actually, there was another reason, which is a bit selfish: I wanted to become famous! I wanted to work on something that many people know. But then I understood the real reason why people work on open source, and I just continued because I loved it.
Eugene: But why Babel? There are a lot of other open source projects all around the world.
Nicolò: Before Babel, I contributed to JSHint, and I liked it. I learned about parsers. And this was one of the reasons Babel got my attention. In fact, I started contributing not to the transformer, but I started contributing to the Babel parser. And I already knew about this project, because I used it for some personal projects and I’ve thought that it was a good idea to start.
Eugene: Right now, you are studying math, and it’s a pretty complicated thing. And open source is not so easy to do. So how did you combine all these things together? Do you have 30 hours in a day or what?
Nicolò: I mean, last year it wasn’t that hard, because I studied like 20 hours per week and then I had a lot of free time. Now it’s a little harder because I study 30 hours a week. And I want to work at least 20 hours per week on open source projects. I must do it during evening and night, or in the weekends.
Eugene: So you don’t sleep at all?
Nicolò: After dinner I work maybe three hours or four hours. I’m trying not to overwork. But sometimes it’s hard because if you are solving a problem, and if you are having fun doing it, you have to force yourself to stop, to stay awake the day after.
Eugene: How is it regulated from the Babel side? I mean, do you have some backlog, or you can do anything you want… how does it work?
Nicolò: We don’t have a strict organization. We try to set up some roadmaps, but we mostly decide ourselves what we need to do. For example, we choose some issues to focus on for the next release, and everyone can work on any of those issues.
Eugene: There always will be super cool feature requests. And there also always will be something boring that nobody wants to do. How to mix that? Do you have, I don’t know, a product manager who decides what should be done in the next week or month?
Nicolò: We have a meeting every two weeks, and during these meetings, if there’s something to do that isn’t that much interesting, we usually decide how we should approach it. For example, one of the most boring tasks is triaging all the issues: we have like 700 open issues and many of them are not valid anymore. Maybe they are already fixed, or perhaps they were a problem in the user configuration. And we try to triage them anyway, maybe once a month or once every two weeks. No one would tell someone else what they should do: we only “impose” those tasks to ourselves.
Dmitry: Will you work on Babel as a full-time job after your education?
Nicolò: We are trying to understand if we have enough money in our Open Collective so that another person in the team or I can start working part-time already this year and be paid. Since we’re dedicating a lot of time to the project, it would be really cool to consider it an actual job. Even if we find out that it isn’t possible to have other people working part-time or full-time on Babel, I’d like to work on open-source projects anyway after university.
Eugene: I’m not familiar with this Open Collective scheme… Do you have donations and some money, and the team decides who will work as a full-time developer, and who will work part-time?
Nicolò: This is a difficult topic and we usually discuss it for hours, maybe without finding a conclusion. Currently, Henry is the only person working on Babel full-time. And it’s also because he was the first person being able to do so , and he is the one who has been a maintainer for the longest time. But now we are trying to understand if there are other people in the team who have the time to work on Babel and actually want to work.
Working on this kind of projects, funded by the community, can be hard: if you work for a regular company, you always have the same salary, and it’s guaranteed that you’ll get it. But since we rely on donations, it’s hard to make important life decisions, because there is an inherent risk. It’s hard to find people who want to work full-time or part-time on it and that we trust, so there isn’t a lot of competition inside the team. The main problem is finding money for the few people who would like to do it.
Eugene: You had raised some money from your Open Collective, and you decided that this person should work fulltime, but what would be the salary? Who’s deciding that?
Nicolò: We don’t know yet. It’s a hard problem to solve, because we have to decide how much we should be paid together. Also, no one wants to track time so an hourly salary doesn’t work. And you can’t pay people based on how much they do because there are some long-term tasks, maybe dull tasks, which don’t produce a lot of visible value. For example, it’s triaging issues or helping people in our Slack. Thus, we would like to decide a monthly salary but it’s really hard to determine how much it should be. Also, because we are in different parts of the world and something that may seem a lot to me may seem a tiny salary to someone else. It’s really hard.
Eugene: Yeah, that’s true! But you said that after the university, after graduation, you will work on open source. But all these financial and other things… On the other side, there are a lot of good commercial companies like Google or Apple, and they pay a lot. What do you think about that? Working in a big super-international company may have some advantages and disadvantages.
Nicolò: It’s possible to do both because there are many companies with big open source projects. You can work for a big company and for an open source project at the same time. I don’t know if I will work for one of them. I don’t need a lot of money now, but I’ll need to find a job after university.
Dmitry: As far as I know, you’re an invited expert in the TC39. And I was really impressed when Sergey Rubanov told me that there are just 20 invited experts. Could you please tell us how you became one of them?
Nicolò: An invited expert is a role for people who either have a lot of knowledge about a specific topic, or who are helping with many proposals, or who are helping TC39 within the community. I am an invited expert because of my role in Babel. I have been working on all the class-related proposals (like decorators or class fields). I also have to analyze many other proposals to implement them in Babel and to help external contributors implementing them.
I have participated in a TC39 meeting only once, but I would love to help TC39 in the future as much as I can.
Dmitry: Sounds really interesting. Do you want to join TC39 as a delegate in the future?
Nicolò: Maybe. TC39 isn’t for individuals: you usually have to work in a company, and that company should join TC39. But if I will work for a company which is a TC39 member, I would like to help and become a delegate.
Eugene: Why do you think of joining TC39, and why working with them is important to you?
Nicolò: It’s because I love JavaScript and I really like helping moving it forward. It would be another way to help improving JavaScript. We should make it for the community, and listen to people to make JS a language which is better for everyone.
Dmitry: What do you think, is a university education that necessary to be a successful developer nowadays?
Nicolò: I don’t think so. I’m not studying computer science and I don’t think that I will. I have been programming since way before joining the university. And I’ve joined the active Babel team when I still was in high school. There are many other people I know who are young and don’t have a computer science degree but are great developers, and they can have good jobs.
Eugene: But still a higher education and university can give you something for your job, for your development career or something like that. Why did you join the university to study math?
Nicolò: I agree that a university can give you something more, but I think that you can manage to become a successful developer even without it. I decided to study math because I like math. And it has been my favorite subject since I was about ten years old. I have not chosen math because I need it, but because I like it.
If I had to choose a university depending on what I need, I would probably have chosen computer science. On the other hand, if you like to learn, university is one of the best ways to do so.
Dmitry: If you love math, why did you choose JavaScript as your primary language? Why didn’t you choose Haskell or languages used for ML/data science?
Eugene: Yeah, because the math is more about machine learning, all these complicated things. Many people at least in my environment think that JavaScript is about front-end, buttons, divs, it’s not for the scientists and mathematicians.
Nicolò: I started programming in JavaScript because I have an aunt who teaches web development. When I wanted to learn about computers, I asked her, and that was one of the languages that she suggested to me. And then, I continued to use JS because… I remember that the first program I wrote was a browser extension to cheat in an online game I was playing at the time, and JavaScript was the only language that would allow me to do so.
I actually have learned a bit of Haskell, and I like it. I really like the fact that it’s similar to math. But I have never learned it enough to be able to create big applications. I think that the reason I like JavaScript is because I started learning it a long time ago, and thus it’s the language I know best.
Dmitry: What do you think about solving your everyday problems with any programming languages? Can it be considered as the best way for programming education in general, for future work or something?
Nicolò: I don’t really know a lot about education in programming. Usually, students don’t think about how to teach something, they just want teachers to teach them. I think we in Babel are in the position to help make it easier to teach JavaScript to beginners. For example, we talked about making it possible to translate JavaScript into the other human languages, so that if, for example, you are Russian, you could just write “если” instead of “if”. We didn’t do it yet, and I don’t know if we will do it in the future, but it’s an example of how we can lower the entry barrier for programming.
Dmitry: Is knowledge of math required for JavaScript development?
Nicolò: It depends on the type of applications you work on. I think that most of the JavaScript applications don’t need math or only need a tiny bit of that. If you’re doing web design, you might need like sin and cos, and that’s all. I think that there are other languages where you need math much more: if you are working on machine learning or data science, which usually do not use JavaScript, you need to know more math. But if you are building a Node server or a client-side application, probably you don’t need it.
Eugene: How do you learn? We know that you are studying in the university, but maybe outside of it, all these things like podcasts, talks, videos, meetups, or articles…
Nicolò: I mostly learn by reading online blog posts or just documentation of a library or a language. I’ve never really used videos or podcasts because I find it hard to listen to it for more than an hour. As I said before, when I was young, I had an aunt who taught me the basics of programming. Later, I started studying everything by myself. I used to have different blogging platforms like Medium installed on my smartphone. I had to remove them because I spent too much time reading programming tutorials or explanations of new things rather than focusing on what I had to do.
Eugene: What do you think about offline sources like meetups or conferences? Do you attend them? What do you think?
Nicolò: I don’t really know the JavaScript community in my city. I think I attended a meetup only once or maybe two times. And I was at conference for the first time a few months ago. I’d really love to get in touch with my local community, but when I tried, I found out that I was the only person who was less than 20. And I felt like it wasn’t really my place. But I mean, I will try again in the future and let’s see if it goes well.
Eugene: So, do you think there is ageism in the community? Is everyone younger than 20 treated like a junior?
Nicolò: If you see that all other people around are ten years older than you, you may feel like you’re not in the right place. I mean, usually, young people don’t hang out with much older people. I think that when we get older, it will be easier. I have always only been with people about my age, so it was an absolutely different environment for me. But I’ve never been told that I couldn’t attend or that it wasn’t my place because I was too young, no one ever questioned my abilities because of my age.
Eugene: Many offline events like meetups, conferences, workshops are not about only knowledge but about networking too. What do you think about networking in general? I mean, to meet new people, to know local communities…
Nicolò: I think that networking is important, especially because it can help you find a job or know other people who share the same interests. Currently, I haven’t felt the need to connect people offline in my city because I already study and work in Babel, and I haven’t much time for meeting new people. Also, I’m trying to get someone new to contributors involved with Babel and show them that even if it’s a popular project everyone can contribute.
Eugene: Have you ever attended offline meetings of the Babel team?
Nicolò: I have met part of the team once in Berlin at JSConf. It wasn’t the whole team, but a big part of the active contributors. And it’s been a perfect experience because I have always talked with these people online. We did already met each other on video calls, but meeting them in person was great.
Dmitry: It’s the first time you’re in Russia. What do you expect from visiting Russia?
Nicolò: Oh, when I travel, I try not to have too many expectations. I think that if I don’t have an expectation, I can be more surprised and enjoy it more. Also, it’s because the only thing I already know about Moscow is that a friend of mine suggested a bar where to go. He’s not living in Moscow now, he moved to Italy one year ago or so. Maybe it was just next to his home. Well, I try not to have expectations because I’m just going to enjoy it and see how it really is.
Dmitry: I hope we’ll visit that bar! By the way, what do you expect from HolyJS?
Nicolò: I expect to have a lot of fun meeting people. To meet people, to talk about Babel, to try to get them interested in what it is — it’s the most fun. I think every conference should make it possible to connect with people. From a speaker’s point of view, I just hope that everything goes well.
Dmitry: Of course it’ll go well, we are working on this!
Nicolò will give a talk “@babel/how-to” at HolyJS 2019 Moscow on November 8.
