Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I am a trainee. According to my teacher to solve a problem we should go through following steps:

  1. Create Algorithm (optional)
  2. 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.
  3. Create a Flowchart based on the Datatable. (when creating flow chart, think that you are in that situation and design it in your brain)
  4. 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.

share|improve this question
2  
Mr_Green perhaps you should consider un-accepting my answer, and accepting JimG's. We both say more or less the same thing, but JimG's answer is more thorough. –  Yannis Rizos Oct 28 '12 at 5:47

3 Answers 3

up vote 11 down vote accepted
  1. 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.
  2. 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.
  3. 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:

  1. 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:

  1. 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.
  2. 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.
share|improve this answer
3  
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. This deserves a thousand upvotes. –  Yannis Rizos Oct 28 '12 at 4:04
6  
@Yannis Rizos: You know what's funny - We typed our answers at approximately the same time, said approximately the same thing, and articulated it in a very different way. Interesting. –  Jim G. Oct 28 '12 at 4:07

What your teacher is trying to do is train you to think about abstractions, abstract thinking is an extremely important problem solving technique.

The specific workflow your teacher laid out for you, the four steps, is an incredibly basic workflow and a far cry from being efficient for non trivial software development problems. However it's a good enough training methodology, and it will be efficient when you are faced with real life (but trivial) scenarios. Keep in mind that learning is mostly an incremental process, you need to learn the basics first, and that's what you are doing right now.

Further reading:

And a couple of relevant blog posts:

share|improve this answer
    
Yannis, did you just link to a question that you personally closed as "not constructive"?? –  MarkJ Oct 28 '12 at 14:58
    
@MarkJ Why shouldn't I? The question might not fit the Q&A format, but that doesn't mean it hasn't generated useful information –  Yannis Rizos Oct 28 '12 at 15:36

These steps should always consider by a programmer if he/she wants to become a Software designer (not programmer).

What do you mean by Software designer? I tried searching the difference between Programmer and Software Designer and I was flooded with Programmer v/s Software engineer.

Because the above approach gives an efficient way of finding solution to a problem even the problem is small. According to him, this way of approach also works in real time scenario's.

The Programmer also has to solve a problem or find its solution therefore your teacher saying that this approach (The one you mentioned in your question) is to be used by software designer and not programmer.

My question is: Is this really an efficient way? please share also your thoughts.

Don't know. As a student I have never done all these things i.e. algorithms etc. I just do my coding, make some DFD (Data flow diagram), ER diagram and some related documentation things and submit it.

As far as industries are concerned i think they have separate teams for all these things like coding team, documentation team,

share|improve this answer
    
doing just coding is just like living in { }. just saying.. and I am not the downvoter. –  Mr_Green Oct 28 '12 at 3:59
    
So you mean to say you want to be an expert in all fields coding, documentation,designing, testing, maintenance etc....... That seems to be nice but if you think practically thats impossible for a single person to be. Just take Java its so vast that not a single person on this earth can say i know ENTIRE JAVA –  Rameshwar.S.Soni Oct 28 '12 at 4:02
    
It doesn't matter whether we know entire java or some other programming language.. what matters is our way to solve the problem. You can learn anything perfect if you are enthusiast towards it or just google daily whenever you have a doubt :) –  Mr_Green Feb 6 at 6:21

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.