10x程序员工作法-学习心得- 2021-04-04 23:08- 效率


本篇所有内容来自 极客专栏《10x程序员工作法》的学习心得和笔记总结。

本质复杂度 与 偶然复杂度

本质复杂度,就是你为了做某一件事,或开发某一个产品,而必须做的事情或内容,这个事情本身造成的问题就是本质复杂度。偶然复杂度,是你在做这个事情时采取了错的方式或方法,导致多做了很多不必要的事,这种情况产生的问题就是偶然复杂度。
所以我们这里为什么要提及这两个概念呢?这是因为作者认为程序员在工作中遇到偶然复杂度引起的事情越多,本质复杂度的事情越少,程序员的效率越低。在工作中如果背离了最终目标,那么做的越多错的越多。
如何在工作中避免偶然复杂度引发的事情,作者提出了4个原则:

  • 以终为始
  • 任务分解
  • 沟通反馈
  • 自动化

思想框架:问自己三个问题

作者提供了自己的思想框架,也就是三个要经常问自己的问题:
我们现在在哪里?
我们的目标是哪里?
我们如何到达那里?
也就是 现状,目的,实现路径。使用这种方式可以让我们不断思考现状,目标,及时调整路径,以便实现。而上面提到的4个解决偶然复杂度的原则(以终为始,任务分解,沟通反馈,自动化),也正好对应了上面提到的三问。

四大原则

以终为始

啥是以终为始,怎么理解这个以终为始呢?其实说白了,就是以结果为导向,从最终结果往前倒推,倒推到出实现这个结果的每一步。
这里的以终为始的终 可不就是最终 目的 吗?以终为始,不就是说让我们一开始就清楚的知道目标是什么吗?也就是作者自己提供的思想框架中的 第二问,目标是什么?
任何事物都需要经历两次创造,一次是头脑中的创造,也就是智力上的第一次创造,对其进行惊奇的构想,之后才是付诸行动真实创造出来。只有经历过两次创造,这个事物才更完整。我们应该将精力多放在第一次创造上,统一集体想像,才能让目标更明确。
遇到事,倒着想。
如果产品构想的也差不多了,准备开始着手开搞了,这时候需要稍微等等,真的准备好了吗?想想看 我们知道如何算完成了这个产品吗?在构想的过程中好像没有涉及到这块吧? 聪明的你,是不是已经知道,在真正开发前,我们还需要准备一个DoD清单。DoD就是一个任务check清单,在真正开始前先定义完成的标准。
在做任何事之前,先定义完成标准。

任务拆解

任务拆解顾名思义,就是将大的任务块拆解为一个个小的可执行的任务,降低任务可执行难度。而任务分解所做正是回答三个提问中的,我们如何到达那里 这个问题。

沟通反馈

沟通反馈说白了也就是要有问题及时沟通,及时反馈,一方面是为了保证自己的理解不会存在偏差,一方面也是可以听取别人的意见可以更好的进步。

自动化

优化你的工作流程,将繁琐的工作交给机器去运行,解放你的双手去做更多本质复杂度的问题,而这一步绝大多数都做的不够好,也是我们最值得优化的部分。

偷一张作者的图,就可以清晰明了的知道这四个原则都是用来解决什么问题的:
image.png
将这种思想框架延伸到工作中,可以总结出四个原则。例如产品经理要做一个新的功能或产品,这时候我们就要向产品问清楚以下四个原则问题:
1.为什么要做这个需求,这个产品的价值是什么?(目的,以终为始)
2.什么样的用户群体会使用这个产品?在什么场景下使用?(了解不同的使用场景,任务分解)
3.除了开发新的功能或系统,还有别的实现目的的方式吗?(除了自动化之外的其他实现办法)
4.产品上线之后,怎么衡量它的有效性呢?

Dod原则

在做任何事之前,先定义完成的标准。减少不必要的沟通,提升效率。