Here’s an example to-do list for a specific feature two people worked on. George was the programmer and Conor was the designer:
We make a separate to-do list for each “scope” — a scope is either a chunk of a bigger feature, or an entire feature if the feature is small enough.
Every task — programming stuff, design stuff, writing stuff, QA stuff — related to that scope lives on the same list. You can see some start with “QA” — that means it’s a QA thing.
You’ll also see some to-do items have little comment bubbles after them. That means those to-dos have discussions attached. If you clicked the to-do item you’d see the comment thread. Everything’s in context. We aren’t talking about these issues elsewhere in a chat room or some other product — everything is right here, attached to the to-do itself. That way the whole story stays together. It’s so simple, but it’s such a secret weapon.
No sub-tasks. Just a straightforward single list.