In September, I got the chance to pair program for two hours with the legendary Steve Yegge, where I learned what he calls “CHOP, or chat oriented programming,” and built something that I’ve wanted to build for nearly a year.
I learned how to use a coding assistant to level up in ways that I couldn’t quite imagine before.
Many of you have seen the video excerpts I’ve made of videos and podcasts of talks I’ve loved — here’s the first one that I created of the famous Dr. Erik Meijer (@headinthebox), where he talks about how we might be the last generation of developers to write code by hand, and that we should have fun doing it.
Where did the tool to generate those video excerpts come frome? During that two-hour pair-programming session with Steve!
We recorded that session — and I created a series of “highlights reels,” where I show the prompts that I used (coached by Steve) to create the app, and the lessons learned along the way.
I can’t think of a better way to level up my skills. Dr. Anders Ericsson, renowned for his research on expertise and deliberate practice, wrote the fantastic book “Peak,” where he identifies key elements to acquire new skills and achieve mastery, such as learning to play musical instruments, play sports, and practice medicine. Those elements are:
Expert coaching: you learn best when guided by an expert (that’s Steve!)
Fast feedback: you learn best when you get immediate, actionable feedback, so you can identify and correct errors quickly, and reinforce positive behaviors (check!)
Intentional practice: you learn best when focusing on specific tasks (let’s CHOP more, as opposed to manually typing out code!)
Challenging tasks: you learn best when you tackle tasks slightly beyond your current abilities (check!)
I can’t overstate how much I learned during the two hours — what follows in this thread are some introductions, a statement of goals, and then segments from the approximately 50 minutes required to build the code that uses ffmpeg to generate video excerpts, with transcribed captions.
It was fascinating to re-watch the recording — I’ve watched it in its entirety several times, which I found wildly entertaining. But I wanted to see if I could extract the lessons, so people wouldn’t need to watch the entire 90-minute video.
I put into the video captions that describe what is going on, with any prompts I’m giving to Cody / Claude, so you could follow along, as well as other insights or lessons learned.
(Also in the lower-right corner is a timer that shows the elapsed time — I was astonished to discover that, with Steve’s help, we had gotten the video extraction working in about 47 minutes. The remainder of the two hours was learning the tools, chit-chatting, joking around, etc.)
Among the lessons learned:
my prompts were too tactical and unambitious in the beginning — Steve encouraged me to “type less, and lean on the LLM more.”
despite Steve saying that the tools fully supporting CHOP still being a long way off, you’ll see that the interaction model is very evident — give the LLM the relevant context, ask it to build or modify something for you, and ideally, it’ll appear in place, or it’ll be something you can copy/paste into your code base.
a key skill in working with LLMs is breaking things down in order to make steps more concrete — or as Steve (and many Clojure programmers) like to say, you reifiy things to make it more easily solvable for the LLM
another technique is the “try it again,” but lots of human judgment is required here. Sometimes this will work, and other times, you’ll be iterating in circles, never getting closer to your goal
Here’s the introduction that Steve and I made, describing how we met, how it resulted in his amazing “Death of the Junior Developer” post, how he spoke at the Enterprise Technology Leadership Summit in August, and what we tried to build in two hours.
コメント