PM: “How long is developing this feature going to take?”
Me: “Due to all the refactoring that’s needed --which I’ve been repeatedly bringing up for two years – just to implement it, it’s going to take about 6 months.”
PM: “Is there any way you can have it ready for the release in two weeks?”
Me: “No.”
PM: Proceeds to tell everyone that it will be ready for the release in two weeks.
Always spend at least 20% of the time on stuff you know is necessary, but will never be prioritized by marketing heads.
This is the way.
Leadership: Please don’t prioritize code cleanup, we have critical features we need to release.
Me: Oh. I didn’t realize you were taking ownership of (complex code no one wants to be associated with). I’ve got diagrams I can send you.
Leadership: No, that’s still yours. We just need you to focus on these features, and not any planned maintenance, for just the next sprint.
Me: So you’ll take over guiding maintenance on (complex source code no one wants to get near)? I can send you the backlog for your project plans…
Leadership: That’s not what we’re saying. Please just prioritize the feature.
Me: Oh. Sure. I will prioritize that feature, and I’ll only do the bare minimum cleanup that can’t be avoided, right now. (Which will turn out to be however much cleanup I damn well please, because their eyes glaze over if I explain it, anyway.)
Leadership: Now you’re getting it!
Me: Gee whiz. Thanks for talking it through with me.
PM: “How long is developing this feature going to take?”
Me: “Due to all the refactoring that’s needed --which I’ve been repeatedly bringing up for two years – just to implement it, it’s going to take about 6 months.”
PM: “Is there any way you can have it ready for the release in two weeks?”
Me: “No.”
PM: Proceeds to tell everyone that it will be ready for the release in two weeks.
Don’t worry, it’s not like crucial decisions such as whether or not you get to keep your job depend on the outcome…
https://www.youtube.com/watch?v=8xRqXYsksFg
Never let that accumulate for that long. Continuously do small refactors to improve the structure.
Always spend at least 20% of the time on stuff you know is necessary, but will never be prioritized by marketing heads.
This is the way.
Me: Oh. I didn’t realize you were taking ownership of (complex code no one wants to be associated with). I’ve got diagrams I can send you.
Me: So you’ll take over guiding maintenance on (complex source code no one wants to get near)? I can send you the backlog for your project plans…
Me: Oh. Sure. I will prioritize that feature, and I’ll only do the bare minimum cleanup that can’t be avoided, right now. (Which will turn out to be however much cleanup I damn well please, because their eyes glaze over if I explain it, anyway.)
Me: Gee whiz. Thanks for talking it through with me.
The programmer is the expert to make the decision on what’s necessary to implement a feature.
Exactly.