Questions to Ask at the Start of a New Software Project
spin.atomicobject.com
spin.atomicobject.com
I never get it 100% right but I want to avoid as much customer one off code in the product as possible so I don't have to go out and dig it out and make it modular later. When I get it right it really reduces the amount of time setting up a new customer.
# Risk
* What are the platform constraints?
* What are the performance constraints?
* Get clarity to what is an acceptable upper bound.
* Would it be acceptable if it took a week to calculate or 20 minutes to open the application?
* Does it need to happen in 30 seconds or 5 milliseconds or 100 microseconds?
* Can you demonstrate a failure?
* What happens when you go off script?
* Most of the complexity is in handling those off-script behaviors. If that’s not being handled well, the project is definitely not “nearly done”.
# Definition of done
* How does the “Definition of Done” look like? Ideally from whole project down to single stories.
* How would you verify that this is working correctly?
* What is the success criteria of this product?
* What does “good” look like?
* What will make it a worthwhile endeavor?
* What are other pain points and blockers?
# Costs
## Opportunity costs
* Is this the most valuable thing we can be doing?
* Is an 80% solution good enough for your needs?
* Is this work really where your team can add unique value?
Other question one might ask to get a feel for the lost opportunities:
* Which parts of the current system are hard to use?
* Which manual process stops the customer to do more creative, value-adding work?
* What changes would improve operational inefficiencies and save money from the bottom line?
* What evidence can you show that this will solve the problem?
* Provide a simulation or prototype or fake (but statistically relevant) data which can demonstrate the solution is at least plausible.
## What connects to this?
* Things with a more complex network of dependencies will be more costly to develop and maintain.
* What systems will depend on this?
* What systems will this depend on? Enumerate all the dependencies. Other systems, libraries, users, protocols, everything
## What’s Plan B if this doesn’t work?
* What are you going to do when we’re up against a deadline, this solution isn’t working as expected, everything is broken, and we still have to ship?
* Get an answer to that, then do that first. Then you can talk about how you can make it better.
* What would be the earliest point you can know whether the system has any value to you? What is the smallest step that would give us the most benefit? How will we do this?
* If we could keep only half the features what would they be?
* What if we take one dev away from this project?
* The 80/50 Rule:
If you’re not 80% done by the time you’ve used 50% of your resources, you are behind. When something doesn’t pass this test, it’s time to evaluate what needs to change:
* Does this project need to stop?
* Do other projects need to move? “I can make up the time” is not a realistic response.
# Maintenance cost
* How long will the system survive?
* When will this system be scheduled for replacement?
* During what period will you be making no changes to the system except for critical bug fixes?
* What are the prerequisites for using the solution?
* What must continue to be true?
* What do users need to know?
* What does the data need to look like?
Please submit this as a medium article with unnecessary and unrelated images or as a corporate blog post so that you can improve your seo ranking.
It's free. It's good.
If a new dev asking a questions is enough to derail a project there were bigger issues at play.
A competent PM has considered these questions carefully, and most of their thinking should be written down and circulated before the project starts. They will happily discuss lingering questions with anyone interested.
> What business risks or blockers exist?
Thats not a question that's readily available to developers, nor is it relevant until the project comes up in planning.
If it happens that the scope is actually not large enough to motivate a project setup, this will be wasteful and inefficient. But if the opposite happens, that the scope is very large but it is not implemented as a project, it can lead to disaster. Typically, the solution will not work end-to-end because no one have had the complete picture.
EDIT: Forgot a word
Then again I've been in tiny companies with low 6 figure budgets for projects and you still wind up powerless to ask the right questions.
Sometimes you have to settle on getting your part of a giant project right and sigh your way through the rest.
* A start date
* An end date. Every project has a termination date, otherwise it is described as something else.
* A stakeholder.
* Business Requirements Document (BRD).
You can plan and plan and plan. Then start and realise that you should have _tried_ earlier because that informs the planning more (close the loop, iterate, go again). That's why prototypes/MVPs are a thing, surely.
Maybe bad assumptions, or a general unwillingness to validate assumptions?
(IE, "Too much planning," not enough iteration / stakeholder feedback.)
Long term plans are only inaccurate or wrong if they're over reaching. Plans, like every other part of a project, have to be able to change and grow throughout implementation. It's not long-term planning that is the issue, it's the stagnation of overbearing plans.
True, but for me the real problem is actually identifying that ideal amount of planning for some project.
It's easy in hindsight to say something was over reaching or not enough planning was done, but not always that simple prior to starting a project.
Ideal planning vigor and scope seems super context sensitive to me and even with experience I often feel I get it wrong.
Hindsight is a crucial part of making sure you don't make the same mistakes. Don't worry, you'll have plenty of opportunities to make brand new mistakes.
- boss: Yeah, don't spend too much time on planning it will be at best inaccaurate
- me: ok; I make a plan and, well, there are known unknows
- later on, my boss: why have you those unknowns ? don't you think it's obvious that unknowns are a problem and that we can't show our customer we have unknowns because we're-professionals-we-know-what-we-do ?
- me: err... well...