HACKER Q&A
📣 sk0g

For side projects, do you Git from the start, or at an MVP stage?


I'd say I experience some sort of writer's block when it comes to side projects. One key point is I am a bit of a perfectionist, which means if I don't think I'm going to do something optimally or close enough to it, I will end up not doing it at all.

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'm stabbing in the dark trying to hack things to work, I really really really don't want to commit it without having a clear plan in mind. That also means I can't go ahead and use/ 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.

Another thing is I always dilly-dally with frameworks, etc. I've put off building a personal website for about a year because I've bounced between Elm, Mithril.JS, Blazor, Laravel etc. I'll start up with one, run into a wall, and give up because I don't want to do things 'suboptimally'.

Anyone else experiecne this? How do you overcome it?


  👤 kaazhan Accepted Answer ✓
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.


👤 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