background-shape
2023 Year-End Retrospective, What I Learned, What I'd Do Differently
December 28, 2023 · 9 min read · by Muhammad Amal programming

TL;DR — 2023 was the year my work shifted decisively from coding to context / writing became more central than I expected, and meetings less / the biggest miss was waiting too long on hard people conversations, the biggest win was investing in discovery rituals.

It’s the last week of the year, the time of year I find quietest and most reflective. Most of my clients are off, my team is on a thin schedule, and I have the rare luxury of a long uninterrupted thinking week. I use it the same way every December: I pull up my notes, my journal, my decision log, and I write a long retro for myself. This post is the public version of that retro — a bit cleaned up, a bit more structured, but the substance is the same things I’d write to myself anyway.

This is the last post in my December leadership series. The previous eight covered specific practices — the tech lead transition, consultative discovery, team topologies, RFCs, decision logs, event storming, and LLM tooling. This one zooms out. What did I actually learn, what did I get wrong, and what am I taking forward.

A note on format: I’m leaning into the personal here. Less of the standard structure I usually use, more reflection. If you came for tactics, the eight posts above are denser. This one is the meta.

What 2023 Actually Was, Underneath the Headlines

The headlines for 2023 were obvious — LLMs everywhere, layoffs, the macro slowdown, the Twitter-to-X transition, Kubernetes “boring is good” maturity, Rust crossing more thresholds in production usage. They mattered, but for me they weren’t the year’s main story.

The story underneath, for senior engineering work, was something quieter: the value of judgment went up. With cheaper code production (via LLMs), cheaper infrastructure (mature platforms), and a tighter macro environment that punished low-conviction work, the binding constraint became “are we doing the right thing, in the right order, for the right reasons.” That’s all judgment. That’s all what senior engineers and tech leads are supposed to be doing anyway. The macro environment made it more legibly important.

Concretely, I saw this play out as:

  • Clients asking for fewer but better-scoped projects
  • More appetite for proper discovery, less appetite for fast moves on unclear briefs
  • Internal teams investing in decision quality rather than just decision speed
  • A return to writing — RFCs, ADRs, decision logs — as the artifact through which judgment is exercised

I find this a healthy direction. The first decade of my career often felt like a fight to be allowed to do discovery and write things down. In 2023, the fight got noticeably easier, mostly because the cost of doing it wrong had become more visible.

Wins (Honest)

Investing in discovery rituals. I started 2023 with a vague feeling that I should “do more discovery.” I ended it with a four-phase framework, a reusable questionnaire, and event storming as a default workshop format. I wrote about all of this in the December series. The compounding from this was significant — projects I scoped in Q4 went much more smoothly than projects I scoped in Q1, because the upfront discovery investment was real rather than rhetorical.

Writing more. I produced roughly 3x the written artifacts in 2023 vs. 2022 — RFCs, ADRs, decision logs, public posts, internal memos. Some of this was LLM-assisted (first drafts), most of it was just deciding that writing was the work, not the overhead. The leverage from this is hard to overstate. A document I wrote in February was still being referenced by a team in November.

Sticking with one major client through a hard period. Without naming details, I had a client engagement go sideways mid-year — wrong priorities, wrong scope, wrong sponsor. The easy move was to bow out cleanly. I stayed, helped them reset, and we shipped something genuinely useful in Q4. The relationship is stronger for it. I learned that “leave gracefully” is overrated as a default response to friction; sometimes the friction is the work.

Saying no more often. I declined more work in 2023 than in any previous year. Some of it I’d have taken in 2022. The declined work was almost without exception the wrong fit — unclear scope, mismatched expectations, sponsor I didn’t trust. The discipline of declining gave me space for the work that actually compounded. Highly recommend, even when the calendar feels empty.

Misses (Also Honest)

Waiting too long on hard people conversations. This was my biggest miss, by a wide margin. I had two performance-related conversations in 2023 that I should have had three months earlier than I did. In both cases, the situation got worse during the months I avoided it, and the conversation when it finally happened was harder than it would have been earlier. I know this lesson. I keep relearning it. The mental tax of postponing is much higher than the tax of having the conversation. Note to self for 2024: timestamp the moment I first think “I need to talk to X about Y,” and commit to having the conversation within two weeks.

Underweighting compounding investments in observability. A system I helped scope in Q2 went into production in Q3 with adequate but not excellent observability. By Q4 we were paying for that, slowly — small mysteries, intermittent issues, debugging time that should not have been necessary. The marginal cost of better instrumentation at design time is small. The cost later is large. I knew this. I still under-invested. Lesson: when you catch yourself thinking “we’ll add metrics later,” that’s the moment to add them now.

Letting my own writing process get inconsistent. I started 2023 writing weekly. By July I was down to monthly. By October I was barely writing publicly. Restarted in November and the December series is the result. The lesson is structural — a weekly writing slot in the calendar, treated as un-cancellable, beats willpower. I’ll be more disciplined about it in 2024.

Not reading enough outside my immediate domain. I read a fair amount of leadership material, infrastructure material, and AI material. I read almost no fiction, no history, no philosophy. My thinking got narrower in measurable ways — analogies became thinner, references became thinner. The cure is mechanical: schedule reading outside the work domain, treat it like exercise.

What Changed in My Practice

Some specific changes that 2023 introduced to how I work, which I expect will persist.

Default to writing. Before a meeting, write down what I’d say. After a meeting, write down what was decided. Between meetings, write down what I’m thinking about. The cost is low, the leverage is high, and the practice of writing forces the rigor that conversation hides. I covered this in the RFC/ADR post, but it goes beyond RFCs.

Default to discovery. Before scoping anything non-trivial, run a discovery session. Use the four-phase structure. Use the questionnaire. Don’t trust the brief that arrived in your inbox. The brief is a starting point, not a contract.

Default to async. I covered this in the decision logs post. The default for status, updates, recaps, and most decisions is written. Synchronous time is reserved for 1:1s, hard conversations, and ambiguous problems. The shift made me much less tired by Friday and made the team much less dependent on me being awake.

Default to team-structure-first thinking. Before reaching for process or coaching, ask whether the team structure is right. Most “team problems” are structural, as I argued in the multidisciplinary teams post. Fix the wiring first.

Default to LLM-assisted exploration. When walking into an unfamiliar codebase or domain, reach for the LLM as a first pass. Not for production decisions, just for orientation. The orientation cost dropped significantly in 2023. I wrote about this yesterday.

What I’m Watching for 2024

Predictions are mostly wrong; intentions are mostly more useful. Here’s what I’ll be tracking and where I’ll be placing bets.

Agentic coding tools. I expect a step change in autonomous coding agents in 2024, though I expect them to be more useful for exploration and prototyping than for production code. I’ll experiment, but I won’t rebuild my workflow around them yet.

The cost of judgment continues to rise. As the cost of code production drops, the differential value of good judgment goes up. Senior engineering work becomes more clearly defined as “applying judgment to information” rather than “writing code.” Plan accordingly.

DORA-style metrics get more attention. The DORA reports continue to be the best source of evidence-based engineering practice (dora.dev). The 2023 report’s emphasis on developer experience and team well-being was correct, and I expect more orgs to take this seriously as the macro environment forces hard tradeoffs.

Boring infrastructure wins. Kubernetes is boring. Postgres is boring. Linux is boring. Boring is good. I expect the 2024 narrative to swing further toward “use boring things, save complexity for the actual product.”

Discovery becomes table stakes. I expect more orgs to formalize discovery practices in 2024. The cost of mis-scoping a project is now higher than it was in the cheap-money era, and discovery is the cheapest insurance against that mistake.

Personal Notes

A few personal things that don’t fit elsewhere but feel important to write down.

I traveled less in 2023 than in 2022 and was better for it. The trips I took were longer and more deliberate. Highly recommend the “fewer, longer, more deliberate” approach to professional travel.

I worked with three engineers in 2023 who are now better at parts of their craft than I am at the same parts. This is one of the genuinely good feelings of being a senior engineer who leads — watching people you’ve worked with surpass you. I want more of this in 2024.

I read Camille Fournier’s The Manager’s Path for the second time this year. It hit differently than the first read, four years ago. The chapters that resonated were different. Worth re-reading the canonical books periodically.

I gave fewer talks this year and wrote more posts. The talks were higher effort and lower compound value than the writing. I expect to continue that ratio in 2024.

Wrapping Up

2023 was a good year. Not because everything went right — plenty didn’t — but because I have a clearer sense at the end of it of what I’m trying to do and how I’m trying to do it than I did at the start. That’s usually the best measure of a year, for me. Did the picture get clearer.

Thanks for reading the December series. Nine posts is more than I usually write in a month and I appreciate everyone who made it through any of them. The next series, starting in January, will swing back to more technical territory — backend systems, performance, and the practical end of consultative work. Have a quiet end of year.