Code, art & human experience · Sabrina Danielle
← All field notes

Learning & practice

Your Codebase Is Not Your Curriculum

How to become the person who knows the system without letting the system become all you know.

The conversation ↓
An open exploratory notebook, branching wooden model, and closed book in a plum-colored studio.
AI-generated editorial illustration.

Stay with an application long enough, and you start knowing things nobody thought to put in the documentation.

You know where to look when a particular report is wrong. You know which part of the authentication flow deserves suspicion. You know why a piece of code that looks unnecessary should not be casually removed.

People come to you because you know.

That is valuable.

It can also become so familiar that you stop noticing the boundary around it.

I’ve been thinking about how a person can become excellent at their current job while getting rusty in areas they might need for the next one.

Not because they stopped working.

Sometimes because they never stopped.

The backlog teaches what the business needs

The problems you repeatedly solve become the problems you know well.

If you spend months untangling SQL queries, you get practice untangling SQL queries. If your application regularly struggles with state management, that becomes a muscle you use.

Meanwhile, other skills may get very little attention.

I don’t think recurring bugs are a simple ranking of who on the team is weak. They can reflect inherited architecture, deadlines, dependencies, unclear requirements, or decisions made long before the current team arrived.

A bug is not a performance review with a stack trace.

But the pattern of work still shapes the pattern of learning.

That is what concerns me.

My employer’s backlog exists to meet the business’s needs. It was not designed to give me a complete, balanced education in software engineering.

I have to notice what it leaves out.

Deep knowledge still counts

I also want to be careful not to insult the expertise people develop inside a company.

Knowing why a system works the way it does is real knowledge. Understanding its constraints, history, and consequences is real engineering.

But knowing one system deeply does not mean I’ve had much practice with the choices that system never asked me to make.

If the application has always handled something one way, I may understand that approach very well without having explored the alternatives.

I can respect what I know and still be honest about what I haven’t practiced.

The gaps give me somewhere to direct my learning. They don’t make the knowledge I already have disappear.

A course in the cart is not a course completed

My first answer to this problem was very simple.

I’ll study every day.

There. Handled.

I meant it. I had things I wanted to learn and plans to make time for them.

But I was caught up in trying to overachieve at my regular nine-to-five. I wanted to exceed expectations, and my own learning kept getting pushed behind that effort.

I could find an excellent course, appreciate its excellent curriculum, and leave it untouched while I poured my attention into doing more at work.

Which brings me back to the problem: the job was still deciding what I practiced, even when I had plans to learn something else.

So a plan to study has to account for where my energy is already going—and how much of it I keep giving to exceeding expectations.

It has to leave room for my own development without assuming I have unlimited evenings, no responsibilities, and an endless appetite for another screen.

Something I can actually live with.

The rhythm I want is small: choose a question, build something that helps me investigate it, and explain what I learned.

Maybe the question is about caching. Maybe it is about testing a failure path. Maybe I want to understand a tool I keep hearing about rather than collecting another opinion about it.

One question is a place to begin.

“Keep up with the entire industry” is a good way for me to begin nothing.

Build the lesson, not a copy of the company

Earlier in my career, my portfolio and the explanations around my projects helped people understand my work. They did not need access to every application I had ever touched.

That still matters to me.

A small demonstration can make my thinking visible.

For example, I could build a little application with invented data to explore a caching decision: what should be cached, when it becomes stale, and how I would know whether the approach helps.

The interesting part would not be the size of the application.

It would be the explanation.

What was I trying to accomplish? What did I consider? What went wrong? Why did I choose this approach instead of another?

For ideas connected to work, I would keep the demonstration independent and check the applicable company rules before sharing. Renaming a service is not a sufficient reason to assume its code, design, or business details are mine to publish.

I want to demonstrate my understanding, not smuggle out somebody else’s application.

Curiosity needs a little space of its own

I don’t want professional development to become a permanent punishment for having a profession.

There should be room to learn because something delights me.

To build a small tool because I’m tired of doing a task manually. To explore a concept because I want to know what happens. To make something useful for somebody I care about.

That is part of how I got here in the first place.

I’m revamping my tech portfolio with that curiosity in mind. I like interesting problems—the kind that give me something to investigate, build, and write about as I work through them.

If you have a tech problem you’d like my help solving, and you’re comfortable with me writing about the work, email me at me@sabrinadanielle.com. Tell me what you’re trying to do and where you’re getting stuck. We can talk about whether it’s a fit and what we’d be comfortable sharing.

So yes, I want to know my application deeply. I want to be dependable. I want to be the person who can help when the problem gets complicated.

I also want to keep encountering work that makes me a beginner again.

My codebase can teach me a great deal.

It doesn’t get to decide everything I’m capable of learning.

Think it through with me

The conversation

What is one question you want to explore outside your current codebase?

Be generous. Be curious. Respect each other’s privacy. Our house rules ↗

Comments are hosted by Hyvor Talk. Opening the conversation connects to that service.

The Code Conjurer

Notes from
the workbench.

New writing on software, AI, and what I’m learning as I build.