Checklist-driven Development
The best way to guarantee your budget and deadline aren’t blown away is to utilize a checklist to guide your development.
The alternative is to merely talk about your dreams and wishes at a 30,000-foot view and hope the developer you talk to is capable of capturing the vision and building your software to spec.
I don’t know about you, but I don’t like betting on hopes and dreams.
A better way to develop
Imagine you’re hiring an intern to do whatever task or project you want your software to do. Write down the task or project as a series of steps that could be given as a checklist to that intern.
The more “idiot-proof” the checklist, the more detailed and robust your software will be. Try to imagine and compensate for every mistake this intern could make. Specify how to validate and verify any assumption that could be made.
Got that in hand?
Now test it.
Give your checklist to a real human, preferably one who is not intimately familiar with the task at hand. Take notes about the assumptions that weren’t accounted for. Note the mistakes, confusion, and any points of friction.
Now update your checklist to account for all of the mistakes, questions, and unclear assumptions that were made.
You now have a checklist so precise you can build software from it. Even better, you’ve undoubtedly uncovered some unknown assumptions and figured out how you’d like them handled before writing your software.
Because… you know… software is expensive.
🔑 Key Takeaways
A checklist is a human-friendly program. Make those before you throw money at software.
A checklist is a robust way to specify to a developer what they should be building.
A checklist is a free way to verify that you’re solving the right problem with the right level of specificity.