2014年6月8日写完“工作七年”,小学毕业典礼庆祝还未开始,初中一年级结束已经到了。
上初中没有转校,继续在sonoscape,继续记录成长与收获。
1. 收获2014.06 ~ 2015.06
这一年,在团队建设、规范化开发方面投入了主要精力,常规代码被迫搁下了。
1.1 部门SVN库
从2014年3月开始,建立了部门SVN库。管理部门常规资料:入职,培训PPT,产品线、部门会议记录,日常文档模块,项目管理,新人指导,工作计划和总结,考核记录,个人工作目录等。
主要目的是,在共享部门内资料,让新人有资料可参考,快速了解现状;让老人有地方展示已有成果,扩大影响力。另一个目的,管理代码库、项目库外的工作成果。做到用数据客观考核,过程公开,流程大致公正,结果大致公平。
1.2 技术组织方向
2014年,软件开发人数接近30人,鉴于人员成熟度待改进,原有项目分组方式方式过于粗犷,于是调整为按技术方向分组:需求、项目管理、软件应用、软件基础;软件应用、软件基础下再细分2~3个小组,每组3~5人,便于目视管理。
下半年,随着正宗需求部门职责扩大,将软件部分的需求人员,输出到需求部门;2015年初,我们的项目管理组长,也输出到项目管理部任负责人;2013年以前,还有输出算法人员到系统部,底层软件的人员输出独立为通用软件部。软件为其他部门输出了对口人员,这些同事能在更专业部门有更好发展,软件开发部门更为纯粹地专注于应用软件,大家双赢。
2015年还引入了几个资深的软件人员,人员超过40。技术方向细微调整为:应用,基础图像,应用细分为4小组,基础图像细分为3小组。每个组5~7人,有1~2名高级工程师任组长。加强了组长对项目、部门的职责要求,把团队、平台化建设,放到小组负责,提高自我要求;日常通过改进的周计划、个人日志,每周做沟通,开展小组日常工作。
同时,把软件测试人员,也拉入到软件大家庭一起。套用软件开发的分组、日常管理方式,建设完整的软件团队。
1.3 自动工具
2014年下半年,遇到了“软件随机死机”的bug。研发机器少,不容易复现随机bug,因为新功能开发任务急,没有及时处理。结果在发布后发生数起随机死机问题,临时组织攻关。在Dr Tang协助下,突击出python写的“自动测试(函数调用)”机制、“死机dump抓取”机制,3周解决了问题(1周工具机制,1周完善升级,1周分析改进)。2015年版本发布中,自动工具的冒烟测试、压力测试,帮助软件在发布前找出了近10个隐藏的死机问题,虽然延期了发布时间,但避免了更危险的死机问题。
在代码自查方面,引入了gtest单元测试工具(基础图像组长“帅Z”引入,小组实施良好,在应用组推广还有待时间,因为我们的设计太烂,UI和逻辑耦合度太高);引入了cppcheck做静态检查(应用组长“H哥”引入,找出很多编程基本问题,现在新手太多了);引入代码行数计算工具cloc(Dr Tang引入,替换了自己shell写的脚本);引入了svn统计工具statsvn(高工F引入,能对项目文件、svn提交做统计分析)。我的贡献是在服务器中,写了shell命令,用crond、sendmail做成了自动报告发到邮件。
另外,引入Redmine工具做开发任务管理,整理流程、SOP、改进配置和属性,2014年8月开始试用。原计划想管理所有开发任务,任务细分小于1周;后来调整为管理能验证的项目功能点任务(任务时间不强制,更细节任务在周计划中管理),同时把测试人员也加入到任务中(今年计划把需求也加入,真正做到三者一致)。
还尝试了web自动构建工具Jenkins(以前的老伙伴J引入,但后续因为任务紧,没有继续跟进)。
1.4 第4级流程
2014年,经过一次外部审查的洗礼,公司上下对流程、规范化意识得到强化。项目管理部开始根据实际改进1、2级流程,推进流程的可执行性。
以前也整理、推广了很多小流程或SOP:CVS操作、软件版本发布、任务管理流程、缺陷管理流程(协助)、软件需求规格书评审流程(评审协助),主要局限在开发内部,或者小范围。人员增多后,除了执行的最底层需要流程,还需要更高一些的,跨多个专业、或多任务的3、4级流程。
产品项目,我们是“用户/市场驱动研发”;在软件版本开发中,则需根据资源承诺范围、进度、质量,要“交付件/测试驱动开发”。所以2015年主推一个“软件版本开发流程”。以前也有了一个“软件开发流程”,但文档是文档,实操是实操,没有联系;这次吸取经验,多了实践考虑。简介如下。
* 上下游关系:软件版本开发流程,定位于最小的对外发布软件产品,在产品项目、专业子项目之下,在模块、任务、缺陷之上。
* 阶段:规定了七个阶段“需求确认、计划、设计、开发自测、集成测试、确认、发布”;
* 角色与职责:涉及4个角色“版本经理、需求接口人、开发接口人、测试接口人”,职责就不描述了,大致能理解;
* 交付件清单:每个角色在每个阶段会产生交付件,列出了交付件清单;
* 软件版本类型:交付件清单根据软件版本类型“注册、正式、变更、特殊”不同而不同(只裁剪交付件,不裁剪流程);
* 交付件类型:交付件类型分为“注册必须、项目必须、版本要求、过程记录”。
现在做了宣讲,有写深受以前问题折磨的需求、开发、测试同事,很感兴趣,愿意尝试。效果如何,等待下半年验证。
2. 体会教训
一年一晃就过去了,花点时间做一个阶段体会教训,非常值得。
2.1 工作
工作方面主要时间投入在日常工作改进方面,有很多收获。
2.1.1 原则
做好工作的基本原则就是“积极主动”,其他说法有“态度”、“自我驱动”、“激情”、“自燃性”等等。简而言之就是:给你少点钱(或者短期不给钱),你也愿意死命干好(当然是为了后续更长期的收获)。
2.1.2 模式
去年总结了几条经验教训:“价值观”、“从实际出发,实现目标”、“文档记录、持续改进”、“过程监督、成果管理”,其实都是做工作的模式。今年在补充几条:
* “可视化交付件,第三方审核”
我们是通过成果来展示贡献、能力、态度等等一切的。东边来了一个美女,说明在“颜值、身材、姿态、衣着”等等的一项或若干项得到大伙认可;西边来了一个猛男,说明在“胸肌、腹肌、肱二头肌、肱三头肌”等等得到赏识。既然是成果,如果做成用户容易识别的,认可度更高,如张丰毅,在“赤壁”中穿着衣服,我们认为是老人家;在“真正男子汉”中一赤裸上身,能打败当兵的。可视化的交付件,不是通过自己吹嘘忽悠,而是通过第3方审核展示出来,效果更好更让用户信服。还是张丰毅例子,在“天天向上”中,面不改色做数个滑轮练习后,我们已经膜拜为新的生猛男神了。
我们写的代码,有提升为软件产品模块+说明书的交付件吗?有用户在使用后,通过口碑为我们打广告吗?仔细看看现实中,有多少你根本不清楚内部实现,但你被各种以为是第三方审核证据的广告给征服了、认可了的产品?这些产品有多少种第三方审核的展示?在逛街时多想想,能看到一些社会普遍行为。
* “推广实践要流程化、模板化、平台化、IT化”
我们自古以来就有重分析、重理论,而轻实现、轻实践的传统,这在工业社会、商业社会都是致命缺陷。生存期,实践第一,活下来是硬道理;发展壮大起,必须是思想、行动统一,理论实践结合,否则会变成离散的空骨架,或者肥胖得站不起来。这就需要中层、基层骨干把公司战略落地执行,推广改进。
从培训老师的总结中(华为出来的讲师),推广实践要“四化”(流程化、模板化、平台化、IT化):流程化规定角色、阶段、活动;模板化去除人的依赖;平台化保证信息一致性统一出处;IT化减少人工执行误差。否则实践和理论不容易联系,执行起来人为因素多,会造成“不充分实践,证明理论不行”,得出“这个方法很好,但不适合我们公司现状”的结论。你的公司有人,得出这样的结论吗?我们有,我相信大部分都有。
2.1.3 实践
实践是检验真理的唯一标准。小平把社会生存的一个基本原则,上升到理论高度,并得到大家的崇拜。从一定角度看,我们得有多忽视实践的重要性,才会小平指出这个“真理”感觉到当头棒喝?小平说的是对的,没得其他说的。以下简述几个实践经验:
* 认识一致性
《人月神话》作者布鲁克斯,在书中提出了“概念完整性”这一术语,说明复杂系统的最大延期原因,是做多项目人员难以达成对复杂理解一致性。我们的项目开发中,不断重复因“理解一致性”引起的进度延期、风险失控、质量低下,其实从项目人员角度,已经很努力干活了,可是方向不对。
做事之前,花时间把范围、质量、进度、风险、资源等项目要素讨论一致,并书面化,对后续的改进很有必要。
* 执行细节
汪中求特别写了一本书《细节决定成败》,用大量实例描述了细节如何把成功一点点偷走。细节决定成败的观点可能有点“蝴蝶效应”的极端角度,很多公司生存下来靠快速响应。但不注重细节,不可能发展到高端、也不可能持续发展,因为高端就是一个个细节组成的。
工作中,一个个细节组成了我们的日常任务,不注重细节并不妨碍你成为高级工程师、基层干部;但长期积累下,一个个小的失误,会阻止更进一步的发展。
2.2 生活
最近3年,典型的以“工作为中心”,业余时间的大部分也直接、间接贡献给工作了,对夫人亏欠很多。记得起来的只有以下几点:
游泳
以前夫人不会游泳,本人也只会头时刻都要在水面上的狗刨。夫人的同事经常去游泳,于是我们也买了入门装备,去深圳湾体育中心学习游泳(再没有借口说装备差、环境差而不会游泳了)。到今年一共游了10来次,夫人蛙泳基本能游25米了。学习手段是看视频,憋气、漂浮、蹬腿、划手、换气等。
学车
以前夫人不会骑车,本人也只会骑着走(上车只能静止上车)。春节去沃尔玛买年货,夫人抱怨一年没有什么新鲜感,于是买了一个自行车,在春节期间有了消遣方式,在停车场练习(车都没几辆了,正合适骑车),练习了4、5次,夫人已达到我的水平,能骑着走(中间摔了几次,其中一次把后轮刹车把手给摔断了(把手是塑料制品,质量一般)。
2.3 个人成长
深圳蛇口有一个标语“空谈误国、实干兴邦”,这是对我们的指导和警示,也是今年自我成长点,大的建议少了,本岗位的实践多了。
一些好的经验,在其他成功公司已经成功应用起来,我们看书、培训时也觉得非常实用,但应用到本公司本岗位不会是一帆风顺的。我们是否还愿意承受改良或革命,像小孩一样不怕丢脸犯错,去模仿学习新思想新方法,在本岗位干出更好的成果?
3. 展望
初一结束了,没有暑假,紧接着开始初二的工作历程。
又到了一年一度的高考时节,各种保证高考顺利进行的方案又有创新了。每年在这个时刻,写上一年的工作总结,挺好。