Eh, maybe. Your core responsibility is to ship on time. Especially at a startup, it's not only "ok", it's usually the "right" call to ship faster, and accumulate technical debt. This is constant, and never really goes away. So you tend to have to intentionally bake in this time, or else it never happens.
And I think this is OK! It's not always clear what is and isn't technical debt at the time it's being introduced. A lot of things seem "gross", but aren't actually much of a problem. Or you think, "oh god, this will never work when we add X feature", but then you just never add X feature, and so it's totally fine 2 years later.
But to your point, of "well shouldn't that intentionality be part of normal duties?" Sure, but shouldn't coming up with Gmail? Or fixing bugs or UX improvements also be part of normal duties? Yes, they all should. The truth is it's hard to prioritize small things like that, and it's really hard to get a sense for their value as a centralized management team. They aren't close enough to the code or the product to always know. So I think 20% time is a great way to just decentralize that, and allow the engineers closest to the issues to pick what's important to work on.
Yes, we're in agreement. A coworker of mine pointed me to the book Accelerate [1], which I admittedly still haven't read, which also mentions that organizations where management tries to make sure engineers are at 100% utilization end up being dysfunctional, partly for the reasons you pointed out.
It's one of those things that works for a quarter or two, but then you start making your engineers hate their job and productivity drops quickly when morale is suffering.
But to your point, of "well shouldn't that intentionality be part of normal duties?" Sure, but shouldn't coming up with Gmail? Or fixing bugs or UX improvements also be part of normal duties? Yes, they all should. The truth is it's hard to prioritize small things like that, and it's really hard to get a sense for their value as a centralized management team. They aren't close enough to the code or the product to always know. So I think 20% time is a great way to just decentralize that, and allow the engineers closest to the issues to pick what's important to work on.