To Do Lists are a miracle drug that's drastically increased my productivity. With software/game development, you're struck with information overload on a lot of little things. Which sprites to draw? Which animations? Which component to code? Does that rare fatal crash bug mean something larger and more sinister? What about these components which I'm waiting for someone to do?
I'd say team projects are nearly impossible to do without to do lists, especially if you can overlap with someone else. They're low maintenance enough to be suitable for small indie projects, but powerful enough that they cover almost anything. Don't need to bother with a lot of other management tools like Gantt charts, dependencies, when a To Do list can handle it.
RecommendationsSo far, I've found
Asana to be the best in features. It's very fast and powerful, allows notes inside to do stuff, has subtasks, lets you add other people to the same list, has privacy stuff, and so on.
Workflowy seems to take a nice minimalist approach. It's very fast too and is great at displaying a lot of information at once.
Trello uses a somewhat different concept, based off
Kanban. Some people prefer it as it's like passing post-it notes to teammates, but it's not my thing.
Holly has about the same power as most to do lists, like nested lists, tags, deadlines, sharing with friends, and looks good when printed. Main advantage is that it doesn't need a sign it, so it's easily used and disposed of.
If you want a mobile recommendation, I use GTask as it seems the best coded, but most of them are fairly similar.
Epic Win might be your thing if you like gamification.
Can't find a good offline one for now. I'd just recommend using Notepad++ or any good text editor, and learn the hotkeys to move lines up and down and delete lines. Notetaking apps like OneNote and
Evernote are ok if you need more power, but I find them clumsier than the tools dedicated to being a to do list.
Get everythingIf it takes less than 3 minutes to do, do it. Otherwise, consider writing it down.
Ideally, you'll want to get everything down. The trivial bugs and typos (that take more than 3 minutes to fix) too. Things like "make some tea", probably not.
Write tasks down in a "next action" format. "Design forest level" is a next action. "Forest level" is a poor way of writing it: It can mean anything, like "do tiles for forest level" or "debug forest level". This might seem trivial now, but it makes the task seem a lot more do-able. It's easier to skim over, especially if you're in the mood to design something. And your friends can't read your mind.
There's probably going to some tasks you can't do yet, like say, animate a model when the model drawer guy hasn't created it yet. I'd normally put a
Waiting For Someone tag on those things (which is why it's so helpful to have a To Do system that supports tags). It allows you to simply gloss over those
Waiting tasks if they're not applicable, so you can forget about them.
For time-critical tasks, things that you have to do next Sunday and such, I'd recommend just getting a phone or desktop reminder.
Organize themAs a programmer, I prefer splitting task lists into "Main list" and "Do later". I'm guessing it's similar for things like artwork as well. So far, game design doesn't work so well for me with a To Do model; I find that they go better in some Mind Map format or just a brief plaintext file. For grander projects, you'd probably want a Development Roadmap list.
Note that all these are what worked for me so far, but others may have better methods.
Development RoadmapSo far, I've rarely needed this as all my projects were done in 3 months or less. But if you have a large enough project, try to break it down into different phases. I think Dwarf Fortress does a
good example.
Your aim here is to list down all the different things that have to be done, and not think yet about how to do it.
Main listI often maintain one megalist of things I plan to do for one week. The idea here is that 90% of the time, I'll only look at this list. Think of it as what you'd otherwise juggle in your brain. Things from the other 'minor lists' get transferred back and forth from this.
I'd spend about 30-60 minutes every week keeping this list up to date: making sure that the things on the "Waiting" tag are not dead, transferring stuff between lists.
Do laterYou'll probably want several of these lists. Normally I only need one, but if they require vastly different skill sets (and different people), you can split them up into more.
By default, this has been my bug list, but I find it useful for things like polish features. As it's evolved from a bug list, I sort it according to priorities:
1. Emergency - something absolutely critical. Almost nothing should be priority 1 unless you've messed up bad.
2. Requested - Sometimes a feature is requested by a client. This will normally take higher priority than the Main list, or should probably be transferred there soon.
3-4. Important - A noticable feature. I split it to two different levels just because.
5. Fix if time
6. Probably don't fix
7. Don't fix - This might seem unnecessary, but sometimes you get common recommendations from fans/friends like "do jiggle physics". From a bug report angle, you have something to tell them that it's not a unique idea and you won't do it.