It all depends on the scope of the project.
Most projects are small sketches, so I don’t bother with formal version control. Instead I just save off a new version every time I make some change, for instance _v8, _v9, etc.
With collaborations, formal version control is a must, as is some kind of issue tracking system. Git is needlessly complex, but it’s what everyone knows these days.
if I have a project that makes it past the ‘sketch’ stage; i.e. something that I now use regularly and wish to maintain, then I switch over to git. The only problem is that the first checked-in version is usually already quite mature.
For personal projects I use Atlassian/bitbucket, which has a reduced version of the Jira issue tracking system. All subsequent work is managed not only by version control, but by issue tracking.
With issue tracking very change to the code, including adding new features, is considered an ‘issue’. That is, there’s no difference between fixing a bug and adding new functionality – both are work items.
Of course, many times there’s just open experimentation, and the ‘issue’ description is determined or mostly filled in post hoc. This is rare to nonexistent in professional projects, but happens all the time with personal creative work.
The point is all code checkins become associated with a particular issue. Commit messages reference the issue#, and briefly discuss what code was changed.
In the spirit of open experimentation, a previously ‘resolved’ issue can be cloned and made to express something else – the new ideas or changes. So one can use the system either a more or a less disciplined manner.
Professional projects tend to be overly disciplined or thought out ‘in advance’ – the ‘agile’ strategies were supposed to prevent this but instead are widely misused as prods to make people work faster with less attention to detail and with less thoughtful reflection on what they are making; i.e. Zuckerberg’s ‘move fast and break things.’, or the general attitude of ‘shut up and code’, or even more broadly blind and destructive assumptions regarding ‘progress’, ‘changing the world’, ‘disruption’ and so on, which prevent critical reflection upon what
so the trick is to make use of professional tools while being mindful of the broader implications and pitfalls of such professionalization, and being especially mindful of late-capitalist ideological constructs literally encoded in such tools.
Anyway, I find issue tracking much more helpful in the day-to-day than the very rare cases I have to go back and retrieve an old version, it also helps streamline communication among multiple people, and it can be somewhat creatively ‘misused’ in ways that preserve the openness of creative work.
also, as I indicated at the beginning the bar for transitioning to formal version control/issue tracking is indeed quite high – when I make such a decision, I feel that the result has already crossed a threshold and become a ‘release’, ‘finished work’ etc. rather than just an exercise or exploring an idea.