Steps to create a solution for a problem

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.

1

  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.

2

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:

  • When to prefer a generalized solution over solving specific cases
  • Abstraction: The War between solving the problem and a general solution
  • How can I improve my problem-solving ability?
  • https://softwareengineering.stackexchange.com/questions/152668/solving-programming-problems-or-contributing-code
  • https://softwareengineering.stackexchange.com/questions/146913/teaching-programming-by-solving-puzzles

And a couple of relevant blog posts:

  • Please Learn to Think about Abstractions
  • General Problem Solving Strategies (for programmers)

2

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,

3

Trang chủ Giới thiệu Sinh nhật bé trai Sinh nhật bé gái Tổ chức sự kiện Biểu diễn giải trí Dịch vụ khác Trang trí tiệc cưới Tổ chức khai trương Tư vấn dịch vụ Thư viện ảnh Tin tức - sự kiện Liên hệ Chú hề sinh nhật Trang trí YEAR END PARTY công ty Trang trí tất niên cuối năm Trang trí tất niên xu hướng mới nhất Trang trí sinh nhật bé trai Hải Đăng Trang trí sinh nhật bé Khánh Vân Trang trí sinh nhật Bích Ngân Trang trí sinh nhật bé Thanh Trang Thuê ông già Noel phát quà Biểu diễn xiếc khỉ Xiếc quay đĩa Dịch vụ tổ chức sự kiện 5 sao Thông tin về chúng tôi Dịch vụ sinh nhật bé trai Dịch vụ sinh nhật bé gái Sự kiện trọn gói Các tiết mục giải trí Dịch vụ bổ trợ Tiệc cưới sang trọng Dịch vụ khai trương Tư vấn tổ chức sự kiện Hình ảnh sự kiện Cập nhật tin tức Liên hệ ngay Thuê chú hề chuyên nghiệp Tiệc tất niên cho công ty Trang trí tiệc cuối năm Tiệc tất niên độc đáo Sinh nhật bé Hải Đăng Sinh nhật đáng yêu bé Khánh Vân Sinh nhật sang trọng Bích Ngân Tiệc sinh nhật bé Thanh Trang Dịch vụ ông già Noel Xiếc thú vui nhộn Biểu diễn xiếc quay đĩa Dịch vụ tổ chức tiệc uy tín Khám phá dịch vụ của chúng tôi Tiệc sinh nhật cho bé trai Trang trí tiệc cho bé gái Gói sự kiện chuyên nghiệp Chương trình giải trí hấp dẫn Dịch vụ hỗ trợ sự kiện Trang trí tiệc cưới đẹp Khởi đầu thành công với khai trương Chuyên gia tư vấn sự kiện Xem ảnh các sự kiện đẹp Tin mới về sự kiện Kết nối với đội ngũ chuyên gia Chú hề vui nhộn cho tiệc sinh nhật Ý tưởng tiệc cuối năm Tất niên độc đáo Trang trí tiệc hiện đại Tổ chức sinh nhật cho Hải Đăng Sinh nhật độc quyền Khánh Vân Phong cách tiệc Bích Ngân Trang trí tiệc bé Thanh Trang Thuê dịch vụ ông già Noel chuyên nghiệp Xem xiếc khỉ đặc sắc Xiếc quay đĩa thú vị
Trang chủ Giới thiệu Sinh nhật bé trai Sinh nhật bé gái Tổ chức sự kiện Biểu diễn giải trí Dịch vụ khác Trang trí tiệc cưới Tổ chức khai trương Tư vấn dịch vụ Thư viện ảnh Tin tức - sự kiện Liên hệ Chú hề sinh nhật Trang trí YEAR END PARTY công ty Trang trí tất niên cuối năm Trang trí tất niên xu hướng mới nhất Trang trí sinh nhật bé trai Hải Đăng Trang trí sinh nhật bé Khánh Vân Trang trí sinh nhật Bích Ngân Trang trí sinh nhật bé Thanh Trang Thuê ông già Noel phát quà Biểu diễn xiếc khỉ Xiếc quay đĩa
Thiết kế website Thiết kế website Thiết kế website Cách kháng tài khoản quảng cáo Mua bán Fanpage Facebook Dịch vụ SEO Tổ chức sinh nhật