Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: How do you manage your one-man project?
41 points by eipi on Dec 12, 2012 | hide | past | favorite | 57 comments
I am doing some side projects at my "copious" spare time (getting up at 5am and work for 2 hours). I think it would be a shame if I end up wasting time. So, I wonder if any of you, in your one-man project, use any software development methodologies (scrum)? Any project management software (evernote)? Or do you relax and not keep track of it at all?

For small projects, I use text files, and keep them inside the repository.

This way the files are available whenever I switch computers and they are automatically backed up.

I keep several text files in a directory: 1. A backlog. This is roughly similar to a scrum backlog. It's disorganized and needs to be, because it's important that I can easily put stuff in here when an idea comes to me without having to get distracted organizing things.

2. A plan. I periodically select a few things fro mthe backlog and organize them into a chunk of work that I plan on doing next. I put checkboxes like this [ ] next to each item, and when I finish the item, I change it to this [x]. The item that I am currently working on looks like this [.] to indicate it's in progress. That way when I get interrupted for 2 hours or a day and come back, I can easily see what I was doing and get back in the groove.

Periodically I move everything I have completed from the plan text file into a file like history/2012-12.txt. I put a date right before the items I put in. This way I can go back and see what I completed on a given time period.

Also into the plan file I will put notes of issues I'm researching, which can occasionally be useful to go back and look at a month or more later. Those notes get moved into the history file when that chunk of work gets completed.

The benefit of this approach is that I can use this method even when I am traveling on the train, and it let's me easily switch computers and keep working. I find my to do list to be just as important as my code, because it's very hard for me to be productive on a large project without continuous planning.

The main thing is to not fall into the "productivity porn" trap of trying to find the best tool instead of actually getting stuff done - when something simple is more than enough.

Keep a simple list of things to do as a backlog and maybe another list of "would like"s. I personally use SimpleNote and Notational Velocity for both.

I'm the same way. I use a txt file that I keep on my desktop. It does the job.


I've found that the first 80% I can generally get done pretty quickly; most of the design and architecture is in my head and always running as a background task. I use Evernote to organize TODO's (always at the top of the list), and have little discussions with myself about stuff like features, UI's etc.

Life.Gets.In.The.Way.Restart. Arrrrgh. Inevitably. Back to Evernote and pick up where I left off. It gets much harder during that last 20% (which usually takes me more than that first 80%), because the jump from Proof of Concept to Product is brutal.

Do.The.Worst.First. A friend of mine, Sid the Sailor, used to talk about "painting the windowsills when the whole house needed cleaning"... especially combined with that last 20%, I have a tendency to go down rabbitholes (hey maybe I'll use RabbitMQ for this)... so, back to Evernote, and add the TODAY list - what's most important to get done. Then, suck it up, and do it. These often require very long late night sessions since it can often take hours for me to get started and get the momentum up to deal with the pile of poo. (Cause if it was fun it woulda been done).

Invite.Others.to.the.Party During the process, unless it's Top Secret(tm), invite others to take a look at what you're doing. Early on it's nice to get some approval, later on, it's nice to get some feedback about usability. Be careful to avoid party poopers since you don't need to be discouraged - this shit is hard enough already.

Launch.the.fucker. I have trouble with this one, because it's scary. It also generally means I'm going to end up with a pile of feedback (or bug reports) from a bunch of pissed off strangers. I really don't like it because it means work, and lots of it. It's the chasm between a brain fart and reality. And I get faced with the ultimate reality of "Hey maybe this sucks and I've just wasted a huge amount of time".

Now, in "practice what I preach mode", you might want to check out xlogs - http://xlo.gs - it provides logfiles for Amazon AWS and more. and i'm just launching it now :)

I use Trello. I have just one board. I keep one list per project, plus a list for ideas, and a list for priority TODOs -- stuff I need to get done today or tomorrow but for whatever reason didn't do immediately.

I also use Trello, though in combination with a whiteboard.

I have one big project, so I have a Trello board for that, with lists for: Today, Tomorrow, and then future work by discipline (it's a game, so things like: gameplay, rendering, art, design, etc.).

Every morning, the first thing I do is check my today list. If it's empty, I move some things from the tomorrow list in. Then I fill up the tomorrow list with things from the future work lists.

This means I have a list of all the work I need to do, but I don't explicitly plan more than a couple of days ahead - things are too variable for that.

Once tasks (in the today list) are done, they get moved to a 'done' list that I can review later.

It's simple, and seems to work fairly well for me.

I highly recommend workflowy [1]. I use it for todo lists, notes, or any type of list for my real job, side projects, and my personal life. I love how it is so fast and simple it seems like opening todo.txt in notepad, but it's powerful, instantly searchable, and syncs everywhere.

[1] https://workflowy.com/?ref=45b58c2.tw (disclosure: referral link gets me 250 more list items a month)

Beyond workflowy, before going to bed each night have the next 2-3 things you need to do immediately when waking up ready and defined.

That way, when you wake up, you can dive right into it and try to accomplish at least one thing a morning, if not two. This helps you get up rested and put your highest and best energy into your side project and it can be fruitful.

The best thing I ever do is shutdown tweetdeck, my e-mail client and any browser tabs to social networks / HNs / reddit. Productivity shoots up the roof.

I agree with this.

I have a separate dev user on my machine that has no email or any other distraction and I keep my browser clean and purged.

This means it's a pain in the a*se to login to sites I visit in normal life.

I try to take what I got from University. It's nothing new or special, but it helps me get along. I generally stick with a rapid-prototype design and follow through the (collective "ugh") waterfall approach. Start with your requirements, formulate an analysis, follow through with a a design and work towards the implementation and testing with focus on post-delivery maintenance. It's not new, and it's not in any way "productivity porn". But, for me it works and that's all that really matters.

Tools I use: I try to stick with an IDE like Eclipse. I know they're sorta frowned upon, but I like convenience. I use Git, personal preference. Some spreadsheet program for managing tabular data, like milestones, word processor for keeping a journal, and a scratch pad or whiteboard for scratch-work.

Tips I've accumulated after a while:

   * Milestones help you focus your efforts for the "session"
   * Design documents and whatnot sound like a lot of paperwork, and it is, but they are incredibly useful to have and keep around.
   * Try to not intermix phases of development. Don't do design and requirements gathering or design and analysis at the same time. Do things in order. It keeps things clean and separated.
Nothing here is incredibly new and much of it is probably incredibly obvious to most people, but as a person who studied computer science, software engineering concepts were not stressed. This methodology keeps me going without getting stuck in "programmers block" wondering what-to-do-next.

Plain text. In my case Emacs org-mode.

When you don't have to share it with anyone, keeping a todo list in plain text really reduces the mental load of switching between your code and the list. It's easy to modify, make it look however you want. +1

same here. less mousing

I tried Basecamp and some iOS todo list tools, but in the end, I have one Google Doc with lists of tasks. I should dump Google for Evernote (better mobile support and less connection issues) but I once had a sync issue on Evernote and lost some text, so I don't trust it. I might go with just a text file in Dropbox or use Gina's http://todotxt.com/

I keep shuffling how I organize tasks. There's by-project, where I list all the things that need to be done to complete something. But I also have to keep some context lists like "next time I'm working on the website" or "next time I feel like doing a bunch of Photoshop work" for those tasks that keep getting put off.

I also keep a wall calendar (just a big sheet of white paper) with post-its for each deliverable. They keep slipping, but at least I can see how many weeks are left until external events.

When things get really unproductive, I walk away from the computer and sit down with a notebook or stack of index cards/post-its and dump everything that needs to be done. For tasks that are stuck, I try to apply Merlin's idea of visualizing what it will feel like to have it done: http://www.43folders.com/2005/10/16/43f-podcast-the-to-have-...

I use Sublime Text 2 as my primary text editor, and I really like PlainTasks plugin (https://github.com/aziz/PlainTasks) as a way of keep tracking the things I need to do, things I would like to do, and, most important, things I've already done (just to have some sense of accomplishment).

In a side project with so few hours per week, I think anything more complex than this is overkill.

I am a big fan of the whole "if you cannot measure it, you cannot improve it" mantra, and while there are some edge cases it tends to work pretty well for the majority of cases.

So, I use:

1. RescueTime to track where my time has gone - after seeing exactly how much time gets sinked into FB/Twitter/App.net sor tof activities I, somehow unexpectedly for myself developed a particular type of anxiety - if I stay on those pages for roughly over a minute it freaks me out and I close it immediately. (I guess it's the realisation of wasting time is freaky).

2. PivotalTracket - to manage the priorities of tasks and to measure my "burn rate".

3. Evernote - I try to stick to the following procedure when reading/watching anything new: 1. Take short notes on stuff being watched/read. Express things using my own words, NOT copy pasting or typing same stuff I just read. 2. Create actionable items from what I read 3. Break those actionable items into PivotalTracket tasks

This helped to reduce the unnecessary news intake dramatically - in the very beginning of each article that I start reading I ask myself - "is it worth taking notes on?" if not - close the tab.


Do you mind expanding on your Evernote strategy? I've thought of doing something similar but have never gotten down an exact system.

Do you take notes on almost everything? How extensive are they usually?

I've always felt like it's too time consuming to take notes (especially in my own words) but also recognize the likely increased retention advantage from doing this.

1. I only take notes on substantial material - something I can learn from - so for instance I don't take notes on news articles that I've read, but I do take notes on relevant to me blog articles, books and videos/video lectures.

For instance I just finished reading a Brennan Dunn's book "Double your freelancing rate" and published the summary in here: http://blog.nimblegecko.com/notes-on-double-your-freelancing...

Or here are the notes on second week of Coursera "how to reason and argue" course - https://www.evernote.com/shard/s42/sh/cf6b1dd3-51aa-4bc0-b94...

Hopefully it gives you an idea on how extensive that is.

2. After I finished writing down the note, I copy its contents into a separate note in Evernote and delete everything that I cannot turn into an actionable item.

For each actionable item I add a tickbox (Cmd-Shift-T).

3. Then I estimate how long it's going to take to execute on that item and add a ticket into PivotalTracker. I normally try to group tickets by epics (product, marketing, consulting etc).

Hope it helps.

I would avoid anything that distracts you from the main job in hand - working on the projects.

Lists are good - things to do both "must have" and "would like" - plus "yet to be tested" as things develop. Anything you cant just keep reliably in your head.

Carry a notebook around to jot ideas and sketches when you are doing other things.

I use Basecamp because it's very simple. There are a few text docs that outline different aspects of the project, and I keep updating them as I go along (instead of adding new ones). And, as somebody else wrote, having three to-do lists ("Things to do right away", "New features", "Ideas") is also a good approach. If you have a little time you can pick off small things from the priority list. Stuff from the "Ideas" list either gets kicked out over time, or slowly graduates to "New features" and then to specific items in the priority list.

Generally though, I find that having a site out there and people using it is the best motivator to keep pushing forward. It creates a real sense of urgency and priorities, and you simply won't have the luxury of not focusing on the important stuff that affects people's experience.

I maintain a sorted list of tasks that are concrete action items, tagged with a priority (high, medium, low, or wishlist). Whenever I figure out something else that I need to do, I add it to the task list. While I'm working, I generally ignore the task list and work on whatever I feel like at the moment. If I can't think of something to do, I'll grab something off the top of the list.

Every Friday morning, I step back and evaluate my progress: I write a paragraph about what I did during the week, a paragraph about the overall sentiment of the feedback that I got during the week, and a paragraph about where the project stands in comparison to its long-term goals. During this time, I also go over my task list and add, remove, or reprioritize tasks as needed to make the list reflect reality.

I use evernote with a notebook stack (action pending, completed, ideas) for development projects and using a modified version of the secret weapon I manage all my side projects in there.


I have a white board right above my monitor. I write a daily "to do" list there and check off items as they get done. Items that do not get done in one day get moved to the next day. I try not to let the list get too long (I know I need to do 100 things, but if I can only do 3 today then my to do list only contains 3). It keeps me sane and focused.

In the past I tried something similar to scrum (have a master list of everything I needed to do). But since I do have a day job and other responsibilities, I found that seeing a massive list got too overwhelming. Now I focus only on what I can get done now, not worrying about the pile of things waiting to be done.

Personally on one man projects I have some sort of a text file where I organize everything that I may forget but I consider critical. I don't put everything, I also rely on my memory. One important thing, keep that file short. If the file grows, too much and as this is a side project you don't have much time and motivation to re-read long paragraphs, keep the file short, one screen page at max. I've dome some complex one man projects and this has worked super well for me.

To me scrum and similar practices provide value when you are at least two people, and it gets better when you are more.

Over the summer I started building a little command line tool to do task management for small projects I was working on (find it here: http://github.com/198d/clask). It basically creates another root branch in the repository you're working on and writes YAML files with various pieces of task metadata. The command line tool really just facilitated the editing/viewing of the underlying YAML files.

More recently, at work, I've been using a Trello board, as I'm sure many others here do.

I use a wiki for strawman feature proposals and for the roadmap; each entry in the roadmap gets a bug in Bugzilla, and all milestones/releases get a tracking bug depending on the bugs that should go in. milestones/releases are every six months, so there's an inherent deadline in there.

it's an open source project, so this not only helps me having a clear idea of what I'm meant to be doing, but it also helps others to contribute to it, by giving a precise idea of what can be worked on at any given time.

I use trello to keep track of things I'd like to do, things I'm currently doing, things I've finished, then I archive every month or so.

I take pleasure with taking things out of my todo list. I noticed that big tasks that will take about a week to accomplish should really have their own board with tons of small "cards" for each tiny task. I break the 1 big task into very small tasks that I should be able to accomplish in 15 minutes to 1 hour.

This drives me forward because the side project work becomes a game.

I use codebasehq.com and religiously create separate tickets for each commit/"feature" (commit logs look like: "[completed: 1234] Added feature X.")

The reason behind this is that I might go for a few weeks without even looking at the code and then when I come back to it it's like picking up someone else's work...

I also have boatloads of unit tests so that I don't have to be as terrified about making big sweeping changes, and try to add tests along with every "feature" I put in.

The best way to be productive is to focus more on actual work and bare minimum on management. This is what I do :

1) Take one project at a time.

2) Make a vision document, basically what features I want in full fledged version of my application - Plain text document on my desktop.

3) Reduce the number of features to minimum required for MVP and make a to-do list for MVP - plain text document on my desktop

4) After 2 & 3 is done focus only on actual work(coding/designing) ticking off to-do items one by one.

Github issues can be a useful place to stash features that you want to implement in your project, and if your project is public and has eyeballs on it, that puts some impetus on you to focus on getting them done.

A todo list app can also be useful, but only if using it is something you use out of habit. That's why Github issues fits nicely with me, because it fits with my natural workflow (filing issues or scouring issues of software I want to use).

I'm quite a fan of Asana. It's free and a very simple task management system. If you ever bring another person on board it's easy to reassign tasks.

I often do the same thing as you, where I get up early (6ish for me) and do a couple hours of work before the start of the actual workday.

The most important part to me is to make sure that I'm only doing things that actually matter. So when I'm thinking about adding a feature to my product, I first try to see if that feature should actually be the highest-priority thing, or if my customers can live without it. And it helps to zoom way out, too. Often, programming is not the wisest way for me to spend my time. Sometimes it makes a lot more sense to spend time on, say, marketing, or on education, whether that be programming-related education or something else. Abraham Lincoln said, "If I had eight hours to chop down a tree, I'd spend six hours sharpening my ax." A lot of the time, sharpening your ax is the most effective use of your limited time.

I've found the following books helpful when it comes to time management and overall effectiveness. In order of how strongly I recommend them:

- The 7 Habits of Highly Effective People by Stephen R. Covey

- First Things First by Stephen R. Covey

- Getting Things Done by David Allen

- The first 20 pages or so of The Ultimate Sales Machine by Chet Holmes

I use a combination of tactics recommended by GTD, FTF and T7HOHEP. After reading GTD, I wrote down everything I could think of that I would have to or want to do, ever. Examples: do the dishes, email Steve, visit Europe. Later, I captured most of these items in Evernote, and then later, I graduated to Things. I suspect that the developers of Things have read GTD.

Now that I have all of my to-dos captured in Things, I try to take one day each week (usually Monday) to plan the rest of the week. Reality never matches up with the plan, but I don't think that means I need to throw out the entire process. It's still helpful to have at least a high-level idea of what I want to do with the week.

I still find Evernote valuable for capturing ideas, but Things seems best so far for capturing to-dos. I also still use pen and paper to plan on a day-to-day basis. If I go by Things only, I forget, so I usually transfer my daily Things to-dos to paper at the beginning of the day. As unexpected things naturally pop up throughout the day, I add them to my daily to-do list and/or Things, depending on how likely I think it is I'll get to that item the same day.

Hope that stuff helps.

Also important: when I want to have a chunk of productivity, I close email and don't check Twitter/FB/Reddit/HN or anything like that. I'm obviously not trying very hard to be productive right at the moment.

Evernote is almost certainly the right choice for organizing your thoughts. Other options are too heavyweight or inflexible. Just create a notebook with a few notes and write down everything.

Personally, I find TDD is a helpful design aid for tricky bits of code. I don't bother when it's trivial, but when creating major systems or components, it helps to focus my design and enforce encapsulation.

The main problem with side-projects, is not about project-management, but actually keeping up continuous passion to work without major distractions, while you are already loaded with your other day-time job and managing social/personal life. I use Google docs a lot, having a spreadsheet with list of items. Other tools I've used are do.com, basecamp and trello.

For my one person projects I use fossil for bug-tracking and wiki.


I use the free community version of rallydev to manage all my stories and defects. It's definitely a fully featured agile project management tool and may be more UI than you are looking for. I have found it useful because I can clearly track progress, involve friends if need be and have one place for everything.

I'm constantly doing side projects, most of the time more than one at once. Found Asana to be an awesome tool to keep track of tasks and you can even expose it to your clients so they can comment on them. If you want to keep it even more simple I recommend wunderlist

I use Asana to keep track of projects and longer term commitments but when it comes to the ONE thing I have to get done and then some sub tasks pen and paper has never failed me. Don't spend too long on this and just focus on getting the work done.

I switched to using a Macbook Air. Although it was a bit pricier and not as powerful as a Macbook Pro or Windows laptop, I find the portability encourages me to take it everywhere and even sneak in a few minutes of side project work before bed.

I found it best to keep it simple when you're just a one-man show. I use Google docs to keep track of requirements/stories and to track time I use https://github.com/samg/timetrap.

At the moment I've found a stack of index cards, with one task or feature per card, works best for me. You can sort through and prioritise, and write more detailed notes on the back. Also helps with motivation as the 'Done' pile builds up.

Considering that with my one-man efforts I often need to change priorities, I found workflowy.com really helpful: It is really minimal but lets me organize and reorganize my to-dos and even short notes in a very quick way.

I'm a fan of whiteboarding. I have a bunch of headings for projects I'm working on, and under each of them I have a list of small tasks. Every time I sit down to work on a project, I pick one and a task and go at it.

I literally do this on Ubuntu:

    gedit notes_<yyyymmdd>.txt

I just use the Issue Tracker and Wiki on Bitbucker or Github (depending on the project).

I find that since I'm using the source control anyway, I may as well keep a track of everything there too.

I suggest to use Workflowy and Paymo Plus (automatic tracking tool), these two together will help you be organized and know exactly how much time you put into the project.

PivotalTracker takes care of my needs. It is just the right scale for keeping track of what needs doing and organizing it into an order.

Post-it notes for todo lists. I know what to focus on before waking the computer.

Maybe i am weird but i just use the Gmail Draft as a todo and note taking tool.

I use github issues and pomodero

pen and paper, with me at all times. less distracting. less weight.


pen + paper

Discouragement is your (at least, my) biggest bugbear with this. You have to keep it fun. Become close friends with the REPL, rather than spending 8 hours (that's a week for a typical side project) setting up an IDE that looks like a corporate environment you won't need.

You're (usually) not going to accomplish much, macroscopically, until you've done a fair amount of ground work (e.g. learning APIs). You need to keep that ground work fun, so whatever structure you impose on the process (to-do lists) needs to be focused on improving this factor.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact