极客时间《10x程序员工作法》学习笔记 Day 9

115 阅读2分钟

程序员解决的问题,大多不是程序问题

作为程序员,我们将其看作一个值得全情投入的职业,希望能够把精力放在设计算法、改进设计、优化系统这些具有创造性与成就感的本职工作上。 但现实情况却是,许多人因为一些意外陷入了无休止的忙碌,比如:

  • 你辛辛苦苦写的代码还没上线,产品经理就告诉你需求变了;
  • 你拼命加班只因错估了工作量,自己造的“孽”,含着泪也要搞定;
  • 你累死累活做出来的东西和要求不符,只能从头再来;
  • 你大面积地修改代码只是因为设计糟糕,无法适应新的需求变化;

《人月神话》其中提到两个非常重要的概念:本质复杂度(Essential Complexity)和偶然复杂度(Accident Complexity)。 本质复杂度是因为这份任务确实工作量大,具有挑战性,有一定难度。 偶然复杂度是因为我们在处理任务的时候选错了方向,或者使用了错误的方法。

  • 本质复杂度不可避免,偶然复杂度却可以通过科学的手段进行规避。
  • 任务处理时也应尽可能专注本质复杂度,而不应花费大量时间和精力在偶然复杂度上。然而现实工作中刚好与之相反,偶然复杂度占用太多时间和精力,不能专注本质复杂度对自我提升无意义。
  • 专注本质复杂度,减少偶然复杂度是一门学问。

从软件行业的诸多软件开发最佳实践原则:

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

虽然看起来这样简单,但大多数人没有这样做,因为这些原则在实际工作中很可能是反直觉的。只要打破思维误区,你的整个人都会变得不一样。