Tell me if the following sounds familiar. A developer says something like this in a meeting..

I would like to take the time to refactor some code because the current code is such a mess.

I've heard this so many times I am really tired of hearing it. Why do we end up in this situation? Why do we have to schedule time to "fix code"? Let me tell you why. It's because we as developers are NOT doing our jobs.

It's my opinion that it's time we start doing our job and start producing software that simply works. We need to stop providing software that "works" to only request later to refactor it. On one hand we are telling our managers that "hey this code is ready to rock" only to later tell them "we really should refactor this because it sucks". If you think the code is not ready then you have two choices. One to tell management that it's not ready. The other is to take the time to make it right. Yep even if it's your own "off the clock" time. I only say this if you are the one that estimated it and agreed to it. If you agree to a sprint then it's up to you be sure that you complete it.

Now hopefully your company is smart enough to ask you how long it will take. You need to learn to tell management the truth on how long it takes to create quality software. Now I know software is hard to estimate but take time to realize that if your last sprint sucked then the next sprint you need to take on less so you can create software that works. Learn to adjust your velocity so you can provide properly engineering working software.

I want to get off the treadmill of failing projects because of unnecessary technically debt. Technical debt that is self inflicted due to our crappy code. As developers we must do our job properly and stop providing mediocre work all because of a schedule.

What good is it to claim your code is "done" if it doesn't work or is not done properly? You or someone like <span class="burgundy">me</span> will have to pay for it later.

All I'm saying is to start to providing well written, maintainable, working software and you'll stop having to schedule time to cleanup software you've already stated was "done".