从 08 年 7 月 28 日正式加入华为,到 12 年 1 月 17 日正式离开华为,三年半的光阴,我一直没有机会好好整理一下我的行囊。现在回过头来,却又发现故事太多,无从下笔。也罢也罢,挑选我在华为五个令我深刻的瞬间,这些故事我带着不同的感触经历。不管现在开放的互联网上如何风言风语,不管在其中经历了多少欢乐或者悲伤,有多少感慨和抱怨,我依然非常感激华为带给了我这波澜跌宕的时光,谢谢我的朋友们,是你们,一直陪伴我走完这段旅程。
我参与的第一个项目
我参与的第一个项目是服务端的一个产品的研发,做一个涉及到营销业务的需求,对当时的我来说,业务逻辑还比较复杂,而且实现基本上要落到存储过程中实现;接口层只需要实现一个 SOAP 接口即可,相对来说简单得多。那个时候还没有开始大规模推行敏捷实践,而且设计文档也较为讲究,项目组成员,尤其是结对测试,给我的方案提出了相当多的疑惑,被迫我一头扎到业务里面去,到最后,好歹把流程梳理清楚。
我实现的整个代码量只有 2K 左右,但我依然感到自豪,做了一个完整的版本,体验了整个基于瀑布模型的流程。期间,项目经理在项目中及时的反馈和自我反省,给我留下的深刻印象。
北京出差的经历
出差时忙碌而痛苦的,在两个半月的时间里,要搭建环境、调测、维护、保障、客户约谈、交付等等等等,算是真正的接触一线。
工作地点开始在上地的机房内,每天对着 N 台庞大的机架,巨大的噪音震得我脑袋直疼,出了大楼耳朵还是嗡嗡叫个不停。我们就拿纸箱子当桌、漆包线轴当椅,通宵若干次,硬是坚持到基本的调测完成。
之后搬到了金融街,每天接电话接到吐血,经常遇到需要同时接两个电话的情况,其中有一周左右还需要 24 小时支持,一晚被迫起来好几次处理问题,天天挂个眼袋,看谁都是凶神恶煞的眼神。
从零开始做,一个大型的电信门户项目
这个项目最开始只有几个开发人员,到后来发展到若干个分支版本累计足足有数百人的大团队,我们视这个项目,就像看自己的孩子一样,看着它从无到有,逐步成长、成熟。
开了动员会,接了军令状,大家充满热情,心里却都又没有谱,我们就是在这样的状态下动工的。最开始计划一周多的迭代,足足做了将近一个月才完成。我们缺少的是这个领域内全方位的经验,产品的初创总是阵痛的。我一直觉得,一个程序员的成长,不能只经历那些成熟稳定的项目,一定要去体味那些从无到有的过程,无比的激动人心。
在项目刚开始的这段时间内,我们每天都在 9、10 点钟或以后回家,每天除了贡献许许多多项目的想法,做设计、搭框架、立规约,还充实自己这方面的内容,那段时间的自己,真可以称得上十足的奋斗者。
一个失败的方案
这个方案的罪魁祸首是我。一个关于页面集成的方案,即一个页面要引入其他子页面,有多种可以实现的方式。通篇都是我完成的方案设计。最开始使用 ajax 引入外部 div 的方式,被证明页面复杂、结构混乱,而且很容易遇到页面上的问题;后来我们还考虑过用 iFrame 等替代方案,都没能成行。最后,我主导设计了把被引入的页面以自成 plugin 的形式加入到父页面所在应用的方式,另一个同事细化了这个办法,实践证明这是一个比较好的方案。
这件事情对我触动很大,我做了回溯,把我自己的总结和完整的问题追加到了项目组团队的博客上。程序员总要经历大大小小的失败,没有失败就没有成长。之后再做一个设计的时候,我会想,哪些特性才是实际需要的,怎样去避免过度设计和冗余实现。
持续的性能优化
性能优化对于任何一个大型网站来说都要涉足。有的性能和稳定性问题定位复杂、解决困难,非常折磨人。
最开始我以解决实际的具体问题为主,辅以一些通用的、框架官方推荐的优化方案,并且处理了一些开源框架内部和我们自己代码中不合理的实现,如成为瓶颈的全局锁等等。
之后的阶段我开始做一些简单的页面静态化,这部分对性能提升有很好的效果,但是它是双刃剑,也带来了一些业务展示方面的问题。
随着页面静态化方案的不断落实,我总结了一些数据采集工具和问题定位工具,参考了一些互联网网站的性能优化方案,给项目做了从 Linux 平台参数调优到代码调用分析的全面体检,并且给出了后续项目在性能方面改进的方向。
PS:关于那些我要感谢的人
还有无数像以上一样的故事,都是你们陪我一起经历。没有华为,我不会成长成为现在的自己;没有你们,就没有我的今天。愿你们一切都好。我要尤其感谢的朋友们包括:
WWJ:你是我的导师,我新员工阶段对我影响最大的人;
荣哥:从你身上我阅读到了执行力,一个最脚踏实地的优秀项目经理;
晓君:你是我的好朋友,我们一起吃饭、一起加班,也一起聊天,你是我最愿意分享技术、体验和感受的对象;
YL:你负责的性能专项测试是我经历过的当中最优秀的,没有之一;
……
文章未经特殊标明皆为本人原创,未经许可不得用于任何商业用途,转载请保持完整性并注明来源链接 《四火的唠叨》
“ 一个失败的方案” 里“ 把被引入的页面以自成 plugin 的形式加入到父页面所在应用的方式”,这个方案能分享下吗?碰到了类似的问题,谢谢!
牛人,我要加入华为了。