I asked my editors if I could go work at a tech startup. It was an unusual request. But I wanted to learn to vibe-code. My need to know felt urgent. I wanted to survive the future.
The pitch process was surprisingly easy: First my editors said yes, and then the tech startup I lobbed my wild idea to, Notion, agreed to let me embed with them. Why? It’s hard to say. Possibly because Notion’s own workforce has fully embraced vibe coding—“vibe” here being a euphemism for “AI-assisted.” Some tech companies have estimated that around 30 to 40 percent of their code is now written by AI.
Notion is a 1,000-person, venture-backed San Francisco startup with a $10 billion valuation. It makes the ultimate to-do and note-taking app, consisting of so many templates and tables and ways to format tasks that figuring out how to use Notion is a task in itself. On YouTube, productivity gurus attempt to make sense of Notion using the well-worn vernacular of personal optimization. One such video is titled “How to Get Started in Notion Without Losing Your Mind.” It has 3.4 million views.
I was scheduled to start at Notion as a vibe-coding engineer on a Thursday in mid-July. The night before, I found myself panic-watching these YouTube videos. Surely I would need to be a power user of the app if Notion was allowing me—an English major!—to fiddle with its code base. In an earlier onboarding call, a new coworker had encouraged me to download the AI coding platform Cursor and play around with it. I did. No real code emerged from this homework.
My desk on my first day at Notion.
Fortunately, I would be pair-programming at Notion, which meant that I’d be working alongside experienced (human) coders. Upon my arrival, Sarah Sachs, an AI engineering lead at Notion, set me up at a desk. A company tote bag and notebook awaited me. Sachs informed me that the following day, I would be presenting my work to the staff at a weekly demo meeting. Was I good with that? I said yes. We were all committed to the bit.
Sitting a few feet away was Simon Last, one of Notion’s three cofounders. He is gangly and shy, an engineer who has relinquished management responsibilities to focus on being a “super IC”—an individual contributor. He stood to shake my hand, and I awkwardly thanked him for letting me vibe-code. Simon returned to his laptop, where he was monitoring an AI as it coded for him. Later, he would tell me that using AI coding apps was like managing a bunch of interns.
Since 2022, the Notion app has had an AI assistant to help users draft their notes. Now the company is refashioning this as an “agent,” a type of AI that will work autonomously in the background on your behalf while you tackle other tasks. To pull this off, human engineers need to write lots of code.
They open up Cursor and select which of several AI models they’d like to tap into. Most engineers I chatted with during my visit preferred Claude, or they used the Claude Code app directly. After choosing their fighter, the engineers ask their AI to draft code to build a new thing or fix a feature. The human programmer then debugs and tests the output as needed—though the AIs help with this too—before moving the code to production.
At its foundational core, generative AI is enormously expensive. The theoretical savings come in the currency of time, which is to say, if AI helped Notion’s cofounder and CEO Ivan Zhao finish his tasks earlier than expected, he could mosey down to the jazz club on the ground floor of his Market Street office building and bliss out for a while. Ivan likes jazz music. In reality, he fills the time by working more. The fantasy of the four-day workweek will remain just that.
My workweek at Notion was just two days, the ultimate code sprint. (In exchange for full access to their lair, I agreed to identify rank-and-file engineers by first name only.) My first assignment was to fix the way a chart called a mermaid diagram appears in the Notion app. Two engineers, Quinn and Modi, told me that these diagrams exist as SVG files in Notion and, despite being called scalable vector graphics, can’t be scaled up or zoomed into like a JPEG file. As a result, the text within mermaid diagrams on Notion is often unreadable.
Quinn slid his laptop toward me. He had the Cursor app open and at the ready, running Claude. For funsies, he scrolled through part of Notion’s code base. “So, the Notion code base? Has a lot of files. You probably, even as an engineer, wouldn’t even know where to go,” he said, politely referring to me as an engineer. “But we’re going to ignore all that. We’re just going to ask the AI on the sidebar to do that.”
His vibe-coding strategy, Quinn explained, was often to ask the AI: Hey, why is this thing the way it is? The question forces the AI to do a bit of its own research first, and the answer helps inform the prompt that we, the human engineers, would write. After “thinking,” Cursor informed us, via streaming lines of text, that Notion’s mermaid diagrams are static images that, among other things, lack click handlers and aren’t integrated with a full-screen infrastructure. Sure.
Using Claude’s notes, I wrote up the request and pasted some notes from the engineering team into Cursor, like this:
Ticket: Add Full Screen / Zoom to mermaid diagrams. Clicking on the diagram should zoom it in full screen.
Notes from slack: "mermaid diagrams should be zoom / fullscreenable like uploaded images. they're just svgs right, so we can probably svg -> dataurl -> image component if we want to zoom"
We waited. Time is inverted in the land of vibes. Projects that used to take your whole career are now done in days, while commands you expect to see executed in seconds take endless minutes. One hundred lines of AI-generated code later, mermaid diagrams were expandable.
Except, not really. They were still too small, some parts were transparent, and the margins around them needed padding; also, would this work in the app in both light mode and dark mode? I spent the next half hour iterating on these changes, with Quinn and Modi talking me through it. Thirty minutes later, we had an expandable, readable mermaid diagram.
Next I worked alongside an engineer named Lucy, who told me that instead of typing prompts into Cursor we would be using an agent from Codegen, another AI engineering tool. The assignment was simple. We would create a new skill in Notion called Alphabetize, so that when someone uses Notion AI to draft a list or table of popular dog breeds, the user can alphabetize the content with one click.
Clockwise: I'm learning the ropes with Lucy, Andy, and Brooks.
Just then, Anthropic’s Claude—which was powering Codegen—suffered an outage. Sarah Sachs, who was in the room with us, received a page on her phone, like an ER doctor. She hurried out of the room. Vibe coding and alphabetizing were temporarily put on pause. Bulldogs would come before beagles until Claude was back online.
The next assignment was as open-ended as Lucy’s was specific: to build whatever I wanted. The freedom was unnerving, a Rorschach test for vibe coders. What did I see when I looked at the blinking cursor? I decided that there should be a way for Notion users to draft an “intelligent” to-do list in one step. They would be able to flick open the app and type “to do reorder pet food” and Notion AI would know what they meant. I also wanted this feature to avoid duplicate items from other recent to-do lists.
I was crushing it. I was a responsible babysitter for code, watching it cascade in front of my eyes and then toddle its way into the world. Except, my logic was wrong. My to-do list hack was somehow allowing for endless duplicates instead of avoiding them. Who was to blame: me or the AI?
A product designer named Brian talked me through it. “Pretend you’re talking to a smart intern,” he said. Again with the interns.
I reversed my logic and tried again, typing in more detail around how I envisioned the widget working. “That’s a great idea,” Claude responded, ever the sycophant, and then got to work. Forty minutes later, the three of us had prototyped a version of my dinky little—no, I mean killer—feature. We had spent $7 to build it, according to the token counter in Claude Code. I was told other engineering projects cost much more than that, especially if coders let the AI run for hours. It was still light out when I wrapped up the first day.
On Friday morning, I showed up for the demo session. Cheese platters, in honor of a Swiss employee’s birthday, awaited us in the conference room. Coders grabbed their coffees, their Celsius cans, their cups of flavored water dispensed by a Bevi machine in the kitchen.
One of the first demos was of a Notion AI agent that had been given a memory, so it could adopt a learned writing style. For kicks, another engineer had coded an app that kept track of the flavored syrups in the staff’s beloved Bevi. At the end of each presentation, I was told, someone usually takes a small mallet to a xylophone. They made me the keeper of the xylophone that day. The mood was light.
When it was my turn to present, I tried to succinctly describe the few features I had vibe-coded (with credit doled out to my pair programmers). One of the managers asked a follow-up question: How long had it taken to code the changes to the mermaid diagrams, end to end?
I looked at Quinn and Modi. We tallied that our working session had been about 30 minutes, plus some 15 minutes of preliminary work Quinn had done.
“Wow,” someone in the room said.
“I dare to imagine the general public learning how to write code,” the programmer and author Ellen Ullman wrote in a 2016 essay titled “Programming for the Millions.”
The prevailing sentiment of the 2010s, of course, was that everyone could stand to learn a little code. We should throw open the doors and invade the closed society where code gets written, Ullman wrote. This was our best hope for loosening the strangle of the code that surrounds us as a society. As part of her reporting process, Ullman enrolled in three massive open online courses, or MOOCs, that promised to teach normies how to program. (I dare to imagine her eyebrow arched as she enrolled.)
“Stick a needle into the shiny bubble of the technical world’s received wisdom,” Ullman urged would-be coders. “Burst it.”
Expanding a mermaid diagram or alphabetizing a list of dog breeds hardly seemed like sticking it to the coding man. But during my time at Notion I did feel as though a trapdoor in my brain had opened. I had gotten a shimmery glimpse of what it’s like to be an anonymous logical god, pulling levers. I also felt capable of learning something new—and had the freedom to be bad at something new—in a semi-private space.
Both vibe coding and journalism are an exercise in prodding, and in procurement: Can you say more about this? Can you elaborate on that? Can you show me the documents? With our fellow humans, we can tolerate a bit of imprecision in our conversations. If my stint as a vibe coder underscored anything, it’s that the AIs coding for us demand that we articulate exactly what we want.
During lunch on one of my days at Notion, an engineer asked me if I ever use ChatGPT to write my articles for me. It’s a question I’ve heard more than once this summer. “Never,” I told her, and her eyes widened. I tried to explain why—that it’s a matter of principle and not a statement on whether an AI can cobble together passable writing. I decided not to get into how changes to search engines, and those little AI summaries dotting the information landscape, have tanked the web traffic going to news sites. Almost everyone I know is worried about their jobs.
One engineer at Notion compared the economic panic of this AI era to when the compiler was first introduced. The idea that one person will suddenly do the work of 100 programmers should be inverted, he said; instead, every programmer will be 100 times as productive. His manager agreed: “Yeah, as a manager I would say, like—everybody’s just doing more,” she said. Another engineer told me that solving huge problems still demands collaboration, interrogation, and planning. Vibe coding, he asserted, mostly comes in handy when people are rapidly prototyping new features.
These engineers seemed reasonably assured that humans will remain in the loop, even as they drew caricatures of the future coder (“100 times as productive”). I tend to believe this, too, and that people with incredibly specialized skills or subject-matter expertise will still be in demand in a lot of workplaces. I want it to be true, anyway.
Ullman’s 2017 essay concludes with some disillusionment. She rightly determined the MOOCs she observed to be a mixed bag, rife with boyish men and unsupportive professors. A class on algorithm design was, she observed, autograded by primitive tools, which meant students were “trying to learn algorithms graded by faulty algorithms.” The “learn to code” movement now seems quaint. Few people could have known that in just under a decade, computers would be writing the code for them.
Ullman still found beauty in writing code, though. That’s the thing. That’s the thing with making anything. If you persevere, if you slog through the trough of disillusionment, “a certain fascination gets through,” she wrote. “It can be like those times you hear someone playing the piano beautifully or a sax wailing through jazz improvisations, and the sound ignites a longing in you, a desire to take up the difficulties and learn how to play that music.”
Vibe coding didn’t ignite this longing in me. Instead, I saw more clearly that we’re entering a dizzying age of duality in AI. Is AI going to kill our jobs or create more jobs? Yes. Did I technically build a feature in an app that has since been pushed to a hundred million users, or did I cheat my way through an assignment by leaning heavily on AI and other humans? Yes. Do I need deep foundational knowledge of software programming to be a successful coder, or can I skate by without even knowing the name of the programming language I’m using? Also yes.
In my final hours at Notion, I admitted this to Ivan Zhao, Notion’s CEO. “I’m realizing that, this whole time, I didn’t even ask what language we’re coding in,” I said.
Ivan looked amused. “It’s TypeScript. It’s like a fancier version of JavaScript.” He paused. “But what language you’re using doesn’t matter. You express your intent on the human-language, English level, and now the machines can translate it. That’s what language models are fundamentally doing.”
For Ivan, this vibe-coding moment is especially exciting. When he and Simon Last first teamed up in the early 2010s (a third cofounder, Akshay Kothari, joined later), they envisioned their product as a “no code/low code” app, to help people build things with minimal software development. They would take no code/low code mainstream.
There was just one problem: “Nobody cared,” Ivan said. “Nobody was waking up and saying, ‘I want to think about building software now.’ Most people cared about ‘I just need to finish this spreadsheet for my boss.’” A few years later, they pivoted to what became Notion.
In October 2022, the founders took the entire company—then less than a few hundred employees—to an off-site in Mexico. Ivan recalled bookending the retreat with little speeches: opening remarks, then a few words at dinner on the last night. Otherwise, he and Simon were locked away in their hotel rooms, sucking down bottled water and building prototypes with this new thing they had early access to, ChatGPT. They saw what it could generate. They understood it was about to change things. On some level, they knew that their original idea for Notion had come full circle, all thanks to generative AI.
I'm pair programming with Brian, a Notion product designer who regularly vibe-codes.
Ivan, who was born in China and studied cognitive science and art during college in Canada, has an affinity for quality products. He wears a luxury watch (a gift from his wife), is obsessed with well-made furniture, and more than once remarked to me that people who excel at their jobs often have good taste. His love of good design extends to tools that help us communicate; Douglas Engelbart, the inventor of the mouse, is a hero of his.
So I had to ask: How does he feel about the quality of all this AI-generated code? Does vibe coding put more bad software into the world?
Ivan replied that code is either correct or incorrect; there’s no subjective determination of whether it’s high or low. The way he sees it, if I write sentences poorly then I might be considered a bad writer, but if a coder writes code poorly, the program simply won’t run. AI-generated code sometimes goes off the rails, I said, pushing back. When someone’s futzing around, building a website, it’s low stakes; if they’re vibe-coding software for actual trains, then the consequences of errors are greater.
Ivan conceded that some coders, especially younger coders, might gain a false sense of competency from vibe coding. That’s where pair programming comes in, he said. Matching up less-seasoned coders with ones who learned to code before AI. “Senior-level folks—they have taste, right?” he said.
For his part, Simon says he’s actually holding AI coding apps to higher standards than he does human engineers. It’s why he dislikes the phrase “vibe coding.” To him, the term diminishes what these coding agents, and the humans using them, are now able to do. Simon is one of the most prolific vibe coders at Notion. He believes this is the future. At one point he was using three different AI coding tools simultaneously. He found it stressful; it was like being a manager all over again. Now he usually leans on one tool at a time.
How is he thinking about engineering jobs, then? He sighed. “I mean, at least right now, we’re still super actively hiring engineers. But we do want to hire engineers that are really bullish on coding tools.” The “right now” was doing a lot of work.
These changes—this invasion of AI code—has all happened within the past four to six months. Notion even has an AI engineer assigned to its enterprise sales team now, teaching software salespeople how to use AI in their own work. And it’s not just at Notion. It’s everywhere. My vibe-coding experiment, while solipsistically insightful, was already behind the curve.
“The world is heating up in many ways, and the sense I have is not ‘I freed up more time’ but that there’s more urgency than ever to use these tools,” Simon said.
The shift both exhilarates him and makes him anxious. He told me he looks back fondly on the not-too-distant past when he was simply coding and building stuff, “when there wasn’t, like, a crazy societal tidal wave happening. I think it would be crazy not to be a bit scared.”
Only after I’d left the Notion office on Friday evening did my journalistic instincts return. I had forgotten to ask: Scared of what?
Let us know what you think about this article. Submit a letter to the editor at [email protected].