2017年加班总结
之前总是写一些技术文章,每年的总结我实在是觉得自己写不出什么,大多时候没有目标,虚度的光阴,索性就不去写,得过且过。17年之前基本都是待在一家外企,过着朝九晚五的生活,17年来到一家一线互联网公司。这一年的工作量等于我上家公司两年半的工作量,对于我来说是一个转折点,有必要记录下来。
加班
这一年工作上主要精力放在一个新项目和一堆老项目上,在外企基本是5点半下班,然而来了这里之后,我的下班时间变成了:八点、十点、十一点、十二点、两点。我们同事间经常开玩笑,我们可以出去忽悠新人,我们团队早上十点上班,两点就下班了。在跟前同事介绍这里的加班时,经常举一个例子,大家晚上七点出去聚餐,九点聚完餐,接着回来加班。那么为什么加班?我总结下来主要四点:
- 大老板对方向失误有不可推卸的责任,资源的稀缺性决定不可能在任何方向投入相同资源,这个时候大老板的眼光个选择决定了团队努力的方向和资源的倾斜,很不幸的是某些原因历任几位大老板都在方向判定上做了错误的选择,这是导致人员流失,历史遗留的根本原因。同时也是的部门基础能力相较竞品大幅落后。那么几位老板最大的失误在哪里,我认为是一步登天的侥幸心理,对产品的认知不足,这个方向的产品需要深耕基础能力而不是弯道超车。
- 团队领导,这个团队是一个产品型团队还是项目型团队。如果只是单纯去做项目,没有自己的产品路线,就会被大客户牵着鼻子走。有些领导特别喜欢收破烂。可你有没有想过,你接过来的破烂最终给了谁,接一个破烂对队员的伤害有多大。当然从另一个角度来说,这是考察一个队员抗压能力的时候,乱世出英雄,就需要有人来扛起大旗。
- 项目负责人问题,面对业务压力和技术欠债如何抉择。面对外部团队的合作方式,能否顶住压力打磨自己的产品,自己的产品能否做得了主。对于项目负责人来说,面对与外部合作,首先要明确界限,对于自己的产品不能伤害用户,排期权利要掌握在自己手中。加班加点赶出的项目,别人不会感激你,反而会因为质量问题而受到指责。
- 个人问题,是否能够临危受命,面对历史项目的打法,恐怕不是维护而是需要推陈出新。另外不能光考虑个人得失,也要为团队利益考虑,在不伤害选原则的情况下做出调整。
收获
这一年虽然很累,加班不少,但同时也是一种锻炼,曾跟同事开玩笑,在这里经历一年,外面什么样的项目也不会怕了。
技术能力:前半年主要工作在各种前端项目,下半年转战WebGL,从前端到WebGL可以说是进入了一个新的技术领域,除了JavaScript写写代码,前端的其他知识在这里毫无用武之地,等于重新学习了一门新技术。门槛的提升同时也意味着解决问题难度的提升,现在在回过头来看一些前端技术难点,跟WebGL比起来根本不在同一层次上。
抗压能力:我们的项目经过2维到3位的推到重来,六七月份基本是7*14的工作状态,这个过程面临巨大压力。首先是环境,这个环境可能来自工作项目、家庭、政策,对于工作项目来说往往是时间点与目标之间的问题,从砍功能与加人手来调节;然后是个人层面,往往是技术能力、性格、工作方式,性格方面需要经过磨炼总结调整,技术能力需要平时积累、向高手请教、必要时候通过培训等方式获取,工作方式方面比如避免看手机、避免中断。
沟通能力:明确沟通目标、真诚,确定问题边界,根据情况确定时间点或者确定时间点的时间点;去玻璃心,之前别人与我观点相矛盾或者推动事情受阻,我往往会感到委屈找原因,现在我会对自己说扔掉你的玻璃心吧,更难的事情还在后面。
项目流程:如果在让我遇到一次这种项目,首先我先会先进行技术选型、架构讨论、对于不了解的技术首先做技术探针调研,然后做排期;然后启动项目流程(立项、需求评估、开发迭代、UI总查、提测、bug修改、上线发布),这其中会明确项目目标,从项目管理角度(资源、时间、质量)来思考解决突发情况,预防控制风险(砍功能、加人手、延期)
根据这几年的工作经验,总结了下项目技术的生命周期:功能实现期,这一阶段主要做各种功能迭代,主要还是写业务;性能优化期,在功能实现阶段,主要不是阻断型的性能问题都可以暂放,在性能优化这一阶段主要针在功能的性能指标上下功夫,如计算性能、页面FPS、首屏加载时间、内存、耗电量等;绣花迭代期,这一阶段系统基本稳定,对细节方面进行优化,往往根据用户统计上报数据,进行优化迭代;流程改进期,这个阶段系统稳定,主要从流程方面法线问题解决问题,这个时候的技术就不再是单一的技术工种而是发现哪个节点有问题就来解决哪个节点的技术难题。这四个周期往往是循环往复的。
这一年的感触
随着年龄的增长,生活工作的压力只会越来越大,迟早会进入一个上有老下有小的阶段。如果不去扩展自身边界,继续做一个一线码农,可能过不了三年就会被新人替代。毕竟在大公司,技术的培养成本是最低的。
那么对于自身希望有一定成长的码农来说,业务方向上,需要把握部门团队的主要矛盾,我们从技术角度给出合理的优化建议。对于一些做项目的团队,我的思路是按照项目状态分为三个级别:第一级是平台型,只需要配置就能完成任务,第二级是模板型,基本功能成型,只需要改一部分就能解决问题,第三级是方案型,需要重新做,但是技术方案很确定,大家基本都掌握。
技术层面上,不能过度关注局部的技术难点,忽视对全局方案的把握。需要形成自己的方法论,能够判评技术方案的合理性,指出难点,提供解决办法,沉淀团队的公共代码和组件,实现技术复用。
团队方面,根据团队现有情况发现流程问题,制定工作流程和制度规范,形成文档。培养新人,新人的关注点往往是我做什么能够成长最快,而公司的关注点在于我用谁做这个事情能够最高效的完成。这两个关注点的差异,往往是造成新人缺乏团队归属感,人员流动的主要原因。