DEV Community

Discussion on: How to plan a software?

Collapse
 
jdforsythe profile image
Jeremy Forsythe • Edited

The basis to all systems is there is some sort of desired output and some sort of available input. Finally there is some type of processing required to get from the inputs to the outputs.

This is how you should begin, before using any tools, making mockups, or anything else. OIP.

Output - list all desired outputs from the system
Input - list all available inputs
Processing - determine (at a high level) how you get to the outputs from the inputs. You should be working in "reverse" order. This is crucial as it will help determine if there are any unnecessary inputs on your list or if there are more required inputs you hadn't thought of

Once you have your OIP for the entire system, you can begin breaking the system into smaller chunks and re-perform the OIP assessment on each piece. Each piece should produce output required for another piece as its input.

Follow this design pattern with any tools that you can easily wrap your mind around. My personal favorite is pen and paper. When I feel like I have a pretty solid idea I will use something like draw.io to make it more permanent. Don't get stuck on any particular format (unless it is required by an employer) as long as it is easy enough to understand. Boxes and arrows go a long way.