Skin Shedding, Not Bikeshedding
Published November 23, 2025
5 min read
Tags: dev, philosophy
Snakes shed their skin. They outgrow it, slough it off, and keep moving. They're still the same snake, just with a fresh layer, ready for whatever comes next.
I've been thinking about that lately.
This whole reflection started because I caught myself in yet another argument where nobody was building anything.
The Bikeshed Problem
There's this concept in software development called bikeshedding. The term comes from an example about a fictional committee reviewing plans for a nuclear power plant. They breeze through the complex reactor design but spend hours debating the color of the bike shed. Why? Because everyone understands bike sheds. Everyone has opinions about paint.
In code, bikeshedding looks like endless debates about tab width, framework choices, naming conventions. Arguments about the "right way" to do things that could be resolved by just trying something and seeing if it works.
I've spent too much time in those debates.
The Weight of Being Right
Here's what I've learned: arguing about code is exhausting. Not the technical discussions about trade-offs or the collaborative problem-solving. I mean the arguments. The "this is the only correct approach" discussions. The debates where everyone digs in and nobody builds anything.
I've been part of teams where every PR becomes a referendum on architectural philosophy. Where suggesting a different approach gets met with resistance before anyone's even tried it. Where the discussion thread is longer than the code changes.
It's draining. And worse, it's a trap. Because when you're arguing about whether to use Tool A or Tool B, you're not actually learning which one works better for your specific use case. You're just... arguing.
The Freedom of Not Knowing
The truth is, half the time we don't know what will work until we try it. We think we do. We have intuitions, experience, opinions. But software is weird. Context matters. What worked great on one project might be wrong for another.
So instead, I just try things.
Not recklessly. Not without thought. But when faced with two reasonable approaches, instead of spending hours debating the merits, I'll pick one and build it. See how it feels. See where it breaks. See what I learn.
And you know what? Sometimes the "wrong" choice teaches me more than the "right" one would have.
Shedding Skin
This is where the snake metaphor comes back. Shedding skin isn't about becoming a different snake. It's about not being constrained by what fit before.
For the most part, I'm the same developer I was six months ago. Same skills, same values, same approach to problem-solving. But I'm not carrying around the weight of old arguments anymore. I'm not defending approaches I used on past projects just because I invested ego in them.
I can use SQLite on one project and Postgres on another. I can use React here and Svelte there. I can experiment with different state management approaches and see what actually works instead of what I think should work.
The skin shedding isn't about the technology. It's about letting go of needing to be right before I've tried anything.
What This Looks Like
Practically, this means:
Build small experiments. Don't debate for hours about whether approach A or B is better. Spend 30 minutes trying A and see how it feels. Then try B. Now you have actual data instead of theoretical arguments.
Ship things that might not be perfect. Perfect is the enemy of learning. Ship something that works, see how it breaks in the real world, iterate. You'll learn more in a week of production use than a month of pre-planning.
Change your mind without drama. "We're using X" doesn't have to be a permanent commitment. If it's not working, you can try Y. This isn't failure, it's iteration.
Judge by outcomes, not aesthetics. Code that's a bit messy but works reliably is better than code that's architecturally pure but brittle. The goal is to solve problems, not win style points.
All of this beats spending three hours arguing about the hypothetical failure modes of something nobody has tested.
The Meta Lesson
Here's the thing: this post is about code, but it's not really about code. It's about how we approach problems when we don't know the answer yet.
Do we lock ourselves into positions before we have evidence? Do we defend our intuitions as if they're facts? Do we mistake confidence for correctness?
Or do we stay curious? Do we try things? Do we update our beliefs when we learn new information?
The snake sheds its skin because it has to. It's grown too big for the old one. We can do the same. We can outgrow old arguments, old certainties, old ways of working that don't serve us anymore.
We're still the same developers. We're just not trapped by what we thought we knew before we tried it.
Try It and See
Last week, instead of debating the limitations of someone else's critique, I just built the tool I wished we had.
Next time you're in a debate about the "right" way to do something, ask yourself: would it be faster to just try it?
Not everything, of course. Some decisions are expensive to reverse. But a lot of what we argue about? It's just bike sheds. We could build both sheds, paint them different colors, and actually see which one we like better.
That's skin shedding. Letting go of the need to be right about things you haven't tried yet. Staying light, staying curious, staying open to learning from the next thing you build.
The old skin doesn't fit anymore. Time to shed it and keep moving.