On pain and frustration
Pain is a smoke detector. It’s annoying on purpose, because whatever set it off is worse than the noise it makes. Team frustration is the same kind of message. When people grumble about a component, a hand-off, a process, the instinct is to treat it as noise — bad mood, low morale, something to smooth over. But frustration is rarely noise. It’s the system reporting a fault from the inside.
Last year my right knee started aching while I trained for a half marathon. I felt it, I named it, and I kept running — the race was close, and easing off felt like throwing away the work I’d put in. So the pain got louder, and I got better at ignoring it. The surgery, when it finally came, was probably always coming; years of running leave their mark. But the months I spent overriding the signal were the avoidable part.
Teams ache the same way. The people using our tokens ached loudest. Shipping a single value change from Figma to code took about twelve steps, starting with a seven-step export: open the token plugin, import the variables, export the JSON, set the options, copy it out, paste it over the file in GitHub, and open the pull request by hand — then a second plugin, and a version number copied back into Figma so the two lined up. Fiddly copy-paste across three tools, and even our own guide told you to bring someone experienced your first time. People lived in that friction, and they said so, often.
We heard them; we just couldn’t fix it. The clean path needed Figma’s REST API to pull the variables out, and that sat behind an Enterprise plan we weren’t on. That’s the trap with friction you can’t resolve yet — left alone it compounds, people stop reporting it and quietly build workarounds, and a workaround is a limp. So we kept the complaint on the table until I found another way in: the door Figma gives every plugin. I built one that reads the variables from inside Figma, writes the changelog, and hands you a pre-filled pull request under your own GitHub account. Twelve steps became four clicks.
That’s the lesson the knee really taught me: treat the first complaint as data, not weather. Fix what you can while it’s still a rename, before it hardens into a rebuild. When you can’t fix it yet, keep feeling it, out loud, until you can.