Ask YC: How To Prioritize
For me, one of the hardest parts of doing a start-up is deciding what to do first. I know what has to be done, I know how to do it, but I find it much harder to determine what my site biggest issue is.
To give a few examples: I haven't implemented billing yet. This is obviously essential, but now may be premature, since ... I've got very few users. So, maybe I should do more marketing, but ... My site may not be good enough yet, so most visitors won't stay around. So maybe I should listen carefully to my current users and make the site ... prettier? Easier to use? Create more content? Make it more fun? More addictive? More viral?
This is a hard problem no matter what, but does anybody have useful suggestions on dealing with these issues?
(
35 comments
| 21 points
| on HN
)
A long time ago I realized that people mean different things when they say 'priority'. If you only mean the 'value' of a certain task, then that's not a good way to prioritize, IMHO.
I've changed my model to prioritize strictly according to return on investment. I.e., how much value I or the company receives for unit of work.
In my professional project management and in my company, here's the algorithm that I pretty much use for every sort of task prioritization:
(1) I put together a list of items
(2) I put a relative cost (RC or C) associated with each item-- for a task list this tends just to be the hours you predict you'll spend.
(3) I hide those costs and then add some number that represents the relative business value (RBV or BV) of each item. (More on this in a second)
(4) I unhide things and then put another column that just calculates RBV/RC which indicates the return on investment (ROI) for each task.
(5) I then sort it all by ROI and work my way down the list in ROI priority order, always working on the tasks that offer the most ROI, I adjust values and costs (and re-sort) as my needs change, work completes, and as my understanding of each task changes.
The units used to value each assigned task is not really important. It's only important that tasks have a value that makes sense relative to each other.
For example, if I have these tasks:
I might then give these costs: Having a tech support email account, I know that's important and I must have it, so it gets a high value. In this case, I'd say "Improving usability" is something we could survive without, but I firmly believe it could increase our revenue.I might then give these relative business values (I'll just say points):
When I calculate the ROI and sort them, I get this list that I work from top to bottom: As long as when I add new tasks, I evaluate them against the other values and costs to ensure they're all relatively correct, the list always sorts to provide the tasks with the 'biggest bang for the buck' at the top.That being said, I try to capture items like that via a constantly evolving list (which is pretty much necessary no matter what). The relative business value of the next item in 'the sequence' would be higher that day/week than than it would be otherwise and would bubble to the top if it was the highest return on investment.
Likewise, it's possible for the 'cost' of certain tasks to drop/rise based on what's happened recently (i.e. you just learned more about something, or you're in a really productive mood or office setting).
In the end, my ideal would be just to figure out what's the highest return for my time __right now__ and work on that. I.e., it's a continuously updating function and the list is never set in stone.
I don't have Excel, so I'll start writing a Ruby DSL to implement this right away.
Here's an example sheet that you should be able to copy via Google's menu:
http://spreadsheets.google.com/ccc?key=pvOwoUYoNUFTmGZhwyjK4...
Having used this specific approach on many projects, there's considerations that should be kept in mind that I haven't solved 100%:
It's difficult to track dependencies between tasks and have those sort efficiently. As a human you have to realize the sheet is a tool and that you have to look to catch these things from time-to-time.
If you're not careful, you can defer 'infrastructure' tasks that have no obvious/direct BV. I work around this by temporarily having infrastructure tasks inherit the combined BV of all things that they'll help and for all tasks to add the infrastructure item's cost to theirs.
There's probably a more accurate formula for dependents and dependencies to use, but I find that if you have 99 tasks dependent on an infrastructure task, it's not unreasonable to say that task is pretty durned important to open 'doors' for the company.
For example, refactoring tasks often fall into this category. Changing from an Access database backend to a MySQL backend might not give you immediate ROI, but the sheer number of things that open up to you as possibilities after that need to be considered somehow. The conventional naive approach might not get you there without the item inheriting some of the value.
You didn't listen to a word he said. I mean, just do the smallest list possible that you can fit into your head (so that you don't need Excel): this can only have two items if you want--find an Excel alternative; write a Ruby DSL. Weight those the way he said, and you will end up crossing the Ruby DSL off of your list.
(Yes, these are silly and inflated and completely hypothetical. I'm interested in how you solve them within your structure, as I'm a huge ROI fan.)
I suspect it is best to focus first on the task you most feel like doing.
What I would do is to set up some goals (get more visitors, increase ROI, etc.) and then look through your list of stuff that needs to be done, with these goals in mind. Do the ones that are most likely to get you towards your goals.
Just writing it down will probably help a lot.
Within your product, do the most important thing your users need or you think your users need. (The former is better if you have a significant user base.) If that thing is billing, do it, else postpone it. Don't think about what will cause a media splash, or what is "cool". Stay focused on what people want.
If you have been live / launched for quite some time, marketing, addictiveness and virality become somewhat more important, but from your question, I suspect that isn't yet the case.
"Priorities: Last Refuge of the Innumerate
What is our highest product development priority, cycle time or unit manufacturing cost? To even ask this question, suggests a fundamental misunderstanding of product development economics. If cycle time takes priority over unit cost, then it follows that we would prefer the smallest improvement in cycle time to the largest improvement in unit cost. If unit cost takes priority, then we would prefer the smallest improvement in unit cost to the largest improvement in cycle time. Does this make any sense? Of course not. When we prioritize we give strict precedence to one objective over another. Such strict precedence leads to bad economic choices.
The value of cycle time and the value of unit cost must be expressed in the same unit of measure: life cycle profit impact. It is only with this quantification that we can make good economic decisions to trade one for the other. Setting priorities for individual measures of performance is simply avoiding the important job of understanding how performance influences economics."
It sounds like you need a simple model for what the site will look like when it's profitable (e.g. number of customers, how often they visit and how many times in total do they visit (customer lifetime), what does it cost to acquire them, what and how much do you charge for, how often do they refer other customers...). Once you have some numbers on your model you can then build a plan to evolve toward it.
I am inferring that you are going to be a subscription site ("haven't implemented billing") I would get that done right away and see if you've built something that even a small number of folks will pay for. There can be a world of difference between what people like and what they will pay for. Focus on what they will pay for in a subscription site.
Also, it can help if you keep a list of low complexity, low priority tasks that you can pick from as your fancy takes you, when your motivation is low or you are just having an off day. You'll be suprised how ticking off these low priority tasks will give you a sense of progress that restores your clarity and motivation to tackle those bigger, more complex milestones. Good luck :)
* http://www.life2point0.com/2006/06/the_little_book.html
"A great way to build software is to start out by solving your own problems. You'll be the target audience and you'll know what's important and what's not. That gives you a great head start on delivering a breakout product."
Start off by figuring out what you need to progress, and once you get to that point, build on it and make it better, and before you know it you're trucking along on the next great web app.
Separate list for major features I intend to add. Works the same as the task list, except on a much slower timescale. That one has ended up being much more valuable.
The simple act of collecting this all in one spreadsheet doc has resulted in way more clarity in my thinking and planning. It allows me to bounce between many major areas of work, without losing track.
Best of luck!
But most importantly, I try never to procrastinate, although I don't always succeed... Good luck!
Obviously listen to your users! Prioritize on things that you think will grow your site - like ALL of the things you listed. Some are easier to address than others, so tackle those first.
How do other start-ups prioritize?
THAT's what you should focus on.
You can do later, delegate, or outsource the stuff others can do to the others who can do them.
OTOH, there's not much need for billing if you don't have something fantastic to sell.
My experience is that when you really focus on the one big thing all the small things get even smaller once you get around to them. Hope that helps.
EDIT: It just occured to me that pg describes this concept (What's the best thing you could be working on, and why aren't you?) much more eloquently here:
http://paulgraham.com/procrastination.html
Are you building a storefront? Shopify.com might take care of 99% of your work. Managing invoices? Use BlinkSale.com. Getting stuck on unending CSS issues? Use an open-source CSS framework.
I'm sure this isn't news to you but I thought you could use the reminder - I know I need it frequently. We who can do anything often try to do everything.
In your case that translates to which features translate to the maximum number of users.