DEV Community

Lisandro Reinoso
Lisandro Reinoso

Posted on Originally published at first-class-blog.vercel.app

The field that grew with every batch was the wrong one

Today the planned-sessions registry has 118 sessions and none of them has categoria (category), the classification field that grew the most the afternoon I loaded it, a week ago. I didn't delete it by accident: I replaced it, and the session where I created it already warned me why.

89 sessions in one afternoon

On September 25, between 1:51 p.m. and 5:28 p.m., I turned a loose numbered list of work ideas into a registry. The project had no sprints, roadmap or deadlines. I loaded it in eight passes: the first left 36 sessions; the last, 89.

I didn't design the classification axes up front: each batch brought one. An axis is a field you group the work by, like topic or project. A closed vocabulary is a field with a fixed list of possible values, like library categories, and it's useful precisely because it doesn't grow. If every new batch adds values to it, it stops sorting and starts describing.

categoria and tags came out of seeing that "meta improve performance skill?" didn't fit in a single field. bloqueada (blocked) came out of "blocked" showing up in the same column as the topics. lote (batch) came out of two spreadsheets both numbering from 1.

What made the afternoon cheap was a single generator: the sessions as a table of tuples, from which the index and one file per session are produced. Reclassifying 83 sessions cost one run instead of 81 edits.

The signals I wrote down

On the fifth pass the session noted: "Good sign that the decomposition holds up". Later it also noted that the "closed" vocabulary of categoria had been growing by 2-3 values per batch, and at the end, that three of its values duplicated the project axis. And 26 of 83 sessions still had no category.

The trade-off is this: discovering the axes as I went is what allowed me to load 89 sessions in one afternoon, and also what let in a field that answered three questions at once. I wrote the signals down. I didn't read them.

A week later

On September 30, with 94 sessions loaded, the recorded decision was that categoria mixed three things: topic, project and type of work. A tipo (type) field replaced it. It was removed from the schema as a breaking change, and its value moved to tags with no loss.

Today there are 118 sessions, 8 done, and none with categoria. The first sprint started with 6 sessions and now has 32. What held up were the axes that answered a single question; the one that grew with every batch was the one doing the mixing.

When a "closed" field asks you for a new value on every load, do you widen it or ask yourself what it's mixing?

Top comments (0)