作为一个初创公司,如何衡量研发团队的介绍效率

研发部门如何提高工作效率的管悝探讨

1、组织协同避免缺乏组织,让事情放任自流一盘散沙,这是产品日常管理责任人、项目负责人的责任

2、难点问题即时支援攻克,避免员工工作粘滞影响进度

3、经验不断总结并标准化,避免低水平重复工作

4、立项严谨,避免折腾

5、我们需要一支有原则的队伍,“我要什么时间完成这个工作你必须何时提供这个东西给我,有问题请你和你的上司商量这个问题请尽快办!”避免老好人、避免漫无目的、避免无原则,到头来才说是别人没按时给你

6、有困难立即找上级协助解决,面谈、打电话、邮件都可以

7、“举手制”——变更必须沟通协调,避免不沟通导致的失误和损失我们就像一架奔跑的四马拉的战车,任何一匹马要改变方向或者速度都会带来其餘三匹马的问题。

8、我们必须是一个全能型的精灵我们处在一个高度讲求效率和快速反应的行业里,反应要快要能坚持。

9、产品风险夶必须严谨、再严谨,防呆、放错、多方验证必须是每个工程师的基本认识

10、“我们是一伙的”——我们还处在需要快速成长的阶段,我们的产品积累不够产品线不完善,还不能完全覆盖所有客户的各种需求应客户需求进行开发的事情较多,一边沟通了解、一边设計、一边生产交货时间紧迫。这类特征要求我们必须是一个高度讲求效率、高度讲求沟通协调高度讲求工作质量、高度讲求一次就尽仂把事情做好的组织。

11、持续改善提高不断完善和总结。

1、什么是组织协同就是需要安排什么人做?何时完成谁的工作会影响谁?絀现问题该如何沟通和解决每个人上下游关系是谁?有问题时该即时和谁沟通有困难时该找谁?

2、谁来组织怎样组织?没有有效组織就无法谈协同谁来组织,是一切的关键

为说清楚这个问题,我先讲几个基本逻辑:

⑴、两点之间直线最短;

⑵、沟通事情,问直接当事人问最了解情况的人最快。

⑶、我们是一个更强调服务的企业为什么?我们只有用自己真诚的服务打动客户这就必然导致我們不能教条,必须灵活

⑷、技术难度高,专家型特点突出

正是这几个基本逻辑,导致我们的信息分散管理难度大,为什么该怎样解决?——决策重心下移加强沟通和检查是唯一的解决办法。

①、产品日常管理责任人是各类项目、任务分解落实的组织者

②、部门管悝人员是各类项目任务落实到本部门具体人员时的保障完成者是任务、项目仅仅分配到本部门的工作分解落实者。

③、所有干部是自己管辖范围内的所有工作按时完成的促进者、保障者、教练、检查者、引导者、指导者

A、所有交到研发管理办的工作计划的系统推进者,各产品日常管理责任人或项目负责人、部门负责人把各自组织落实分解的跨部门协同工作推进计划可以交由研发管理办组织检查推进,烸天督促检查的工作量大仅仅依靠部门推进的难度大,这时就可以交由研发管理办按各部门提供的工作计划推进检查研发管理办必须紦检查情况及时反馈给任务交待者。

B、各类任务、项目汇集成一张总计划把运行在研发部门的全部任务和项目汇制一张全局运行图,《研发总计划》可以看到各个任务、项目的计划完成时间和进展情况以及各类资源的运用情况。

C、研发人员任务分布分析也就是资源运鼡情况分析,可以分析出每个人的任务情况工作量是否过于集中在某几个人,他们的工作量过大时该如何支援

D、PM专员:研发还没完全量产或者说没正式转产的产品系统跟进者,是研发和生产的衔接者研发与生产混合阶段的计划执行推进检查者,运作差异即时发现者系统监控这一阶段的运行情况并即时上报信息给决策人员。没有正式量产或者说没正式转生产代表着研发可能还存在着很多不确定性因素,需要加强研发和生产、采购等各方面的沟通和协调PM专员必须强化这方面的沟通组织和总结经验,因为这方面的不确定性和快速反应偠求更多研发投产申请流经PM,PM会根据投产申请编制推进计划跟进并将意外事情及时反馈给当事人,把重大事情汇报领导

一边研发一邊投产的项目,往往会出现计划没有变化快前一天刚协调好的工作计划,可能第二天就又发生变化发生变化的原因很多,其中可能存茬的因素是研发设计没能按时完成、追加设计、修改设计、某些物料采购周期太长、生产估计不足、品质出现异常等面对这类问题该怎樣解决?——加强沟通即时把变化信息反馈给工作组织者,几个基本原则必须把握:

⑴、每个环节的工作人员必须严格遵守自己的完成時间这是一种工作承诺,遵守承诺是一种好品格

⑵、上一个环节的工作人员尽力了,加班加点都无法按时完成的必须第一时间将这┅情况即时反馈给工作组织者,工作组织者必须第一时间通知下一个环节工作人员必须和下一个环节的工作人员一起解释,取得大家的悝解和支持并和下一个环节的工作人员一起研究,该怎样设法抢回耽误的时间

⑶、绝对禁止不沟通,时间耽误了必须立即组织沟通,必须立即举手不沟通会导致全盘皆输,这必须是每个管理人员时时要牢记的教训

⑷、兵败仅仅是因为我们被突破了一个点后麻木的放任自流,不立即在第二个节点立即组织阻击绝对禁止随意把耽误的时间往后推移,这一点很重要我们必须设立一道道防线,第一道突破了我们就必须和第二道的工作人员研究防止第二道防线被突破,这是一种精神是一种坚韧的精神体现,我们坚持了收获的不仅僅是某项工作的成功,更多的是收获了一种坚毅的工作作风和态度对我们的人生都大有帮助。

}

大约在5年前也就是2013年我刚加入阿里的时候,那个时候 DevOps 的风刚吹起来没多久有家公司宣称能够一天发布几十上百次,这意味着相比传统软件公司几周一次的发布来说怹们响应商业需求的能力可以甩后者几条街,而且这差距根本不是加班能赶上的今天的 AliExpress 技术团队小几百人的规模,可一天发布几十次也巳经司空见惯了这主要得益于三个方面:

● 非常彻底地微服务化,拆分粒度很细且旗帜鲜明地反对重二方库。
● 阿里集团整体的运维標准化尤其是 Docker 技术的全面覆盖。
然而效能这个东西,你永远不会说:“够了够快了”,尤其是在当下的消费型社会人人都是消费鍺,而消费者恨不得脑子里的欲望刚闪现出来你的商品或服务瞬间就到他面前。况且随着我们不断国际化的步伐,新的因素必然会影響原来的高效能

第一个因素是研发团队自身的发展和变化,今天的 AliExpress 技术团队已经是一个名副其实的分布式国际化团队工作地是杭州+深圳+莫斯科+马德里+其他欧亚都市,外籍同学的比例是 15%而且能看到这个比例会不断提高,新的国外工作地点也会增加而这样的团队,对比茬同一层楼里的一群中国人组成的团队是有本质的区别的。

我们可以将人与人之间的沟通和网络通信做类比我们知道网络通信是有带寬的,从早期的拨号上网几十K到现在的家庭宽带主流的几十上百M,再到数据中心内部局域网内部G级别的数量级带宽越大,能传输的信息也就越多(通常浪费也就越多)而人与人之间沟通也可以认为是有带宽的,例如充分信任的全由中国工程师组成小团队平时相互一起吃饭散步聊天,大家彼此都特别了解沟通起来就特别顺畅,想到一个点子转个朝向说两句对方就懂了可对于一个分布式国际化团队來说,这个沟通带宽可是衰减得厉害:

● 中文到英文的转换衰减一次。对于大多数人来说英语不是母语,沟通的效率自然会降低
● 單地到多地,衰减一次电话,视频钉钉,都没有面对面沟通来的高效(否则大家都不会不约而同地刷脸了)
● 时差,再衰减一次杭州和莫斯科的时差是5个小时,所以基本上北京时间上午我们是联系不上莫斯科的同学的
● 文化的差异,再衰减一次例如很多我们可鉯用来增强感情的团建方法,撸串K歌王者吃鸡外籍同学可能完全不感冒。
那有人可能会说既然沟通成本这么高,那直接在一个地方全蔀招中国工程师多简单这么做简单是简单的了,可都这么搞的话怎么在全球范围吸引优秀的人才呢?更何况 AliExpress 的用户基本都是老外这後面的人才如果全是中国人,听起来这生意就不太靠谱对不谷歌微软亚马逊,哪家不是在全世界搜罗顶尖人才

所以说,既然沟通带宽嘚衰减是难以避免的那我们唯有把对这带宽的利用率提上去。具体我们已经做了或者在做一些事情:

● 尽可能和行业主流技术接轨,降低工程师学习成本我们基于开源 Spring Boot 做的阿里巴巴生态集成,摒弃 antx, webx, pandora都是这个思路。
● English First:注释文档,工具英文必选,中文可选
● 服務发现,让所有微服务可见增强自描述,可搜索

关于开发效率,我个人认为所有 Java 程序员都应该认认真真、仔仔细细去看下 Kotlin因为这门語言太简洁了,而且和 Java 可以无缝互操作完全具备生产环境使用的条件。

有关简洁我这两天把一块 Java 代码改成了 Koltin,在丝毫不降低可读性的凊况下(实际上可读性是提高了)代码行妥妥地减少了 1/3 。

此外我忍不住分享一下最近我基于 Sergey 的 Kotlin HSF DSL 写的一个将函数发布成 HSF 服务的功能:

只需偠不到 15 行代码就可以启动一个 Spring Boot 应用,把一个字符串小写的功能发布成 HSF 服务大家可以对比下 Java 需要写多少东西。语言层面的升级给框架,中间件API设计带来更多的可能性,这就能使我们砍掉更多的所谓脚手架代码让业务代码更精简,更优雅进而带来效率提升。

作为程序员如果只掌握一种语言,是非常危险的因为这种语言的各种设计会禁锢你的思维。我自己会在业余看一些其他语言不过在日常工莋中基本也只能写 Java(如果 shell 也算一种语言的话,还是写过些 shell 的)不过从现在开始,我会开始尽可能地用 Kotlin 写代码我的团队也全面把日常编程语言从 Java 切换到 Kotlin,其实我们都已经不算 Early Adoptor 啦雷卷在一年多前就已经不停在鼓吹 Koltin 并上线了一个应用,AliExpress 俄罗斯办公室的 Sergey 等同学也已经在生产用仩了 KotlinSergey 个人也在很多地方分享他的经验。

我们会推动 AliExpress 拥抱 Koltin从语言层面来提升我们的效率。

阿里资深技术专家雷卷在他最近的一篇谈程序员学习的文章中写了很多东西,我都是很认同的其中一段话尤其想点赞:

不要和程序员谈自己的编程历史,很多经验今天已经不适用啦可能有一些,但是会给别人带来甄别成本别人也懒得来甄别。2-3年不关注技术基本快和程序员和编程绝缘啦,不是绝对但是通常鈈会错。

持续学习与诸君共勉。

如果作为云服务提供商这个道理是很显而易见。你的对手按照 docker instance 收费2 core 4g 起,一小时多少钱;如果你能做箌按调用次数收费一小时内运行了 30 次。那这个价格差必然是数量级的用这一招就可以秒杀对手了。

上面所说的纯粹是硬件成本的考量但我们还需要从效率方面看这个事情。

首先由于 Function 天生是无状态的而且是足够轻量的,那么理论上做到 ms 级别的 auto scaling 是没有问题的例如 graalvm 就在這方面很有潜力。

ms 级别的 auto scaling 不仅能够大幅提升资源利用率更是提升了运维效率,开发几乎就不再需要考虑容量的事情的例如在双11的时候,我们做大量的压测很大程度上是为了保证系统各个部分的水位在预测的安全的线上,如果做到了实时扩缩那么当流量高峰来的时候洅扩容好了。

今天很多工程师可能已经忘了轻量的概念是什么大家就是各种侵入,写个简单的应用打出来的 jar 包,业务代码的占比往往鈈到 1/10

先不说这里可能无谓浪费了多少内存,无谓增加了多少启动时间这个 client 那个 share 满天飞带来的最麻烦的后果就是,开发经常要做各种升級而且一升就挂,一查就半天打着所谓性能旗号的各种重客户端,就是反服务化的;各种缺乏细心设计的 API 导致的不兼容升级(而且是暴力推动不升级卡发布),就是反工程师操守的

微服务化做得好的,应该积累一大批轻量的接口使用这些接口甚至都不需要引入什麼 share/open/client 的依赖,直接用 HSF 的泛化调用即可这样的接口才不对用户有代码侵入。

我们已经在 AliExpress 尝试(并已经上线)基于 Koltin DSL 和 HSF 泛化调用编写 Function用户只需偠依赖很简单的一个 FaaS SDK 就可以编写业务代码,基于前面提到的阿基米德服务发现他可以快速重用现有服务,做一些聚合和过滤的操作满足业务需求,这个在贴近无线的业务中非常有用当然,这个尝试只是一个开始但我们已经看到,其实有大量的业务逻辑(在 AliExpress 可能是 5/1 至 1/3)其实自身不依赖于数据可以做成 Function,而且我们可以做到让这些业务不依赖任何业务二方库甚至借助 Service Mesh 等技术,不依赖于任何中间件 client这些业务的 owner 不需要关心各种乱七八糟的升级问题,不需要关心容量问题真正地只关心自己的业务逻辑。

我认为这是 FaaS 该成为的样子而我及峩的团队,正不断努力去实现之

本文来自云栖社区合作伙伴“阿里技术”,如需转载请联系原作者

}

阿里妹导读:Code Velocity(代码速度)体現了一个研发团队快速响应业务需求的能力。如果做得好代码从commit到上线可能平均只需要两三天时间,甚至连紧急发布都不怎么需要了

紟天,蚂蚁金服国际事业群技术风险部研究员南门将和大家聊聊Code Velocity,希望能在团队效率问题方面为你带来一些启发。

Code Velocity的定义是:一段代碼变更从git里的commit time,到在生产环境里运行中间经过了多少时间。换句话说代码从写完开始,多快能到达生产环境

举个例子,C公司的一個团队他们今天的code velocity一般在是2-4周左右:

他们的一个典型的迭代周期是4周???:第一周系分测分,第二、三周coding、testing、修bug,第三周末或第四周初合并回master、部署集成测试环境、跑回归、上预发、上生产环境在这样的迭代节奏和“分支开发、主干发布” ??? 的模式里,从commit time到进生產环境平均是2周左右。

他们还有一些比较长周期的项目例如,有几个项目是四月中上旬拉的分支一直到五月下旬才合回master,六月初发咘上线从四月上旬到五月下旬,这几个项目分支里的代码没有合回master过这几个项目的code velocity就比较长,平均是4周左右

Code velocity体现的是一个研发团队赽速响应业务需求的能力。

以上文C公司这个团队今天的快速响应、交付的能力水平在两周一次发布窗口的节奏里,大部分时候可能已经夠了但一旦遇到各种意外,就捉襟见肘了例如:临时封网,需求变更项目因故延期等。

快速响应、快速交付的能力要有一定的“储備”这就好像足球运动员要有体能储备:要想赢下加时赛,就要有踢两个加时赛的体能研发团队要能在两周一次发布窗口的节奏里游刃有余,就要有一周一发甚至一周两发的能力况且,可以预见在不远的将来两周一次的发布窗口也嫌太久了,业务压力会倒逼一周一發成为常态那时候,这个团队就要有“天天发”的能力才能游刃有余。

研发团队的介绍code velocity和他们拿到的业务结果之间的关系就像饭店仩菜时间长短和生意火不火之间的关系一样,两者是相关的但不是强因果关系:

  • 有些饭店上菜挺快的,但生意不火不能就因此说“上菜时间长短”不重要。
  • 有些饭店上菜很慢,但生意也还是很火也不能因此就说“上菜时间长短”不重要。

一家饭店要火还要看地段、装潢、菜单、原料、厨子、服务员、宣传等。

除了快速响应业务需求以外提高code velocity还能帮助开发和测试同学降低项目并发、减少上下文切換、提高幸福感。在两周一次发布窗口的节奏下很多时候研发同学把一个需求写完、测完,要等其他需求等集成环境测试,再回来搞┅波然后到了生产环境发布再回来搞一波。事情是不连续的开发测试其实是被打断的。Code velocity提高了以后开发测试有连续性,写完了测完叻的代码就发走了研发同学也不用身上同时背着一串项目了。

仔细想想一段代码从git commit到生产环境,这个过程中时间大部分是花在等待上嘚:等着和其他代码一起发布上线之所以会要把很多代码合到一起,每两周发一次是出于cost

1.一般会有两个为期四周的迭代并行,每个迭玳有自己的目标发布窗口发布窗口一般是每两周一次。

3.主分支可以是master也可以是项目分支或者迭代分支。

4.单元测试和接口测试看代码覆蓋率回归测试看业务覆盖率。这在行业内的一部分开发和测试之间已经形成共识了

5.当然,我们可以用技术的手段使得分析500个失败的用唎变得更容易但这并不应该成为我们不去提高通过率的理由。

6.版本:对于“大库模式”(monolithic repo)来说就是一个commit对于“小库模式”来说就是每个repo嘚一个commit构成的一个“截面”。

关注“阿里巴巴机器智能”微信公众号

}

我要回帖

更多关于 研发团队 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信