Why you should never ask permission to clean up code.
<i>never ask for permission for things you know are vital to your work</i><p>I agree to an extent.  It can be easy to fool yourself about what constitutes good code -- in the sense of making a product better or work on it easier.  Sometimes bad code is better left as is.  Even working totally unconstrained, I prefer not to refactor something unless I have a pressing <i>reason</i> in mind.<p>My rule of thumb is this: as a programmer and an employee, I am professionally bound to produce quality software efficiently.  If I know I can complete an assignment faster (or in equal time, but leaving behind a better code base) by rewriting something, building a tool, fixing something architectural . . . I will silently do it.  No point in asking permission.  It's in my charter.<p>On the other hand, if I want to take a lot of time to rearchitect something -- an order of magnitude more than it would take to just do whatever it was that brought me there -- at that point, it's a strategic decision and management deserves to know about it.<p>The way I see it, management has no right to require me to produce an unprofessional product in my day to day work.  And I have no right to force management to use engineering considerations only in strategic decisions.