• Feeds

  • 微观架构及宏观架构

    大部分工程师包括架构师都是从微观架构起步的。微观架构指在一个局部的领域达到设计及实现的合理性,比如写一个排序的程序,达到时间空间复杂性的合理性,同时在代码的易读性、扩展性及可维护性方面也达到一个合理的标准。但一个系统中不仅只是存在微观问题,宏观架构指一个更高层级的,全局领域的策略及架构设计,通过架构来最终达到对产品或系统在效率、成本上的收益。当系统变大之后,宏观架构的问题更突出,也更能取得收益。比如在一个互联网Web应用中,从微观角度来看,cache命中率自然越高越好,从设计上尽量让访问落在内存上。但是从宏观角度,只要SLA能得到保证,比如让70%的最近数据(可能只占1%容量)能够通过cache访问,而30%长尾数据(可能需要占用99%容量)是通过存储返回,整体开销可能会下降一个数量级,而整体性能也基本有没有大的变化。

    Coding出身的工程师刚脱离微观问题的时候,可能会觉得不习惯。微观的问题容易看到成效,比如将一个程序的QPS性能提升了30%,这是一个容易度量的成绩,而宏观架构看起来很“虚”,也不容易快速产生成效,比如将一个大型传统的系统改造成一个SOA的架构。辛苦花力气改造完成,也不容易看到及度量成效,而且一些隐性的收益需要更长时间才能体现。

    尽管如此,微观架构及宏观架构如同战略及战术一样,是相辅相成的。而且双方都有其重要性,无法判断一个比另外一个重要。微观方面,一个平庸工程师组成的团队,即使一个优秀的架构师从天而降,短期内也无法改变团队的成绩。同样如果技术领导只关注宏观层面问题,忽视代码细节及基本功培养,团队的产品始终难尽人满意。由于宏观架构的设计者通常在组织中拥有更大的话语权,如果对微观的问题缺少一个基本的理解,对微观的出现的矛盾不能做出正确的判断,系统的开发效率及运行效率都会出现问题。宏观方面,一群优秀的工程师,如果能聚集到一个优秀设计架构的平台上,肯定如虎添翼。在一个团队中,宏观架构及微观架构的人员需要达到一个合理的比例。

    以下是以前思考的一些断言,你判断是这些是宏观还是微观架构?

    • The C10k problem refers to the problem of optimising server software to handle a large number of clients at the same time (hence the name C10k – concurrent ten thousand connections). The problem of web server optimisation has been studied because a number of factors must be considered to allow a web server to support many clients. This can involve a combination of operating system constraints and web server software limitations.
    • The goal of SPDY is to reduce web page load time. This is achieved by prioritizing and multiplexing the transfer of web page subresources so that only one connection per client is required. Transmission headers are gzip-or DEFLATE-compressed by design. Moreover, servers may hint or even push content instead of awaiting individual requests for each resource of a web page. SPDY可以用作HTTP RPC一个高效替代
    • 普通硬盘的访问延时是SSD的5-500倍
    • 使用event方式事件模型的编程模型可以极大降低线程之间context switch的开销
    • Code review is systematic examination of computer source code. It is intended to find and fix mistakes overlooked in the initial development phase.
    • 在大型系统中,模块之间组合的架构可以看出整体架构的优良及团队效率
    • 移动app方向,未来一段时间仍然主要以产品模式及运营方向主导,技术驱动领域主要集中在快速迭代能力
    • 虽然大数据是以后的一个发展趋势,但是数据挖掘的大部分场景还只是浅层次的应用,系统瓶颈不在挖掘能力,而是在应用能力上

    演讲小组的第一次活动

    言辞对于提高一个人的修行具有不可言喻的好处,它不是表面的嘴皮子功夫,在胡适所述“三个方法让你的所思所想为你所用”提到

    • 一曰谈话。友朋问答辩论,可使吾向所模糊了解者今皆成明澈之言论。盖谈话非明白透彻不为功也。
    • 二曰演说。演说者,广义的谈话也。得一题,先集资料,次条理之,次融会贯通之,次以明白易晓之言抒达之:经此一番陶冶,此题真成吾所有矣。
    • 三曰着作。作文与演说同功,但此更耐久耳。

    其中有二点都是跟言辞相关的,通过谈话来“非明白透彻不为功也”,通过演说来“真成吾所有矣”。


    基于以上考虑,最近和一些志趣相同的同事组织了一个业余的演讲小组,每人每次进行10分钟左右的演说,其他参加者作为评委轮流对其演讲进行简单的点评,通过练习来发现自己的不足,从而在知识的广度与深度、材料的把握能力、逻辑思考(critical thinking)、言辞表达方面来提高自己。

    昨天进行了第一期活动,最大的收获是参加者发现了自己的很多不足。尽管参与者很多有在公司内外多次演讲的经历,但以往的反馈基本是来自对演讲内容的提问,没有得对演讲本身的反馈,昨天活动的大范围反馈与点评,参与者普遍反映收获还挺大。通过活动总结出来常见的问题有

    纯理论观点通常效果不佳

    纯理论观点的讲述会让人联想到课堂上的“老先生”,这些“总是正确的观点”让听众感觉空洞无物、缺乏共鸣、甚至昏昏欲睡。

    演讲需要来自实践的案例

    理论的观点需要有论据,最好是来自实践的案例,或者众所周知的典故,通过故事来辅证你的观点,好的故事比如“盲人摸象”,可以引导听众去思考平时的言行。但是讲故事的能力还是比较缺乏。

    对材料的熟悉程度影响演讲的效果

    很多人在网上或者微博上看到一个观点,心中比较认同就拿出作为演讲素材,但是这种情况由于对材料缺少熟悉,脱稿之后通常很难流畅的说出,出现辞不达意的情况,甚至让听众不知所云。这种情况就是“所思所想还未为我所用”。

    注意内容的逻辑性

    比如根据演讲者的推论得不出演讲所述结果,演讲者自己提出了问题,但是后面展开的内容和前面的提问听不出直接关系;PPT的材料及图片和演讲的重点并无关联,可能只是演讲者喜欢那张图片。

    “connect the dots” 随想

    微博上经常看到一些企业或产品的历史介绍,观众很容易把成功的因素归结到“机遇”或者“努力”上,但是除了机遇与努力之外,结合前几篇文章中的“connect the dots”思路顺便谈一些感想。

    很多心怀理想的年轻人并不懂得做选择,常看到为了高考志愿或者毕业后的去向在十字路口彷徨的同学。在平时,当我们并不需要做选择时,我们忘记去创造自己的dot。由于整个社会的功利文化,从象牙塔出来的学生,追求短期或可见的利益成为主流,期望财富能不期而遇。选择之道是无形的,过于追求“有形”的目标,未必能轻易获取。Jobs也说,”You can’t connect the dots looking forward; you can only connect them looking backwards.” 其中forward/backward跟有形无形的道理是相通的。

    做人

    当准备一些建议时候,发现很难找一个言行上的建议,古时候有很多做人的建议,比如“吾日三省吾身”,“浩然正气”,放到现在依然有效。如果一个人能不断反省自己的言行,懂得辨别善恶,则很容易成为一个值得尊敬、信赖、学习的对象。经常听一些过得不错的同学提到“跟着老大走”或者“跟对了老大”,至少说明“老大”具有很强的人格魅力;但反过来看,“老大”愿意一直带着你,也是对你自身为人的肯定。而一些创业的人寻合作伙伴,或者一些不错的职位寻求推荐,说得最多的二字就是“靠谱”,而不是专业能力。

    交友

    古时交友只有一个字“信”,朋友之间需要言而有信,真诚待人,“信”能产生信任及信赖。从我们现在的眼光来看,还需要热心帮助,以及能输出价值。而好的朋友带来的价值如纽曼所说,“先生们,如果让我必须在那种由老师管着、选够学分就能毕业的大学和那种没有教授和考试让年轻人在一起共同生活、互相学习三四年的大学中选择一种,我将毫不犹豫地选择后者……为什么呢?我是这样想的:当许多聪明、求知欲强、具有同情心而又目光敏锐的年轻人聚到一起,即使没有人教,他们也能互相学习。他们互相交流,了解到新的思想和看法、看到新鲜事物并且掌握独到的行为判断力。”

    做人和交友我觉得是两个基本的dots,可能在多年以后才会有一些“connect the dots”的收获,但是做两者的目的都不是为了追求有形的目标,不要为了功利的目的去做。

    专业方向


    当我们具备良好的态度之后,我们需要做一些专业方向的选择,根据身边或者自身的例子,通常有几个方面

    • 视界的局限 – 专业方面大部分不好的选择可能受限于视界。提升视界有很多途径,比如多阅读,多交友,还包括后面几点。
    • 好的老师或领导 – 每一个人尤其是初出茅庐的人需要一个好的老师来“传道授业解惑”。好的领导也有老师的作用,除了间接的言行榜样,也会给你直接的授业解惑。但是这一点是可遇不可求。
    • 平台或舞台 – 常看到有志于某个领域的人长时间学习缺乏进展,除了悟性之外,可能缺少实践的平台是主要原因。平台和视界是相辅相成的。
    • 有恒 – 最后再加上有恒,当你已经处于一个优秀的平台,身边都是非常聪明的人,可能很长一段时间内,你发现比不过别人。除了有恒之外,确实难有捷径。

    (插图: Iwakura mission,1871年,被派遣到西方考察2年的岩仓使节团是日本走向现代化的转折点)