第十九期: 如何定义、分析、解决问题

252 阅读7分钟

这里记录工作中遇到的技术点,以及自己对生活的一些思考,周三或周五发布。

封面图

《宰相刘罗锅》剧照

题外话

之前有好几个在消息中回复"Js高级程序设计第四版"的同学,但是都没有收到下载链接的回复。昨天花了些时间将下载链接放到了公众号里。回复“第四版”即可获得下载链接。

在配置下载文件的时候遇到了一个问题。pdf文件是放在nginx的目录中的,所以需要增加配置文件下载的相关配置。个人配置如下:

location /book {

#	root /usr/share/nginx/html;
	autoindex on;
	autoindex_exact_size off;
	autoindex_localtime on;
	if ($request_filename ~* ^.*?\.(txt|doc|pdf|rar|gz|zip|docx|exe|xlsx|ppt|pptx)$){
            add_header Content-Disposition: 'p_w_upload;';
         }
}

这样配置以后点击文件链接,有可能会报403的错误,403错误一般是权限不足导致的。所以需要修改文件的读写权限。命令如下:

chmod 777 file

这样文件就可以正常下载了,结合公众号的自动回复功能,非常方便。

接下来就开始讲题目中的话题了:如何定义,分析,并解决问题。这个是我们组前两天分享并讨论的一个话题,个人感觉收获颇丰,所以觉得值得分享一下。

定义问题

在汉语的语言环境中,问题这个词比较抽象,很难做出具体的解释。百度一下,你会得到如下的解释:

问题,指要求回答或解答的题目;事态的严重性足以引人研究讨论,或尚待解决者。

但是切换到英语环境中,对与问题这个概念,我们可以找到三个词语:question,troubleproblem

  • 第一种是question

question通常表示疑问。对于疑问,我们通常只需要别人的解答。比如:我们平时开需求会的时候,产品经理在讲完一个需求之后,通常会问这样一个问题:对于这一块儿的逻辑,大家还有什么疑问吗?,这个时候,说出来自己的疑问,产品经理马上就可以回答。

  • 第二种是trouble

trouble翻译过来就是麻烦。遇到麻烦的问题,我们通常需要别人的协助和支持。比如在开发的过程中,有一个特别复杂的功能,自己的技术能力无法实现,这时候就需要找比自己技术能力强的同学进行支持,例如让他帮我们实现某一个复杂的功能,保证项目的顺利进行。

  • 第三种是problem

problem表示的问题是这三种问题里面难度系数最高的,通常需要一个系统性的解决方案。比如:我们这次做的项目,需要从企业微信中分享链接到微信中,并将点击链接的用户信息进行上报,但是单纯的点击又无法获取到用户信息。

经过调研,我们给出的方案是借助公众号的网页授权能力去获取用户信息进行上报,这样一来就可以精准的解决这个问题。

了解了这些以后,我们可以对我们遇到的问题做简单的定义,或者叫归类。是属于疑问麻烦还是problem。有了这些以后,我们就可以对这些问题进行下一步的分析。

分析问题

分析问题是一个查找问题产生原因的过程。这次分享,我们以项目延期上线为例进行了分析,因为项目延期这种事情大家基本都遇到过,总结出来的原因很多。比如:

  • 个人对项目的重视程度不够,没有及时跟进项目开发所需的环境配置
  • 产品经理临时提出新的需求
  • 测试同学的测试进度缓慢
  • 个人技术能力导致问题无法解决
  • 处理历史遗留问题浪费大量时间
  • 临时有别的事情需要处理
  • 业务逻辑理解不深刻,开发过程中发现业务逻辑行不通
  • UI设计稿滞后,导致无法进行开发
  • 开发流程中的问题
  • 项目优先级

等等。

当我们遇到问题的时候,我们的第一反映往往是去找一些外部的因素,比如:UI出设计稿出的太晚了,导致无法进行开发;项目经理临时加了新需求;测试同学测试进度太慢等等。

很少有人会从自己本身出发,去解释问题产生的原因。比如:这次延期是因为我个人的技术能力不够,或者我没有及时跟进某个问题等等。

出现这种现象的很大一部分原因是怕担责任,怕对自己产生不好的影响。但是这并不是解决问题的正确处理方式。

我们可以先罗列出产生问题的直接原因,比如UI设计稿滞后了。但是UI滞后了我们就一直等着他吗? 我们是不是可以先做些UI依赖性较轻的部分,是不是可以先按照原型进行开发呢?

其实,假如我们把遇到的问题进行分析,我们会发现,很多导致问题的直接客观原因,其实都是我们没有发挥自己的主观能动性而导致的。

所以,在分析问题的时候,我们需要尽量全面的找出问题产生的原因。不能仅仅看到导致问题产生的外部的、客观的因素,更需要从自身出发,找出我们自己的内在因素,这样,在以后的工作和生活中,才能有所成长。

解决问题

在解决问题的时候,通常我们一贯的做法是哪里有问题就去处理哪里的问题。这种方法的好处是:效率高、见效快。但是从长期来看,对我们个人的成长帮助不大。

在管理学中有这么一个概念:结构化思维。我们可以用这种思维方式去,结构化的解决遇到的问题。流程大致有五步:

  • 1)明确问题:澄清现状与目标的差距
  • 2)分析问题:分析差距形成的所有潜在原因(问题树)
  • 3)提出假设:假设其中的部分原因
  • 4)验证假设:收集数据以验证所假设的原因
  • 5)提出解决方案:根据原因,提出相应的解决方案

比如:饮料瓶的瓶口为什么设计成圆形?

假设设计成圆形的原因有以下几优点:密封牢靠、美观、便于生产。那么这几个优点是否真的成立呢?如果成立,那么这几个有点是否也可以支撑起别的设计方案呢? 如果这几个优点不成立,那么有什么替代方案呢?替代方案有什么优点呢?

经过这样一层一层的思考分析以后,我们可以得出能够解决问题的多个方案,A、B、C。我们只需要从这些方案中选择一个合适的方案即可。

这种解决问题的思维方式,通常在向上汇报的过程中经常遇到。比如:你要去给上级领导汇报工作,我们不可能直接跟上级领导说:领导,我们现在遇到一个问题,这个问题该怎么做? 如果你这么说了,大概率得到的回复是:你觉的该怎么做?

正确的处理方式一定是我们事先对问题进行各种分析和假设,得出几个方案,给出自己的建议,然后让上级领导去衡量,去做出最终的决策。

而在这一些的的分析和假设中,我们处理问题的能力,也会不断的提升。

最后

  1. 微信搜索公众号javascrpt高级程序设计,欢迎关注