解决问题的四个步骤(一)

再度Miren
2019-10-03 / 0 评论 / 66 阅读 / 正在检测是否收录...


四步方法论:

  1. 明确和理解问题

  2. 拆分和定位

  3. 提出解决方案

  4. 总结问题

注意:我们应该花80%的精力放在 拆解 定位问题 20% 去解决问题(合理)


明确和理解问题

  • 在写代码出现bug的时候 我们都会去看日志,调试 靠编程软件来解决.
    这一步就是 找问题. 如果报一个404 无法说明更详细的错误原因, 我们接下来 就要明确问题
    明确问题=知识储备*踩过坑数量

实现这个功能我们一定是有预期的,也了解它正常应该是什么样子的 这些知识 为我们理解问题 完成了大部分工作.

理解能力==知识储备量逻辑分析

然后我们就排查 这个程序本身 一步一步运行 到底是那一条 出现了和我们 预期不符的 现象

这需要耐心更需要细心

这个 过去后 在看.
例子:

  1. 明确了 无法显示参数的原因是 传参的值变成了乱码
  2. 明确解决问题的目标是 找到设置编码的方式
  3. 明确可利用的资源 (老师讲过 , 自己学过做过比较,我就记得)

拆分和定位

复杂的问题和元问题

  1. 复杂问题是掺杂了多个维度和变量的问题; 这导致你无法直接达到目标且 解决方法也未能起效
  2. 元问题 最本质 最小 不可再分割的问题

我们也许可以列一个面向关系的二维表 来罗列 这些属性

拆解的目标就是解决
步步为营, 有章法 有步骤的来.
其实,大部分人面对复杂的问题都是蒙圈的.

故事

2019/7月/20日
作为大四的我来到了实训基地,原来我们是学习安卓的 本以为可以继续学习 当个app开发人员什么的 .可是 学校安排我们学java和网页开发. 我当时是懵逼的, 我学了大三一年的 安卓 你告我不要再学了 ,这不好 那不好 ,然后要我 2月后做一个个人毕业设计
. 吐血我完全不会啊,只能从头学起.

当时我面对的问题就是 独立做出个人毕业设计 用 没练习过的编程知识来做.
这个很复杂,要实现很多功能, 有很多困难.
来 谁能把这个问题拆分一下

这就是问题

一个对这个完全陌生的东西 他没办法拆分 连基本识别都做不到
但你说这个方式不可靠么? 绝对不是
在学习jsp 中 我们实现项目 用的是 面向接口开发 开发流程是
数据库—dao–sevice—servlet–页面
这就是一个拆分的体现,真正做到了 步步为营

到这我发现,小白无法
思考:如何拆分,如何解决这个问题 这太难了
比如 设计模式 ,MVC模式 ,接口

我们学来用时最靠谱的,但要自己琢磨 还必须是个高手才能做到

拆分出来是为了更好的组合

组合我们用的 构建问题树+假设驱动

就像玩变形金刚,你玩的时候突然卡住了 你就得拆开仔细看这个问题是如何发生的, 假设驱动 就是假设这个东西正确的方式是什么样子的 然后按照这个假设来调试.

有时我们也常常因为 真的不知道,莫名其妙 而对看书正常的问题束手无策
假设的提出需要知识支持

而小白 往往知道怎么拆 ,但不清楚怎么组装.

这个能力需要时间 不过可以先练练的水平

拆也要讲科学,有理论支持
麦肯锡知道不,嘿嘿
MECE

相互独立, — 不重叠
完全穷尽 ---- 无遗漏

当我们没有头绪的时候,往往 就会病急乱投医 抱着奇迹发生的心态 来上网找解决方法 ,然后 一个一个的试.

说真的,我太难了 .

这么做 往往是花了大量的时间,又解决不了 太难了.

这时您赶紧冷静一下 ,思考一下我们这科学的思路.

提出解决方案

总结问题


学习底层原理十分重要 这些作为分析问题的知识储备,让如同你在黑暗中 提着一盏明灯.

学以致用 :从学过 到 熟练使用 专业 者之间 有着巨大的鸿沟

需要 将这些基本知识在不同的 环境和 场景 反复使用 你一定感受到 万变不离其宗 这句话的真谛 (积累经验)

好了到这里我们可以知道,我们要使用高明的技巧 必须有很多的知识储备 加 经验做支撑 否则你会感觉那就是鸡汤 或者 是空话.
即使这些是"鸡汤" 但这就是对的 至少我认为. 我只是少了慢慢变强的耐心,不愿意花碎片时间去看一本书,或者反复的背计算机基础原理. 的确成为少数人 绝不容易,即使 成为少数人 ,你仍然会发现 这个位置的人 多到无法想象. 不过你你身后的人越来越多是没毛病的.

学习别人总结的算法

算法如同人生.
我们也许没有能力做到规划,分解,掌握底层原理 但一定要不断学习.

接下来我总结我学习了的人生算法又得到–老俞编写


0

评论 (0)

取消