How do you deal with large projects?
It just so happens that I was asked to write a paper about goals I hadn't achieved and I just thought about how I haven't touched my video game engine project in any meaningful way for around two months or so. On reflection, the main thing that is preventing me from working on it is that when I try to get back into it, I don't really know what I'm doing. I'm unorganized and can't figure out what exactly to do next because it's so open-ended. I'm absolutely terrible about writing down plans for what I should do.
I know that I'm not the only person who is trying to work on big solo projects, so I thought I'd ask: what are you doing to keep your project organized? Are you using any tools to help you? What do you find is most helpful to help you anticipate steps you'll need to address when things aren't very clear?
For a lot of big projects, I have to work on them often enough. Otherwise every session just becomes a session of re-learning and figuring out where I was.
Familiarity and momentum need to be maintained. Once they're there, one can benefit from them moving forward.
Most of us are creatures of habit, I think, so once I'm in a routine of regularly working on the big project, I keep that routine and it's much, much easier to keep going.
Often this becomes a pattern of doing things every day for me: It's much easier to work out every day than three times a week. It's much easier to spend 15 minutes cleaning at home every day than having a huge cleaning session once a week. (We're very different; I know this doesn't work for everyone)
It's especially much easier to program if I finish entire blocks/tasks, but also don't have to relearn the project/code or internalize complicated set-ups more times than strictly necessary.
This gets at the old adage of eating an elephant bite by bite. I think that's very helpful advice for big projects.
Another piece of advice is just doing something. I find that if I don't spend time procrastinating, thinking about how hard something will be, but just start doing it, it's a lot easier. That goes for small tasks I don't want to do either.
At work, that leads me to perform the most uncomfortable tasks first as often as I can. That also leaves me going home much happier as I very often end the day after doing the most enjoyable things last. It also sets me up for doing things I enjoy when I'd otherwise be more distractible because I'm tired.
To an extent, I'd say this last strategy also works for things I do on my own time, also for bigger projects. However, the balance is somewhat different: Do things I enjoy enough that it doesn't become a chore, but be sure to spend enough time doing the things I like at the right time to break monotony but not stride, to break up draining tasks from mindless busywork, to block out many-hour chunks for single tasks best completed rather than restarted.
And all this summarizes somewhat neatly into: "I deal with large projects by planning and following through with those plans".
That's the most important thing for my own time-management. (Adapting long-term plans as I go along is an integral part of project management as we go along)
Keep a big to-do list using software you're comfortable with, where you can easily rearrange the issues based on priority, and ideally also group them into subtrees of related tasks and subtasks.
As for prioritizing, dogfood it. Games and apps lend themselves exceptionally well to dogfooding, given that they're interactive from the very beginning, and every change is reflected immediately and can be tested hands-on. Spend as much time as possible playing your game, and its flaws and missing features will bubble up and begin to bother you. Those are your priorities. If there's one big one, do that. If there are 10 big ones, use a random number generator to decide.
Ultimately if you keep spending time with it, but nothing stands out, maybe it's time to move on to the next project. Possibly return to it if inspiration strikes for an awesome new feature. As huge as the indie game market is, think about how many orders of magnitude more games never see the light of day and are left unfinished. This is okay.
Seconded. It really is a big help and feels great when you can just tick off entire sections at once, but you really do need to fully commit to it.
Personally I use Forgejo with its Projects and Issue tracking for that, it's worth a look.
I think the current advice is very good especially if you can work up the motivation to project plan. The problem though is that planning can become its own big open ended project ready to inflict new analysis paralysis. My best advice to dealing with that, at least for personal projects, is just to commit to doing something. It doesn't need to be anything particular, just something. The feeling of making progress at all can help not only with helping you figure out what you should put in your planning, but also with recovering the motivation to keep opening a project.
I currently have a project that isn't really for anything and so lacks solid planning. I'm doing it mostly because I want to learn some stuff, but I also do kind of want to eventually get it somewhere that feels like a satisfying stopping point rather than just dropping it. Often I open it with a mentality something like, "Okay, so when I was previously in here I made a huge mess as I just piled everything into one file because I didn't know enough about how it was going to work to proactively organize it. My goal for right now is just to get it cleaned up a bit. Worst case it'll be a dumping ground again in the future, but at least it'll be a little more manageable when that happens." What often happens in practice though is that I end up stumbling on some interesting bits that bring back real motivation as a result of just being in there at all.
Honestly I’m a bit upset at @nacho for their advice right now. It’s the answer I already knew but didn’t want to admit.
The thing about me is that I will get depressed or tired or sick, or even just life happens, then I won’t work on my project and I’ll lose momentum. So maybe what I really needed was to find a regular source of gentle encouragement to get back on when that happens.
The project I’m working on was meant to be a learning experience. But I’ve got to the point where I think I have learned enough about it that I can see myself working through it now, and that surprisingly has made me less motivated. Now the stuff I know I have to work on seems less like a fun challenge and more like it’s just work. But I think you’re right; I just have to throw myself at it and something interesting will show up.
It’s either that or give up my pride and have AI start to write my code for me. 😸
Set due dates. For the project as a whole, for each sub-component, and for each task that contributes to completion. They don't initially need to be reasonable or based on experience/evidence, but they do need to be time frames you hold yourself accountable for striving to meet. If you depend on other people to do their parts, get them to agree to due dates as well, and nag them as needed for completion.
This sounds like a simple thing, but I've watched giant projects hit the rocks because no one was at all accountable for getting their pieces done, let alone within a sensible amount of time.
Simon Willison has a great talk about this: https://www.youtube.com/watch?v=GLkRK2rJGB0
The tl;dw is pretty much: tests and documentation.
When you come back to a project you haven't touched for a year, it helps a lot when you have documented what you've been doing and what you should be doing and you have a decent set of tests. Then you can be confident going in and doing modifications or even just library version upgrades.