In 2017, Bastian Köcher, aka “Basti,” applied for a job he thought was for a C++ developer. It turned out they were looking for someone to code in the new Rust programming language. So he said, “Fine, I’ll learn it.”
Several years later, he brought his “fine-I’ll-learn-it” mentality to Parity, where he quickly got up to speed on the sizable Substrate codebase. He’s frequently seen on the Substrate Technical channel helping developers troubleshoot their Substrate projects. Currently he’s writing the highly anticipated Cumulus code that will connect Polkadot parachains.
I chatted with Basti about how Substrate development is coordinated, his drive to support the Substrate developer community, and getting parachains to talk to each other.
What’s your background?
I have a BA and MA in Computer Science. My Bachelor's was in a cooperative study program where I studied while working for IBM.
What’s your Rust experience?
In 2017, my main job was rewriting C++ into Rust software running on routers. That was the job that got me into Rust. Next I joined a startup working on giving IoT device control back to the user. Currently, you don’t have control over the IoT devices you buy. If the company shuts down the cloud service, your device will be dead. Our idea was to control the devices locally in a privacy-focused way. After parental leave, I decided to switch to a more stable company. I also wanted to continue working in Rust, so I started at Parity in September 2018.
What’s it like working at Parity?
It’s really nice. Nobody cares where or when you work—just deliver. It was a tough time at the beginning because the learning curve was so steep. I felt like I was flying blind—Substrate was already a huge project and I didn’t understand the bigger picture of what I was working on. But I always like getting into new stuff; I like exploring how it’s working and how it’s interacting. I think this is one of my strong points: I just dive into the code, get an understanding, and start doing it.
Do you have any suggestions for diving into a large codebase like Substrate?
Don’t give up. It’s hard, but for example I was debugging something network-related in Polkadot I had never touched before. To figure out what was going on, I added print lines everywhere like “now we’re here,” “now we’re here,” “now we’re here,” so I can get a picture. Sometimes you can cause a panic, which can be very good because you see the backtrace of where you came from.
What’s the most difficult part of developing Substrate?
The size of the project is so huge. Sometimes you want to just change one line, but you have to touch so many files to do that so you need an understanding of how these parts fit together. That’s really challenging.
What’s a mistake you often see when people are beginning to develop on Substrate?
It’s difficult to say what’s the most common error. People have a lot of different errors. Some are both new to Rust and new to Substrate. I think for these people it is really hard, that’s why I would suggest to first start learning Rust before looking into Substrate. We are pushing Rust to its limits, so it is really, really hard to understand some Substrate constructs when you are new to Rust.
You’re really active in the Substrate Technical channel. Do you like answering questions?
In general I really like to answer questions because I always see myself in the position of trying to get into some huge project and not understanding that much yet. Often you end up in situations where it is really hard to find the solution. But the people who work on the project know the solution in a second. The same applies for me and Substrate. I already have seen many errors, bugs, etc, that I know the answer for most of them out of my head. In the end it makes me happy to help the people to get their stuff done much quicker. :)
How is Substrate development coordinated?
We have issues for the main things that need to be done. That’s done by Gav and other people who know what’s missing. Besides that, people work on their own. At the beginning, I had these things that Gav said to do, and at some point I just worked on my own. I know what I want to achieve and so I have this mental plan of what needs to be done. I have a lot of ideas of what can be improved and work on those when I can. But it’s complicated if you’re new to Substrate to know what you should do. Recently we started to be a little bit more structured. It means we now have people who lead individual components of Polkadot/Substrate who have a good understanding of these components to coordinate the work better.
What’s the best way for people to contribute to Substrate?
We do have some regular contributors, if you’re doing small isolated tasks it’s relatively easy. Even other tasks are probably easy, it just takes more time to figure out how it fits together.
For you, what’s the most exciting thing about Polkadot?
Seeing parachains talk to each other. :) From a technology perspective, it’s really interesting.
Do you have any hobbies... other than Substrate helpdesk? :)
Sports and spending time with my son. I also really like to cook, it’s kind of like development... you can be really creative how you cook something. It gives you a good feeling when people enjoy your food.