解决问题的四个步骤
Posted 欢乐大象
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决问题的四个步骤相关的知识,希望对你有一定的参考价值。
四步方法论:
-
明确和理解问题
-
拆分和定位
-
提出解决方案
-
总结问题
注意:我们应该花80%的精力放在 拆解 定位问题 20% 去解决问题(合理)
明确和理解问题
- 在写代码出现bug的时候 我们都会去看日志,调试 靠编程软件来解决.
这一步就是 找问题. 如果报一个404 无法说明更详细的错误原因, 我们接下来 就要明确问题
明确问题=知识储备*踩过坑数量
实现这个功能我们一定是有预期的,也了解它正常应该是什么样子的 这些知识 为我们理解问题 完成了大部分工作.
理解能力==知识储备量逻辑分析
然后我们就排查 这个程序本身 一步一步运行 到底是那一条 出现了和我们 预期不符的 现象
这需要耐心更需要细心
这个坎 过去后 在看.
例子:
- 明确了 无法显示参数的原因是 传参的值变成了乱码
- 明确解决问题的目标是 找到设置编码的方式
- 明确可利用的资源 (老师讲过 , 自己学过做过比较,我就记得)
拆分和定位
复杂的问题和元问题
- 复杂问题是掺杂了多个维度和变量的问题; 这导致你无法直接达到目标且 解决方法也未能起效
- 元问题 最本质 最小 不可再分割的问题
我们也许可以列一个面向关系的二维表 来罗列 这些属性
拆解的目标就是解决
步步为营, 有章法 有步骤的来.
其实,大部分人面对复杂的问题都是蒙圈的.
故事
2019/7月/20日
作为大四的我来到了实训基地,原来我们是学习安卓的 本以为可以继续学习 当个app开发人员什么的 .可是 学校安排我们学java和网页开发. 我当时是懵逼的, 我学了大三一年的 安卓 你告我不要再学了 ,这不好 那不好 ,然后要我 2月后做一个个人毕业设计
. 吐血我完全不会啊,只能从头学起.
当时我面对的问题就是 独立做出个人毕业设计 用 没练习过的编程知识来做.
这个很复杂,要实现很多功能, 有很多困难.
来 谁能把这个问题拆分一下
这就是问题
一个对这个完全陌生的东西 他没办法拆分 连基本识别都做不到
但你说这个方式不可靠么? 绝对不是
在学习jsp 中 我们实现项目 用的是 面向接口开发 开发流程是
数据库—dao–sevice—servlet–页面
这就是一个拆分的体现,真正做到了 步步为营
到这我发现,小白无法
思考:如何拆分,如何解决这个问题 这太难了
比如 设计模式 ,MVC模式 ,接口
我们学来用时最靠谱的,但要自己琢磨 还必须是个高手才能做到
拆分出来是为了更好的组合
组合我们用的 构建问题树+假设驱动
就像玩变形金刚,你玩的时候突然卡住了 你就得拆开仔细看这个问题是如何发生的, 假设驱动 就是假设这个东西正确的方式是什么样子的 然后按照这个假设来调试.
有时我们也常常因为 真的不知道,莫名其妙 而对看书正常的问题束手无策
假设的提出需要知识支持
而小白 往往知道怎么拆 ,但不清楚怎么组装.
这个能力需要时间 不过可以先练练拆的水平
拆也要讲科学,有理论支持
麦肯锡知道不,嘿嘿
MECE
相互独立, — 不重叠
完全穷尽 ---- 无遗漏
当我们没有头绪的时候,往往 就会病急乱投医 抱着奇迹发生的心态 来上网找解决方法 ,然后 一个一个的试.
说真的,我太难了 .
这么做 往往是花了大量的时间,又解决不了 太难了.
这时您赶紧冷静一下 ,思考一下我们这科学的思路.
提出解决方案
总结问题
学习底层原理十分重要 这些作为分析问题的知识储备,让如同你在黑暗中 提着一盏明灯.
学以致用 :从学过 到 熟练使用 专业 者之间 有着巨大的鸿沟
需要 将这些基本知识在不同的 环境和 场景 反复使用 你一定感受到 万变不离其宗 这句话的真谛 (积累经验)
好了到这里我们可以知道,我们要使用高明的技巧 必须有很多的知识储备 加 经验做支撑 否则你会感觉那就是鸡汤 或者 是空话.
即使这些是"鸡汤" 但这就是对的 至少我认为. 我只是少了慢慢变强的耐心,不愿意花碎片时间去看一本书,或者反复的背计算机基础原理. 的确成为少数人 绝不容易,即使 成为少数人 ,你仍然会发现 这个位置的人 多到无法想象. 不过你你身后的人越来越多是没毛病的.
学习别人总结的算法
算法如同人生.
我们也许没有能力做到规划,分解,掌握底层原理 但一定要不断学习.
接下来我总结我学习了的人生算法又得到–老俞编写
以上是关于解决问题的四个步骤的主要内容,如果未能解决你的问题,请参考以下文章
Mysql InnoDB的四个事务隔离级别和(分别逐级解决的问题)脏读,不可重复读,虚读