谈谈理论与实践

2018/11/18 program

一晃之间已经工作很多年了,参与了很多项目,也旁观了很多项目。有的做成了,有的做黄了,有的做畸形了,还有的一遍一遍地重构难产了。后来细想,失败的项目多归因于理论不足。理论知识对工程师至关重要。

理论是指路的明灯

首先,互联网的项目,几乎没有什么超前于理论发展的项目。做的事多数都是十年前、甚至二十年前学术研究就已经定性的内容(已有定论),问题框架中的理论问题基本都已充分发展,哪些努力前人已经做过。懂得这些后,可以轻松的节省力气,没必要在不可能达成的目标上多下力气。也可以第一时间给团队的方案做一遍筛选,哪些方案是已经被人尝试过的,哪些是死路。还可以从研究者的方法中学习提高。

同时,在一个给定的问题中,存在大量的权衡( trade & off )。多数理论研究都给我们指明了偏向哪种选择会换来哪些收益和损失,而不需要我们亲历了失败才能得出。在工作中就旁观过一些难产的项目,决策者缺乏基本理论框架,重构一遍不成又重构一次,把时间、人力花在那些完全可以避免的试错中。

理论扩充视野

俗话说,见多识广。只有不断的学习理论研究,可以极大的扩充我们的视野和方法。很多时候我们需要的方法已经被人研究透彻了,只要我们多加搜索研究,十有八九是可以找到相关结论的。有时你感觉找不到,那是因为你没有把你的问题提炼、上升到理论高度,比如你只知道“勾三股四弦五”,但是遇到问题“勾五股十二弦几?”就不知道该怎么弄了,如果通过研究知道这个问题的本质,然后学习该问题的最终解答“毕达哥拉斯定理”,不管这个问题变成什么样,你都可以轻松得到答案。

理论使得我们优雅

通过不断的学习理论模型,我们可以很容易地将我们遇到的问题逐一分类,归属于不同的理论模型中去。当我们找到现实问题的理论模型后,我们就有很多优雅的架构可以进行参考。对这个项目无论是架构上、将来的扩展性上都有了保障。比如产品经理来给你一顿描述“我们需要一个产品,能让用户快速移动,至少每小时80公里,同时阳光可以照在用户头顶、风吹走用户脸上,使得用户身心愉悦”。如果你理论知识丰富,你会马上意识到,这是一个敞篷车,然后架构上就可以按照帐篷车来构建。同时敞篷车遇到的问题,你可以能够提前预测,比如在车身结构上要预留出安装软顶棚的位置,等到哪天产品经理又来说“用户不想淋雨,感觉解决一下”时,那时你可以轻松应对。

而且理论模型可以让我们做最正确的架构,使得学习成本、沟通成本达到最低。还拿造车来举例,一个架构师,从来没有见过汽车或者其他车辆,有一天他接到一个造车需求,然后他就凭着自己的感觉,造出了一辆方形车轮的汽车,可想而知,人做在上面一定很颠簸,但是他又经过一番魔改,造了一套很牛X的座椅稳定系统,让乘客坐着车内十分平稳,这样也完美打成了用户的需求。但是这个架构设计存在巨大的学习成本和沟通成本。任何一个见过汽车的人都会发出同样的疑问“这个车轮为什么是方形的?”,导致你在每个场合都需要给人介绍你那非常牛X的座椅稳定系统,以打消别人对方形座椅的疑虑。在实际工作中,这样的畸形项目实在是太多了。

Search

    Table of Contents