Define the problem and brainstorm solutions
First, one must always define a problem. This helps to brainstorm solutions and know what must be done and what can't be done, or criteria and constraints. There are many different ways to solve one challenge, but some have advantages and disadvantages. By brainstorming and eliminating solutions, one can find a logical method to solve a problem.
List the steps that must be completed.
Using computational thinking is one of the most important steps in the engineering process. This helps with planning out the program before coding it, improving accuracy and understanding of the steps in the code
Make flowcharts
Flowcharts are diagrams that show the process of a program. They can show conditions, loops, motor commands, and more. One should start with a simple high level chart and then make a low level one. This will, much like listing steps, help with planning and understanding of the process. This is a more in-depth way of planning than listing steps.
Create a template with function declarations
It is important to create a base template so that one has an organized layout for their program. This template should have function declarations for every function that will be used.
Test individual functions and troubleshoot
Before programming the entire main task, one must test each function to make sure that the individual components of the program are working. Debugging is a lot harder if pieces that are not proper are put together right away.
6. Integrate all functions to make a main task
Now that one has made sure that every individual function is working, they can put them together and make a main task.
7. Test and troubleshoot
Now that one has completed their main task, they can test it and troubleshoot. If the robot didn't complete the task, then there is an opportunity to observe software and hardware problems and find solutions.
8. Draw conclusions
Once a program is finished it is always a good idea to reflect. Think about what you learned and the difficulties you faced. What could you do differently next time to make the project go smoother?