My risk appetite is a lot lower and I try to use version control for everything.
For personal projects I often just use an alias that commits in my project directory with no commit message. There’s no burden to it. Sometimes I might choose to do a detailed merge commit to add a description for a batch of changes once I’ve settled on something I like, but usually I don’t bother if I’m not going to be working with others.
* damage done by a single careless command
* coding around in circles because you forgot that you changed this one little thing in a file somewhere and now you've made a mountain of irreversible (without VCS) changes to your codebase
And so many other nasty things that coding without a seatbelt brings.
Don't confuse the act of putting paint on a canvas with the finished result. Programming is not art, it's a means to an end.
> It imposes too much structure on programming
The structure that tools like git provide is based on decades of know-how from people who use programming and source code control as a tool to accomplish a result.
You may decide that painting with oil or acrylic paints on a canvas is less artistic and more structured than using crayons or markers on paper. But there's a reason why artists gravitate towards certain tools to make certain results. The time invested in using the tools correctly is required to make the desired result.
In my case, I don't use git for one-off programs and experiments. Once I plan on working on a project for an extended period of time, it's extremely helpful.
Oh no, don't confuse the brush strokes with art.
A computer program isn't an idea: It's a set of instructions to the computer to accomplish that idea. The "elegant code" is merely the brush strokes, the idea lives in your head and in the resulting program.
Some math proofs are mechanical and boring. Some are astoundingly elegant. Both get the job done. The latter gets talked about and praised.
As someone who writes that kind of source code: It's not art, it's years of discipline and careful attention to detail.
A different way to say it: A song, and its performance, are art. The sheet music, and the filing system, are not. Yet, both are important and critical tools for preserving and communicating the song. The "legibility" of sheet music comes through discipline, but isn't the art itself.
Git is the filing system, and source code is the sheet music.
There's a reason I'm writing Grace in F#, after all.
Having used several different VCS, I have no idea what you're talking about. Are you conflating some complex CI/CD setup with branch naming schemes and oodles of hooks with version control in general? I mean, I think git is slightly overly opinionated when it comes to the relationship between commits and branches, but I don't get the impression that is what you mean.
After spending my work hours justifying and polishing every single change, it’s nice to have a more free-form process for my own stuff. In fact, while my process is partly borne out of laziness, I think it can sometimes lead to better code. If I see something that’s just a little suboptimal, I can fix it on the spot, without having to go through a bunch of process or explain why I think the new version is better.
Still, I can’t imagine living without that glorified undo. If anything, it makes the process more free-form rather than less. I can make drastic rewrites if I feel like it, safe in the knowledge that if something breaks, or if I decide halfway through that the rewrite was a bad idea, I can just `git stash` and get back to the old state (while still having the stashed changes saved if I change my mind again).
I'm like you: for small personal projects I either don't bother with source control, or I update it rarely. I'm the first beneficiary of the ambient approach that Grace has; it's really nice to just have all of my previous versions automatically uploaded and tracked, and then deleted a few days later if they're not pointed to by some other reference like a commit or promotion.
That's like saying that using an editor with an undo button is too stifling.
Now, I know version control is super useful for large projects, especially of the commercial variety. But now I see all the modern software out there and I wonder if maybe the increasingly commercialization of the software world has in part been accelerated by version control, which makes programming more robotic and less artistic.