How I Got Into #Node: Matteo Collina
Matteo Collina is one talented developer, and it’s not surprising that it runs in the family. Residing in Italy, Matteo is currently a software architect at nearForm and is on the Technical Steering Committee for the Node.js Project. On the side, he is an Internet of Things consultant and on the technical committee of Codemotion.
Matteo speaks all around the world — you can find his most recent talk Take Your HTTP Server to Ludicrous Speed here. Matteo is also the co-curator of NodeConf.eu and will be speaking at JSConf Asia happening in January 2018.
We recently had the pleasure of interviewing Matteo for our How I Got Into #Node series. This series focuses on how folks in the Node.js community got into it in the first place. We are conducting interviews with a few leaders and active participants in the Node.js Technical Steering Committee and Node.js Community Committee.
We hope this series will give you a glimpse into those who make up the Node community, and potentially inspire you to start contributing to Node or other open source projects. You can check out our first interview here. Read below for our conversation with Matteo.
Question 1: When did you start getting into programming in general?
I had my first exposure to programming at the age 4, when my dad was copying C64 video games from magazines — I was usually sitting on his lap watching him through the process. I started coding at around 7 or 8, developing little games for the Amiga (asteroids and other similar things). I do not remember learning to type, but I had to put extra effort into my handwriting for it to be readable.
Question 2: When did you start using Node.js?
I started around late 2010, early 2011. At that the time Node.js was version 0.2 and 0.4, and I ported some code from 0.2 up to 0.8. I picked Node.js to build most of my Ph.D code, and it was a key decision that shaped up my career. My Ph.D focused on the real-time web and IoT.
I ended up meeting Cian O’Maidin, the nearForm CEO, when I was doing my semester abroad in Ireland, later he offered me a job.
Question 3: What intrigued you about Node.js or what prompted you to use it vs. another platform/framework?
Node.js is the first platform where we can have immense productivity and very interesting performance. Java can be as fast as Node, or even faster, but it requires way more effort to do so. Go or Rust were not serious contenders at that point.
Question 4: When did you start contributing to Node.js?
I started contributing to Node.js before the Node.js Foundation happened — before the io.js and nodejs fork. I wanted to see some changes to the dgram and streams modules, and a few of my PRs landed. I was onboarded as a Collaborator by Jeremiah Senkpiel at Node.js Interactive 2015, and I joined the Streams WG shortly after.
Question 5: Why do you continue to contribute? And how do you contribute?
I believe in Node.js because it empowers developers to build new products at an accelerated pace. The amount of code that can be reused through npm is staggering. From tiny dev shops in Italy to multi-billion companies, Node.js improves the life of fellow developers.
I contribute to Node.js because I follow the rule of the last maintainer: if you use any OSS, you are the last maintainer of that piece of code (you can always think of buying support). I started contributing because there were bugs I wanted fixed, but now I’m mostly reviewing PRs and helping with maintenance of Streams and HTTP. I worked with James Snell on HTTP2 support on core for close to a year before landing it in Core.
Question 6: If someone is interested in contributing, what advice might you provide them?
Do the things people do not want to do. Become an expert in an area of Node.js that very few people know about (we need some help in streams)! You can also contribute to some new components of the ecosystem: http2, or https://github.com/nodejs/node-addon-api. We need all the help we can take!
Question 7: How do you use Node.js (either at work or outside of work)?
I am privileged to be able to contribute to Node.js as part of my job. I also travel around the world to help customers adopt Node.js, or help with any architectural or performance problem they might have.