Technical
The New Year Audit I Run on My Own Codebase
Most founders start January with goals. I start January with an audit. Before I set a single objective for the year, I run the same seven-step review on every codebase I own. It surfaces technical debt before it compounds and it tells me which projects deserve investment and which should be retired. This year the audit retired two side projects I had been carrying out of habit.
The Seven Checks
- Dependency freshness: what is more than a year behind?
- Test coverage: did it drop in Q4?
- Error logs: which errors are silent and recurring?
- Deployment cadence: is anything stale for 60 days?
- Cost per repo: any surprise AWS or Vercel bills?
- Documentation: can a stranger run it locally?
- Contribution map: what did I actually touch last year?
How I Score It
Each check is a one to five rating. A repo below 20 total points is a retirement candidate. A repo above 30 is healthy. The middle band is where most projects sit and where most time gets wasted. The scoring is not precise. It is a forcing function to compare projects side by side.
# Quick dependency freshness check
npm outdated --long
pip list --outdated
# Error log scan for the last 30 days
aws logs filter-log-events --log-group-name /aws/lambda/prod --start-time $(date -v-30d +%s)000The Retirement Conversation
Retiring code feels wrong to most founders. It is the most profitable decision you will make this year. Every zombie repo you keep online consumes mental space, security surface, and renewal fees. The sunk cost fallacy hits especially hard on code you built yourself. Write the retirement announcement before you decide, and see if you can defend keeping it afterwards.
What I Found This Year
Two side projects failed the audit. I archived both and redirected three hours a week to client work. That is 150 billable hours recovered by a half-day audit. One of the retired projects had been generating exactly zero revenue for eighteen months but was consuming roughly twenty hours a month in maintenance and worry.
Automating the Audit
The GitHub REST API makes automating most of these checks trivial if you want to script the ritual rather than run it by hand. I keep a small Python script that pulls last commit, open issues, dependency status, and CI status across all my repos into a single CSV. That CSV is the input to the scoring spreadsheet.
The Habit That Sticks
I block the first workday of January on my calendar for the audit and I do not let meetings take the slot. Making the ritual sacred is how it keeps happening year after year.
RELATED READING
The Consulting Shift I Am Making In Year Two
After a year of writing and building, my consulting practice is changing shape. Shorter engagements. Sharper outcomes.
ReadThe Frontend Shift: Shipping Less JavaScript In Year Two
A year ago I reached for Next.js for everything. This year I often reach for nothing.
ReadThe Serverless Lesson I Would Write On A Sticky Note
After a year of shipping serverless projects, one rule explains most of the wins and all of the losses.
Read