What Does "Pedal Assist Coding" Mean?
In Which the Author Explains Why Programming Is Like Riding a Bicycle, And Not Just Because You Skin Your Knee From Time to Time
My guess is that many people encountering this newsletter will be a bit confused by its title, even if they recognize what "pedal assist" means more generally. In this case, "pedal assist coding" is how I think of my philosophy of using coding agents: they should make programming easier for programmers, not replace programmers outright.
This thinking was triggered by Dan Shapiro's post, "The Five Levels: From Spicy Autocomplete to the Dark Factory". There, Dan uses autonomous driving as the analogy, with levels of coding agent adoption:
- Level 0 = Spicy Autocomplete = car is manually driven with AI-supplied information
- Level 1 = Coding Intern = lane-keeping and cruise control
- Level 2 = Junior Developer = Tesla Full-Self Driving... if it actually worked
- Level 3 = Developer = Waymo, with a safety driver
- Level 4 = Engineering Team = robotaxi, without a safety driver
- Level 5 = Dark Software Factory = it's no longer really a car
Dan thinks that Level 5 "will likely be our future", and I sure as 💩 hope that is not the case.
The Ghost Motor in the Machine
I suspect that many people have limited experience with higher levels of autonomous driving, and I did not really care for that analogy for other reasons. It did however cause me to think of an analogy that I like better: bicycling.
Bicycles have been around longer than cars. And, for the vast majority of their history, bikes all worked pretty much the same way. The rider uses pedals to turn a crank, which is connected by a chain or belt to a gear attached to a wheel. Turning the pedals turns the gear, which turns the wheel, which propels you forward. There are lots of fiddly details involved (more than one front chainring? how many gears in the cassette? is it a handcycle, with pedals turned by hands?), but in the end it is human power that makes the bike go.
As battery power-to-weight ratios improved and prices fell, e-bikes became more practical. Roughly speaking, there are two main types of e-bikes:
- Some e-bikes use a throttle to control the motor. The motor helps drive the wheel, regardless of whether the rider is pedaling or not. How fast the bike goes is limited by the power of the motor and what throttle level the rider chooses, though the rider's pedaling action (if any) can also contribute.
- Other e-bikes have motors that are tied to the use of the pedals. As the rider turns the pedals, the motor supplies additional power to supplement the human-supplied power from the pedals themselves. The rider can choose that level of assistance, but as soon as the rider stops pedaling, the assistance drops to zero. Once again, there are details to be hammered out (does the motor provide assistance based on pedaling cadence, applied torque, or something else?), but in the end it is human power plus motor power that makes the "pedal assist" e-bike go.
In both e-bike scenarios, the rider has to work less. To me, the primary difference is what the riding experience is like. A throttle e-bike does not require the use of pedals, and so riding one is going to feel like riding a light-power scooter or motorbike. By contrast, a pedal-assist e-bike still retains all the conventional experience of a classic ("acoustic"?) non-motorized bike. It just feels like you have a continuous tailwind helping to push you along, so long as you are actively pedaling.
I just got back from a short vacation to Death Valley in California, where I used a pedal-assist e-bike to get around. I elected to keep the motor off for most of the 95 miles that I rode, but I used it at varying levels on steep climbs and on one 19-mile segment into a significant headwind. The entire trip, I felt like I was riding a bike... it just was a bit easier in spots.
Coding Agents as Motors
In effect, a coding agent is a motor for your programming experience. It is doing work that you would otherwise have to do yourself.
To me, the primary question then is: what does programming feel like with the motor?
Those who are using "agent swarms" and lots of parallel work on Git worktrees are trying to massively change the programming experience. To me, that is akin to riding an e-bike with a throttle and a powerful motor. Go far enough, and eventually it stops being a bicycle and turns into an e-motorbike, where perhaps you no longer have pedals that you can operate yourself.
Personally, I suspect that this approach is doomed in the medium term, as I expect the era of cheap frontier LLM access will come to an end, and this approach will become too expensive for most organizations. Even while it is still practical, though, I suspect that I would not like the feel of the experience. Maybe it is because I am old (👴🏻).
Instead, I am trying to assemble a coding agent environment that is still programming, just with a lot of help. So, no massive parallelization, not many agents, etc. I will accept that a higher percentage of my time is doing the equivalent of "PR reviews", reviewing the work of agents before committing those changes to a repository. I just want to feel like I am contributing to the programming, and am not just being some combination of architect and manager. And, I want to feel like my motor is working for me and not against my interests (regarding ethics, security, etc.).
This newsletter will chronicle my journey. Follow me! But, please, remember to wear a helmet.
Add a comment: