民主的时代,我们需要架构师吗

原创 2013年12月03日 16:39:25
      我们常听说总工,架构师。
     参加工作十余年来,今天可以下一下结论,就是总工,或者架构师,是拖团队后腿的角色,已经不适合民主时代要求。也许在国外,根本没有这个职位。我看过网易公开课的航天系统工程学,的确是这样。里面只有向下思考实现的系统工程师,没有什么总工。也许管预算的可以称为总工。对了,那是在70年代。阿波罗时代,也许有个精神领袖:冯.布劳恩(但看看登月的书,也是非常民主的,最后的方案,不是布劳恩要的,因为布劳恩有更远的计划,要上火星,而上火星,则必须在地外出发,所以布劳恩大力支持二步方案,就是先在地球上方建好基地,再登月)。70年代,完全是民主的时代。航天飞机就是这样一个“奇迹".

     比如,前些年,我在我们公司研发体系,从软到硬,到结构,到白盒测试,我们有项目经理,有总工,但总工只关注一些协议或是他知道的东西。而这么庞大的团队,保持一致升级的是,是一套叫主信息库的excel文档,里面有非常详细的内容。

   

    而我的确比较幸运,参与其中,负责开发这套自动化解析的工具。当然,这个思想,在我开始编写这套工具之前就有了,但的确是我开始编写的。因为客观来说,在03年,解析那么复杂的excel,不是所有人都能整出来,我不太乎到外胡吹这事(现在不太了解了)。后来有幸成为网管部分的子项目经理。从更广的角度,观查了整个研发、测试、外场体系动态演进的过程。


比如,一个IP结点,由:
    {
        ipType
        ipAddress
            ipv4
            ipv6
    }

     当然,最终汇总的结果是几万行,每一行相当于一个数据库中的field.我们有一套类传于snmp mib的oid,为每个叶子设定唯一ID。所以,我们的基础数据叫MIB。

     然后是命令层,这些参数被封装到一个个状态无关的函数,就象数据库表的存储过程,或函数。
     然后织装成为命令树,
     然后成为对象层。一些通用操作,在这里对用户进行屏蔽。每一个对象,我们尽可能减少对用户呈现的信息。
     然后,有表示层,展现给用户。
     也有GUI层。

这一切都是自动的,除GUI的图元,要手工画出,但大部也,也是全自动。当时我们用的是SVG。


所谓自动,就是程序不清楚他在干什么。就像人的一个脑细胞它也不清楚自己在做什么。但却组成了有精神层面需求的human being.


然后,有一系列工具,完成这种自动化解析的工作,
要输出许多方面的信息:

1. 嵌入式平台的C代码。
2. 初始建立数据库工具
3. 初值文件。
4. 等等。

然后,这个主信息库,会被以解析后的格式,存入所有相关软件的相关部分,就象我们人体每个细胞都带着DNA(当然有的细胞没有核)。

最后搭建的庞大的分布式系统,每个个体,可以在有一定版本差异的情况下协同工作。版本兼容,虽然只有几个字,但真正理解工程学的人,知道这有多重要。

整个过程,没有一个人,对整个系统了如指掌。是靠民主和群体的力量。


excel的主信息库,是由几十人,甚至几百人共同完成的。比如FPGA,DSP,底层协议,高层协议,等等等。


当然,那一系列Excel解析工具,也是背后的功勋。既使在我们公司内部,了解这套工具的人,也非常少。这些工具,也是一年一年不断的加强和完善的。

我们有一个工具,叫初值文件编辑器,后面会提到。有一次,有一个同事,打电话问我,关于这个工具,为什么能解析所有版本的初值文件,我当时有点吃惊,因为原来大多数同事,根本没有感觉到我们有这样一个庞大的体系在后面,所以我给他讲了一下,我们研发部那么多同事,如果没有一个纲领性文件,如何能齐步走呢。从他的语气里知道,他非常吃惊——他可能一直以为我们在摸瞎乎呢。



      当时之所以,采用EXCEL,是因为,别的工具,目前还达不到。比如一些UML工具,属性不能无限护展。
而我们一个属性叶子,要描述数十种信息(现在可能更多了)。每个叶子,也需要有唯一的ID,这些UML工具,是难以实现的。

另外,Excel便于人查看,这也是UML工具难以做到的。

而且excel,可以说人生来就会用,不需要专门的培训。这比起所谓的那些工具,要好不知道多少倍。唉,有点讽剌。看看在IT界,天天推陈出新,可真正有用的有多少呢?人机交互,目前还是在excel的水准上。


当然,有许多人和团队要尝试进行改进,但到目前为止,我们还受制于“综合球力”,我们不得不面对一个有限制的世界。

然而,即使如此,我们也达到了预期:

1. 集合了全团队的力量,而不是依赖于某个所谓的根本不可能存在的总工,或是架构师。也许有人会说,你这套框架,Excel每一列

的含义,不就是架构吗?当然,也许吧,然而,我们工具,绝大多数部分,都是VB6所写的。他们的工资与普通员工差不多。因为这

些线下的工具,不太需要多线程和效率,我们发布的东西,都是这些工具的输出,里面把效率都提到最高了。


2. 如上所述,为公司省了钱。
3. 可以快速升级。全系统,可以在几小时内,完成升级。如果知道以前手工升级是多少时间,那一定会大吃一惊——三个月。而且,接口正确性要测三个月——而且,还是有错误。
4. 减少了错误,本来需要大量测试的接口,现在变成了可信的部分。本来是大家要不断扯皮的接口,现在变成了一个内部的单元。
5. 版本的追溯成为可能。同时,使得所谓的decay,代码的腐烂减到最小。

6. 这可能是最重要一点,是以上的基石:那套解析工具里面,80%以上的代码是在检查各种人为错误。可不要小看这件事,一个取值范围错误,可能让一个网络崩溃。



当然,总结,就是大大结快了效率。因为整个团队不需要等所谓的总工明白了每一个细节之后再行动。这种情况,真是泛滥啊。当总工每天逼着你给他讲明白你所有的细节时,你真的是欲哭无泪啊——不是我不想告诉他,一方面是因为我也不懂,搞技术的人都知道,能做出来你水平只能是1,能讲出来是10啊。可我们技术人员,不是谁都能到10的水平。另一方面,总工都是混吃混喝的,他哪能整明白啊?他唯一会的就是到项目经理那去告状,让人哭笑不得——等总工整明白,黄瓜菜早凉了。


而且,由于,每个系统都带着DNA,那么,可以通过版本兼容的升级,不断地修正自身的BUG。不断地evolution.

当然,这个兼容体系中,管理软件,比较复杂,需要携带几乎几年内所有的版本,而嵌入式端,则简单得多,一般就带两个或三个就可以了。用于升级失败时,自动回退。

初值配置文件,也是一个有利的特性,我们的整个网络各节点,可以在家里全都配置好,等施工完成上电后,自动下发。

今天只是简单写一下。里面还有许许多多的技术,才能支持我们这么庞大的体系运行,比如性能处理的自动计算,告警处理,自动化的命令行,自动生存命令手册,等等。

还有就是自动化的图形化显示(监视和 topo)程序,是最复杂的部分之一,难点之一,就是当底层的小变化,放大到最上层时,可能带来的影响。

总之,以目前的社会,人们还迷恋于什么牛人,什么总工,是可悲的。
记得以前看过一本书,叫《没有指挥的乐队》,我相信,在软件行业,这不是梦想。

事实上,美国的F-35,已经实现了这一点。他们不需要什么总工,却一年多就定了全部硬件。因为他们有全套的仿真系统。这一年之中,不知道试过了多少种设计。

任重而道远。希望国人奋发,不要固步自封。我们应当象系统一相思考,象细胞一样生存。永做脚踏实地的系统工程师,不要夸夸其谈,自诩为什么伟大的架构师。




版权声明:本文为博主原创文章,未经博主允许也可以转载。

我眼中的架构师:一个优秀的架构师应该具备什么?

时光退回到七八年以前,那个时候“架构师“还是一个很“高大上“的title。可是在今天的互联网圈,随便一个工作了三、五年的开发人员,都可以称之为架构师。随便多翻几个招聘网站,你可以看到:前端架构师、后端...
  • chunlongyu
  • chunlongyu
  • 2016年12月04日 20:11
  • 2623

成为一个Java的架构师要学习哪些知识?

成为一个Java的架构师要学习哪些知识? 既然java架构师,首先你要是一个高级java攻城尸,熟练使用各种框架,并知道它们实现的原理。jvm虚拟机原理、调优,懂得jvm能让你写出性能更好的代码...
  • sinat_28678257
  • sinat_28678257
  • 2017年02月10日 14:49
  • 333

架构师都要懂哪些知识

Web架构师究竟都要学些什么?具备哪些能力呢?先网上查查架构师的大概的定义,参见架构师修炼之道这篇文章,写的还不错,再查查公司招聘Web架构师的要求。 总结起来大概有下面几点技能要求: 一、 架构师有...
  • wyxhd2008
  • wyxhd2008
  • 2014年05月04日 23:27
  • 4197

11月27日云栖精选夜读:阿里毕玄:智能时代,运维工程师在谈什么?

智能化运维的终极目标,就是将运维人员从繁琐的工作中解放出来,提高整体运维效率,降低运维成本,实现业务系统的高可用性。 目前业界真正的智能化运维的落地实践其实并不多,大多还是停留在自动化甚至人工化阶段,...
  • qq_36510261
  • qq_36510261
  • 2017年11月28日 15:48
  • 87

《民主的细节》摘录

《民主的细节》
  • slowly_come_faster
  • slowly_come_faster
  • 2016年09月10日 22:48
  • 595

架构师应该编码吗?

架构师从编码中来,通过构建原型、框架和基础,实验新技术,代码评审等必不可少的编码活动最终完成产品的交付。难道不应该编码吗?...
  • caowenbin
  • caowenbin
  • 2015年03月02日 19:15
  • 2516

怎么面试架构师

其实本文想说的是:当面试一个架构师的时候,我们应该问什么问题?我觉得,问什么样的问题,体现了team leader更加看重架构师的哪些特点。 我一直认为,做技术就跟练武一样,在练武的不同阶段,分招式和...
  • super_man_ww
  • super_man_ww
  • 2016年09月03日 20:00
  • 895

优秀的架构师应该具备哪些能力

合格的运营式运维工程师 首先我们总结下,关于谈到何为一名合格的运维运营工程师,大概就是几点: 具备一定运营技能;要有运营意识;主动性要强;学习能力要跟得上。 大家都会发现...
  • liu136313
  • liu136313
  • 2016年01月03日 21:13
  • 1655

互联网架构师必备技能

一、每个好架构师都是一位出色的程序员 这一点毋庸置疑,如果不是写过N年代码的优秀程序员,一定不是好的架构师。“架构师”这是一个听上去比较虚的职位,它的主要价值在于“落地”的过程中,而不是“指点江...
  • oanqoanq
  • oanqoanq
  • 2016年03月03日 15:40
  • 802

成为一个Java的架构师要学习哪些知识?

作者:哈哈 链接:http://www.zhihu.com/question/29031276/answer/54631312 来源:知乎 著作权归作者所有,转载请联系作者获得授权。 ...
  • houbin0912
  • houbin0912
  • 2016年09月03日 19:12
  • 843
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:民主的时代,我们需要架构师吗
举报原因:
原因补充:

(最多只允许输入30个字)