郑昀 创建于2014/11/10
关键词:财富观、对题集、一票否决、业务收敛、持续集成、预研、培训、公开演讲、传承
本文档适用人员:研发干部
提纲:
- 研发财富观——问题和事故都是财富
- 挤出人力做预研课题
- 减少痛苦和抱怨——持续集成
- QA一票否决
- 风险收敛——关键业务逻辑收敛到业务中心
- 技术分享和职场培训并行
0x00,我们一定做对了什么,当然,也做错了很多
话说曾鸣教授曾曰过,
什么叫战略?
——做对了一定会有好结果。
什么叫执行?
——中间的苦,一步也少不了。
对于我们而言,经历了多年的血雨腥风,勉强算是屹立不倒,肯定是做对了某些事情,当然做错的可能更多。
对于事故处理,航天有二十字诀:定位准确、机理清楚、可以复现、措施有效、举一反三。
我们从 2011 年开始,一直坚持每错必查、错了又错就整改、每错必写,用身体力行告诉每一个新员工直面错误、公开技术细节、分享给所有人,长此以往,每一次事故和线上漏测都会变为我们的财富。这就是我们的 RCA(Root Cause Analysis)制度,截止到目前已经收集整理了近两百个详尽的 RCA 报告。
54chen 曾经说过:
如果在你的公司里,故障报告与工资是挂钩的,恭喜你,制度用错了。 故障报告的本意,是让发生的故障告诉所有的人,让所有的工程师都学到,这次故障的起因是什么、如何避免。 故障报告绝对不是用来惩罚和警告你犯错了。
是的,熟知一千零一种死法,还会让我们变得每逢大事有静气:靠,老子什么没见过。
0x02,挤出人力做预研课题
职场潜规则里我讲过,一定要低头拉车抬头看路。
最开始我们怎么抬头看路呢,那就是看淘宝等技术团队这么多年都怎么过来的,他们在不同阶段都在解决什么问题。
冯仑说过,我们要把别人的历史当作自己的未来,这样,才能知道过去人家在做什么,我们现在应该怎么做。
于是,从2013年开始,我们抽调宝贵的研发人力,去做 JobCenter、NotifyServer、Tracing 等研发解决方案或中间件,花精力去改造 Dubbo、Cobar 等开源系统,做完这些还需要见缝插针地分批分期内部推广。
但这些提前量都是值得做的,否则我们很可能做着做着就“死做做死”了。
0x03,减少痛苦和抱怨——持续集成
每逢业务大跃进,就会欠下一屁股技术债。
是债就要还。
酷壳陈浩说过,技术债是不能欠的,要残酷无情地还债。很多事情,一开始不会有,那么就永远不会有。一旦一个事情烂了,后面只能跟着一起烂,烂得越多,就越没有人敢去还债。
首当其冲的就是线下多套环境和线上多套环境的维护和发布,大把大把的时间浪费在这上面,一代又一代的工程师在离职时表达了愤懑情绪。
于是,从2012年开始,我们开始了持续集成第一季整改,万事开头难,这一干就是一年。第二季 CI 做完后,至此,主营业务线做到了线下自动化编译、自动化部署、自动化测试(日检),做到了线上自动化上线和回退。
第三季 CI 主要是让前端(CSS/JS/Images)也接入自动化上线体系,2014年年内完成。
当然,这些还不够,离我的研发哲学所言"Don't make me think"还有很长的路要走,还得跟随容器虚拟化闹革命。
0x04,QA一票否决
在这里,QA 的话语权很大,说你质量不达标,就是不能上线。线上运维部对接 QA 的配置管理组(CM)。
当然,最开始可不是这样,在业务部门的压力之下,在业务部门为我们锁定了 Deadline 的情况下,即使版本带着伤,也得上。忘了从 2011 年哪天开始,终于拨乱反正:QA 的 CM 规划版本,QA 对线上质量保障负责,上线日期以 CM 输出为准,业务部门可以提出意见建议,但无权要求上线日期。
这样,CM、DBA、SA 作为上线发布的看门人,用非黑即白的规则倒逼上游的研发、产品、需求方改变。
0x05,风险收敛——关键业务逻辑收敛到业务中心
可能本来就该这么做,业务收敛,避免不同 IT 系统对数据增删改查,引入脏数据风险,埋下各种隐患。
当然,因此会导致中心化,会让一些业务中心变为整个系统的瓶颈,非常容易导致系统雪崩。历史上也确实多次发生过此类灾难性场景,某个业务中心阻塞,导致上游工程受影响,全站被迫业务降级。
在2011年年底,趁着一个大项目,我们把业务收敛的重构需求揉进去,导致了项目进度的严重不可控。但现在看来,这也是躲不开的苦。
54chen 曾就 Java 的积重难返曰过:
曾在一处见到,淘宝在长期使用 java 构建 web 项目后,得出一个结论:积重难返。
实际工作经验得到的结论,积重难返的原因,往往不是 java 本身的缘故,而是团队成员基础积累参差不齐,许多次的“一不小心”积累成了最终的结果。到了悔之晚矣的时候自然就积重难返了。如何避免 java 使用自伤,最关键在于,统一团队成员的 code 入口,框下可能发生的事情,避开不能发生的事情。
对于一个快速发展起来的技术团队,统一团队成员的 code 入口,框下可能发生的事情,最简单的就是业务收敛,商品、门店、商户、用户、订单、支付、库存、积分、评价、优惠……,甚至有时候连查询都框起来。
0x06,技术分享和职场培训并行
首先,一个所谓有技术传承的技术团队,注定需要大量的定期的技术分享讲座,为什么呢?
因为企业的研发管理应该注重建立一个良性的循环:- 研发能力的提升,有助于促进研发效率的改善;
- 研发效率的提升,使得研发人员可以有更多的空余时间,进而激发更多的研发活力;
- 研发活力的提升,研发人员积极交流与分享,有助于提升研发人员的总体能力。
过去的软件开发方法论,往往只是注重了研发管理中的一两个方面,缺乏整体视角,常常期望以一套方法论包打天下。事实上,真实情况下的研发管理,需要至少三套方法论:
- 提升研发能力,主要依靠经验积累,建立企业内部的知识库与传承体系(促进交流与协作,借助研发活力促进研发能力提升,也很重要);
- 提升研发效率,主要依靠科学的数据分析,建立或引进一系列的研发工具,建立合理的流程与制度(通过提升研发人员能力,激发他们不断改进效率,也很重要);
- 提升研发活力,主要靠多种社会化的沟通机制,促进分享与交流(给研发人员松绑,让他们有足够的空余时间,也很重要)。
(注:以上阐述来自于庄表伟)
综上,为了激发研发活力,需要多管齐下,至少我们应该做到:
- 定期举办技术分享讲座,当研发人员足够多,方向足够广时,Topic 还是很多的;
- 为了开讲座,需要给主讲人预留出一定的准备时间;
- 为了让大家有研究有思考有实践,不能把人全陷在具体业务逻辑开发上,不要过分追求低费率和性价比,明明10个人的活儿非让5个人干,最后活儿也屡屡延期,一年到头开发组织也没进步。
其次,研发工程师要能够清晰表达。别人听不懂,多半是因为你讲不清楚,你讲不清楚,往往是因为你本来就没想明白没听懂,自然也就没逻辑。
所以,我们需要从入职之后就有意识地训练大家,让大家能够公开陈述、清晰表达。所以,试用期内,新人必须做一次技术分享和一次技术评审,面对各方的 challenge。
第三,面向中层干部,我们不定期做职场培训,截止到目前已做了十期培训。
纯银曾曰过:一家公司战斗力的强弱,取决于中层里边,有多少业务精英,而且是本部门核心业务的精英出身,不是其他业务领域的精英升中层然后调动过来。这是一个相当粗暴的判断,中层本人的业务技能水平极大地影响整个部门的战斗力。
本部门业务精英也是从五湖四海汇集来的,工作习惯、方式、话术、意识不尽相同,所以需要通过重复重复再重复、CheckCheck再Check,来矫正错误行为,并指明什么是正确的行为。
最后,我们的中层干部终究有一天将成为领军者,组队单干,还有不少员工离开后成为创业公司的技术合伙人。这些人需要用技术分享来构建专业技术形象。再引申一层,我们的干部在大公司里也千万不要放弃对自己核心技能持续磨练。什么是核心技能?谈商务,公众演讲,出方案,画原型,写代码,部署,维护,培训员工……
小结:对题集
我们不能只是为了不白交学费而整理错题集,还需要梳理过去几年我们做对了哪些事情,让正确的行为一代一代传承下去。
-EOF-
相关推荐
美国农业部-美股-农业行业-饲料展望:对当前和过去一年的资产负债表做了几项调整-0114-16页.pdf
为了满足这些要求,在过去的几年中用于三维坐标在线测量的技术和设备得到长足发展。视觉坐标测量技术作为一种建立在计算机视觉技术及坐标测量技术研究基础上的新兴三维空间坐标测量技术,从一个全新的坐标测量思路上...
同时,深入调研了不同部门薪酬水平及薪酬结构,并对未来几年人力成本对产品消费规模及增长趋势进行预测。 5. 行业薪酬水平:报告详细介绍了总经理层、总监层、经理层、主管层、专业人员层、普通员工层以及基础操作...
通过研究这些试题,参与者可以了解过去几年中数学建模关注的重点和趋势,同时也能学习到如何将抽象的数学理论应用于实际问题的解决过程。 首先,数学建模的过程一般包括以下几个步骤: 1. 问题理解:明确题目所提出...
这份文件《Wealth-X-回顾过去10年的财富以及对未来应用的智能智慧的展望(英文)-2020.5-13页精品报告2020.pdf》主要介绍了Wealth-X公司自2010年成立以来的十年发展历程,以及对财富相关数据的分析和对未来十年财富...
相对时间计算是指获取当前时间与过去或未来某个时间点之间的差异,通常以“几天前”、“几年前”这样的形式展示。Java提供了一些内置类来帮助我们进行这类计算,如`java.util.Date`、`java.util.Calendar`以及`java....
针对这种情况,PHP提供了一系列处理日期和时间的函数,而这篇“php 判断过去离现在几年的函数(实例代码)”提供了具体的代码示例来实现这一需求。 从给出的实例代码中,我们可以学习到如何使用PHP的时间日期函数来...
描述中提到的“近几年北京市空气质量数据”,意味着这个压缩包可能包含了过去几年内北京各个监测站点记录的每日或每小时空气质量数据。这些数据可能以CSV或Excel表格的形式存在,列出了各项污染物的浓度,以及对应的...
这个场景中,我们讨论的是使用Python语言编写一个“元旦倒计时”代码,这可以帮助用户跟踪时间,无论是对过去的天数进行追踪,还是对未来事件进行倒计时。以下是对这个主题的详细阐述: 首先,Python作为一门高级...
月报专题-行业报告-研究报告-商业
数据可能会展示过去几年中不同种类宠物(如狗、猫)肥胖率的变化,以及不同地区的肥胖率差异,这有助于我们理解哪些地区或品种的宠物更容易受到肥胖困扰。 其次,文件可能分析了宠物肥胖的主要原因。这些原因可能...
)过去完成式:"The company had built several factories in the past decade."(在过去十年里,公司已经建了好几个工厂。) 8. **set**:原型为set,过去式和过去分词均为set,过去完成式为had set。如:"He set ...
这通常包括过去几年或几十年的人口普查数据,如总人口、出生率、死亡率、迁移率等。数据分析涉及数据清洗、异常值处理、缺失值填充等预处理步骤,以便为后续建模提供准确无误的数据基础。 2. 描述性统计:对原始...
统计发现:近几年,我国煤矿放炮事故起数和死亡人数在波动中呈下降趋势;煤矿各月份重特大放炮事故的事故起数与死亡人数大体呈一致性变化,且11月最多,2月最少;有瓦斯(煤尘)参与的重特大放炮事故占事故总数的绝大部分;...
根据过去87年至20年的数据,我们可以使用逻辑回归模型来预测未来几年的人口。逻辑回归模型是一种统计模型,可以根据已知的数据来预测未知的情况。通过分析过去的趋势和变化,我们可以建立一个模型,以预测未来人口的...
在表达某人是“第一次”或“第二次”做某事时,常用“It was the first/second time (that) + 主语 + 过去完成时”的结构。 例句:It was the first time I had visited the Louvre Museum.(那是我第一次参观...
通过小组活动,如快速说出动词的过去式,如“play-played”,“hope-hoped”,“shop-shopped”,“try-tried”等,进一步强化了学生对规则变化和不规则变化动词过去式的掌握。 总之,这份小学英语过去式PPT教案...
在过去的几年中,大量的学者关注管理者的反应。 尽管现有的研究帮助我们对与管理者的反应有关的一些问题有了很好的了解,但仍然存在一些学术和管理方面的问题。 此外,还没有尝试巩固和综合该领域的研究。 随着消费...
8. **未来预测**:基于过去一年的数据,行业专家可能会给出对未来几年知识付费市场发展的预测。 9. **用户忠诚度**:用户是否会重复购买同一平台的产品,或者是否会转而尝试其他平台? 10. **政策与环境影响**:...
在中国,知识付费市场在过去十年间经历了飞速发展,2020年更是这一领域的关键年份。这份名为“行业数据-20年中国用户对知识付费产品的满意度情况”的压缩包文件,包含了对这一年用户对知识付费产品满意度的具体分析...