Technical debt comes in all sizes. Some debt pays. Some debt costs.
One of my weaknesses is “gardening.” No, not the dirt and flowers kind—though I’m sure that’s fun for the same reason.
“Gardening” is the detailed work done after writing and testing code. It is similar to refactoring—reorganizing code to make it more efficient, reusable, or readable—but at smaller scales. Gardening helps ensure the code has consistent naming, syntax, and documentation and that the code is in compliance with the style guide.
Paying attention to the minutiae of the code is a requirement for programmers. One misplaced semicolon or one missing equal sign, and you could spend hours debugging.
This is not my weakness.
For me, tending to the code’s minutiae is fun. I enjoy it immensely. But, this is the problem. Knowing when “enough is enough” has always been my weakness. I can spend hours aligning brackets, renaming things, and writing excessive documentation.
This compulsion to detail has caused simple tasks to grow so big that I give up.
So, what to do?
If I don’t clean up my code, the code becomes an incomprehensible mess. Messy code is hard to understand. Code that can’t be understood is not able to be maintained. Unmaintainable code is discarded.
Not cleaning up code impacts development in ways that affect business. The effects range from simple bugs to preventing delivery, all of which are opposed to revenue.
If gardening is enjoyable for me, removing it from development reduces the reward. I’m less likely to do software development if I don’t enjoy at least some aspect of it.
But if I kept getting stuck in the details, the business results would be affected immensely.
I needed a system.
Here is what I came up with: defer the fun stuff. Not indefinitely, but to when my motivation and energy are lowest.
My energy, focus, and motivation are usually highest before lunch. It slowly weans until around 4 PM, and by the time my kids are in bed, all hope of getting anything productive done has disappeared.
I tackle the big tasks like designing and implementation before around 2 PM. The last few hours of work or after my kids have gone to bed, when I’m tired, with a brain as sharp as playdough, I go through the list so I can still contribute.
The hard part becomes deciding what to defer.
What do you do to keep yourself moving forward? What systems have you created? Reply and let me know!
Thanks for reading!