技术人的视野
对我而言,周末要比平时忙碌得多。陪孩子上课,读书,玩耍是我的必修课程。这也是周末为何我有时比平时还要早发文章。有朋友曾经提醒我,新闻上说了孩子这么小,上各种早教课没用,只会给孩子带来不必要的压力。我不这么认为。我觉得评判一个课程有用没用,要看孩子是否喜欢,大人说了不算。对我而言,我只能提供各种机会和必要的引导,如果她不喜欢,不强迫就是了。为什么要听信和我毫不相干的专家的话试都不试,就一杆子打死所有的早教?我上音乐课的结果就是,女儿现在听着音乐就开始有节奏地翩翩起舞。有次去朝阳大悦城,有个化妆品专柜请了个美女拉小提琴。一听到悠扬的小提琴声,她就在我怀里欢快地舞动,于是我循着声音找了过去,在那个化妆品柜台附近把她放下,任她跳舞。于是小家伙就在众目睽睽之下跟随乐曲的旋律跳了好久,连拉琴的美女也为之动容,专门拉了首jingle bells助兴。
最近我在干一个让我比较窝火的「重新发明轮子」的活。为了更好地阐述这件事又不透露细节,我暂且比较笼统地说我在做系统层的某个非常基础的组件。这是个典型的我们可以用现有的实现(包括非常完善的开源项目)去完成,没必要自己从头去写的功能。然而,项目的技术老大指出了现有实现的很多不足,如太复杂,不符合项目的特定需求,所以要我们自己重头去写。
在此问题上,我的观点一直都是鲜明的:只要已有的成熟的实现没有本质上的无法利用的问题,那么我们就不该重写。尽管几百行的代码在开发阶段不是个什么事,但是测试呢?维护呢?以后的扩展呢?几百行代码也许是一周的工作量(实际不止几百行,我在上面也part-time工作了不止几周了),但以后带来的工作量可不止这么简单。
可惜我说了不算。我强烈地反对过,但我无法影响对方,所以只能收回我的反对,乖乖地按着既定线路走。其实从个人的角度来说,重写这样的代码对我能力的提升很有好处,但对项目而言,真心没有太大益处,反而把时间和资源花在了本不该花的地方。
这个问题尽管只是个技术问题,深层次看是视野的问题。技术人往往容易沉浸于细节不能自拔 —— 我们太熟悉,太热爱我们所做的东西,所使用的工具,而忽略了更大的世界。此外,技术人员太高估自己的能力而忽视全局的后果 —— 我们对我们的能力和对进度的把控太自信(自负),以至于耽误了项目。
相对互联网人,这种视野的局限性发生在通信人身上的机会要大很多,我认为有以下原因:
(1) 通信人在一个封闭的生态圈,而互联网人在一个开放的生态圈。
在通信界,整个生态圈里使用到的知识产权很多都是需要购买的,而在互联网界,整个生态圈构建在开源,开放知识产权的基础上。在封闭的生态圈里,人的思维也容易封闭。当你使用「封闭」建立起护城河,拱卫你的城堡时,那么,除了自己的一亩三分地,你就会很少关心外面的世界。比如说我们做freebsd的做久了,都不知道linux系统下有那么多新鲜的工具,内核里有那么多先进的功能。反观互联网,开放使得产品有了百花齐放的态势,大家都赤膊上阵,敞开了竞争,结果是你必须不断关注最新最好的技术,这样一旦有需求,你会尽快验证。
(2) 做通信是大规模集团作战;做互联网是特种部队的「斩首行动」。
当然这个不是绝对的,只是一般而言。做通信很少有一个项目就几个人做的情况,至少几十人,而互联网项目起初几个人就够。当你只有很有限的资源时,你会尽可能「站在巨人的肩膀上」干活,整合一切能整合到的资源,把好钢用在刀刃上;而当你有很多资源可以使用时,如果没有一个清醒的认识,很可能会把资源整合到不必要的场景下。
视野的问题,如果只是出在执行层面,问题还不算大;但如果出在了决策层,则对项目会有严重的影响。现在做产品的思路和十年前大不相同了,很多时候比拼的是个整合(开源)资源的能力。instagram,whatsapp如果不去整合各种已有的资源,一上来就什么都要自己做,那必定无法快速地开发出供市场检验的产品。