I changed jobs! and other updates
I changed jobs! and other updates
It's been a few months since I last sent a newsletter here—things have been busy 😅
The big news is that I started a new job! In September, I left my research position at Ink & Switch, and I now work at Notion. My role is "design engineer", which basically just means doing conceptual design and prototyping work, both looking further ahead to the future and shipping nearer term product improvements.
Because I'm a bit behind on sharing stuff here, this newsletter will be a mishmash of some reflections on the job switch, followed by a blog post on a way of working with AI that I am really enjoying these days: "coding like a surgeon." Note: if you follow me on Twitter, you may have seen some of this stuff over there already, but I thought it was worth sharing here for those who aren't active on Twitter.
Looking back at Ink & Switch
Back in 2019, I remember being intrigued by the work coming out of this mysterious research lab. At the time there was barely even a website! But I could tell they had a big, compelling vision for a more humane kind of computing, and I wanted to be a part of it.
I ended up working with I&S every summer while I did grad school at MIT, and then for a couple more years fulltime after finishing my PhD.
During that time my collaborators and I got to explore all kinds of questions related to malleable software. How do you build a new kind of software environment that end-users can tweak on the fly? How do you weave together the best parts of docs and apps? How do you make tools that compose on shared local-first data?
These are huge questions without easy answers, but we always tried our best to share what we found. (See our recent Malleable Software essay for some thoughts on these topics.)
Looking back, two things made this a special experience.
The first is the world-class collaborators. Each person brought a unique genius to every project, and I learned so much. Small teams of people who care are the best.
The second is the unique context and structure of the lab. There aren't many places that are free of the time pressures of companies shipping products, but also free from the peculiar incentives of modern academia. Getting to do the work that we thought mattered, and share it in the ways that we thought would move the needle, was a big challenge and a rare opportunity.
There's a lot more I could say about what makes I&S special, but I'll leave it at that for now. I'm super grateful to everyone at the lab, but especially Peter van Hardenberg for taking a chance on hiring me and for leading the lab through an incredible period of growth. There's so much cool stuff brewing and I can't wait to see where the mission goes from here.
By the way—if you haven't already, you should totally subscribe to the Ink & Switch email newsletter (the signup is tucked away at the bottom of the lab website) to keep abreast of their work.
Why Notion?
There are many reasons that I was excited to join Notion—the team is extremely impressive, I get to work with my former collaborator Max Schoening, and the company mission is dear to my heart. But perhaps the most interesting reason to discuss here is the company's strategic position. I think there's no company better positioned to democratize software creation in the age of AI, for 3 reasons that are perhaps underappreciated:
1) Starting with documents
I think the most underrated pattern in malleable software is to start with simple document editing, and then gradually upgrade your documents into powerful software tools.
Hypercard showed the power of this approach decades ago: just draw pictures, and then optionally make the pictures do stuff. I've explored dynamic documents a lot in my own research as well.
In my opinion, Notion is the best incarnation of "document to app" thinking in modern commercial software.
2) A substrate for co-creation with AI.
Humans and AIs need a place to work together. A great environment for human-to-human collaboration, carefully built up over many years, is the perfect foundation to build on.
The recent Notion AI launches have made the product insanely useful to me. At work, nearly every question I've had during onboarding has been correctly answered by the AI search. And in my personal life I can now get instant answers to random logistical questions.
I've also been using the Notion Agent to set up custom databases and automations for organizing my personal life that would have previously taken way too much time. It makes it more fluid and fun to modify my tools as I use them.
If you're interested in patterns for human-AI collaboration and you haven't kept up with the latest features in Notion, it's worth checking out the September launch keynote, which shows off the latest state of the product. I think it's quite neat seeing how human-AI collaboration patterns that have found tremendous product-market fit for coding are now making it to a broader audience and set of workflows in Notion.
3) A distribution model where everyone can create.
To truly enable personal software, we need new, lighter distribution models. Even if everyone can use AI to code, there's still so much friction to share tools with your friends and coworkers through traditional app stores. (This was a big takeaway of the Malleable Software essay I co-authored at Ink & Switch earlier this year.)
Since the beginning, Notion has had a distribution model oriented around people building tools that work for them, and then easily sharing those tools inside companies, publishing templates to the broader community, etc. This stuff has to be built in at the foundation and can't be tacked on later.
Looking ahead
Anyway, all of that is just the starting position that Notion had already achieved as of this fall before I joined. I see so much potential to build on this foundation to make Notion an even better place to craft custom tools that fit the way that you and your team want to work.
Let me know in the replies if you have product feedback or ideas for things we should try!
Recent interviews
Another small update: I appeared on a couple podcasts recently. I really enjoyed these conversations—both hosts were unusually thoughtful and well-prepared, and as a result we were able to go quite deep on various topics around malleable software and AI:
- Dive Club with Ridd
- Generally Intelligent with Kanjun Qiu
OK, switching gears from the updates to a little blog post. Over the past couple months I've been developing a new way of working with AI that I am really enjoying. Here are some notes on my workflow... (Also published on my website if you prefer to read there.)
Code like a surgeon
A lot of people say AI will make us all "managers" or "editors"...but I think this is a dangerously incomplete view!
Personally, I'm trying to code like a surgeon.
A surgeon isn't a manager, they do the actual work! But their skills and time are highly leveraged with a support team that handles prep, secondary tasks, admin. The surgeon focuses on the important stuff they are uniquely good at.
My current goal with AI coding tools is to spend 100% of my time doing stuff that matters. (As a UI prototyper, that mostly means tinkering with design concepts.)
It turns out there are a LOT of secondary tasks which AI agents are now good enough to help out with. Some things I'm finding useful to hand off these days:
- Before attempting a big task, write a guide to relevant areas of the codebase
- Spike out an attempt at a big change. Often I won't use the result but I'll review it as a sketch of where to go
- Fix typescript errors or bugs which have a clear specification
- Write documentation about what I'm building
I often find it useful to run these secondary tasks async in the background -- while I'm eating lunch, or even literally overnight!
When I sit down for a work session, I want to feel like a surgeon walking into a prepped operating room. Everything is ready for me to do what I'm good at.
Mind the autonomy slider
Notably, there is a huge difference between how I use AI for primary vs secondary tasks.
For the core design prototyping work, I still do a lot of coding by hand, and when I do use AI, I'm more careful and in the details. I need fast feedback loops and good visibility. (eg, I like Cursor tab-complete here)
Whereas for secondary tasks, I'm much much looser with it, happy to let an agent churn for hours in the background. The ability to get the job done eventually is the most important thing; speed and visibility matter less. Claude Code has been my go-to for long unsupervised sessions but Codex CLI is becoming a strong contender there too, possibly my new favorite.
These are very different work patterns! Reminds me of Andrej Karpathy's "autonomy slider" concept. It's dangerous to conflate different parts of the autonomy spectrum -- the tools and mindset that are needed vary quite a lot.
Your agent doesn't need a career trajectory
The "software surgeon" concept is a very old idea -- Fred Brooks attributes it to Harlan Mills in his 1975 classic "The Mythical Man-Month". He talks about a "chief programmer" who is supported by various staff including a "copilot" and various administrators. Of course, at the time, the idea was to have humans be in these support roles.
OK, so there is a super obvious angle here, that "AI has now made this approach economically viable where it wasn't before", yes yes... but I am also noticing a more subtle thing at play, something to do with status hierarchies.
A lot of the "secondary" tasks are "grunt work", not the most intellectually fulfilling or creative part of the work. I have a strong preference for teams where everyone shares the grunt work; I hate the idea of giving all the grunt work to some lower-status members of the team. Yes, junior members will often have more grunt work, but they should also be given many interesting tasks to help them grow.
With AI this concern completely disappears! Now I can happily delegate pure grunt work. And the 24/7 availability is a big deal. I would never call a human intern at 11pm and tell them to have a research report on some code ready by 7am... but here I am, commanding my agent to do just that!
Notion is for surgeons?
Finally I'll mention a couple thoughts on how this approach to work intersects with my employer, Notion.
First, as an employee, I find it incredibly valuable right now to work at a place that is bullish on AI coding tools. Having support for heavy use of AI coding tools, and a codebase that's well setup for it, is enabling serious productivity gains for me -- especially as a newcomer to a big codebase.
Secondly, as a product -- in a sense I would say we are trying to bring this way of working to a broader group of knowledge workers beyond programmers. When I think about how that will play out, I like the mental model of enabling everyone to "work like a surgeon".
The goal isn't to delegate your core work, it's to identify and delegate the secondary grunt work tasks, so you can focus on the main thing that matters.
Related reads
If you liked this perspective, you might enjoy reading these other posts I've written about the nature of human-AI collaboration:
- Enough AI copilots! We need AI HUDs: "anyone serious about designing for AI should consider non-copilot form factors that more directly extend the human mind..."
- AI-generated tools can make programming more fun: "Instead, I used AI to build a custom debugger UI… which made it more fun for me to do the coding myself..."
- ChatGPT as muse, not oracle: "What if we were to think of LLMs not as tools for answering questions, but as tools for asking us questions and inspiring our creativity?
That's it for this time! If you try working like a surgeon with AI, reply here and let me know how it goes :)