互联网工程师是如何做技术方案的
不同体现在很多方面,从业务属性上,阿里主要是电商、支付,大部分面向的是2C的场景;而钉钉主要是做办公协同,主要是面向2B的场景。
还有很多运营和产品上的区别,今天跟大家分享一下在技术侧,我个人比较喜欢的的“技术方案reivew”机制。
技术委员会
首先要提一下互联网公司今年流行的“技术委员会”,阿里巴巴、腾讯、小米都提出了相似的概念,并且都在公司内用各种方式进行了落地。
“小米组织架构调整成立技术委员会,加强互联网成色”、“腾讯成立了技术委员会,但燃眉之急尚未解决|腾讯|技术委…_新浪科技”、“阿里巴巴技术委员会主席:互联网下半场是互联网公司杜撰出来的”等新闻也是层出不穷。
那么技术委员会是个什么组织?有什么用途?我先简单介绍一下我的理解。
技术委员会一般是互联网科技公司成立的一个虚拟组织,由一群较为资深的技术专家组成,主要来统一整理公司技术架构保持统一性,同时指导公司核心技术架构选型、演变和升级过程,并向内外输出公司技术文化等功能。
产出技术方案
每个互联网科技公司的每个团队,都或多或少有自己的技术方案产出方式,阿里也是一样,有的部门会专门制定一些规则,首先就需要针对技术方案有一个可量化的衡量标准,即超过指定开发人日的项目,就必须由技术委员会来review方案,并且进行评分,根据评分情况来判定方案的优劣和不足,分数过低的情况下,不允许方案落地。
方案标准流程
首先,技术方案产出有默认的格式,一般用语雀文档来承载,主要结构也基本上是:
方案背景->方案目标->业务流程->核心技术架构->稳定性->安全性->工时人日
其中要求方案背景要描述清楚业务价值,技术是为业务服务的,方案背景必须要陈诉清楚业务痛点是什么。
方案目标要详细写明,本次落地后能拿到多少优化的结果,结果如何可量化。
业务流程,则是用流程图划清楚本次方案的产品或者模块流程图。
核心技术架构,则要用架构图、序列图等形式表述清楚方案的整体架构、依赖关系、系统边界等。
技术架构还包括库表设计、模块设计、类设计、异常考虑等。这一步是核心的内容,内容务必详尽周全。
稳定性和安全性,则是表明如何保证系统的稳定,如何保证异常可监控,如何降级,如何限流,如何防止外部攻击等。
工时人日,则是产出完成本项目需要多少人力资源,评委也会根据投入产出比来评估项目是否值得做。
当然,前端、客户端、后端每个端都会有从事该端的自身专家来参与评判,不会出现外行评内行的现象。
方案表述
在产出了技术方案后,还需要邀请技术委员会的相关资深专家来进行评审,一般是定一个会议室,拉上几个P8P9的专家来指导。
在简要的介绍完背景后,如果项目比较复杂,可以对核心技术方案进行讲解,如果项目比较简单,则评委会直接进行提问。
工程师需要对每个问题进行回答,有一些问题是答疑性质的,还有一些问题是挑战性质的,就比如说,你说用了某个google框架,使得性能提升了30%,那么评委会挑战,为什么能提升这么多入,为什么其他公司不用等等。
方案评分
评委会根据技术方案的文档以及在评审过程,会给与评分,多个评委一般取最低分作为本次技术方案的最终分数。除了评分外,阿里的资深专家一般也会给出比较好的意见同时也希望工程师能追求卓越。
总结
我觉得自己技术进步最大的阿里五年,其中就是在钉钉参与技术方案review的时间里,从这段时间,不仅仅对整体技术方案的编写有了一个非常清晰的认识,知道如何去表示一个方案,去表述清楚一个实现方式,还对方案的稳定性、边界、系统依赖等边角的地方有了更深的认识。同时还接触到一些其他的技术点。最后,也是最重要的,就是通过技术评委的挑战和意见,能够更好的更周全去思考。比如被和老师知道,如何做好幂等、如何做好兜底方案等。