Josh Ma (former CTO of Benchling and founder of Airplane) on hiring, SaaS businesses, and technical tools.
Developer Den is a series of interviews with notable developers in our community to learn more about their journey into engineering. We sat down with Josh Ma, the former CTO of Benchling and cofounder/CTO of Airplane.
How did you get interested in computers?
I was your stereotypical computer nerd. I started programming when I was in my fifth or sixth grade — I was lucky that my dad had a PC and was a software engineer. I opened up Visual Basic and it felt magical! You could imagine doing something, click around, and it would happen. It felt like you had this secret knowledge that others hadn't found yet.
Do you remember an early program that you wrote?
The very first thing I started with was Lego Mindstorms — you could drag those little blocks around and make a robot follow a line on the ground. As I grew up, I made a lot of random one-off things my friends and I found fun. One of my friends was more artistic, so I would program Flash games and he would draw the assets. I also ended up doing quite a bit of web programming - I made websites for a local t-shirt store, the National History Bowl, and so on.
How'd you get into the software industry?
I knew I wanted to program and I wanted to go to MIT. I was lucky enough to get into MIT, and I started taking CS courses there. From there, I got into distributed systems and networks, a certain sense of scale and autonomy that really interested me. Then I joined Benchling and was building web apps. For me, the most fun thing has always been being able to type things on my computer and have people experience that miles away.
What was the most difficult technical problem you faced at Benchling?
At Benchling, it was data modeling complexity. Benchling as a service allowed customers to take scientific data models and make sense of them. Scientists would upload hundreds of thousands of objects that were highly dimensional and highly linked. What that meant for me was, how do I build data stores to handle that? How do I build search systems to handle that? How do I build products and interfaces to handle that? It's a very broad set of challenges.
A big reason Benchling was able to do better than others in the space was that we were focused on life sciences from the start, and life science has a unique set of modeling challenges that other kinds of research don’t. The incumbents and industry solutions worked for a general class of science, but Benchling's focus was narrower and that let us succeed.
What’s one thing you do at Airplane that makes your engineers more effective?
We really like to give engineers autonomy and ownership over things. We're doing a lot of exploration, so that's important. I'd like to set up one person to be a deep thinker and expert in their part of the system. Of course I’ll set some high-level expectations for where to go with that system, but if I can fully transfer ownership to that engineer, I know they’ll explore the problem fully. That's an approach that can change over time — at Benchling, it was about "Can you ship this by Q3?" but at Airplane we're in an exploratory mode trying to find product-market fit.
How do you find people that are good at that kind of work?
It's hard! The main things I look at are how fast someone learns and if they have a sense of humble confidence. I know that's a contradiction — I mean the sense of being very aggressive in exploring the world, but with the humility to understand when they're wrong. Someone who's just soaking things in and exponentially improving and growing. That's one trait I look for, and the second is: the desire to have an impact on the world. Wanting the satisfaction of seeing something exist. When these two combine, you get a force on your team that will really push things forward.
I will take bets on more junior engineers that show they've grown an incredible amount in the one year they've been out of school. For Senior engineers, I look for a long track record of growth and ownership. A person with those qualities will do really well and get excited by vague problems. I don't ask for what tech stack someone's trained on — that's a thing they can learn.
What are you working on outside of Airplane?
I signed up for a marathon! I'm trying to tell a lot of people to hold myself accountable. I want to do something like that before my joints get too rickety. Aside from that, I’m spending time with friends and family.
Have you been reading anything interesting recently?
I alternate between very trashy fantasy books and business tech books. Fantasy-wise I've been reading The Stormlight Archive and the Mistborn series — Brandon Sanderson's stuff.
On the non-fiction side, I'm currently reading the Bill Gates’ book on the environment, How to Avoid a Climate Disaster. He spells out: here’s how to get to net-zero greenhouse emissions. Each chapter is a description of a hard problem and the kind of technology that could get us there. It's a blueprint — a lot of unknowns, but a sense for how to approach that problem.
I also enjoyed the Larry Ellison biography, Softwar. It turns out there are a lot of parallels between the world of SAP, Oracle, and other business software and the world of internal tooling. Reading about how he sees the world — his aggression and determination — was really interesting.
What's your favorite technical toolchain these days?
At Airplane, we’re Go on the backend and Next.js with TypeScript on the frontend. I like that you don't have to look for super exotic toolchains to find something good. Our current toolchain is super fast and easy to use.
I'm a fan of "boring" simple languages. My friend and I argue about Rust all the time — I think it's really good for certain domains, but for web systems, Go and TypeScript are great.
You've built a lot of technical tools — what's a tool that you wish existed, but you just don't have time to build it yourself?
I have a lot of small ideas — for instance, I want code coverage that can handle a large file. A code coverage tool that doesn't break and can show inline on GitHub. No one's done that yet!
I think user management hasn't been fully solved. It's solved in terms of how to get a user in the door, but I don't think anyone's solved the whole lifecycle of the user. Invite systems, group management, admins — that's not something that's out there yet. Maybe Oso can help with that!
Also, building event systems into your product is not fully solved. Constructing an API to define all the important system events that are happening and then having search, push notifications, emails, and other things cascading off of that — there's a lot of that kind of enterprise-layer stuff that still needs to be solved.
Why do you think SaaS businesses have gotten so popular recently?
There have been two shifts there — one, we trust other companies more. We understand how security, governance, and API integrations can work at scale. The other thing is that we're more familiar with the microservices pattern. We're used to thinking about different parts of our systems handling different functions, and we're used to being able to sub out one HTTP API for another. Architecture has evolved now to where you have your database as one service and your login as a different service. It's not a crazy architectural shift to call someone else's server instead.
What's the coolest technical product that you’ve used?
Next.js. It's just so well done! Anyone who has gone through the process of maintaining a webpack configuration and deployment pipeline knows — using Next.js means there's so much stuff you don't have to do.
What's your favorite programming language to work with?
These days it's Go, because it's easy to use and you don't end up digging yourself into a corner with it. I see myself as a pragmatist, and the language you choose really depends on what you're trying to do. For instance, in Go, you can onboard people super easily onto it. That’s the most important thing — as an org grows your engineers need to understand the code you wrote a year ago. Any language that enables that is really valuable.
What kind of editor setup do you have?
I use VSCode. I'm a vim guy, though, if I'm in a shell. VSCode is great — I have a safe set of VSCode configuration and I load it in and it just works.
Do you have any advice you'd give to a developer early in their career?
Be insanely curious. Programming is one of those places where you can really look at what's going on. You can look through the source, inspect websites, look at GitHub repos. If you keep digging, you'll learn a lot. Keep learning and growing by doing that.