一、前言
对于程序员来说,工作产出并不只是由代码的效率决定,一些不恰当的工作方法很大程度的影响了你的产出。
二、为什么要问问题?
比如:一个产品经理要临时加需求,此时我们就可以用上思考框架,对他进行灵魂拷问
- 为什么要做这个特性,它会给用户带来怎样的价值?
- 什么样的用户会用到这个特性,他们在什么场景下使用,他们又会怎样使用它?
- 达成这个目的是否有其它手段?是不是一定要开发一个系统?
- 这个特性上线之后,怎么衡量它的有效性?
如果说产品经理能够很好地回答这些问题,说明他已经基本把这个工作的想的很清楚,思维行程了”闭环“,我们程序员这才可以放心的去coding
思考框架 -- 一个思考工具
归纳下上例子中的思考方向,得一个思考工具。
- 现状:Where are we?(我们现在在哪?)
- 目标:Where are we going?(我们要到哪儿去?)
- 实现路径:How can we get there?(我们如何到达那里?)
这个三个问题实际是一个思考工具,如果一个人能够清晰地回答出这三个问题,通常意味着他对要做的事有着清晰的认识。
三、具体问题怎么问?遵循四个思考原则
- 以终为始
- 任务分解
- 沟通反馈
- 自动化
3.1 以终为始:明确应用场景/目标,结果导向
- 此原则用来回答思考框架中的,Where are we going?(我们要到哪儿去?)这个问题。
- 以目标为导向,或者说面向测试开发。值得注意的是,工作一开始就要确定自己的目标,是自己的目标,而不是把别人交代给我们的工作当做目标。
3.2 任务分解 :明确目标,确定任务优先级,小步快跑
- 此原则用来回答思考框架中的,How can we get there?(我们如何到达那里?)的问题。
- 将大目标拆解成一个个可执行的任务,工作分解的越细致,说明你对目标理解的越通透,也更往下推进和掌控工作,解决拖延,避免焦虑。
3.3 沟通反馈
- 保证如同健康人一般静脉与动脉的血管畅通
- 保证信息能够传达出去,减少因为理解偏差造成的工作疏漏
- 保证我们能够准确接收外部信息,以免因为自我感觉良好,阻碍了进步。
3.4 自动化
- 将繁琐的工作通过自动化的方式交给机器执行,可预见性的重复性工作,尽量造轮子。 比如: 导数据,导报表,作功能
- 优化程序员自动化服务,优化工作流程,提高工作效率--devops
四、总结
结语
我们不是一个人在战斗(工作),不要一味的埋头”苦干“,那样不仅仅是加重你的颈椎病。
想要提高工作效率,就需要”抬起头“,跳出代码本身,多思考。将注意力放到本质复杂度上,减少偶然复杂度造成的消耗,我们“真实”的工作效率自然会得到大幅度提升。