Need to pause a programming project and return to it later? Here's some tips.

You can talk about almost anything that you want to on this board.

Moderator: Moderators

Post Reply
Drag
Posts: 1615
Joined: Mon Sep 27, 2004 2:57 pm
Contact:

Need to pause a programming project and return to it later? Here's some tips.

Post by Drag »

Everyone has their own methods for this, but especially when you consider a niche thing like NES homebrew development (and various kinds of programming in general when done as a hobby), there's always going to be a time when you need to put the project down to take care of something else, and you might not come back to the project for years.

This is usually what kills my projects, and it's only recently (like, within the last decade) that I've figured out ways to combat this, at least for me. I'm putting this information here in case it or the discussion is helpful for anybody else.

1) Understand your mental limits.
I have ADD. One way it manifests is, my short term memory fades very quickly. When trying to keep track of too many things at once, they all get scrambled. To fix this, I write everything down instead of keeping it in my head.

Always comment and document your code. Always use descriptive variable names. Always explain why code is written a specific way. If you, e.g., try an optimization and it doesn't work, leave a comment saying so. If it takes a lot of math to derive a certain equation used in your code, it's a good idea to explain how you arrived at it. Any research, diagrams, drawings, note pages, etc, make sure you keep those with your project in a way you can always pull them back up.

This is very helpful because it leads into...

2) Acknowledge that you will write code that you won't see again for years.
This definitely happens to me often.

Whether from stepping away from a project, or from writing some library functions or subsystems you don't need to touch for a while, write from the perspective that you will need to come back to this code after completely forgetting everything about it. Any comments, explanations, brain dumps, etc, will be your best friend here.

The reason this is important is because you will have to reverse engineer your own code otherwise, and that creates lots of extra work, and more opportunities for you to lose your motivation.

Speaking of motivation...

3) Keep track of past, current, and future work.
Work boards, issue trackers, index cards, whatever you need for it, you need to sit down and think about all of the stuff you need to do, and all of the stuff that's already done.

The biggest motivation-killer for me is to think about a project (or even a different section of the same project), and to try to imagine all of the work, all at once, that still needs to be done. That fools my brain into thinking I have to tackle the whole thing at once, which is conveniently something I never have enough energy for. :P

So instead of that, write down all of the work you're planning to put into a project, and break everything down into smaller, simpler tasks. Then, prioritize these tasks, for example, between things that are required for your project to perform its most basic function, and things that would just be nice to have later.

These tasks are never set in stone. If you've been working on one work task for ages, go back through it and see if you can break it down even further. It could be that some of the stuff you wanted to do in that task is actually optional and better if broken out into its own separate task for later.

----------

The work tasks are great as a re-entry point if you have to step away from the project, or if you can only work on it sporadically. A simpler task will help you re-familiarize yourself with your codebase while still providing a way to achieve some progress.

Though, how well you can re-familiarize yourself with your codebase will depend on what kinds of documentation and comments you left for yourself, which is why it's important never to skip that.

These things have all helped me with several long-running projects, both professionally and personally, like my palette generator, a tile editor I've been working on, and a game library I've been working on since 2013. If anyone else struggles with their projects like this, I hope this can help, but it'd also be great to see what kinds of things everyone else does. :D
Last edited by Drag on Mon Apr 04, 2022 11:43 am, edited 1 time in total.
Garth
Posts: 246
Joined: Wed Nov 30, 2016 4:45 pm
Location: Southern California
Contact:

Re: Need to pause a programming project and return to it later?

Post by Garth »

Thanks. It is very, very relevant. I would suggest it's relevant even if your don't have to backburner the project for years, in the case of large projects which are otherwise too easy to lose control of. Another point I might suggest is to try to kill more birds with one stone, making modules you can recycle for other projects.
http://WilsonMinesCo.com/ lots of 6502 resources
Post Reply