闲谈跨界
我的朋友韩磊曾说:跨界(工作)真是一件刺激好玩的事情。彼时我还无法体会这句话的真义,直到去年因缘际会自己也投身跨界,终于有机会切身体会到其中的滋味,所以有这篇文章。
其实在此之前,我一直混迹于互联网的圈子,自认为接触过一些真正的东西,比如大规模数据的抓取,海量数据的存储和处理,在线系统的维护……客服、文案等等工作也有涉及。我想,太阳底下没有新鲜事,跨界虽然是在不同的领域,做的事情大抵还是这些。但是真正投身实业,才发现事实远非自己想象的那样。
这方面突出的例子之一,就是虚拟世界和现实世界的交流。从某种方面来说,互联网或者纯软件开发,更像在理想的虚拟世界中进行,可以脱开现实的束缚,只关心核心的模型。“发一条确认的消息”是非常普通而且常用的操作,你用Java也好,C#也好,PHP也好,只要按照约定发送这条消息,结果都不会有多大差别;落实到现实世界中,情况要复杂许多:消息必须有实际的载体,有发送的动作,不同的载体和动作,又对应到不同的效率和准确率。举个现实的例子:许多客户端软件,通常要求输入条码识别产品,然后用键盘(鼠标)操作一系列对话框、选择框,执行后续的操作。这个流程看起来没什么问题,但是“扫描-敲键盘”的操作在对处理效率要求很高的情况下,却会成为瓶颈。对此,可行的解决办法是,将键盘/鼠标操作统一为几种消息,比如“是”、“否”、“取消”、“确认”,把这几种消息对应到特殊的条码,将这些条码打印出来,贴在墙上,并辅以不同的提示音。这样,需要输入“是”的时候,只需要用扫描枪扫墙上贴着“是”的条码,并确认听到提示音,就可以完成。大部分时候,操作员的手不用离开扫描枪,甚至不怎么用看屏幕,效率自然大大提高。深入学习了解每个操作、每种功能的具体发生情境,是从互联网/纯软件转到实业开发中,相当重要的一点。
另一方面,实业里有许多领域和环节,因为某些限制,一直没有建立完善的虚拟世界(概念模型),如果能够妥善运用技术突破这些限制,同样能够大大提高操作的效率和质量。比如在物流运输中,“封箱带”部分承载着“保证货物运输过程中不被调换”的职能,但其实“保证不被调换”并不只能依靠封箱带这种手段。如今可以通过先进的设备和完善的系统,记录追踪每一个环节中货物的状态,尤其是重量——进入某个环节时,重量是多少,离开某个环节时,重量又是多少,即便货物被拆分,总重也应当保持不变……前一段时间报道出来的iPhone手机在运输过程中被调包的案件,我注意到,盗贼精心制作了和真iPhone手机同样重量的模具,这样瞒过了各个环节,到最终开箱才被发现,看来是深入了解过整个流程的。
以上都是比对技术思维和现实思维,如果换一个角度,从互联网的视角来看企业开发,又会有新的感受。就我的经验,企业开发中,有两个方面可以大量借鉴互联网开发。
第一是借鉴互联网开发的松耦合、混搭(mashup)思维。传统的企业开发虽然也强调分层,但大多必须严格地按照某些框架和套路来进行,开发人员更主要的工作都是“填格子”,这样有两个弊端:选用的框架和套路并不一定合适,尤其不适合今天迅速变革发展的节奏,开发人员的思维和视野也比较受限,难以交付高质量的成果。而互联网开发虽然比较“乱套”,但天生就强调松耦合,强调“服务意识”,许多开发人员天生就知道调用网上的各种服务,受其影响,也愿意将自己的功能做成服务(而不是一段源代码或一个二进制程序)。在一个相对复杂的系统里,完善的文档说明固然不可缺少,但架构同样重要,各个功能是做成服务,还是做成源代码、二进制程序,很可能极大地影响未来的开发难度和开发成本。这方面,企业开发可以多向互联网开发取经,实际上,许多从互联网行业总结的经验,已经被证明完全可以用于企业开发,比如如今流行的REST模式,就不乏成功的企业实施案例。
第二是借鉴互联网的产品思维。传统的企业开发,更像功能的堆砌,功能的组织和引导都很成问题。我曾留意观察过一些大型企业的ERP系统,虽然看似强大,员工使用起来却叫苦不迭,突出问题界面无序,功能杂乱,数据密密麻麻,很难找到自己需要的信息,操作也很繁琐。而互联网开发早已进入“体验至上”的年代,用户习惯了“凭直觉”操作;在这表象之下,功能并不是少了,而是多了,并不是简单了,而是复杂了,只是以更直观、更清楚地方式呈现给用户,并且需要分析用户的行为,不断调整。两相对比,如果能在企业开发中多一些产品的思考,多一些用户体验的思考,往往会受到良好的效果。现身说法是,我们分析了几个月内,所有员工对系统中某个功能的调用操作行为,总结出若干特点,再加以优化,服务器的负载减轻了很多,员工的操作也简便了很多。在企业系统里,这类工作往往是大有可为,而且收效显著的。
From Life Sailor, post 闲谈跨界
有感,界面,兼容,体验。。。如果是面向大众互联网的项目,估计点子再好,也没几个人愿意用啊,简洁之道