做确定性的事情

这两天在扩展之前我写的动态柱状图的组件,很不顺利。本来以为一天就能搞定,结果搞了三天还没搞定,出现了意料之外的问题,比如:

  • 实现某个功能的时间,比我预估的多了 N 倍
  • 解决一个问题的过程中,又出现了其他新的问题
  • 有些问题不知道怎么解决,得边查资料边处理
  • 有些交互和功能、数据情况,我之前没考虑到,遗漏了这部分工作量

为什么会出现这种情况呢?我觉得主要是我对于 D3.js 和这个柱状图组件的程序设计、执行流程,以及动态图表的交互和数据,都不熟悉。这导致我在做的过程中,存在很多不确定性,也就是说:

我不是在做确定性的事情。

这让我联想到了最近的组件标准化,做得非常痛苦,后续的需求变更层出不穷;还有我们这几年做数据可视化,其实也是类似的情况,都不是在做确定性的事情。往小了说,会导致我们时间进度不可控,往大了说,我们方向都不一定是对的。这是一件很恐怖的事情,试想如果方向都不一定对,最终的结果怎么可能正确?到了年底好一点就是白干吃灰,最差的情况则是团队都没有存在的必要了。

人生是很短暂的,时间非常宝贵。我们不可能一开始就确定要做的事情对不对,但是我们必须要尽快把不确定性的内容给定下来,这样才能集中精力去做正确的事情。

具体来说:

在团队方面,就是要通过短平快的尝试,从多个方向中排除错误的,找到最终可行的路,然后走下去。

比如前一年的最后 2 个月,从多个方向入手,快速做一些 Demo,确定产品、技术等是否具备可行性和价值,定下来之后,下一年一开始就可以全力奔着目标去了。

在技术方面,就是要快速系统性学习基础内容,通过大量典型的练习,把技术摸透,让后续解决问题的过程,是靠明确的技术手段解决,而不是靠猜测和瞎蒙。

技术的学习,一定要找到正确的方法,急于求成往往会事倍功半,越是想快,结果越慢。阅读官方文档和源码,弄清楚原理,才是正确的路线。