注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

熊猫外交官 的博客

 
 
 

日志

 
 
 
 

从标准到协议  

2016-11-25 11:24:04|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

         这两天我一直在研究有关程序员的日常工作,到底是在干什么。之所以对这个事情有十足的热情,主要是因为作为产品经理当你把你能干的所有活的干完以后,对面跟你闲扯一些没用的,你却始终不知道他们在干什么,应该干什么这点感到十分的无奈。我这个人从来不会因为压力而无脑的乱喷,即便是对方跟我肆无忌惮的扯皮,我也必须建立在有建设性计划的基础上进行交流。去年这个时候,我对于什么样的内容与思想以何种方式来表达对人有影响这个问题已经做了非常深入的研究。也就是所谓的对教育内容与教育培训这件事有了十足的理解与把握。但在此之后却被另外一个看起来无关紧要的问题卡住,被人拒之门外,也就是互联网产品的产品经理到底应该做什么会什么这个问题让我感觉十分坑爹。所以在跟这些无效率的家伙们闲扯了大半年的市场与客服的问题以后,终于开始有闲心研究互联网产品经理的内容,也就是把需求转化成原型设计这一关卡。最近这一段时间来说,其实这个小问题我也解决了,但是当我面对程序员的时候发现竟然又是一个我不知道的黑箱。从原型到实际的代码编写之间到底有哪些事要做?做到什么程度?这几天对于这个问题我也算是小有斩获,因此忽然想到了这个题目,也就是程序员世界的思维逻辑,从标准到协议。

         我最开始对这个事情感兴趣的起点,是做市场的时候,大量用户反馈产品存在各种BUG,所以建立在问题的基础上,开始排查各类问题的发生原因。那个时候大概上主要是了解程序架构分层,大体上了解从流程设计与服务编码的角度会因为设计思路问题出现哪些问题。后来到了自己设计原型的时候,我对于用户需求与使用逻辑的改良有了实际体验之后,发现其中一个核心问题在于数据库的架构是否合理,能够在整个系统的后续延伸功能上起到决定性作用。因此需要在原型阶段之前就把所有可能需要交互环节数据的服务系统都想到,然后把这些参数提前做到交互环节里,或者体现出来。不过从思路上来讲,这个时候我仅仅是从感官上来讲从起点到终点的因果关系上打了提前量而已。至于程序员到底在这个过程中是怎么干的,我依旧一无所知。

        正因为对于编程这一环节不了解,正因为这一领域对我来说是黑箱。我虽然知道这帮家伙从需求上跟我扯皮是不干正经事的闲扯,但是他们应该干什么,干到什么程度,我却没有一句建设性的话能够说得出来,引导他们应该说啥思考啥。这几天我在研究一个编写数据库的同事那,看到一个叫powerdesigner的工具,在学习的过程当中,我才有点了解编程这事黑箱内部到底是怎么个运作逻辑。虽然并不是全都看得懂,但是设置不同的实例,每个实例里包含各种参数,各个实例之间的参数转换关系这一数据库搭建的基础原理我还是看得懂的。因为这正和我最开始为了功能延伸做的很多预参数设计相契合。但是,数据库设计好以后怎么转化成功能的?这点我还是没看懂到底在哪里体现,所以就开始问同事数据库的设计逻辑全貌,以及程序设计的全貌到底是啥样的,终于我从一点切入,从一个人嘴里抛砖引玉的问出了全貌。

        大体上来讲,程序员其实看到原型这一级的时候,产品经理的工作其实就算是已经干的差不多了。后面的事是数据库,UI交互,测试以及写服务的这四类人根据原型研究如何实现的事情。这四个人其实也大体上代表着一个程序的四个层面。最底层的是数据库架构,包含了一个程序的所有底层信息链接和库的交互;然后是服务为各个运行逻辑写相关的实践代码服务和接口;再然后是UI交互考虑用户交互界面的视觉感官;最后是测试,由它来定最后产品实践的时候合格标准。这四个岗位是一个程序内部最小化的标准岗,都是基于原型为基础的平行岗位,能够依据原型并行实践开发。

        而这四类人的并行协同以及层级之间的工作交互过程,其实也是有一个套路的。而这个套路不是在一个维度与层面的模块化分工那么简单,而是在四个独立的维度前后衔接诠释原型想要表达的内容。这种跨维度的交互衔接,也就是我要在这里重点说的,从标准到协议的问题所在了。我们通常对于产品制造,往往就知道一个标准化的概念,知道定一个统一最高标准,能够降低不同部门协调研制产品的交互成本,可替换性,大规模量产,提高产品竞争力。比如最早引进我国的ISO质量体系认证标准就被我们简单地理解为质量的代名词,有这个标的产品好像在质量上就可以得到保证一样。但事实上这其实是一种不准确的理解,标准体系对于质量有一定影响,但并不是直接关联的,事实上也不是整个标准化体系一开始诞生的主要意义。

        准确的来讲,与产品质量这个结果直接相关的标准定义在软件这个领域当中主要是由测试这个岗位为定义的。而我上面说了,一个标准软件研发团队最少有数据库,交互,接口服务以及测试这四类岗位。测试的工作是根据一开始的产品原型与应用环境实践过程,分析其中影响运行质量的因素,写出各类测试参数标准来检验实际产出产品是否存在隐患性的BUG。也就是说产品为了啥设计,客户有啥需求,产品的运行机理,这些我们脑袋里简单意义上的产品价值并不是测试所理解的质量问题。只有参照最开始的设计要求与环境的实践结果是否达到预期,这件事是测试对于质量体系所关注的重点而已。我们引进的ISO质量认证体系当中,根据后面编号不同,有的体系是仅仅对于工艺制造,设计与质量检测提出相应标准,并不是说每个体系都对消费者的实际需求结果加以保证。

       假如这么说的话,那么这个体系的意义何在呢?理论上来讲,这是一套清晰的对生产工艺进行清晰界限,分工,确保产品制造过程能够有效进行的体系。举个简单的例子来讲,传统的经验主义师徒制的生产过程,是通过一个主要技师来确定生产需求与制造规划,由他来确定和评价每个人的技能价值,切分分工,最后进行实践组装的。在这一体系下当主技师不在的情况下,当某一个具体的工人完成工作或者宕机,某些工艺原材料消耗减少的时候,整个工程就会宕机。任何分支成熟技工的流失都需要消耗主技师大量时间进行在培训才能够得以补充,任何原材料和工件的损耗,也必须由主技师来确定解决方案。而标准化体系首先确定了整个工程不同层级的主要任务与指标,不同岗位的相关技能要求与标准,最后它还会确定一套不同层级不同工种之间的任务完成与交互时的协议指令。这样,主技师不用非得啥都得亲力亲为,而是可以把具体的工作交给不同层级的专家与部门来进行独立的研发与沟通。在类似飞机这类复杂工业制造品的研发时,任何一个模块都需要庞大的团队进行研究制造。仅靠一个十项全能的主要技师来主导万人以上规模的团队进行从材料到原理再到技术验证,工艺控制如此复杂的系统明显是不切实际的。且一旦某一个环节出现问题,就会出现整个系统的宕机。

       让我们回到程序编写这个相对来说体系还算较小的工程上来,我们上面说到确定结果实践的仅仅是测试这一个岗位所负责的并行工作。那么剩下三个岗位在并行开发的过程当中,如何确保彼此制造的东西能够相互衔接与融通呢?我问了一下某个同事以后,他跟我说有个叫接口的东西,只要接口写好,后面的事就可以并行开发了。我对于接口这个东西到底是啥就产生了很大兴趣。就让他拿给我看,啥是接口。我一开始以为接口是一个复杂的程序命令代码,结果我一看才发现,就是围绕每个功能的链接数据库不同命令的约定名称。也就是说,接口的实质是依据已经画好的原型将原型中不同的指令流程进行切片,我们在电脑里点击的每一个按钮与指令在后台会化成对不同服务与数据的命令集。而这个命令集的名称,叫张三还是李四并不是问题的重点,重点是大家要约定好我们在什么时候要有命令,我们都知道叫张三的时候指的是同一个东西就好了。而数据库和服务就是每一个命令在下达时会记录什么,会如何被不同层面的系统解读。

       这也就是说,所谓的接口其实是一种在特定工程内的协议。协议的主要作用不是提供技术要求指导,而是提供一个沟通平台可以让不同工艺工种不同层面的交互能够在一个语义下沟通与交互。在听明白这个事情以后,我忽然对整个互联网工程系统有了完整的架构理解。终于搞明白怎么识别这些程序员,看得懂这些人到底在干什么,如何理解不同层面之间的工作是如何被转化配合衔接的了。

        在学到这的时候,我脑袋里就出现了一个新的疑问,那么工程与工程之间,怎么看协同体系的质量高低呢?这个时候另外一个同事蹦出来,又开始给我讲了有关互联网的质量体系,也就是我们最开始说的ISO开放标准协议。我大体上看了一下这个协议体系的发展史,在早期这个体系被提出的时候,是因为不同计算机制造厂商有各自的协议标准,因此就会出现我们现在看到的苹果的手机软件安卓上用不了的问题。在那个时候有同类设备的局域网,而没有现代意义上的互联网。所以美国人就搞了一个国际开放标准协议,这个协议的主要目的并不是为了指导未来产品设计的核心工艺与技术标准,而是为了统一计算机设备的交互协议,能够实现不同品牌的设备能够在一个协议之下互联互通。这才有了现在的互联网的存在。

       而ISO开放标准协议的内部大概分为七层,从物理数据层,传输层到软件时间的表达层和应用层。每个层面都有各自的接口协议。最原始的ISO开放标准协议只是提出了这样一个现代互联网技术的七个工程层级,而没有提出任何具体层级的实践标准与门槛。但是最后形成的这一开放协议构架,却不断地吸纳了全世界整个互联网系统所有精英的努力,每年不断的更新形成世界通用规则与技术迭代。评价这一开放体系的核心运行原理就是,每个层级只负责本层级之间协议以及向上一层协议提供技术支撑,处于上一层的层级则向下提供新的应用需求与发展指引。这样在明确不同层级的义务分工之后,从协议到技术规范,从界限到主要目标就都被确定下来了。

       我最上面所说到的程序员的工作,其实也仅仅是描述该体系下应用层的三个子层之间的工程交互协同。而现存的整个互联网体系要比这规模大5-10个几何数量级。也就是说在特定层级内讨论层级内的协议体系互动质量的高低,其实本质上也是一个相对较小的技术改良,整个概念协议体系的建设目的与规划的蓝图规模则是另一个层面的协议质量高低的比较,且这个层面的比较往往具有更大的意义。

        所以,从我最开始抱着一个很小的目标去研究怎么能够看得懂程序员到底在干什么这个黑箱问题,到最后我探索并挖掘出了一个很大的答案。不是仅仅针对那几个人到底是谁,干什么,我该如何说话这种狭隘的小问题的答案,而是解释了为什么我应该去了解,能够通畅无阻的和对方沟通的必要性,以及这一时代趋势所代表的终极意义。狭隘的知识,命令仅仅是我们微观生活中的一些细枝末节的小事,而从体系到服务再到协议这一从概念到沟通的更大范围的系统,则是我们这个世界人类文明开拓的根基所在了。这就是我要说的从标准到协议的全部内容。

  评论这张
 
阅读(11)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017