On the project I’m on we have 20% of our time allocated towards doing “chores”. What are chores? That’s development work that’s not either feature development or a bug fix.
This could mean things like:
- modernising code to work with newer language features
- updating code to work with a newer version of a library
- expanding logging
- expanding our end to end tests
- working on our development tooling
- refactoring code
- … and probably lots of others
This is important to help reduce tech debt. Without this every codebase will get old, outdated, riddled with security issues, builds will break, etc if you don’t constantly keep things up to date, modernise it, fix what’s broken, work on developers’ pain points and so on.
Most projects have unnoficial time for doing these things, but I think every project should have this formalised and developers’ team leads should get full buy-in from management and all corners of the business. If not then it will inevitably lead to problems down the road.