What do software projects have in common with planning a family vacation? Well, quite a lot, actually.
You begin with a destination in mind. You want to see the Grand Canyon. You want to visit the Louvre. You have a bucket list of places you want to go to, and experiences you want to have. Never been there or done that? Those are problems you want to solve, gaps you feel in your life. Like a vacation, a software project exists to solve some kind of problem; to fill some kind of gap.
You account for how you and yours like to travel. Does your family prefer road trips to cruises, hotels over camping, high culture or action? Everyone might not get exactly what they want on a vacation, but you can't make anyone too unhappy or it will spoil the experience for everybody. A software product needs to provide enough features to meet the minimum expectations of everyone who uses it.
Everyone going wants to come home with at least one special memory. Give them that and they'll manage to tolerate all the boring stuff that everyone else wanted to do. Each person going along has a set of expectations that need to be met at a minimum for the trip to be deemed a success. That's not very different from a concept used often in software: the "minimum viable product."
When you're back home, how do you want to remember the trip? Did it add lasting value to your life, give you memories to cherish? Was it worth the money and time that you spent? Did you know what your goals were when you started, and did you meet them? Like a vacation, a software product has to deliver enough value to justify the time and resources expended.
Here are the four critical questions I ask at the start of a project:
What business problem are we trying to solve?
Who are our customers?
What features do we need to make a viable product right now?
How will we measure success?
If you don't know the answers to these four critical questions before you begin, you should probably wait until you do. In my experience, any project that kicks off without these answers is very likely to fail.
In upcoming posts, I'll unpack each of these keys to project success.