有一件事,基本贯穿了我在华为的两年多。 当时刚到项目组不到一个月,负责产品版本管理的同事被通知到科特迪瓦出差,因此就把版本的事都交给了另一个同事。而本着每个角色都要有个backup的想法(这个想法其实是很不错的,可惜到后面慢慢的就没坚持下去了),LM把我们都叫过来问我们谁愿意当那个backup。在大家沉默不语的时候,我头脑一热,举起了手。后来的后来,每每提及此事,都感慨自己真是年轻呀~~ 好,那就当backup吧。反正主负责人在,也没我啥事。可惜没多久,主负责人也去出差了,接手的另一个同事也忙,事情就落在了我这个backup身上。
这里要提下版本流程。负责版本管理的人要在某个时间进行版本计划收集、确认,在计划时间点对版本进行转测试。版本测试结束后要将所有版本资料整理成规定形式,通知QA进行检查,跟踪版本流程,输出版本度量表。
其实这些都不难,只是事情相当繁琐,过程略复杂让人记不住而已。加之还要将印度团队的版本归入,每月两次的版本发布是我最为烦躁的时候。
就这样被折腾了一段时间,在某天项目清闲的时候,我终于忍不住,想对这个过程进行自动化。当然,全自动化是理想,半自动化却相对比较容易实现不是。这个决定大大提高了版本管理的效率,减缓了我的焦躁,以及奠定了我对python的喜爱。
先是用脚本统计N份文档中的代码量,然后将所有版本资料整理成规定形式,接着检查资料规范及完整性。随着对win32com这个python库进一步熟悉,还用它帮忙拷贝几十份文档的病毒扫描结果,提取相关信息以帮助输出版本度量表。从此,QA能挑出的毛病越来越少,我花在版本这件事上的时间也越来越少。而因为大大减少了文档的打开及复制粘贴,从此手也不酸了。直接跑个脚本,然后该干嘛干嘛。
人生苦短,我用python.
用脚本实现这些繁琐的工作,还有一个好处。中途因为出差,将版本这件事转交给另一个同事的时候,我只需要告诉他怎么使用这些脚本即可。
版本管理这个事情,是我在华为两年多的时间内做的最为完美的两件事之一。即使这个事情,无人关注,无人了解。在这个过程中,我认识了好几个可爱的QA(其中一个还生了一对双胞胎),认识了约好来SZ要找我玩的某CMO,认识了印度妹子P和S,S**在我因出差交接的时候每次每次都跟我说希望我回来还能继续做版本的事,在我走的时候还坚持要给我的领导写感谢信。 当然,也有遗憾。在离开前本来是想更进一步自动化的,但因为技能跟不上想法,加之跑去做项目组的产品知识库了。就此搁浅。
说到项目组的产品知识库,源于当时在学习django。与此同时,在处理问题的过程中迫切的需要知道是否有相同的案例及对应的解决方案和版本,加之平台每次发布版本就只有几个人知道有什么功能变动。learning by doing,确实是一个非常好的学习方式!
所以我用django+sqlite+bootstrap做了一个博客,用于平台功能改动点和案例共享,提供查询功能。我给每一篇文章添加标签,用于方便的查找某方面的信息。后来,我还增加了一个栏目,用于分享一些非官方的材料。我希望通过它,一些反反复复出现的问题一下子就可以根据从前的经验得到解决,我们可以很容易的知道产品有什么能力有什么不足。自从这个博客完成后,每当项目群里讨论某个问题的时候,有人甩出博客中的一个链接,我就觉得非常自豪。
每一个产品,都应该有一个属于它自己的博客,界面友好,易于查找。这个博客是服务于团队内部的。它的内容是这个产品有关的所有信息,即使是新手,也可以从中直接快速的学习到关于这个产品的方方面面,避免弯路。而界面往往会关系到人们是否会愿意使用,无法或很难进行搜索则直接影响到这个博客的可用性。 而做一个博客有多难呢?我一个人,从啥都不会到信息录入用了不到两周的时间。(说到这个信息录入,当时的我应该也来自动化一把的,╮(╯▽╰)╭)
经过了这些,我开始喜欢将一些繁琐的事情交给自动化。因为繁琐,所以常常有规则,有规则则可编程。这一方面,python帮了我很大的忙。 我一直相信,人类是可以从大量重复的工作中解放出来的,这样,更有时间去关注生活,关注自己。
在华为的这两年多的时间内,我做了很多事。协助过销售,调研分析过需求,做过开发,也在现网交付测试过,维护解决了很多问题,做过项目组的人力预算,管理过整个版本流程。在异国他乡行走过,视野也开阔起来。我遇到了很多很多的人,他们都对我很好很好。
我的能力还不够,但是我会学习会尝试。我时常有些想法,虽然不成熟,但是当一开始实现了总能让人激动。未来有无限的可能,只要你敢,你愿意。