I am a trainee. According to my teacher to solve a problem we should go through following steps:Create Algorithm (optional)Create a Datatable: By analyzing the problem, create main concepts in those problem as columns and the related issues in the main concept as rows.Create a Flowchart based on the Datatable. (when creating flow chart, think that you are in that situation and design it in your brain)By seeing the Flowchart, one can solve the problem easily and in efficient way.These steps should always be considered by a programmer if he/she wants to become a Software designer (not just a programmer) because this approach gives an efficient way of finding solution to a problem even if the problem is small. According to him, this way of approach also works in real time scenario's.My question is: Is this really an efficient way? please share also your thoughts.Through this question I also wanted to share some thoughts of my teacher with you who is a good mentor.
Steps to create a solution for a problem
software;problem solving
Teachers may encourage students to approach problems in a structured way because it breeds good habits and fosters a structured mindset, both of which are good things.If you polled all software developers with more than two years of experience, I bet that they would all tell you that software developers do not follow any such formal, prescribed, structure, but that they can appreciate the meta-lesson that your teacher is trying to teach.While this specific step-by-step approach isn't awful per se, I can tell you that it's missing a critical first step.After performing a certain amount of research on your problem, your first step should be:Ask yourself: Am I solving the right problem?Indeed, when solving a problem, whether it be implementing a greenfield feature or fixing a bug, many software developers either fail, implement a sub-optimal solution, or simply waste time because they did not first introspect and ask themself if they were solving the right problem.Two points about this:The amount of preliminary research that you will need to do before you can ask yourself if you are solving the right problem will vary according to the problem.Your ability to know if you are solving the right problem is a function of experience. So always ask yourself the question, and your ability to answer it will improve as you gain experience.