30초 요약
Theo calls the engineer working with coding agents a gardener: someone who improves the environment where code is produced and catches recurring problems at their source. At Twitch, a colleague corrected misleading documentation after a bad pull request; on T3 Code, Theo removed thousands of low-value tests and added a fast check for data-transfer regressions. He says slow checks and unclear patterns can block agents even more than people, while agents make previously expensive platform changes easier.
- 1Fix the misleading example that caused the bad pull requestA Twitch colleague corrected the documentation and code that had led Theo astray, so the next engineer would not repeat the mistake.
- 2Platform work can make product work easier even when users cannot see itAs a solo developer, Theo estimates he divided time roughly equally between platform and product changes.
- 3A backend rewrite removed Theo as the team’s bottleneckHe says the move to Convex let colleagues continue shipping during his hand-surgery recovery.
- 4Slow checks can block agents more severely than peopleStartup time, test cost and release delays constrain repeated feedback and parallel work.
- 5He removed about 11,000 tests he considered low-valueTheo reports restoring four and seeing no regression that the removed tests would have caught; the team also investigated why bad tests reappeared.
- 6A fast pull-request check made transfer size visible to agentsThe automated check measures realistic event data and flags performance regressions directly in review.
핵심 정리
- Treat recurring bad changes as clues about confusing documentation, examples or incentives.
- Improve slow startup, checks and releases so agents get useful feedback quickly.
- Remove tests that add cost without useful signal, while tracking what regressions remain possible.
- Put important performance metrics directly into automated pull-request feedback.
- Move between product work and platform improvements when friction makes a feature harder than it should be.
챕터별로 다듬은 전문 읽기
Engineering as tending an environment
Theo describes his shift toward working with AI agents and the fear of losing the joy of assembling software.
I've been talking to engineers beyond my San Francisco circle about coding with AI and what an engineer's job means. I think the work has changed deeply. My analogy is that we are gardeners: we maintain an environment in which useful code can grow.
I love engineering because we find pieces and assemble them into something meaningful. Software offers building blocks at many levels, from chips and assembly to languages, packages and modules. I worried that using AI would take away that joy of tinkering.
On the other side of that transition I have found different building blocks and problems that I enjoy even more. I know I was fortunate: software development was not my only source of identity or income, which made the change less frightening.
What Twitch taught him about product and platform
Product and platform teams depend on one another. Fixing misleading documentation showed him how to prevent repeated mistakes.
I worked at Twitch from 2017 to 2021. After a difficult period on a video-on-demand team, my manager encouraged me to try React and TypeScript. React Hooks clicked with my functional programming experience, and I joined the effort to rebuild Twitch's web product.
For the first time I felt I understood a system well enough to predict the effects of a change. At Twitch, product teams owned a user-facing area end to end: chat, moderation tools or the creator dashboard, for example.
Separate platform teams supported these products. Browser clients maintained shared web repositories, the GraphQL edge connected clients to services, and other teams operated databases and video infrastructure. Product teams could not each build all that infrastructure themselves.
Although I was on product teams, I spent time with the browser clients team. Early on I submitted a poor change based on misleading documentation and examples. A colleague asked why I had written it that way, then fixed both the documentation and the confusing code.

That showed me a bad pull request can expose an opportunity to remove its underlying cause. If misleading examples remain, the next person is likely to repeat the mistake. I also tested ideas in a smaller internal safety-tools repository before proposing the useful ones for Twitch's main site.
I loved building products people used, and I loved platform work when it made those products better. The relationship goes both ways: products give the platform feedback, while a good platform helps the products grow.
Code quality is partly a communication and organizational problem. Ideally, the environment should help engineers with different levels of experience contribute changes that do not degrade the codebase. I am talking about that feedback relationship, not simply adding management or measuring test coverage.
Rebuilding the platform for a solo developer
After leaving Twitch, he assembled the T3 Stack and alternated between product work and removing platform friction.
When I left Twitch and started Ping, I went from a company with many specialists to working on my own. My first instinct was to recreate the complex systems those teams had maintained. I ended up doing several people's jobs and needed a simpler way to work.
The T3 Stack grew out of that need for the confidence of a platform without the same maintenance burden. I combined existing tools, including Next.js, TypeScript, Prisma and tRPC, to connect the frontend and backend with shared types. I did not invent those individual tools.
While building Ping and handling other company and channel work, I had limited coding time. I estimate roughly half my changes improved the platform rather than directly changing the product. Those invisible changes made the other half easier to deliver.
I learned to move back and forth: when a feature becomes harder than it should be, improve the platform, then return to the product. At Twitch, crossing the boundary between product and platform also let me solve problems that had become tangled in assumptions about what another team would allow.
For one dashboard, my team believed the GraphQL team would reject a simple JSON representation and proposed a complicated alternative. I described the problem to the platform lead without suggesting a solution; he independently recommended the JSON approach. A conversation removed friction that had consumed more time than building the dashboard.
A T3 Chat migration unblocks the team
Moving away from a custom synchronization engine required a large rewrite but reduced reliance on one person.
My last major hand-coded overhaul was moving T3 Chat from my own synchronization engine to Convex. I had been skeptical of it, but came to see it as a more mature backend, database and synchronization platform. Agents could not yet perform the migration for me.
The change involved more than 25,000 lines and about a month of work. Users would mainly notice more reliable synchronization between devices. We found unusual edge cases as a large customer, which Convex addressed, but the bigger reason for the migration was the team.
I was the only person who understood the old database synchronization code, so I repeatedly blocked my colleagues. Moving to Convex let them keep shipping even while I could not code for several months after hand surgery. The platform improvement made product work easier.
My earlier code was itself a source of low-quality work and friction for the team. It does not matter whether that friction comes from a person or an agent: it can block whoever works on the system next.
Why agents increase the value of maintenance
Theo applies the gardening analogy to slow tools and compares the cost of old migrations with agent-assisted work.
At Twitch, TypeScript checks had reached 15–20 minutes and starting the development server took three to five minutes. I contacted a TypeScript team member and helped arrange a discussion with Twitch's browser clients team. That experience showed me that the tools around us are made by people and can be changed.
I call this work gardening: build an environment that steers code in the right direction, supports it and catches problems early. The TypeScript work served the same purpose by letting people check and change code more confidently.
More recently, type checking T3 Code consumed substantial CPU even after TypeScript's Go rewrite. In the past rewriting a tool would have been difficult to justify, even for hundreds of Twitch engineers. I am now rewriting TypeScript in Rust to help a three-person team move faster.
At Twitch an Apollo GraphQL client upgrade broke thousands of files. We put the files in a shared spreadsheet, assigned them to volunteers and manually fixed and tested them. About eight people plus helpers spent more than a month on it. I think agents can now carry out this kind of migration far more cheaply.
Slow development servers, checks and releases also block agents. A five-minute startup delays their feedback and can waste cached context; slow checks consume resources and constrain how many tasks can run in parallel. Maintaining the platform is more important when agents encounter that friction repeatedly.
Remove low-signal tests and protect performance
He describes test cleanup, investigating recurring errors and a pull-request check for transfer-size regressions.
Poor code and unnecessary tests can accumulate quickly, so someone has to remove them and address their causes. In T3 Code I deleted roughly half the unit tests: about 11,000 tests and 250,000 lines. I say we saw no regression those deleted tests would have caught, and restored four tests.

Deletion alone was not the whole answer. We changed guidance for agents and watched for poor tests returning. When one appeared, we asked the contributor to inspect the agent's thread and ask why the test was added, then used that explanation to find the underlying cause.
I also kept seeing regressions in how much data our thread synchronization protocol transferred. I built an automated pull-request check using real event data and a simulated end-to-end path. It reports transfer sizes and flags meaningful regressions for reviewers and agents.

The check tells an agent that transfer size is something we care about and should optimize. It runs in under about 45 seconds, I estimate. I see it as a stake that guides the plant, rather than leaving quality to chance.
Much of my work on T3 Chat became unblocking teammates by improving the platform. I now do the same for agents: watch where they get stuck and improve the codebase and checks around them. For me this is still engineering, and it is work I enjoy.
What a maintained environment enables
Theo presents his project’s merge activity and argues that improving the environment helps agents and people ship.

I showed a chart of T3 Code pull requests merged per day. I say the project moved from roughly 2–20 a day to around 60 on slow days and more than 400 on active days, which I attribute to the work environment. Others use the same gardener analogy for watching changes and removing recurring problems.
There is more to learn about which maintenance techniques work. The pace of change can be frightening, but I hope people can also find enjoyment in building with these new tools.
같은 채널의 다른 글
42:14EN
41:02EN
31:44EN
15:50EN
16:46EN
49:29EN