禅与App 维修的艺术
几年前我读了一本叫做《禅与摩托车维修的艺术》的书。这本不算薄书大概的内容是这样:作者不断思考当代人的处境,发现当代人处在一种前所未有的无力感中,而这种无力感的来源是科技。
科技的发展一方面让人享受便利,但另一方面却让人更无力,现代人离不开科技,但科技并不透命,科技的复杂却让人难以完全理解科技,人们无法完全理解每天都在使用的事物背后是怎么运作的。当某项科技出了差错,某台机器故障,人们不知道应该从何下手,因为科技,人们失去了掌握自己生活中种种的权力。
后来作者又讲到,从西方传统的科学哲学,也无法解决这种处境。科学精神就在于观测与证明,而现在有太多的现象无法观测,也无法给予直接的证明—我们和绝大多数的台湾人一样缺乏西方科学哲学训练,姑且跳过这段讨论。总之,作者认为在二十世纪应该要有一门新的哲学,这门哲学的精神是鼓励人们观察事物的背后,了解科技背后如何运作,人们有能力对自己的生活重新掌权,而如果无法直接观测,那么,我们就该重新强调西方科学传统被排拒的直觉与想像力。
用户使用我们的App,还有我们在修bug 的时候,往往也陷入这种无力感:用户可能天天都在用我们的App,但也搞不清楚我们是怎么把App 写出来的,App 有问题不知道怎么办。我们在修bug 的时候,也经常搞不清楚用户是在怎样的环境下执行,客诉如雪片般飞来我们却无法重现问题,我们也没办法看到苹果的程式码,不见得知道苹果的library 到底做了什么,当问题发生的时候,我们和用户一样束手无策。
那我们能做什么呢?我们的眼光应该要从那些眩目的事物上稍微移开,我们或许会知道很多第三方library,知道很多cocoapods 可以用,我们可以用很快的速度拼装出一个App,但我们要了解被系统library 隔绝开来的底下是怎么运作,像Objective-C run time 是怎么回事,才有办法理解问题,同时细心观察我们手上有哪些线索,像crash report,进而发挥想像力,想像问题出现的时候,到底发生了什么。
接下来我们会进入几个实战案例。