“How do you measure progress?”
A while ago Dhen asked me this question. We had just come off a 2 hour bike party with Helena & Kelsey along Ocean Beach and found a ramen place in Japantown for a late night bite. It was a good question – one of those questions you have to pause to think about. And while you’re thinking about it, in the background slightly upset that you didn’t have an answer in the first place.
“The second derivative. I measure progress by how quickly I’m learning.”
When we started Spirals a year ago, I took on the role as CTO. Looking back everything we ended up building required skills I did not have upfront. Everything from the frontend app to the smart contracts themselves, I learned all of these things on the job. And that was great – there were days where “I would have done this for free but instead I’m building this for a company.” But there were also days where I felt terrified.
Code deployed on a public blockchain is visible to everyone by default. Even if you don’t verify the code on a block explorer, all public functions are callable and any good hacker can reverse engineer your contract ABI fairly easily. Launching a successful web3 protocol is a double-edged sword because it also means hackers everywhere are now trying to find exploits in your code. It wasn’t an insurrmountable challenge from my vantage point, but it did mean that the learning curve was extremely steep.
Pushing a boulder up a slope
In the beginning things were painfully slow. I did a few Solidity tutorials, but ultimately found that the best resources were actually just the source code of other protocols. In the earliest days I spent a lot of time trying to understand protocols and projects in the Celo ecosystem.
When I had questions from reading source code, I’d jump into their Discords to ask them in their support channels. Turns out knowledge in web3 lives in Discord, and you’re not going to find anything by Googling. And if you’ve ever used Discord, it’s extremely chaotic - mostly because no one knows how to use threads properly.
So here’s a typical workflow: I ask a question to get no response for a few hours. I see some server admins online, so I DM them but their privacy settings don’t allow DMs unless you are friends. I send them a friend request but their privacy settings don’t allow incoming friend requests from strangers. So then I jump back into the source code
Most of the time I’d just jump back into the source code to re-read it and see if I missed something. Compared to traditional software engineering, web3 had an entirely different information landscape that I was learning how to navigate. At the time I didn’t have the clarity to step back and break down the problem at that level because I felt constantly stuck and running into dead ends.
Flying down the other side
- Finding direct OH links
- Traversing Discord + Github issues
- Leveraging Telegram group chats