
Ask HN: How to finish personal projects? - aaossa
Hi HN, how do you do this? My current workflow is this:<p>1) Begin a new projects<p>2) Work in this project 1 or 2 days<p>3) ...<p>And that&#x27;s it... Do you work everyday in your projects? You decide to work X days in a project and then &quot;is finished&quot;? Maybe you have a feature list and once everything is ready you stop working?<p>How you do this? :)<p>Thanks!
======
morbidhawk
I've always lost motivation sometime shortly after starting on a new side
project.So what I've done lately is when I think of something I'll then
determine if there is a way to get it built and usable by the end of the day,
even if it is just a simple script. This way I can actually later use the
thing and when I have another idea to expand on it I can take that on later as
another day's work.

This might not work for everyone but for me I've actually built a few useful
tools that I use everyday and have been able to continue building on. The only
2 requirements needed before I undertake something is 1) that it is something
I see myself using on a semi-daily basis and 2) that I can build it within a
day.

~~~
sivanesanms
Discipline replaces Motivation

------
rcavezza
Three steps to make sure you get more than 1 or 2 days out of it.

1.) Make it very crappy, and put it live for the world to see.

2.) Be embarrassed that this thing you made is so crappy.

3.) Use that embarrassment to make it better.

However, I suspect that the problem might be something else.

They say you should always be working on your best idea. Maybe you are jumping
from project to project too fast?

Maybe you need to take more time to think about why you're starting certain
projects.

Maybe the answer isn't finding more time working on projects. Maybe the answer
is spending less time working on projects and more time thinking about
possible projects.

Some random thoughts here. Sorry that it sounded a little Seth Godin-ish.

~~~
puneet_kalra
Thats how I do it for my website projects.

I usually plan the main process (User entry => Checkout) and make sure its
working, and leave things like design and user experience for later. I always
add live chat support on my projects so users and prospect-buyers can
complaint anytime.

Embarrassment + Money makes good source of motivation to make my websites
better. Also another good thing about this approach is you never waste time on
bad ideas.

------
bradleyboy
My recent workflow has been this:

1\. Put the project in a private GitHub repo. Paying for it adds incentive to
work on it.

2\. Break up the work into small tasks and add them as issues in the GitHub
project. Aggressively separate them into milestones to stay focused (Milestone
1 == MVP, less important stuff in Milestone 2, etc).

The reason I think this works is that it is easy to get overwhelmed by all the
work on a side project, and you have limited time to work on it. Now when you
have time, you grab a ticket, complete it. Each ticket should be doable in a
few hours or the scope of your ticket is too broad.

~~~
barrystaes
Tip; if you have a home server check out GitLab-CE.

I run it in a docker on my Unraid (file)server, all easily managed via
webinterface.

------
Broken_Hippo
Here are my suggestions:

1\. Work on your project _most_ days. It doesn't need to be long - 15-30
minutes. This is mentally doable most days, and you'll find days that you just
work. After a while, this becomes part of your daily routine and it gets
easier. It might be even easier if you do right after something else you do
every day - yup, make it a habit.

2\. Have a variety of tasks to choose from when you can. This helps with the
motivation as well.

3\. Be able to congratulate yourself for getting chunks done - or something
similar. Whatever works for you.

~~~
Kabootit
Inevitably, you will miss a bunch of days in a row. Then what? #1 changes
quickly from a positive to a negative pressure producer.

My preference most of the time is to optimize for discontinuity since it is
usually inevitable and I want to minimize negative pressure producers. "Being
in the flow" is great for productivity and all but I'd rather not count on it
or optimize for it. Instead:

#1 When exiting a work session, I write on a Post-it note the next immediate
steps/chunks/steps in order of priority. I usually also write down the next
theoretical milestone/goal these steps are part. Sometimes I'll even write
down the tentative 2nd milestone.

Note that this is separate from my Github-based task tracking and kanban
board. That system is for when I'm in the flow and can have reasonable
expectations of continuity (and when working with others).

This technique minimizes "spinning up". Instead of having to mentally
conceptualize the project and all its tasks to start working, I just start
working and let the full scope of the project flow into my brain as I
progress.

If I enter flow state as a result, great. If I don't, no biggie — something
gets done and I'm off to the next thing in life. #2 and #3 fit right in here.
Rinse and repeat.

Disclaimer: I like colored Post-it notes.

------
jasonkester
I've fit this pattern for most of the things I build, though I'd replace
"days" with "weeks" above.

The things I have finished are nearly all things I have put a price tag on.

They may have been done before I shipped them, but most weren't. But once
there's the threat of real users sending you money and expecting things to
work, that's incentive enough to actually wrap up loose ends and polish what's
there.

Notice that what actually happened was a slight redefinition of "finished" to
include all the features that currently work, with non-working features hidden
and no pointy bits sticking out the sides. As distinct from "all the things I
wanted to include are now working to my satisfaction."

Eventually you can work toward including all those other things, but step one
is to polish what's there. Then it's just a matter of polishing each
additional feature after they're built and before they're exposed to users.

------
benologist
3) Make a list of what you think your project needs before launching, but put
as much as possible off until after launch, recognize that you can still work
on it then

4) Do something on that list

5) Go back to #3 until you are launched

By postponing additional work you give those ideas time to mature while making
concrete progress and finishing your project at least to some sort of
functional state. By the time you're up to those tasks you will probably have
identified why most of them weren't ever worth doing let alone derailing
projects for.

------
taprun
I'm struggling to finish writing my third book right now. Here's what works
best for me:

* Know the definition of "done" from the start. Working against a moving goalpost is a motivation killer.

* Have a consistent way to measure and track progress (word count, features completed, etc), and graph it over time.

* Break the big project into smaller, bite-sized projects. Each time you mark a small part as complete, you'll feel a sense of relief.

* Make progress every day. Even if it's just a bit, it'll feel good to know that you're that much closer to finishing.

------
gt2
Finish the minimal viable part of the project very quickly.

Add the housekeeping parts and extra features later (if it's worth it i.e.
being used by you or others).

Eventually when you do enough personal projects you will find that the
housekeeping parts are the same and can be bolted on easily. That's another
reason it's not worth doing anything except the minimal viable part of the
project.

------
borplk
I've found the nature of the idea is quite important as well.

For example for a long time I used to do very "philosophical" projects.

Huge ambitious ones where before you even start you already know it's by
definition going to take years for it to get to somewhere worthwhile.

Except I wasn't ready to commit to such things, and I knew it.

That tiny half-assed part of a huge project will not amount to anything.

So overtime I accumulated a great graveyard of "this would be cool if I had
worked on it for a year instead of 2 weeks" projects.

On the other hand if the idea is small and practical you can work on something
for 3 weeks and have something nice and practical that is a concrete
achievement.

So if finishing is your goal and you don't have tons of time to dedicate to a
project my advice is to ask yourself how practical and realistic is it for you
to finish an implementation of that idea in your desired time-frame?

If it's a huge idea you have to accept the reality that in your amount of time
you can't finish a significant % of it.

And 5% of a huge project is often not as useful or impressive as 120% of a
tiny project.

------
jetti
I had never really finished a side project until recently. First one was
something I was going to sell. It took over a year because of changing UI and
redoing a lot of stuff (unnecessarily) but I managed some sort of soft launch.
My most recent project was writing a mix task in elixir. It solved a pain
point I was having and gave me a better insight into the Elixir language. I'm
working on another library for Elixir that I plan to use in a website I'm
working on that I want to set up in hopes of making money.

Bottom line, both of the projects I've started and finished have had monetary
gain to it. The product and then the task. The task is helping with
contracting I'm doing so making my job easier is sure a big incentive.

------
itamarst
Two approaches:

1\. Solve an actual problem. E.g. I built a library based on some use cases I
saw at a training session I did at Cisco. Building yet-another-thing-that-
has-900-implementations doesn't count.

2\. Set a really hard deadline or limit. E.g. "must be feature complete by end
of the weekend."

The goal either way is not to end up in place where it's 20% done: either you
have problem or a deadline to keep you focused on completion

Longer writeup: [https://codewithoutrules.com/2016/09/09/side-
projects/](https://codewithoutrules.com/2016/09/09/side-projects/)

------
segmondy
1\. Time box it. Pick a date that you will release, go live, ship, whatever.
Pick a date.

2\. Break it into smaller tasks.

3\. Prioritize those tasks and start with the easiest.

4\. This is not time to learn, this is time to build. Use only tools that you
know. Even if you know there is a better way, do it the best worse way that
you know than the better best way you have heard of but don't know and will
have to stop and learn. This is key, separate learning and building.

5\. Work on it everyday, at a consistent time, preferable first thing in the
morning.

6\. Since you will be waking up early, go to bed early too and get enough
sleep.

7\. Work on only one project at a time, meaning, you can't work on other
projects in between. Everything else goes on hold till this is completed.

8\. Find ways to motivate and inspire yourself when you are feeling mentally
down and low and focus is hard to come by. If you really like music, don't
listen to it all the time. work without it, when you find yourself drained,
that's when you should turn on music. Unless you absolutely can't work without
it. Whatever that gives you extra boost, hold off from it till you really need
it. Coffee? Don't drink it, till you need it. Think of it like power up. Save
it till you need it.

9\. Is it ship date? Release it, only 70% done? Release it!

------
taqwasd1
If I haven't launched in 3-4 months I'll dump it and work on something else
that is more exciting. If you can't launch in 3-4 months you've either bitten
off more than you can chew or don't give a damn about it.

On a day to day basis, I dedicate 2 to 3 hours to my side project (side
business). This includes maintenance for previously launched projects and work
on the "new" project.

I only ever have one "new" project going that hasn't been launched.

------
skohan
A few things that seem to work:

1) Define a single, easily understood high-level goal. Something that's easily
understood and can be accomplished in a timespan of days or weeks. It's
important that this is not defined technically, but in terms of _what the
application can actually do_.

2) Repeatedly ask myself whether what I'm doing is directly contributing to
the current goal, or is required to reach it. If it's not, stop doing it and
figure out what's going to get me there the fastest.

3) Wake up early and work on my project _before doing anything else._ Every
morning I wake up, take a shower, kiss my partner on the forehead and then I
am out the door to work on my project at the cafe down the street. This is the
part of the day where my mind is the most fresh, and it's not possible that
something else has taken my attention and distracted me from the goal at hand,
or tired me out so much I don't have the energy to work on it. Also once you
get in the habit it's hard _not_ to work on it once you wake up.

------
jcahill84
I've spent many many years half-completing things... I think it's a really
common pattern. I recently, finally, completed something and launched it
([https://schezzle.com](https://schezzle.com)). The trick is to just make
yourself launch. Stop thinking about the business aspects, or scale, or really
anything other than launching and just do it. I made a New Years resolution
and held myself to it, and it feels great. Instead of watching TV or reading
in the evening, pour a cup of coffee, make a TODO list, and start checking
things off!

------
tmsldd
Just like it you do at a company..

1-Plan, prioritize, schedule; 2-Use a scrum.. even if you are the master, the
team, the stakeholder all at the same time. Tip: don't forget the stand-up
meeting.

I've learned it from a German colleague (and great friend) who even use scrum
to manage his own house activities... yeah he was kind of sick.

~~~
TomMarius
Nah, he was just very German.

------
rak00n
If you're procrastinating your brain is telling you it's not important. You
can push yourself with motivational tricks but you might won't get anywhere.

It might be better to get some value out of it and/or convince your brain why
it's worth doing.

------
NameNickHN
I treat personal projects like therapy. Doing something for me, trying
something new makes me feel good. Even if I just have a working prototype I
have the sense that I've accomplished something. It doesn't matter much if
nobody sees it. If that were the case, those personal projects would turn to
work and I have enough of that already.

That being said, I do finish side projects from time to time, mostly because I
can still see the potential after working on it for a couple of ours.

------
jbradleybarnes
Wake 2 hours earlier every morning and make that your scheduled time for the
project. You would be surprised how quickly a project can move this way.

------
polygot
What I do is spend a bit of time, and write down all of the features I could
possibly want in my program as GitHub issues. I sort them in the order of
usefulness/ones I want most, and I set a timer for 25 minutes and write as
many features as possible (the code can get a little messy but you can fix it
up later.) Rinse and repeat until you're burned out.

------
GregBuchholz
Do people find it worth the time to read books on productivity like Getting
Things Done, Eat that Frog, etc.? And learning more about things like Org
mode? Or are those essentially procrastination enablers? Is see that most
people are working on software personal projects. Anyone have thoughts getting
"hardware" projects done?

~~~
c0ffeekat
I bought Getting Things Done and I regretted it. If you're constantly
forgetting things and completely unorganized then it's probably worth it. I'm
a naturally motivated, self-starter kind of person and I found GTD was just
overkill for me.

------
nanospeck
My strategy is to push out the first working version in that first 2-3 days
and get feedback. I have recently, compiled and published my experience and
thoughts on this exact topic as a book :
[http://amzn.to/2iUYaOH](http://amzn.to/2iUYaOH)

------
probinso
increase human to project ratio! Humans keep humans accountable. Find people
fun to work with.

Choose to work on projects that help other people, or are inspired by others'
passion.

Keep a list of tasks always visible next to your bed, to remind you to work on
stuff when you have time.

Be okay with taking a few months break if you need it. Guilt for not working
on your own projects accrues, only making it worse. You have to be able to
easily alternate between actively working on it, and not.

------
anexprogrammer
My workflow is usually to lose interest and motivation right around the time I
have it rough, ready and working. Rather than do the last polish and site to
release I would end up doing other hobbies.

It's been frusrtating.

------
nkkollaw
I suggest you read "Just F*cking Ship".

It's pretty good, and it goes into details on why we can't launch
products/finish personal projects.

------
sivanesanms
Start it and never stop it until it is released, and after it is released
based on response - keep continuing it.

------
Pica_soO
By not adding features.

------
tsuyoshicho
If a hand gets tired, and stops.

