Steps to become a senior programmer:
1. Install my /teach skill
npx skills add mattpocock/skills --skill teach
2. Create a new working directory on your laptop
mkdir junior-to-senior
cd junior-to-senior
3. Kick off your coding agent in the directory
claude
4. Copy this prompt
/teach me how to be a great strategic programmer. My opinion is that AI is eating 'tactical, on-the-ground' programming. The day-to-day work of a developer involves not only coding, but also planning, QA, codebase design, and much more. I'm interested in learning the strategic skills - that, in a previous era, would take me from junior to senior - but in this era are table stakes.
5. Paste it into the coding agent
Below is an example of what the first output will look like. I used Opus 4.8, medium effort.
6. Continue working with the agent until you're a senior
I am having so much fun building my own OpenClaw style assistant.
@badlogicgames Pi running in tmux, a loop that polls the Telegram Bot API, a tool to schedule crons and some clever prompting. This simple setup is all I need. Works so great for me.
I never would have imagined that I develop full apps from my Phone. Simple Apps but still.
Stack: Termux on my phone that connects via mosh to my mini-pc where Pi runs on a $20 ChatGPT subscription.
@lucasmeijer An idea I have yet not done: a dashboard on homelab.<tailnet> with links to each of my Apps and each App gets Served at a path, like homelab.<tailnet>/app1 and homelab.<tailnet>/app2
@lucasmeijer Is that a Deal breaker for you? I am heavily using tailscale for just-for-me webapps and each one has a different port. I dont need to remember port, my browser history helps me with that.
lots of folks have been talking about loops lately
most loops suck
here's a practical one we actually use
agents suck at writing react
react-doctor by @aidenybai is our favorite way to deal with this
you could run it and use a ralph loop to fix everything
but I'm not reading a +80k/-80k PR (and neither is @dexhorthy)
But I can read a small one first thing every morning when i get into the office
here's what we do:
run react-doctor in CI once daily at 7am (github actions-as-a-sandbox btw)
agent picks top 5 issues, fixes them, and opens a PR
other CI jobs check for regressions on every PR
we can't realistically fix everything at once
but we can keep it from getting worse
and make it 1% better every day
lots of folks have been talking about loops lately
most loops suck
here's a practical one we actually use
agents suck at writing react
react-doctor by @aidenybai is our favorite way to deal with this
you could run it and use a ralph loop to fix everything
but I'm not reading a +80k/-80k PR (and neither is @dexhorthy)
But I can read a small one first thing every morning when i get into the office
here's what we do:
run react-doctor in CI once daily at 7am (github actions-as-a-sandbox btw)
agent picks top 5 issues, fixes them, and opens a PR
other CI jobs check for regressions on every PR
we can't realistically fix everything at once
but we can keep it from getting worse
and make it 1% better every day
Creator of Sqlite on pull requests: "You say, oh, it's free. No. It's not free. What you're doing is asking me ... to maintain it for you, to to document it for you, to test it for you, to maintain it for you for the next 25 years. That's not free." Yep.
Wise words from a wiser man than me. I've told people for the past decade and I have recent posts on here saying the same: the merge button is the easy part. Its the decade+ (Richard says 25 years) that follows where you've accepted the transfer of maintenance thats hard.
there's a new word i'm hearing a lot in the most frontier-pushingest coding-agent builders:
_program design_
for even the best agentic coders trying to maintain code quality, we've all seen it
- you come up with something to build
- you research the codebase, riff with the agent, align on what the end state looks like
- you (or the agent) breaks it down into tasks for individual agents / context windows
- you rip the implementation
- the code works or is close to working - and it follows your spec to the letter
but the code itself is still trash
- poorly factored methods
- leaky abstractions
- tramp data
- overloaded interfaces
- try catch, useEffect, global variables everywhere
I thought models would catch up, or that this wouldn't matter - that if we stayed in spec-land, understood the high-level architecture, and tokenmaxxed hard enough, we would be able to skip code review and just stay shipping
doesn't seem to be working out that way
I have seen agent-owned codebases spin up out of nothing...
...and I have seen them collapse into rubble within 6 months
now there's something to be said about "skate where the puck is going"...
...and I can't tell you what tomorrows models will be capable of
but I *can* tell you that *today*, models are mid-to-bad at program design
you can solve some of this with memory / agents.md, but the scope of program design is massive.
- entire companies have been built to help you implement it
- books, classes, and professions have spun up around it
are you building something to last? Or are you slinging more slop on the pile?
anyways, thats the post, stay tuned for a fun announce tomorrow y'all 🙂
Your sign to use Codex on medium thinking, you'll be able to run 4x the loops compared to xhigh and 2x compared to high.
Each jump costs 2x more in output tokens
My heuristic is that any diff an agent generates over ~1500 lines is too big and is indicative that the problem needs to be decomposed. This is my general pattern now for feature work:
1. Try to implement the whole feature, loosely guided. I call this the "draw the owl" prompt in reference to the meme. Expect garbage, you're going to get garbage.
2. If the diff is less than 1500 lines, review it and iterate normally. If the diff is more than 1500 lines, prompt the agent to decompose the problem into atomic, incremental, reviewable tasks. Simultaneously, do this yourself.
3. Agents will very often make these tasks way too specific to the shape they solved. You need to massage it into the right general shape. Do that.
4. Kick off new agents to work on those incremental things (as parallelized as possible). Apply the same rules.
5. At a certain, point, repeat the "draw the owl" prompt. At some point, you will get beneath your review-ability threshold.
This has been producing consistently high quality, maintainable, reviewable chunks of code that have a good handoff to either merge as-is or human refinement.
And with the latest frontier models at xhigh thinking, these are all slow enough that you can usually have multiple going concurrently while you are actively reviewing others or working on your own tasks.
HITL (human-in-the-loop) agents are still super important, especially for feature work. Features touch the human boundary in terms of UI, API, etc. And net new stuff can introduce pathologies in the architecture that violate desired invariants (these should be represented in specs or tests but we aren't perfect!).
I know a lot of the leading edge agentic discourse is about "loops" and agents driving agents continuously. I do some of that (will report on that later). But, in terms of raw daily get-shit-done type of work, this is my most rewarding pattern at the moment.
The problem with the "if it works who cares what the code looks like" mindset for agentic work is that it assumes the agent has a perfect understanding of "works." Realistically, things are underspecified, agents make bad assumptions, etc.
To be fair, agents are pretty good at unit test coverage. They're pretty bad at designing human experiences (API, CLI flags, etc.), especially cohesive ones for future roadmap plans they may not have visibility into (unless your backlog is perfect and vision fully laid out, which I doubt). They're bad at knowing where performance matters and what type (CPU vs memory tradeoffs). They're bad at where compatibility matters and where it doesn't (and tend to err on the side of preserving it without further guidance). Etc.
Unless you have this ALL specified, you can't possibly claim "it works" without taking a look and thinking about it.
Matthew McConaughey reveals how letting one car merge in traffic gave him a neighbor watching his house for life
"Two-lane highway, traffic jam, moving 5 mph. A lady was waiting to get in. Everyone wants to get forward as quick as possible. I slowed down, let her in"
"15 minutes later, I'm right behind her. As I approach my house, she pulls in the driveway right before me. I get out - it's my neighbor"
"I didn't know it was my neighbor. But I got somebody watching over my house from now on because I let her in. Did I do it hoping to get a neighbor on my side? No. Did I get an army on my side? Yeah"
if only vetted institutions (big labs, governments, large enterprises) get unrestricted frontier capability, especially for AI research itself, those players compound their lead while everyone else works with a capped tool. The gap becomes self-reinforcing