程序员思维——四个思考原则

一、什么是四个思考原则?

  • 以终为始,确定好真实目标;
  • 任务分解,找到实施路径;
  • 沟通反馈,解决与人打交道出现的问题;
  • 自动化,解决与机器打交道出现的问题。

二、如何运用思考框架?

运用这个思考框架,我们需要问自己一些问题:

  • Where are we?(我们现在在哪?)
  • Where are we going?(我们要到哪儿去?)
  • How can we get there?(我们如何到达那里?)

三、场景实践

在实际的工作中,这个思考框架会帮助我更好地了解自己的工作。

比如,当一个产品经理给开发交代一个要做的功能特性时,要学会提出这样一些问题:

  • 为什么要做这个特性,它会给用户带来怎样的价值?
  • 什么样的用户会用到这个特性,他们在什么场景下使用,他们又会怎样使用它?
  • 达成这个目的是否有其它手段?是不是一定要开发一个系统或者一定这种设计?
  • 这个特性上线之后,怎么衡量它的有效性?

如果产品经理能够回答好这些问题,说明他基本上已经把这个工作想得比较清楚了,这个时候,才可以放心地去了解后续的细节。

问题1:用思考框架对照一下,为什么会问这些问题?

一般来说,一个新特性要开发时,现状是知道的。所以,开发者会更关心目标,这里“为什么要做这个特性?” 就是在问目标,“给用户带来怎样的价值”是在确定这个目标的有效性。

接下来,关注实现路径,用户会怎么用,是否有其他的替代手段,开发需要了解产品经理的设计是经过思考的,还是“拍着脑袋”给出的。衡量有效性,则是要保证工作不会被浪费。

问题2:怎么会想到问这些问题?

给出思考框架是为了明白为什么要提出问题,而具体问题要怎么问,就可以遵循下面这四项原则:

  • 以终为始

就是在工作的一开始就确定好自己的目标。

我们需要看到的是真正的目标,而不是把别人交代给我们的工作当作目标。

你可以看出这个原则是在帮助我们回答思考框架中,Where are we going?(我们要到哪儿去?)这个问题。

  • 任务分解

是将大目标拆分成一个一个可行的执行任务,工作分解得越细致,我们便越能更好地掌控工作,它是帮助我们回答思维框架中,How can we get there?(我们如何到达那里?)的问题。

  • 沟通反馈

是为了疏通与其他人交互的渠道。

一方面,我们保证信息能够传达出去,减少因为理解偏差造成的工作疏漏;另一方面,也要保证我们能够准确接收外部信息,以免因为自我感觉良好,阻碍了进步。

  • 自动化。

就是将繁琐的工作通过自动化的方式交给机器执行,这是我们工程师本职工作的一部分,我们擅长的是为其他人打造自动化的服务,但自己的工作却应用得不够,这也是我们工作中最值得优化的部分。
程序员思维——四个思考原则_第1张图片
前两个原则是要在动手之前做的分析,后两个原则是在通往目标的道路上,为我们保驾护航,因为在实际工作中,我们少不了与人和机器打交道。

四个原则互相配合,形成了一个对事情的衡量标准。总体上可以保证工作是有效的,在明确目标和完成目标的过程中,都可以尽量减少偶然复杂度。

问题3:分析这四个原则是怎么运用的?

前面的场景,产品经理把要做的功能特性摆在我面前。

站在以终为始的角度,我们需要了解真正的目标是什么,所以会关心为什么要做这个特性。为了保证目标是有效的,会关心它给用户带来的价值

有了任务分解的视角,我需要将一个大的目标进行拆解,如果我要达成这个目标,整体解决方案是远远不够的,还需要把任务分解成一个一个小的部分。所以会关心一个一个具体的使用场景。一方面,了解到更多的细节,另一方面,当时间紧迫的时候,可以和产品经理来谈谈究竟优先实现哪个场景。

为什么要学会沟通反馈?因为我需要明确,自己是否真正理解了产品经理提交的需求。所以,我要不断地问问题,确保自己的理解和产品经理交代的内容一致。另外,也需要保证产品做出来确实能够达到目标。所以会关心它上线后的衡量手段。因为这个行业里有太多代码上线后,从来没有运行过。

从自动化的角度看,我们做的方案通常是一个自动化方案,但我们需要了解这个方案没有自动化之前是怎么做的。如果不自动化,用户会怎么用。所以会关心是不是还有其它替换方案,比如,买一个现成的服务。因为很多需求的提出,只是因为我们有了一个开发团队而已。

四、总结

大多数人工作低效是由于工作中偶然复杂度太多造成的,只要能够更多地将注意力放到本质复杂度上,减少偶然复杂度造成的消耗,我们“真实”的工作效率自然会得到大幅度提升。

而想要减少偶然复杂度的消耗,就要了解一些高效的工作方式和行业的最佳实践,而这一切是可以用统一的框架进行思考的。

我们不是一个人孤独地在工作,而是与其他人在协作,想要做到高效工作,我们就要“抬起头”来,跳出写代码这件事本身。所以,工程师解决的问题,大多不是程序问题

这就是真实世界,它不像考试一样,有一个标准答案。

如果本文的内容你只能记住一件事,那请记住:面对问题时,用思考框架问问自己,现状、目标和路径。

你可能感兴趣的:(四个思考原则,程序员思维,开发思维,思考,个人成长,职业规划,职场发展)