打造高质效的技术团队 —— 混乱篇

wKioL1TPZijQpnKhAAocUAjXwjU842.jpg

2012年平安夜,我离开工做了近十年的通信行业投身互联网行业,入职了当时阿里巴巴旗下的淘宝浏览器开发团队。过去的两年,这个团队完成了从淘宝浏览器过渡到UC浏览器电脑版开发团队的巨变。之因此说是巨变,是由于整个开发团队的工做方法、工做质量和精神风貌在过去的两年发生了翻天覆地的变化。在这个过程当中,我做为“领头羊”引领着开发团队向前发展,并在最近有机会成为了带领包含开发和测试在内的整个技术团队继续向前发展的负责人。面试

 

个体在两年内取得巨大变化相对容易,而对于一个团队来讲挑战就大了不少,由于其中包含了技术和管理两方面的内容,甚至是我我的对于软件行业的理解及所持有的技术和管理理念。在目前中国IT行业的大环境下,UC浏览器电脑版开发团队何以取得如此之大的进步相信被很多人所好奇。也正因如此,我想经过文章与你们分享。与此同时,经过这些文章与个人团队共同总结过去两年所发生的变化和让团队知晓未来如何发展得更好。编程

 

为了不这类文章过于空洞,本文将基于我我的在过去两年所看到的、所想的,以及所采起的方法的形式加以展开。浏览器

 

混乱架构

二年前我之因此选择加入淘宝浏览器团队,正是由于看中了Google的Chromium开源项目,由于淘宝浏览器正是基于它的二次开发产品。那次面试时其实并无多少Windows的编程经验(只有大约半年),当时面试官之因此看中我,最大的缘由是我有Motorola的架构师经历。入职后,在一封主管回复给个人邮件中他告诉我:“其实,将你招聘进来是一次很是大的冒险。由于,一是你没有互联网行业的经验;二则担忧你此次转行适应不了新环境。然而,从你的邮件来看,这种担忧彻底是多余的,你进入角色的速度远远超出个人预期”。收到这封邮件的回复时,我入职并在Chromium的软件架构上已花了有一个星期的时间。ide

 

在接下来的三个星期里,由于我是一名新人,因此没有被安排具体的开发任务,而我也一直将时间投到了掌握Chromium的软件架构上。即使在之上当时总共花了大约一个月的时间,但对于Chromium这一被我称之为“恐龙级”的项目来讲,这点时间真的是杯水车薪。函数

 

以后,我被安排从事一些简单的界面编程工做。对于我这个新人来讲,当时团队对于项目计划的乐观程度着实让我吓了一大跳。对于那些在项目上有经验的人来讲,很简单的工做要我二天完成其实并不容易。缘由在于,我以前并无将时间投入到了解界面与程序中类的对应关系,团队也没有在这方面有任何文档沉淀帮助我上手工做。好在有周围同窗们的帮助,加上本身的钻研,我仍是如期地完成了被安排的开发工做。学习

 

第一次接触淘宝浏览器的代码真可用“震惊”两个字去形容当时的心情。首先,代码的组织彻底忽视了Chromium的软件架构。这形成的问题有二方面。一方面是代码目录结构与层级一片混乱,每位同窗想怎么处理都行,结果就是自有代码很难维护;二则,因为没有很好地关注Chromium的软件架构,这使得自有代码与Chromium的原生代码耦合度很高,从而致使升级Chromium内核工做非常困难。其次,编码格式没有统一的标准,“不堪入目”的代码让人一瞄就知道编程效率和质量不可能高到哪儿。测试

 

在入职的前半年时间里,我一边“独善其身”地工做着,力争让本身的工做成果与Chromium的保持高度一致;一边不时地经过即时通(阿里是用旺旺的)和邮件指出所看到的不良编程行为和分享本身的一些思考。坦白说,做为一名新人,在开始指出他人的问题时并不能让人愉快地接受。相反,很容易让人以为“这我的怎么处处在挑刺?”主管看到我时常指出团队的问题,非常担忧这样团队接受不了我,为此专门在一次谈话中向我说起该事。在这种背景下,以前出书、写博客的经历,加上在指出问题时每每会告知背后的原理,以及本身以身做则的各类工做习惯,让我慢慢地博得了你们的承认与信任。最终结果向良性方向发展的关键在于,你们看到了个人能力,以及感觉到我但愿团队发展得更好的作事初衷。编码

 

另外,前半年工做时间除了让我慢慢融入团队,还给了我不少观察团队的机会,让我看到了团队其余更多的问题。首先,整个团队的工做方式过于原始,基本上是采用编码后测试验证经过就发布软件的方法。因为概要设计和代码走查流程的缺失,使得开发工做差很少就是各自为政,技术方案的优劣和编码质量的高低都没有把关。其次,严重存在“从新发明轮子”的问题。因为项目计划老是过于乐观,在项目时间并不充裕的状况下,你们一拿到需求的第一反应就是开干,而不是先研究Chromium是否存在为我所用的方案、模块和函数、结构是否与Chromium的保持一致。概要设计和代码走查流程的缺失使得“从新发明轮子”的行为很难发现和被纠正。再次,整个团队在知识管理方面一片空白。团队中找不到任何一份文档指导个体如何开展开发工做,也因为个体所掌握的知识没有经过文档化的方式输出,使得整个团队的个体成为了“知识孤岛”,个体的学习成本更高,团队效率更低。最后,彻底“闭门造车”。做为一款基于Chromium开源项目二次开发的产品,除我以外几乎没有人关注开源社区的动向,你们只是低着头干,视野非常局限。spa

 

前半年工做时间还让我造成了本身的一些思考。

 

互联网行业的产品对于用户体验非常考究。然而,让人分裂的是,产品后面的团队彷佛并不关注本身的工做体验。他们用着原始的工做方法,采用简单加班的苦劳方式,却没法从本质上改变本身的工做和生活质量。

 

互联网行业对于“天下武功,惟快不破”存在严重误解。从功夫的角度,武林人士之因此能作到“快”(形式)的跟本在于他的内功(能力),也就是说没有深厚的内功则“快”跟本没有支点。然而,你们在引用“惟快不破”时,只看到了表象,甚至将之看成解释本身工做质量不尽人意的借口。在我看来,对于“快”的正确理解应是产品的全部功能根据必定的优先级、以知足可持续发展所需的质量要求的方式分阶段实现,而非以牺牲赖以可持续发展的工做质量去换取。有一点咱们必定不能欺骗本身的是,由于“内功深厚”而有意忽视质量求快呢?仍是根本不知道如何得到高质量而以“快”作幌子?“惟快不破”之因此运用普遍,是由于创新产品存在巨大的用户红利,而这种红利极可能快速变成产品的用户粘性而造成竞争优点。即使如此,“惟快不破”并无隐含“牺牲质量换取速度”。对于目前已一片红海的PC浏览器市场,若是没有造成本身的核心技术竞争力,则很难用低质量的“快”打出本身的一片天地。

 

淘宝浏览器时期的团队还存在极为严重的内核升级之痛。Chromium大约一个半月推出一次大版本,而基于Chromium的淘宝浏览器别说跟上Chromium的发展步伐,就是作一次内核升级也由于得重放大量的代码而周期很长。因为Chromium的发展步伐很快,且每个版本几乎都存在对已有功能的代码重构而致使大量的变动,一旦跟不上其发展步伐,就会形成大量的变动被累积到下一次内核升级工做之时,从而使得下次内核升级的工做量更为巨大。

 

如今回过头来看,那时的淘宝浏览器团队虽然很多同窗有很好的技术积累,但因为作事方法缺少规则的约束和不具专业性而难以发挥团队的效能。团队走过了很多弯路、犯过了很多错,只是那时的团队尚未彻底意识到。此外,那时的团队也根本没有意识到Chromium项目所蕴藏的软件开发方面全方位的知识宝藏。

 

整个团队正等待着一次全面改善的机会!

 

相信读者对于像淘宝浏览器这样的团队并不陌生,甚至正经历着这样的团队。或许,有的人对于这样的团队并不感到有何不妥,由于在他们看来,这样的团队一样可以在业务上取得巨大成功,业务成败与团队的水准彷佛毫无关系。然而,我想提醒的是,对于你们都骑马前往目的地时,总会有骑马的人先达到;但若是其中有某位是驾车前往时,最早到达目的地的必定是他。并且,两种出行方式的过程温馨度大相径庭!


做者微博:@至简李云

相关文章
相关标签/搜索