My Two Days Vibe-Coding at Notion: What AI Coding Actually Feels Like

My Two Days Vibe-Coding at Notion: What AI Coding Actually Feels Like

I pitched my editors an unusual experiment: let me embed at a tech startup to learn the ins and outs of “vibe-coding.” My curiosity felt urgent — I wanted to understand this new skill to keep up with the fast-changing future of work.

Surprisingly, the approval process was seamless: my editors signed off immediately, and Notion, the startup I reached out to with my wild idea, agreed to host me. It’s hard to pin down exactly why they said yes, but a big factor is likely that Notion’s entire workforce has fully embraced vibe-coding — where “vibe” is just casual shorthand for AI-assisted development. Some tech firms estimate 30 to 40 percent of all their code today is written by AI.

Notion is a 1,000-person, venture-backed San Francisco startup valued at $10 billion, best known for its all-in-one to-do and note-taking app. The platform is packed with so many customizable templates, tables, and task formatting options that just learning to use Notion is a project in itself. On YouTube, productivity influencers break down Notion using the familiar language of personal optimization; one popular guide, “How to Get Started in Notion Without Losing Your Mind,” has racked up 3.4 million views.

I was scheduled to start my stint as a vibe-coding engineer on a mid-July Thursday. The night before, I found myself panic-binging those Notion tutorial videos. If Notion was willing to let me — an English major! — mess around with their core codebase, I figured I definitely needed to master the app first. During an early onboarding call, a new teammate had encouraged me to download the AI coding platform Cursor and test it out. I did, but no working code came out of that homework assignment.

Luckily, I would be pair-programming the entire time, working side-by-side with experienced human coders. When I arrived, Sarah Sachs, an AI engineering lead at Notion, got me set up at a desk, with a branded company tote and notebook waiting for me. She dropped a surprise: the next day, I’d be presenting my work to the entire team at their weekly demo meeting. Did that work for me? I said yes — we were all all-in on the experiment.

A few feet away sat Simon Last, one of Notion’s three co-founders. Gangly and soft-spoken, he stepped back from management responsibilities to focus on working as a “super IC,” or individual contributor. He stood to shake my hand, and I awkwardly thanked him for letting me try vibe-coding. He immediately turned back to his laptop, where he was monitoring an AI that wrote code for him. Later, he told me that using AI coding tools feels a lot like managing a team of interns.

Notion has offered an AI-powered note-drafting assistant built into its app since 2022. Now the company is reworking that tool into an “agent” — a type of AI that works autonomously in the background to complete tasks on your behalf while you focus on other work. Pulling this off requires human engineers to write thousands of lines of new custom code.

Their process is straightforward: they open Cursor, select which AI model they want to use from multiple options. Most engineers I spoke to during my visit preferred Claude, and many used the Claude Code app directly. After picking their model, they ask the AI to draft code for a new feature or bug fix. The human engineer then debugs and tests the AI’s output (though AI often helps with this step too) before pushing the code to production.

Generative AI is extremely expensive at its core. The theoretical benefit isn’t cost cutting — it’s time saved. In theory, if AI helped Notion co-founder and CEO Ivan Zhao finish his tasks faster, he could head down to the jazz club on the ground floor of his Market Street office and unwind. Ivan loves jazz. In practice, he just uses that extra time to do more work. The fantasy of the four-day workweek remains just that: a fantasy.

My time at Notion was only two days long, an intense condensed coding sprint. In exchange for full access to the team and workspace, I agreed to identify rank-and-file engineers by only their first names. My first assignment: fix how mermaid diagrams (a popular type of flowchart) display in the Notion app. Two engineers, Quinn and Modi, walked me through the problem: mermaid diagrams are saved as SVG files in Notion, but even though SVGs are designed to be scalable, they can’t be zoomed or resized like a JPEG. That means the text inside Notion mermaid diagrams is often too small to read.

Quinn slid his laptop toward me, with Cursor open and Claude already running. To show me how the process works, he scrolled through a section of Notion’s codebase. “Notion’s codebase has thousands of files. Even a full-time engineer wouldn’t know every nook and cranny,” he said, politely treating me as one of the team. “But we don’t need to worry about that. We just ask the AI in the sidebar to figure it out for us.”

Quinn’s go-to vibe-coding strategy, he explained, is to start by asking the AI: Why is this broken the way it is? That forces the AI to do a little digging on its own first, and the answer helps shape the more specific prompt the human will write next. After “thinking” through the problem, Cursor output a stream of text explaining that Notion’s mermaid diagrams are saved as static images, lack click detection code, and aren’t integrated with the app’s existing full-screen tooling. That checks out.

Using Claude’s notes, I wrote up our request and pasted the team’s internal notes into Cursor:

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 feels flipped upside down in the world of AI coding. Projects that once took months or even years now wrap in days, but a simple command you expect to finish in seconds can drag on for endless minutes. One hundred lines of AI-generated code later, we had working expandable mermaid diagrams.

Sort of. They were still too small, some sections were transparent, they needed extra padding around the edges, and we had to test if the feature worked in both light and dark mode. I spent the next half hour iterating on these fixes, with Quinn and Modi walking me through every step. Thirty minutes later, we had a fully functional, readable expandable mermaid diagram.

Next, I worked with an engineer named Lucy, who told me that instead of typing prompts into Cursor, we would use an agent from Codegen, another AI engineering tool. The assignment was simple: build a new Notion feature called Alphabetize, which lets users one-click sort any list or table (for example, a list of popular dog breeds drafted by Notion AI) into alphabetical order.

Right as we started, Anthropic’s Claude — which powers Codegen — suffered an outage. Sarah, who was in the room with us, got an alert on her phone like an ER doctor getting a page, and hurried out. Vibe coding and alphabetizing were put on temporary hold. Bulldogs would stay ahead of beagles until Claude was back online.

Our next assignment was the opposite of Lucy’s specific task: build whatever I wanted. That open-ended freedom was more unnerving than it sounds, a kind of Rorschach test for new vibe coders. What did I want to build when I stared at that blinking cursor? I landed on an idea: a tool that lets Notion users draft an “intelligent” to-do list in one step. Users could just open the app and type “to do reorder pet food,” and Notion AI would automatically parse that into a proper to-do item. I also wanted the feature to automatically avoid adding duplicate items that already existed on recent to-do lists.

I was cruising. I felt like a responsible babysitter for code, watching it spill out line by line in front of me before sending it out into the world. Except there was a problem: I got the core logic wrong. Somehow, my smart to-do hack was creating endless duplicates instead of preventing them. Who was to blame here — me, or the AI?

A product designer named Brian talked me through how to fix it. “Pretend you’re talking to a smart intern,” he said. There was that intern comparison again.

I flipped my logic and tried again, typing out far more detail about how I envisioned the widget working. “That’s a great idea,” Claude responded, ever the people-pleaser, before getting to work. Forty minutes later, the three of us had a working prototype of my silly little — okay, killer — feature. According to Claude Code’s token counter, the whole project only cost $7 to build. I was told other projects cost far more than that, especially if coders let the AI run for hours on end. I wrapped up my first day while it was still light out.

On Friday morning, I showed up for the demo session. A cheese platter, in honor of a Swiss employee’s birthday, was waiting for us in the conference room. Coders filtered in, grabbing coffee, Celsius energy drinks, and flavored water from the office Bevi machine.

One of the first demos was a Notion AI agent that has memory, so it can mimic a user’s learned writing style. For fun, another engineer built an app that tracks how much of each flavored syrup is left in the team’s beloved Bevi machine. I learned that after every presentation, someone hits a xylophone with a small mallet to mark the end. They made me the xylophone keeper that day. The mood was light and upbeat.

When it was my turn to present, I walked the team through the few features I’d built, making sure to give full credit to my pair programmers who guided me every step of the way. One manager asked a follow-up question: How long did it take to code the mermaid diagram changes, end to end?

I looked at Quinn and Modi. We added it up: our working session was about 30 minutes, plus 15 minutes of preliminary work Quinn had done ahead of time.

“Wow,” someone in the room said.

“I dare to imagine the general public learning how to write code,” programmer and author Ellen Ullman wrote in a 2016 essay titled “Programming for the Millions.”

The dominant mindset of the 2010s, of course, was that everyone could benefit from learning a little code. We should throw open the doors of the closed world where code gets written, Ullman argued — that was our best hope for loosening the stranglehold code has on modern society. As part of her reporting, Ullman enrolled in three massive open online courses (MOOCs) that promised to teach ordinary people how to program. (I can easily picture her arched eyebrow as she hit enroll.)

“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 counts as sticking it to the coding establishment. But during my time at Notion, I did feel like a trapdoor had opened in my brain. I got a shimmery glimpse of what it feels like to be the one pulling the levers, turning an idea into a working tool. I also realized I was capable of learning something totally new — and that it was okay to be bad at something new, in a low-stakes semi-private space.

Vibe coding and journalism are actually very similar: both are exercises in prodding for clarity and getting specific details. Can you say more about this? Can you elaborate on that? Can you show me the documents? When we talk to other humans, we can tolerate a little vagueness in conversation. But my time as a vibe coder drove home one key truth: the AIs coding for us demand that we articulate exactly what we want.

Over lunch one day, an engineer asked me if I ever use ChatGPT to write my articles for me. It’s a question I’ve gotten dozens of times this summer. “Never,” I told her, and her eyes widened. I explained that it’s a matter of principle, not a judgment on whether AI can cobble together passable writing. I chose not to get into how changes to search engines, and the AI summaries that now dot the entire information landscape, have gutted web traffic for news outlets. Almost everyone I know is worried about their job right now.

One engineer at Notion compared the economic anxiety of this AI era to the introduction of the first compiler. The common fear that one person will soon do the work of 100 programmers has it backwards, he said: instead, every programmer will become 100 times more productive. His manager agreed: “Yeah, as a manager I would say, like — everybody’s just doing more,” she said. Another engineer pointed out that solving huge, complex problems still requires collaboration, critical thinking, and planning. Vibe coding, he asserted, is mostly useful for rapidly prototyping new features.

These engineers were reasonably confident that humans will remain in the loop, even as they imagine a future where every coder is 100 times more productive. I tend to believe this too — that people with incredibly specialized skills or subject-matter expertise will still be in high demand across most workplaces. I want it to be true, anyway.

Ullman’s 2016 essay concludes with a dose of disillusionment. She rightly found the MOOCs she tested to be a mixed bag, rife with bro culture and unengaged professors. A class on algorithm design was autograded by primitive tools, which meant students were “trying to learn algorithms graded by faulty algorithms.” The “learn to code” movement of the 2010s now seems quaint. Few people could have guessed that in less than a decade, computers would be writing the code for us.

Even so, Ullman still found beauty in writing code by hand. That’s the thing about 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 that longing in me. Instead, it made clear that we’re entering a dizzying age of duality around AI. Is AI going to kill our jobs or create more jobs? Yes. Did I technically build a feature in an app that’s now used by 100 million users, or did I cheat my way through the assignment by leaning heavily on AI and other humans? Yes. Do I need deep foundational knowledge of software programming to be a successful coder today, or can I get 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 shift is the realization of his original vision for the company. When he and Simon Last first teamed up in the early 2010s (third co-founder Akshay Kothari joined later), they envisioned their product as a “no code/low code” app, to help people build things with minimal software development experience. They wanted to take no code/low code mainstream.

There was just one problem back then: “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 the Notion we know today.

In October 2022, the founders took the entire company — then fewer than a few hundred employees — to an off-site retreat in Mexico. Ivan recalls opening and closing the retreat with short speeches; between those, he and Simon locked themselves in their hotel room, drinking bottled water and building prototypes with ChatGPT, which they’d gotten early access to. They saw what it could generate, and understood it was about to change everything. On some level, they knew their original idea for Notion had come full circle, all thanks to generative AI.

Ivan, who was born in China and studied cognitive science and art in college, has always had a passion for high-quality products. He wears a luxury watch (a gift from his wife), is obsessed with well-made furniture, and told me more than once that people who excel at their jobs often have good taste. His love of good design extends to the tools that help us communicate; Douglas Engelbart, the inventor of the computer mouse, is one of his heroes.

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 measure of high or low quality, unlike writing. If I write bad sentences, I might be called a bad writer, but if a coder writes bad code, the program simply won’t run. I pushed back: AI-generated code often goes off the rails, I said. Futzing around with a personal website is low-stakes, but if someone is vibe-coding software for actual trains, the consequences of errors are far greater.

Ivan conceded that some coders, especially younger coders, might gain a false sense of competency from vibe coding. That’s what pair programming is for, he said: pairing less experienced coders with people who learned to code before AI existed. “Senior-level folks — they have taste, right?” he said.

For his part, Simon says he actually holds AI coding apps to higher standards than he does human engineers. That’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 AI coders at Notion, and 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 uses 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

Advertisement