Getting Things Done changed my life. And I love software. So I've tried a lot of task managers, often ambitiously.
By "ambition" here I mean "making my task manager most accurately reflect my tasks." Since "task" here means something like "thing I need or want to do in light of some project or goal," making my task manager accurately reflect my tasks means making it a maximally complete description of my life.
Making a high-fidelity representation of one's life in task form does not tempt most people, but does tempt a person with certain sorts of desires. (I'm one of those people.) The problem is that there's a tradeoff between fidelity and granularity, on the one hand, and what I'll call "capture efficiency" on the other.
As you increase the detail in your task manager's digital representation of your life, affirming Aristotellian teleology with every carefully documented subtask dependency and project-task relationship, it tends to get harder to add or modify a task:
The difference between using a task manager and not using a task manager is much larger than the difference between using a full-featured task manager in all its glory and using a bare-bones task manager. Friction is the biggest determinant of whether you will actually use your task manager (or, at least, it's the biggest determinant of whether I will use it, and similarly for basically everyone I've talked to about this). So: low friction is the most important feature of a task manager.
What about when tasks are about fixing or improving software? Other than calling task managers "bug trackers," not much changes. And, in particular, note that: 1. The difference between using a bug tracker and not using one is much, much greater than using a full-featured bug tracker in all its glory and using a minimal bug tracker faithfully; 1. The biggest practical problem with bug-tracking is getting people to use it (to file bugs, update them, close them, and append relevant information); 1. Full-featured bug trackers tend to have latency problems; 1. Whenever something significant changes on a software project, in theory something ought to be changed somewhere in a bug tracker, and the more details need to be changed, the harder that process gets (and the less likely it is to happen).
So that's why I use the native Reminders app both for personal task management and for (my side projects') bug-tracking.