Sign in

Jake Lundberg

@jakelundberg.dev
102 followers 126 following 771 posts

Engineering Manager @ Greenplaces. I write about software delivery risk and shipping software that doesn't blow up. Building Merge Lantern, so you know which PRs need senior eyes before they merge. mergelantern.com/?utm_source=bluesky · jakelundberg.dev

PostsRepliesMedia
Jake Lundberg @jakelundberg.dev · 26/08/2026
AI is like a teenager. Maybe they'll follow the rules...maybe they won't
000
Jake Lundberg @jakelundberg.dev · 09/08/2026
i vote we hire Tim Burton to do a reboot of Tales from the Crypt. who’s with me?!
010
Jake Lundberg @jakelundberg.dev · 18/07/2026
so apparently the police don’t allow people to file Protection from Abuse (PFA) requests until the weekdays…🙄
000
Jake Lundberg @jakelundberg.dev · 04/07/2026
nothin like a little Mario Kart 64 out in the front yard with the neighbors
000
Jake Lundberg @jakelundberg.dev · 02/07/2026
a founder never feels "tech debt." it's engineer-speak. what they feel is the checkout down at peak, or the senior who just quit. half of getting buy-in to fix it is translating the cost out of engineer terms into the thing they already lie awake about. it's a skill plenty of us are still learning.
000
Jake Lundberg @jakelundberg.dev · 02/07/2026
the two ways to fail as a new EM are opposites: become an IC with extra meetings, or vanish into calendars with no technical air cover. but they aren't equally likely. the gravity only pulls one way, back toward the keyboard, because that's where the fast feedback is.
000
Jake Lundberg @jakelundberg.dev · 02/07/2026
"Reduce friction" is half a sentence. Two kinds. Accidental friction...env setup, hunting for docs, chasing permissions...kill it, no argument. Essential friction...the "wait, should we?" before you touch auth or billing...that's the cheapest insurance you have. The skill is telling them apart.
000
Jake Lundberg @jakelundberg.dev · 01/07/2026
"I'll just build it instead of paying $29 a month" wins almost every argument, for one reason: the ops cost never shows up as a line item. the build is visible. the years of owning it aren't. so it always looks cheaper than it is. you didn't save $29...you hired yourself.
000
Jake Lundberg @jakelundberg.dev · 01/07/2026
"keep criticism private" is right for the person and wrong for the work. critique of someone, always private. critique of the idea has to happen out loud, or you quietly teach the team that challenging anything is rude. you can protect people without making the work un-challengeable.
000
Jake Lundberg @jakelundberg.dev · 01/07/2026
a paved road is a risk sorter. automate the common path and the 80% that stays on it is probably fine...not guaranteed, just better odds. which means almost all your real risk now sits in the 20% that left the road, the novel work with the least automation around it. point your attention off-road.
000
Jake Lundberg @jakelundberg.dev · 30/06/2026
a PR that has sat as a "draft" for 25 days with failing CI and no activity is not work in progress. it is a stale PR wearing a draft label as camouflage. draft is a status someone set once, not proof the thing is still being worked on.
000
Jake Lundberg @jakelundberg.dev · 30/06/2026
you can tell within weeks which new manager you got. the ones who show up certain they already know what's broken...everything feels on fire. the ones who show up asking questions, things just run smoother. the team always knew the real problems. listening was the only thing that unlocked them.
000
Jake Lundberg @jakelundberg.dev · 30/06/2026
everyone says the boring layer is a moat because AI fumbles it. that's not quite it. deploy, data, migrations, security...that's where risk actually concentrates, so it's where ownership and judgment matter most, because it's where things break. boring is a moat because it's where the risk lives.
000
Jake Lundberg @jakelundberg.dev · 29/06/2026
Startups list a dozen traits they want in engineers...comfort with ambiguity, self-direction, speed over perfection. They're all the same trait wearing different hats: can you make a good call when nobody hands you the call. Judgment in the absence of instruction. That's the whole job.
000
Jake Lundberg @jakelundberg.dev · 29/06/2026
nobody drifts toward more management. new managers slide back to code because it has a fast feedback loop...it compiles, it ships, you did something today. management's payoff is slow and murky, so you retreat to what pays off by end of day. balance isn't a point you find, it's a pull you fight.
000
Jake Lundberg @jakelundberg.dev · 29/06/2026
line count tells you how long a PR review will take, not how much damage the change can do. a 2,000-line refactor is a long read. a 200-line change in billing or a migration is a blast radius. keeping PRs small is certainly helpful, but it's not a silver bullet to reducing risk.
000
Jake Lundberg @jakelundberg.dev · 28/06/2026
you can model "I don't know" all day. doesn't matter. the first time someone gets burned for admitting they were lost, the whole team learns to go quiet for months. safety isn't saying you value it. it's never once punishing it.
000
Jake Lundberg @jakelundberg.dev · 28/06/2026
writing made me a better engineer, not just a more visible one. you can't explain a messy idea simply until you actually understand it. forcing yourself to write it down clearly is the same muscle as shipping a small PR...you have to understand the shape of the thing before you can make it small.
000
Jake Lundberg @jakelundberg.dev · 28/06/2026
wow, they made a lot of Saw movies 🍿
000
Jake Lundberg @jakelundberg.dev · 28/06/2026
most decisions stuck in "pending alignment" for weeks are reversible. that's the part everyone forgets. you can ship the simple 80% version behind a feature flag, see if it's on track, and kill it if it's not. planning paralysis is usually a reversible decision treated like a one-way door.
100
Jake Lundberg @jakelundberg.dev · 27/06/2026
fighting the code teaches you how systems break. owning what you shipped and getting burned teaches what's worth protecting. AI mostly takes the first away. the sneaky risk is it takes the second too...code shipped so fast nobody really owns it, so neither lesson ever lands.
020
Jake Lundberg @jakelundberg.dev · 27/06/2026
"fire fast, attitude over talent" is dangerous in the wrong hands. a leader who isn't good at healthy conflict can't tell a toxic person from a valuable one who pushes back. so the slogan purges the dissenters. firing fast is easy. telling toxic apart from uncomfortable is the real skill.
110
Jake Lundberg @jakelundberg.dev · 27/06/2026
Last week I showed my risk filter flagging a dark-theme CSS change as touching auth, billing, and secrets. Wrong, for a dumb reason...it decides what's "sensitive" by matching file paths against sensitive-sounding names. So how should it actually know? 🧵
100
Jake Lundberg @jakelundberg.dev · 27/06/2026
"nobody's buying it" is two completely different problems wearing the same face. one is "they don't want it." the other is "they don't know it exists." marketing only fixes the second...if nobody wants the thing, better distribution just helps more people find out faster.
110
Jake Lundberg @jakelundberg.dev · 26/06/2026
alert fatigue is silent failure wearing a different mask. instrument everything and the one alert that matters gets scrolled past with the other 200. nobody saw it break...not because it was quiet, because it was buried. too loud and too silent lose the signal the same way.
110
Jake Lundberg @jakelundberg.dev · 26/06/2026
moving fast tells you "if quality slips, we fix it next sprint." that works for the misses you can see. the dangerous ones don't wait for next sprint though...they show up as an incident, on their own schedule. the corner you cut and the bill for it rarely land in the same week.
000
Jake Lundberg @jakelundberg.dev · 26/06/2026
a feature flag's default flipped a dead feature back on, and we didn't catch it...a user did. nothing was watching for a code path that hadn't run in a year suddenly running. you don't need much. just something that raises a hand when dormant code wakes up.
000
Jake Lundberg @jakelundberg.dev · 26/06/2026
this is super cool, a digital bookstore you can actually “walk around” and discover books like you do in an actual store 😍📚 comparisontabl.es/3d-bookshop
comparisontabl.es
3D Bookshop
Browse and read books in an interactive 3D bookshop.
122
Jake Lundberg @jakelundberg.dev · 25/06/2026
the clearest signs of real engineering discipline live at the edges of the work. how did a team decide to build this at all? and after shipping, did they check how it got used and iterate? clean code is cheap now. the decision going in and the follow through coming out are the hard parts to fake.
000
Jake Lundberg @jakelundberg.dev · 25/06/2026
1/ Someone on my team deleted a feature flag that had been off for over a year. It looked completely safe to remove. It turned a feature back on. How "cleanup" became an accidental deploy 🧵
100
Jake Lundberg @jakelundberg.dev · 25/06/2026
watched a junior i mentored years ago go from second guessing everything to fully trusting their judgement. most of that shift is evidence...they make calls, the calls work, the proof stacks up. but not all of it. it's a lot easier to trust yourself when someone you respect already trusts you first.
000
Jake Lundberg @jakelundberg.dev · 24/06/2026
The "safe" engineering choice is often the riskier one. Weeks of dual writes, backfills, and cutover machinery is a huge pile of moving parts, each one a place to be wrong. Sometimes a planned 10-minute lock is genuinely lower risk. Complexity you added to avoid risk is still risk.
000
Jake Lundberg @jakelundberg.dev · 24/06/2026
"make it work, make it right, make it fast." everyone warns about jumping to "make it fast." but the step that actually gets skipped is "make it right." it works, it ships, the team chases the next thing, and "right" never comes. shipping it half-done is the quiet killer, not optimizing too early.
000
Jake Lundberg @jakelundberg.dev · 23/06/2026
you catch quiet disengagement by watching the person's delta. the person who always pushed back suddenly going quiet is the signal...and it causes zero problems for weeks, which is exactly why managers miss it. we're trained to triage noise, not to notice silence.
000
Jake Lundberg @jakelundberg.dev · 23/06/2026
"why pay $29/month when i can build it?" the $29 was never for the build. it was for someone else owning the wiped database, the security hole, the 2am page...forever. build it yourself and you don't save the money. you just become the vendor for something that isn't even your product.
000
Jake Lundberg @jakelundberg.dev · 22/06/2026
being willing to ruin someone's day with a hard truth matters. but it's only half the job. what makes that truth land as care instead of an attack is whether they already trust you're in their corner. the same hard words land completely differently depending on the trust you built beforehand.
000
Jake Lundberg @jakelundberg.dev · 22/06/2026
deleting a feature flag doesn't delete the feature. it hands the decision to whatever your code falls back to when the flag is gone. years ago we deleted one that had been off for a year...the code defaulted to true, and a dead feature switched itself back on. "cleanup" was a deploy.
000
Reposted by Jake Lundberg
Steve Gray @stevegartist.bsky.social · 21/06/2026
1594
Jake Lundberg @jakelundberg.dev · 20/06/2026
how much autonomy you give an AI agent shouldn't be a label you pick when you write the plan. it should track the blast radius of the actual change. the diff that bites you usually looks boring...config only, CI green, so it gets a merge it never really earned
010
Jake Lundberg @jakelundberg.dev · 19/06/2026
I have a new found respect for new founders. the time it takes to not only build the product, but to also handle marketing, user research, and sales is crazy!
000
Jake Lundberg @jakelundberg.dev · 19/06/2026
an LLM won't stop and ask what a good senior asks before writing anything...is this the right approach for where this is heading? what cheap groundwork should we lay now while it's simple? it just builds what you asked, scoped to today. the forward-looking judgment has to come from you now
000
Jake Lundberg @jakelundberg.dev · 19/06/2026
slow builds did quiet work nobody credited them for. shen writing code took real effort, you'd feel a bad design halfway in...this is dragging, the abstraction's wrong, back up. the build was a brake on bad decisions. AI took the brake off, so now you can build the wrong thing fast and all the way
000
Jake Lundberg @jakelundberg.dev · 19/06/2026
TDD protects the moment a test is born. writing the test first genuinely constrains the code...you can't ratify what isn't written yet. but the next update edits them to match the new behavior, and you're back to a test that ratifies the change instead of guarding against it
000
Jake Lundberg @jakelundberg.dev · 17/06/2026
teach your juniors that "i don't follow why this works" is a real code review comment, maybe the most useful kind. confusion is signal...it flags code that might be too complicated, and it opens a teaching moment. juniors stay quiet because they think review means catching a senior's mistakes
000
Jake Lundberg @jakelundberg.dev · 17/06/2026
even in crunch i keep at least 30 minutes a week with each person on my team, no matter what's on fire. it's not a reward for a calm week...it's the first thing i protect, because support doesn't get impossible under pressure, it just quietly stops being a priority
000
Jake Lundberg @jakelundberg.dev · 17/06/2026
the best interview signal i've found is whether they can go "off script" or not. someone who actually knows the work can have a real conversation about it. someone who memorized it falls apart the moment you ask a follow up that's not a "standard" interview question they didn't prepare for
000
Jake Lundberg @jakelundberg.dev · 16/06/2026
AI didn't kill the way juniors learn in code review. that loop was already weak. by the time comments land, the dev has moved on, they've got a dozen PRs open, and most feedback is "do it this way" with no why. AI just made it obvious the loop was barely running
000
Jake Lundberg @jakelundberg.dev · 16/06/2026
under a tight deadline, the first work to get cut is the work whose absence doesn't show up in a demo. tests, edge cases, "what happens when this fails" thinking. nobody decides to skip it. you just can't see what you didn't do, so it quietly loses every time the clock is the constraint
000
Jake Lundberg @jakelundberg.dev · 16/06/2026
"Just have someone familiar with the code review it" assumes familiarity is fixed. It isn't...it fades over time the code you wrote six months ago is effectively someone else's code now. a familiar reviewer is a moving target, not a permanent property of a person
000
Jake Lundberg @jakelundberg.dev · 16/06/2026
you add a feature flag swearing you'll remove it later. the removal goes on a branch, tucked out of the way. that branch is now exactly as forgettable as the flag was. "out of the way" is just "out of sight" with better branding...and out of sight is how both of them rot. how do you prevent this?
000