保持简单
console.log("Keep Simple.")
让事情变复杂很容易,但让事情保持简单却是一门艺术。 保持简单意味着更少的错误,更少的维护,更少的成本。保持简单意味着更多的时间和精力用在真正重要的事情上。 然而 真正重要的事情 是什么呢?是让已有的事物变得更加完美吗?完美主义者会认为:然也。
最近读了《The Perfection Trap: Embracing the Power of Good Enough》,作者在书中提到了一个观点: 追求完美是一种陷阱。在追求完美的过程中,我们会浪费大量的时间和精力,而且最终的结果也未必是最好的。 相反,我们应该追求“足够好”,在保证质量的前提下,尽量减少时间和精力的浪费。 从产品设计与开发的角度来看,这个观点也是适用的。
- 停止追求完美的代码,实现容易维护的代码更重要。
- 停止追求完美的设计,设计容易使用的产品更重要。
- 不要过度优化,过度优化是万恶之源。
作为完美主义受害者,我对其高期望陷阱的所带来的各种阻碍深有体会。 在学习新东西的时候,本应该囫囵吞枣的地方,我却喜好刨根问底,导致理论学习占据了太多时间,能够用于具体实操的时间就被压缩了。 在工作中,我会花费大量的时间在一些细节上,而这些细节对最终的结果并没有太大的影响。这种行为不仅浪费了时间,还会让自己陷入一种焦虑的状态。 尤其是在团队合作的时候,完美主义者往往会给团队带来很多不必要的压力。 每一次失败,我都会给自己找借口,认为总是有其它方面的影响,而不是因为自己追求完美导致的。
很多时候,所谓“工匠精神”,实际上是打着追求完美的幌子自我感动。 逐渐地,这种对自我的高期望变成对周围人和事物的高期望, 于是对着眼中各种不完美的东西开始批判起来,认为这个东西不够好,不够完美,不够专业。 对一切不达到自己标准的东西,都会有一种不满的情绪,甚至会有一种“如果是我,可以做得更好”的想法。 如果自己的能力不足以达到这个标准,就会感到自卑,感到自己不够好,不够完美。 到最后陷入虚无主义,认为一切都是虚幻的,一切都是不完美的,一切都是无意义的。 标准已经被无限拔高了...
可能你想要的只是一台能够正常工作的电脑,但你却要求它必须是最新款,最高配置,最贵的。 而你和团队成员就像电脑的各种软硬件,明明不需要时刻满载,系统就能正常运作, 而你认为既然具备了相应的规格,就应该充分利用,否则就是浪费。 甚至有的时候热衷于追求 “超载”,不知道的还以为这是在挖矿。 不接受任何的结构冗余,不接受任何的性能损失,甚至不容许 BUg 的存在。 可只要你了解一点软件工程常识,就会知道这世界上没有 银弹[1]。
如果真的将成事(Getting Things Done)作为目标,请认同 “完成大于完美” 准则。 我们的世界其实是一个巨大的草台班子,It just works, that's enough. 正是因为那些执行力强的人能够将一件件简单的事情完成, 最终这些简单的事情汇聚在一起,成就了伟大的事业。
这个概念来源于 No Silver Bullet - Essence and Accidents of Software Engineering ,在软件领域通常用来比喻那些被过度宣传或期望过高的解决方案,暗示没有一种方法能够一劳永逸地解决所有软件开发问题。 ↩︎