Service / 08
Slow.
Messy.
Made sane again.
Senior freelance support for fixing slow apps, cleaning up risky codebases, and removing the technical friction that keeps delivery slower than it should be.

Service / 08 / Capabilities
What's covered.
Core Web Vitals fixes
LCP, INP, CLS, bundle size, render blocking assets, hydration issues. The work that makes real pages feel fast again.
Refactoring without the rewrite
Untangling risky areas of the codebase in stages. Safer than a big rewrite and easier to explain to the rest of the team.
Delivery bottleneck cleanup
CI friction, flaky tests, unclear boundaries, repeated manual work. I remove the technical drag that slows teams down every week.
Pragmatic audits
Not a 70-page report no one reads. A ranked list of the issues worth fixing first, with enough detail to act on immediately.

10+ years senior delivery
Why me
Senior delivery you don't have to project-manage.
Some teams need a new feature. Others need someone to make the existing system feel sane again. This work is for the second group — pragmatic audits, staged refactors, and measured improvements rather than a 70-page report no one reads.
- Pages feel slow even after basic optimization
- Codebase is messy but no one owns the cleanup
- New features take longer than they should
- Performance regressions keep coming back
- Team is avoiding fragile parts of the app
Engagement / Snapshot
A typical performance & technical debt engagement.
Lead time
<7
Days to start, contract permitting
Length
4-12
Weeks for fixed-scope work
Reply
<24
Hours, every working day
Day rate
POA
Quoted per engagement
FAQ / Performance & Technical Debt
Frequently asked
Q · 01
Do you only do audits?
No. I can audit first, but I usually stay to implement the fixes so the work actually lands.
Q · 02
Is this suitable for an existing team?
Yes. This is often most useful for in-house teams that need extra senior capacity to clear a backlog of hard technical work.
Q · 03
Will you recommend a rewrite?
Only if the current system is genuinely costing more to preserve than replace. Most of the time, staged cleanup is the better call.
How I work
Remote-first. Async by default.
Inspired by Remote and the way Basecamp ran a distributed team without burning anyone out. Meetings are expensive, writing is cheap, and momentum belongs to whoever can make a decision without a calendar invite.
01 / Specs
Specs before code
A short written spec covering problem, scope, and acceptance before anything gets built. Cuts rework, makes review easier, and means we never argue about what was agreed.
02 / Workstreams
Workstreams over standups
Active work lives in tickets and PRs with running notes. Async updates instead of daily standups, so deep work is the default and meetings only happen when they earn it.
03 / Loom > Zoom
Loom over meetings
Most reviews and walkthroughs go out as a 5-minute Loom you can watch at 2× when convenient. We jump on Meet / Zoom / Teams when the topic actually needs a conversation.
Channels / Tools
Slack
Async, threaded, no expectation of instant reply
Loom
PR walkthroughs, demos, design reviews
Google Meet / Zoom / Teams
Booked when conversation > writing
Linear / Jira / GitHub
Source of truth for the work
Notion / Docs
Specs, decision records, retros
Related / Other services
More ways I work.

The pitch
I write the code, talk to your team, and ship what we agreed. No agencies. No PMs. No surprises.
James Donnelly
Freelance developer · Manchester