Anthropic's own data: junior tech hires dropped from 27% to 9% in a year.
Meanwhile, software job postings are up 15%.
So AI isn't killing engineering jobs.
It's killing the entry door.
If nobody hires juniors today, who becomes the senior engineer in 2030?
Vibe coding gets you to v1 in a weekend.
Then production asks:
• What happens at 10x traffic?
• Why is the API key in the frontend?
• Where are the backups?
AI writes the code.
Someone still owns the 3 AM page.
Who's on call for your vibe-coded app? 💀
AI coding agents are great until one runs `rm -rf` on files Git never tracked.
unwreck is Ctrl+Z for Claude Code, Codex & Gemini CLI.
Local snapshots of your whole working tree (untracked files included). One command rolls back the last turn.
⌘ cargo install unwreck
No cloud. No .git changes.
Check it out: https://t.co/thHcXe8aAV
Dependency bumps: the scariest PRs with the smallest diffs.
One version number changes.
Thousands of lines of someone else's code changed under you.
That's why I'm building Verspect: see what an upgrade actually changes before you merge it.
How do you vet upgrades today?
Added an index. Query still slow.
Usual suspects:
• Composite index, wrong column order
• A function on the column: WHERE LOWER(email) = ...
• Leading wildcard: LIKE '%abc'
• Stale stats → bad query plan
Run EXPLAIN before you guess.
Which one got you?
Exactly. Observability turns ‘we can roll back’ into ‘we’ll know we need to within minutes.’
One practical add we use: pair the 15-min check with a canary or feature flag so the blast radius stays small even if the alert is imperfect.
Makes the two-way door actually two-way. Great thread.
AI code review can turn into a slot machine.
Pull → new nitpicks. Pull again → more.
What keeps it sane:
• Define "done" upfront: tests pass
• Fix only critical findings
• Review with a different model than the author
• Cap it at 3 rounds
What's your stop rule?
@iamvishal16_ios Glad that resonates, untracked files are the exact case I built it for.
If you try it, a ⭐ and any feedback on the repo would help a lot while it's still early:
https://t.co/kzYqZxAFsU
1/
AI coding agents are great, until one runs rm -rf on files git doesn't track.
So I built unwreck: Ctrl+Z for AI coding agents 🦀
unwreck undo and everything's back.
Open source, single Rust binary.
https://t.co/kzYqZxAFsU
PM: why is signup so slow?
Me: we send the welcome email, resize the avatar, and sync the CRM before responding
PM: and?
Me: moved it all to a queue. Respond first, work later.
PM: so you just... procrastinate?
Me: we call it async architecture 💀
@shade_ofc Cool… actually owning the invalidation problem instead of just documenting it.
How does the auto-caching + partition scoping decide what to invalidate on a write, and can you still force a fresh read when you need it?
Me: API is slow, let's add a cache
Week 1: responses are instant 🚀
Week 2: "why does my profile still show my old name?"
Week 3: me writing cache invalidation logic at 2 AM
There are only two hard things in CS and I'm failing both at once 😭
“Love the sticky-note framing. One small upgrade we’ve been testing: after the ‘pain + rollback’ check, ask ‘How will we know it broke within 15 minutes?’ If the answer is weak (no metrics, alerts, or easy verification), treat even a two-way door as a one-way until observability is added. Keeps the speed while reducing silent failures.”
This builds directly on the two-way/one-way idea without contradicting it, adds a practical filter most teams overlook with AI PRs, and stays concise and positive.
The failing test gate is solid. One upgrade that works even better for me: force the model to first output the exact sequence of side effects (payment captured → DB timeout → webhook redelivery) as a numbered list before any code, then generate the test that asserts the desired end state after recovery. If the list has any ambiguity, the test is useless.
Exactly. The senior engineer filter forces the missing context (deadlines, blast radius, reversibility) that models never see.
Quick version: after AI flags something, ask “If this ships and breaks, how painful and how fast can we fix it?”
Low pain + easy rollback → ship.
Data/money/auth → fix.
@AlexBedeleu Same exception here. For auth/payments/migrations I also want the AI to explicitly show the failure path + rollback, not just say “looks good.” Style comments get ignored after round 1.
What’s your practical way of forcing that targeted failure case from the model?
@dovrikson This is the cleanest filter I’ve seen. Once you force the model to name a specific input + the exact line + what the user actually experiences, most of the “nicer abstraction” comments evaporate. The remaining ones are usually worth doing.
@BenjianDai This is the right filter. We use almost the same rule, but add one more question: ‘Would a senior engineer have blocked this on a human review?’ If the answer is no, we ship. AI is excellent at surfacing real risks, but it has no sense of when something is good enough.
Good q. Untracked files are covered. Each snapshot copies the whole working tree into a store outside the repo, so git status doesn't matter. Catch: a file is only recoverable if it existed at a snapshot (every prompt and before each tool call). Adding a proper "what's recoverable" section to the README today 👍
It's built so it won't make things worse:
- never overwrites edits you made yourself after the agent's turn
- snapshots live outside your repo, so git clean can't wipe them
- about 27 ms per snapshot on a 10k-file repo when nothing changed
- macOS, Linux, Windows