My team (yet) did not do much to work on technical debt and our code base includes huge amount of TODO code, unused code, 'could get better' code, @Ignore unitests and more.
I am about to start dealing with those issues, and as we work on production product and have many other things to do, i was thinking of this strategy:
One engineer will be assigned for 0.5-1x day every week to deal with technical debt, he will only work this day/half day on maintaining code. As we have more than 4x developers in team (6x developers) this can be once a month (and more) for each developer.
We will use apps (plugins) such as SonarLint (https://www.sonarlint.org/), CheckStyle and IntelliJ inspection to inspect our codebase.
Each engineer will have to fill a checklist of it 'technical-debt-fight' as we will work module by module :: 'remove unused code' checkbox, 'finish 1x todo' checkbox, ....etc
Summary will be filled after each day (in a few words, like a commit summary) so the other engineer who keeps his work the week after will be able to do this.
Once a month-two we will review work / speak about this process and set timing for it ending (half a year process?)
As this can be monotonic/sometimes boring/unpleasant work, I find using checklists and 'forcing' team a good idea. As I would myself be happy to look on a checklist and see what needs to get done. Especially as this is once-a-month work.
What do you think of this plan? how would you do 'attack' this technical debt issue?
Besides that i'm planning to read more about Martin Fowler refactoring notes.
Any other recommendations are welcome! Thanks!