Mike Cann's avatar
Mike Cann
14 minutes ago

I asked Convex's CTO 34 spicy questions

When I was over in the SF office back in September I got to sit down with James, co-founder and CTO here at Convex, in front of our very official wooden sign, and fire a bunch of spicy questions at him. 34 of them in the end, pretty much rapid fire, and he didn't hold back on a lot of them.

I'm not going to go through all 34 here, the video is there for that. These are the answers I keep coming back to as a developer, which are mostly about what AI is doing to how we learn and work, plus a fair bit on hiring. I've tidied the ums and ahs out of his quotes, but the words are his. Let's take a look.

Do I still need to learn to code?

This was the first question, and I think it sets up a lot of the rest. James says it depends what role you want to have in the software industry. If you're a product person who wants to build a CRUD app, you're more of a consumer of computing technology, and no, you don't need to learn to code for that. But:

If you want to be someone who's actively contributing to advancing the software industry, improving the concepts that we use, the frameworks that we have, designing technologies... I think you do need to learn to code still.

At Convex it's not optional either, even with an agent doing a lot of the typing: "you cannot land code at Convex if you don't know how to write it and review it, even if you're using an LLM for doing that." So I asked if he'd ever hire an engineer who can't code. He didn't want to say never, but "currently, at Convex, no." (He was clear that's engineering roles. There are plenty of other roles here where you don't need to code.)

Are junior developers screwed because of AI?

James does think there are "some structural disadvantages for junior engineers right now" and that it's a tricky time, but the biggest thing for him is what he calls the petri dish:

I'm gonna say something perhaps a lot of people disagree with. I think the biggest obstacle to the advancement of junior engineers right now is that the petri dish is being taken away from them. And when I say petri dish, I mean the opportunity to be bad, the opportunity to spend some time building crappy stuff 'cause you're not very good at coding yet, and growing and learning.

He reckons there's a mindset at the moment that you have to be excellent several months into your career, and that this "is a genuine inhibition to developing excellence". So if you're a junior engineer who wants to be an excellent engineer one day, his advice is to find some way to fail, to keep building, and to not be trying to do world-class work all the time. "Allow yourself to suck." I really like that one.

It ties in with another question I asked him, which was whether AI is making us dumber. His answer was yes, sort of. He's worse at navigating now than he was growing up with the Gregory's street directory (if you're not Australian, it's a big book of maps), but he traded that for a whole bunch of other things, so it's not always a strict loss. Where he does see it is in new grads:

The average college graduate is demonstrably worse at writing software than they were a few years ago, I see this. They are worse at fundamentals than they were before. That does make them, in some respects, worse engineers currently.

He thinks it makes us better and more powerful in other ways too, but where he landed is that "we have gotten dumber more than we've got smarter. But the capabilities will increase and it might balance out."

Loops, graphs, swarms: should I care?

James's answer to this one got a big laugh out of me: "Who gives a sh*t?"

That is not foundational, fundamental knowledge right now. You can learn this in one minute, literally one minute. And if there's an idea that you can learn in one minute, it's probably not particularly leveraged. It's probably not gonna make you that much better than everybody else in your career.

He does think you should stay on top of the latest ways people build applications, but he reckons the coding harnesses are going to sort this stuff out for you as they get better. What he thinks will set you apart is "the skills that you have and the passion you have for advancing in a certain area".

That fits with what he said he hates about agentic coding, which is some of the narrative around it, and the anti-intellectualism that comes with it:

It's a tool and it's a very powerful tool, and that tool is best wielded, currently, by people with a lot of skill and wisdom.

You can see this in the labs, he says, which are all hiring very senior people with a lot of experience. He's "very pro agentic development", just "very anti this whole idea of just turn your brain off, let the robot take care of things". What he loves about it, by the way, is being able to do "meaningless development again", like all the Home Assistant automations he has at home for his dehumidifiers and sprinklers, which he admits are a little bit useless but make life more fun.

Could I vibe out a production database like Convex tomorrow?

Naturally I had to ask this one 😉

No. I mean, go for it. No one's gonna use it. I hope no one uses it. I hope no one trusts you if you do it, right?

To be fair to him, he did say you can absolutely ask an agent to build a database and "just keep feeding it tokens, and something will come out". And can a skilled person with good taste use agents to build a database? "Yeah, you really can", because then you have someone with a real passion for what they're doing. The problem is what a database has to be:

This is a system that really can't fail. The consequences of failure are extremely high. And when you're designing a database, it's not really about designing something that stores documents, returns them to you. It's designing a system that can be modified over time, can scale over time, works under varying workloads.

And it's not only databases for him: "I wouldn't trust any system built by someone who doesn't have a deep passion for that system."

A bit before that I'd asked what he knows about software that the models don't yet. He was worried it'd come across as arrogant, but he reckons he can design distributed systems better than any of the models right now, and not because he's particularly special: "It's because I've devoted my entire life towards it." There are even facts from running exabyte-scale systems that nobody has ever written down, so they aren't in any training set. The bigger thing for him is judgement though:

Agents love to add new layers of complexity, like to add new features, because they don't currently possess the discretion to know when it's worth adding some level of complexity.

He thinks very experienced systems engineers have the judgement to know that sometimes "an optimization is not worth it", and that you're often designing for where you want to be in a few years rather than for today's feature set.

On a similar note, I asked if someone shipping five times more with AI makes him trust them more or less. It depends on the domain. Higher up the stack it's obvious you'll produce more now, but "if you were a database engineer who all of a sudden is producing five times as much work, I'd be like, oh. What are you doing?" As he put it, "software engineering's not coding", and "the more senior you get, the less the coding matters, to be honest."

Is code review becoming a relic?

This one surprised me a bit. James says that in many organisations code review already is a relic of the past, and lots of people just aren't reviewing the code. Convex still does it, but he wanted to be clear about why:

I have never been much of a believer in code review for the purposes of correctness.

He means on experienced teams. If you have a junior engineer, you review their code to make sure it's good, but past a certain level of seniority he expects the engineer to be responsible for their own correctness. So review is for two things. One is having another mind look at your design: how you went about the problem, and whether you're thinking about it the right way. The other is education, as it's "one of the best mechanisms for providing peer feedback on how people think about systems".

And that's where the agents come in. He's noticed a lot of frustration from reviewers who write a thoughtful review and it doesn't get read by a human being, it just gets read by an agent and the PR comes back. There's a social contract there: if I spend time on your review, I expect you to read it, appreciate it and learn from it.

So he does think code review is "probably gonna fade away for most teams", but:

We do have to find alternative mechanisms of self-improvement, 'cause code review is one of the best ways to improve your mental models.

I'm not sure anyone has a great answer for that yet 🤔

The great engineer who's a jerk, or the average one you'd trust with your life?

Neither. Neither of them get a job, unfortunately.

He did soften it for the average engineer, as they might have skills that just haven't been developed yet, and he cares a lot about developing talent here. If that person is "an uncut gem" he wants to help hone them into "a sparkling diamond of engineering productivity". But no jerks allowed, and the reason isn't that he wants to be touchy-feely about it:

Every engineer has an additive contribution and a multiplicative contribution. They produce some amount of output themselves, and then they also affect the people around them.

A really excellent engineer comes in and everyone around them starts operating 20% better, because they give good guidance and build abstractions that speed the whole company up. A jerk can make everyone produce at 90% or 80%, or people stop bringing up ideas because they're nervous they're going to get judged. He says jerks can perform quite well in very small teams, but once a team gets beyond a certain size the side effects really bring a company down. And because "the culture you have is viral and self-sustained", if you have jerks in your company, the only people you'll be left with in the end are the jerks.

He was careful to say what doesn't count as being a jerk, too: "you can have very high standards, you can be demanding, you can give blunt feedback, these are all fine, that doesn't make you a jerk".

What do job candidates get wrong?

I started this one with a joke, asking if he'd ever written a RESTful HTTP API, because of something he'd told me the other day: if you look at a hundred job applications right now, some significant fraction, "approaching half", have the phrase "RESTful APIs" in bold. Nobody did that five years ago, and his guess is that ChatGPT or Claude decided it's the thing to put on resumes. When you read a hundred resumes in a row your brain gets very good at filtering out anything that just says whatever the machine put in there.

So the mistake he sees is candidates trying to be something they're not:

My advice to people applying for jobs, I know it's hard, I know it's a hard market, is to try to be as human as possible. Try to be as genuinely you. Try to say what you think. Don't try to cheat in the interviews. It's just so obvious. I can see your eyes moving.

Then there's this line, which I loved: "I am hiring humans. I have the tokens already. What I'm hiring is the person."

I also asked what single interview question tells him the most about somebody. For junior candidates a lot of it is intellectual aptitude and clarity of thought, and with a coding question he cares about how they get to the answer (although generally they do have to get it right). For senior candidates it's the deep dive, where he asks someone to go through a system they've built:

Explain how it was architected, but also explain why it was done, and what compromises were made in the process.

That shows whether they can think in building blocks, but really it shows whether they understand why systems are built. He said plenty of people come out of big companies as good software engineers, but when you ask why they did something the answer is "the VP told me to, so I did it", and those people aren't going to do well at Convex. In his words, "It's not about are you doing the work? It's about what work are you doing and why."

If you want more on how hiring works here, James went into a lot more detail in my last chat with him, about why we don't let candidates use AI in coding interviews.

Build vs buy?

This was the last question, and it's one that's pretty close to home for us:

Almost everything you can buy... You want to focus on what's uniquely differentiated about your business. The more you can make things someone else's problem, the more you can take that energy that you have and devote it to making the best thing in the world.

There's one big caveat though, which is that you don't want to outsource expertise in your own space. He brought up articles about Boeing outsourcing so much of its development that in the end there was no one left who knew how to build a plane, "and if you don't know how to build a plane, it makes it pretty hard to design the next plane". He says that's why CS fundamentals still matter, and it goes for codegen too. Should you outsource all your coding knowledge to an agent? "Currently, no", if you want to build sophisticated, challenging software:

Even if you're not writing the code, knowing what's possible and knowing how your stack works allows you to innovate.

His answer to "why shouldn't I just use Postgres?" earlier on is the same idea pointed at your backend. If you're a database expert, you know what repeatable read and read committed are, and you want to build your own stack and reason about data sync and transactions yourself, then go for it, people have been doing that for 35 odd years. But if you want to focus on your product rather than on expertise in an area "that's frankly not at all differentiated for you", that's where Convex comes in. He describes it as "an API designed to make infrastructure problems go away, which is a much bigger thing than just a database."

Conclusion

So just to recap: James thinks you still need to learn to code if you want to push the industry forward, that juniors need room to be bad, and that the agent jargon of the week doesn't matter much. He wouldn't trust a database (or any system) built by someone without a real passion for it, he sees code review as being about design and teaching rather than catching bugs, and when he hires he wants the actual person, with no jerks. Oh and he'd buy almost everything, as long as you aren't outsourcing the expertise in your own space.

I think what ties a lot of his answers together is that the knowledge still matters. Agents are a really powerful tool, and the people getting the most out of them are the ones who understand what's going on underneath. I guess that's kind of what Convex is about too, taking care of the infrastructure so you (and your agent) can spend that knowledge on your product.

There's loads more in the video that I haven't covered here, like the biggest disagreement he's had with Jamie (and who turned out to be right), what he'd take back about Convex if he could start again, how he finishes the sentence "Convex died because...", and what he tells his mum when she asks if Convex is done yet.

A massive thanks to James for putting up with all my spicy questions, and to Mikhail for filming it.

Until next time, cheerio! 👋

All gas, no breakages

Convex is the reactive backend platform that keeps up with you and your agents. Database, functions, workflow, sync, search, file storage, and more. All TypeScript, zero glue.

Get started