入职半年后的2013年6月份左右,淘宝浏览器团队和搜索团队被剥离出阿里巴巴集团,成为阿里巴巴与UC优视所成立合资公司——广州神马移动信息技术有限公司——的主体。在合资公司正式成立以前,主管在一次与个人面谈中告知“咱们得成为一家小公司的一部分,且可能要从新基于Chromium的最新内核开发新的浏览器”(注:“新的浏览器”正是指如今的“UC浏览器电脑版”)。当听到这一消息时我很是高兴,由于看到这是一个可贵的团队从新审视过去和甩掉历史包袱的契机。在此次面谈中,我回应主管“看来我得好好发挥一下”。也从此次谈话开始,我非官方地成为了开发团队的软件架构师。之因此说是“非官方”,由于我只是在心里任命本身成为了团队的软件架构师。
git
改变整个开发团队各类乱相的第一步是让工做有章可循,即制定开发活动的各方面规范。我在入职之初曾发起过《软件开发指南》(后面简称“《指南》”)的编写,初衷是试图经过工做规范化去改善团队的工做质量与效率,而此时要作的是全方位地充实其中的内容。浏览器
规范首先要立足于技术角度,指导团队解决在开发活动中因不遵照Chromium架构而致使的各类混乱问题。在以前的淘宝浏览器时代,团队对所扩展功能的代码采用集中组织的方式(以下图左边所示例的那样)。然而,这种组织方式存在两大弊病:一,表面上工程师无需彻底掌握Chromium的架构就能开展工做,但也正因如此致使模块间存在混乱的依赖和耦合关系;二,因为没有清晰的架构,工程师增长文件和目录时彻底没有指导思想,这进一步滋长了混乱。新规范要求将一个功能模块采用“打散”的方式组织(以下图右边所示的那样),而“打散”到什么程度彻底以Chromium的架构为参照,即要求扩展功能的代码与Chromium的架构彻底吻合。尽管这一改变看似很小,但却迫使工程师在平常工做中得先理解Chromium的架构,所带来的积极影响却极其深远,由于它能完全杜绝大模块的混乱问题!团队中的小盘同窗有一次对我说“如今(按照规范)增长文件和目录非常轻松”,而这一工做以前非常让人纠结,那时你们能感觉到别扭但殊不知如何解决。安全
规范还得从技术层面解决自有代码与原生代码的解耦问题。因为咱们的产品是对Chromium开源项目的二次开发,须要经过良好的软件设计解耦使得能快速跟进其发展步伐,以解决团队长期遭受的内核升级之痛。在淘宝浏览器时代,因为没有明确的规范,以及检查规范实施是否到位的手段,使得自有代码与Chromium原生代码难以明显区分,致使在每次内核升级时得花大量的时间进行代码合并,甚至对很多代码进行重放。新规范要求在Chromium原生代码中所变动的每一处都采用宏加以控制,其所达到的效果是咱们只在Chromium的原生代码之上作加法。另外,宏在下次内核升级活动中起到了“灯塔”的做用(这是团队的雷翼同窗作过3个内核版本升级后的切身体会)。新规范还从软件设计层面多方位指导如何实现解耦。性能优化
显然,《指南》中不可能规范开发活动中的每一处细节,这就须要整个开发团队有更为明确但抽象的开发策略以指导你们对所面临的未加规范的内容进行决策。为此,我在《指南》中明确“以快速跟进Chromium内核的发展”做为整个开发团队的开发策略。从用户层面,这一策略使得他们能更早用上安全漏洞更少、性能更好的产品;从开发团队层面,这使得咱们能经过快速跟进的方式,将内核升级的工做以小步快跑的形式推动。这一策略的制定一样在未来产生了深远的影响,它甚至引起了开发团队与其余团队的一些思路碰撞,这是咱们后续篇章要涉及的内容。架构
除了规范层面,在进入UC浏览器时代之初,团队在技术层面也积极储备。雷翼与小盘同窗完成了git的部署并引导整个团队从SVN转向git;雷翼同窗完成了buildbot的部署,buildbot使得咱们能快速定位开发过程当中引入的问题和及时发现对Chromium原生代码变动不符解耦规范的内容;小盘同窗则开始着力于更深层次的性能优化;另外几位同窗与我一道将淘宝浏览器的一些模块搬到了新的Chromium内核上,并对代码结构根据《指南》的要求进行了优化。ide
即使开发团队那时为UC浏览器电脑版的开发准备工做开展得如火如荼,但管理层对后续开发究竟基于淘宝浏览器仍是最新的Chromium内核实施仍犹豫不决。基于淘宝浏览器开发的好处是项目时间更可控,但整个团队得背负以前的不少历史包袱,且很难借助此次开发新浏览器的机会卸去这些包袱;基于Chromium全新内核开发虽须要更多的开发时间,但这也是整个团队从新塑造本身的一次大好机会,只是当时管理层对团队可否抓住此次机会重塑并无十足的信心。在最后一次开发团队内部开会讨论最终的实施方案时,好几位同窗与我一道力荐基于最新的Chromium内核实施,为了说服你们采纳这一方案我以“此次不一样,由于有我在”这句话想给团队带去更足的信心,而很多同窗报以掌声表达了本身的意愿。性能
也就这样,整个开发团队酝酿好了抓住此次机会重塑本身!优化
至此,相信读者所看到的更可能是技术因素,而没有管理因素的影子(读者会在未来的篇章中看到,请保持耐心)。对于中国的技术团队来讲,我坚信促使整个团队改善的首要驱动力必定来自技术领域,只有采用以技术领域为切入点逐步***到管理领域的方式,才更有可能让团队发生质的变化。缘由在于,很多工程师自然地将技术与管理作了明显的割裂,这些人关注的焦点在于掌握更广、更深的技术,对于管理能力并不大在乎,且对自我管理能力非常不觉得然。然而,真正专业的工程师也好、管理者也罢,很重要的一点倒是他须要具有良好的自我管理能力。自我管理能力的广泛缺失,很好地解释了中国的技术团队为何难以高效运做,也从某种程度上解释了很多工程师单干能够但合做却不行。ui
相信读者在本身所呆过的团队见过各类技术规范,但大多情形下这些规范被束之高阁。与之类似地,UC浏览器电脑版技术团队在技术规范的真正落地方面也经历了必定的过程,这是后一篇文章咱们将一同回顾的内容。spa
做者微博:@至简李云