
Ask HN: For side projects, do you Git from the start, or at an MVP stage? - sk0g
I&#x27;d say I experience some sort of writer&#x27;s block when it comes to side projects. One key point is I am a bit of a perfectionist, which means if I don&#x27;t think I&#x27;m going to do something optimally or close enough to it, I will end up not doing it at all.<p>A common problem I run into is I set up a GitHub, TODO on the README.MD, etc, and get 10 or so commits in. Then things get muddy and unclear, and when I&#x27;m stabbing in the dark trying to hack things to work, I really really really don&#x27;t want to commit it without having a clear plan in mind. That also means I can&#x27;t go ahead and use&#x2F; test the implementation (which might be necessary to test the validity of the implementation, and whether a refactor is required), so I get stuck and just stop working on the thing entirely.<p>Another thing is I always dilly-dally with frameworks, etc. I&#x27;ve put off building a personal website for about a year because I&#x27;ve bounced between Elm, Mithril.JS, Blazor, Laravel etc. I&#x27;ll start up with one, run into a wall, and give up because I don&#x27;t want to do things &#x27;suboptimally&#x27;.<p>Anyone else experiecne this? How do you overcome it?
======
kaazhan
For the version control, i personally put EVERYTHING on git. Literrally. I
have my OS "installer", my desktop env files, my home files, projects, really
everything but video/audio/pics because of the size. I do this because having
commitment for a project means -for me- beeing able to work on it from
everywhere when i have time. I don't have to worry if i want to change
computer, reinstall OS or anything else. all what i've done is somewhere on
git.

For a project, i nearly always start by writing a document to explain myself
what i want to do, if the project is for learning or prod, etc. when the
project is enough defined to stat producing something, i git it.

For your other question, I think it really depends on your goals. If you do
not want to create anything but test/learn a bit/move to something else, it's
fine. If you want to focus on something it's fine too. i'm not sure you have
to overcome anything, it really depends on "why are you doing side projects ?"

------
jamil7
You've mentioned at least two problems with your side projects here.

The first one seems to be a lack of version control hygene? just work the way
you normally would at work, if you know you're doing exploritory coding then
make a branch, commit the WIP if you have to and rebase / squash clean up the
history later.

The second problem you can overcome by deciding what you want to get out of a
side project, if it's purely for learning a new framework then approach it
with that goal in mind, explore the tools the framework gives you for solving
common development tasks, compare with other frameworks but don't expect to
have a fully working functional side project from this process. If you want to
make a new personal website then approach it with that goal in mind, which
usually would mean using a stack you're familiar with.

As for your initial question, yes I always use git, for everything. I've been
burnt in the past and learned my lesson the hardway.

~~~
sk0g
The version control part is a very good point actually!

For personal projects I just use the master branch for everything, which I
just realised might be the cause of a few of the problems there.

To be honest, I haven't done much front-end/ user facing stuff even, aside
from a few Android apps and some uni assignments. There's so much to learn and
I try to stay away from JS/HTML, to an irrational degree maybe.

Do you start with git straight away though, or once it's reached a decent size
where you wouldn't want to lose the progress made?

~~~
jamil7
I would generally initialise a repo when I start the project. I would grab a
gitignore from [https://gitignore.io](https://gitignore.io) and not think to
much more about it. You don't have to be super formal with your commits as you
would when working with others.

------
brlewis
> I really really really don't want to commit it without having a clear plan
> in mind

This is the core of your problem. Having commits that show exploratory work
you've done is useful, _especially_ having a record of paths you went down
that you later decided against. Do whatever it takes to change your mindset.
Maybe make a toy repo and do a bunch of ridiculous commits to loosen yourself
up.

------
hyzyla
When I start a new project and have a lot of dirty commits, I just commit to
master branch all changes without worrying about "cleanness" of commits. When
I notice that I started adding features instead of prototyping I squash all
previous commits and start adding "clean" feature commits

