仕事を終えて、じっくりと反省する。一日が終わって、その一日を振り返って反省する。すると、自分や他人のアラが目について、ついにはウツになる。自分のだめさにも怒りを感じ、あいつは憎たらしいと思ったりする。たいていは、不快で暗い結果にたどりつく。
 なぜかというと、冷静に反省したりしたからなどでは決してない。単に疲れているからだ。疲れきったときにする反省など、すべてウツへの落とし穴でしかない。疲れているときは反省をしたり、振り返ったり、ましてや日記など書くべきではない。
 活発に活動しているとき、何かに夢中になって打ち込んでいるとき、楽しんでいるとき、反省したり、振り返って考えたりはしない。だから、自分をだめだと思ったり人に対して憎しみを覚えたりしたときは、疲れている証拠だ。そういうときはさっさと自分を休ませなければいけない。

ーー『曙光』


被开发环境的设计实现验证的问题困扰了三天之久


  设计、实现、验证,分别对应,调查、开发、测试。

  (突然明白,日语中的「実装」实际上就是汉语中的「实现」,英语是「implement」。)

  主要原因在于两点:

  * 构建开发环境的经验不足、灵感匮乏

  * 设计、实现、验证的思维的混杂

  新的设计意味着要改变用户的思维惯性。所以,必须用极其鲜明的方式来表现,让用户能够充分注意到。

  新的实现的灵感可能会提示新的设计。

  好的设计,意味着,用户无需理解实现就能够很容易地很深入地理解设计。


2020/7/13 21:30

对于需求和实现的学习往往有三种方式:

  1. 对于需求细节和实现细节的对应关系,有相应的文档。
  2. 有概述的需求和具体的实现,需要自己根据实现中的具体细节去弄清所对应的需求细节。
  3. 有具体的需求和概述的实现,需要自己根据需求中的具体细节去完成所对应的实现细节。
  4. 有概述的需求和概述的实现,需要自己弄清需求细节和完成实现细节。

对于第1种方式,广泛的阅读比深入的阅读更重要。
第1种方式的最主要的效果在于提高交流表达的能力。
第2种方式的最主要的效果在于深入地掌握工具的运用方法。
第3种方式的最主要的效果在于深入地掌握工具的开发方法。
第4种方式是高度探索性的。
从第1种到第4种方式,学习难度越来越大。
所以,高效的学习策略是把学习任务逐级分解为较低一级难度的任务。

以 PayPay 的测试为例,最初还没有明确需求的时候,就开始尝试明确实现。为了解决方便地试验代码和记录结果的需求,从 Java/Spark Notebook 这个关键词出去,找到 Zeppelin。
因为之前有通过第1种方式学习过流处理的文档,所以这次很快就明确了流处理的需求。但是,在还没有明确会话化的需求的时候,就过早地尝试理解 Twitter 流处理的实例,并决定这次使用 Scala 开发。在此实操过程中,陷入各种与最初需求无关的具体问题中。由实时可视化的问题,提出可视化的需求,联想到 Zeppelin。Twitter 流处理的实例只满足了流处理的需求而不满足会话化的需求。以会话化、流处理、Spark 进行谷歌搜索可以得到更好的实例。
第4级向第3级转化的过程中,需求并没有充分的具体化,就过早地向第2级转化。导致任务过于广泛地发散。

Comments