Ask HN: How to finish personal projects?
Hi HN, how do you do this? My current workflow is this:
1) Begin a new projects
2) Work in this project 1 or 2 days
3) ...
And that's it... Do you work everyday in your projects? You decide to work X days in a project and then "is finished"? Maybe you have a feature list and once everything is ready you stop working?
How you do this? :)
Thanks!
37 comments
[ 3.1 ms ] story [ 47.1 ms ] thread1. 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/
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.
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.
* 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.
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.
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.
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.
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.
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.
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.
I run it in a docker on my Unraid (file)server, all easily managed via webinterface.
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.
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.
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.
It might be better to get some value out of it and/or convince your brain why it's worth doing.
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.
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.
It's been frusrtating.
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.
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!
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.
It's pretty good, and it goes into details on why we can't launch products/finish personal projects.