Friday, August 24, 2012

"Refactoring" and "Tech Debt" Are Not Dirty Words

It always bothers me when anyone (but especially Product Owners, Iteration Managers, or Project Managers) treat "refactoring" and "tech debt" as dirty words -- things that we shouldn't be doing because they are a "waste of time".  There is an important difference between "gold plating" and "refactoring" or "tech debt".

"Gold Plating" is the process of either (1) adding in features because "they might possibly be maybe needed at some point in the far distant future if some somewhat unlikely scenario were to arise as an actual business requirement"; or (2) rewriting code to a degree well past what is needed to make the code more maintainable -- rewriting code just to make it "prettier" or more "elegant" without actually adding a measurable (and useful) amount of value toward the code being more maintainable or understandable.

"Refactoring" is the process of rewriting code with the purpose of making it significantly more maintainable or understandable.

"Tech debt" is a category of code maintenance that deals with either (1) "refactoring" that is needed, but which the team did not have time to perform at the time a story was played due to time constraints; or (2) the addition of necessary functionality to allow for proper maintenance or support of the software.

The key difference between them is that "gold plating" has gone beyond what is "needed" and is dealing with "wants".  "Refactoring" and "tech debt" are only going so far as to deal with what is truly "needed" and stopping before it gets to the point of "wants".

If a developer is abusing the terms "refactoring" or "tech debt" by using them when they are really talking about "gold plating", then shame on them.  They are not only causing business value to be lost by pushing the incorrect prioritization of work, but they are also helping to reinforce the idea that "refactoring" and "tech debt" are dirty words.

We as developers are told that we should always be questioning the value of the stories being played to help ensure that the correct priority has been assigned to stories so we can provide the most value to the business as quickly as possible.  But, we should be vigilant in monitoring our own suggestions for additional work that we believe should be done to ensure that we are not advocating, as important or critical, something that is a "want".

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.