惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

大猫的无限游戏
大猫的无限游戏
J
Java Code Geeks
小众软件
小众软件
D
Docker
腾讯CDC
H
Hackread – Cybersecurity News, Data Breaches, AI and More
V
V2EX
博客园 - 叶小钗
GbyAI
GbyAI
Microsoft Azure Blog
Microsoft Azure Blog
Stack Overflow Blog
Stack Overflow Blog
B
Blog RSS Feed
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 【当耐特】
IT之家
IT之家
博客园 - 司徒正美
M
MIT News - Artificial intelligence
T
The Blog of Author Tim Ferriss
The GitHub Blog
The GitHub Blog
罗磊的独立博客
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
L
LangChain Blog
阮一峰的网络日志
阮一峰的网络日志
C
Check Point Blog

Mary Rose Cook

Using encapsulated development to code on my phone Code generation that just works Should I multi-task? Pressure to change The cinch Making the unknown known Making a game with my son I can teach you to program with AI Using AI to build a tactical shooter
Explore, expand, exploit
2025-03-12 · via Mary Rose Cook

A few months ago, I started sleeping badly.

I had been excited about AI since ChatGPT came out.  I’d loved using Cursor to help me program since Jay had told me about it over the phone as I walked from Eureka Heights back home to Noe Valley.

But, in January, something changed. The proximate cause was a flood of new AI releases.  o3-mini, Deep Research, Lightpage.  Every week, more intelligence dropping from heaven into my lap.

But the bigger change was that I was getting more productive, faster.

Type in a few sentences, get a hundred lines of code. A feeling of vertigo.

More than that, I could learn a new technique in an hour and become significantly more productive.

This was in stark contrast to the previous twenty years I’d spent learning to program.  That was a slow, accretive grind.  A new technique for encapsulation.  A more refined understanding of what it means to “repeat yourself”.  Learning that you could step-debug a production web app.

My friend, Sam, has this model of learning as building a graph.  Each node is a piece of information or a skill or a behavior.  They’re interconnected.  Acquiring a new node of knowledge isn’t too hard.  It’s a bit harder to elaborate it. Which is to say, to connect it to the existing nodes in your graph.

But the real fucker is when you have to unmake a part of your graph.  You get cognitive dissonance because some of the nodes contradict each other or need to be pried apart or replaced.  It’s very painful to disassemble the graph and remake it.  Learning to program was a lot of that.

Learning to build software with AI feels completely different.  It’s much closer to learning a new discipline. Certainly, the old way of programming is relevant.  But all the power comes from the new techniques in this new field that doesn’t even really have a name.

Further, a lot of the new techniques involve a new workflow. Copy code from your editor into GPT, make a request, get code back, paste it into your editor. No, don’t do that any more. Instead, start by selecting code and then pressing ⌘-L. No, wait, stop. Just press ⌘-L, make a request, get code, press the Apply button. No. New move. Press ⌘-I, make a request, scan the code as it’s added to the repo, run and check the behavior. No, wait, this is the killer. Iterate on a PRD first, then tell the LLM to write the code in one shot.

Adopting a new workflow induces cognitive strain because it requires extra supervision. And it requires willpower to not just do things the old safe way. It’s exhausting.

So the destabilization is three things. First, the pure sensation of doing something with a new, startling ease. Second, the knowledge that I can put in ten minutes or an hour or two and get significantly faster at building software. Third, my methods and working life are changing every day.

With gains like that to be had, why wouldn’t I do it all the time? Stay up later. Get up earlier. Watch AI programming game tape with lunch. Spend an hour learning rather than working, then make up the loss in the same day.

There’s also a problem. There is so much information. Every day is a deluge of new tools, techniques and streams. Which ones are worthwhile? I have a long list of stuff I’ve been meaning to try, that seems promising, that worked and I feel I should be doing more. Sometimes I’ll watch a forty-five minute YouTube video of someone vibe coding and it’ll be useless. Other times, I’ll skip forward and hit a nugget so juicy that I’ll become terrified I’m missing these sorts of things all over the place. Sometimes a technique will seem unpromising but, several hours in, will click.

For this, at least, I’ve found something of a solution. When you’re in a fast-changing environment with high uncertainty, what do you do? Well, Civilization, the video game, is a good guide. You explore, expand, exploit.

You spend a good deal of time exploring widely. Things are changing rapidly and there’s a lot to learn. Many explorations will be fruitless and that’s totally fine.

When you find something good, you expand your technique to incorporate it. Did you hear about an obviously useful tool? Install it! Have you been refactoring your code to make it easier to change? Do it!

And when something’s working, you exploit it as much as possible. It’s easy to learn a cool new technique then forget to use it. Don’t. Instead, bring it back.

I keep a list with these three categories. Explore, expand, exploit. And I spend some time on each.

It’s something to cling to.