研发过程及工具支撑 DevOps 工具链集成
https://mp.weixin.qq.com/s/NYm63nkCymIV3DbL4O01dg
腾讯重新定义敏捷 |Q推荐
敏捷开发奠基人 Robert C. Martin 接受采访时曾表示:软件研发领域成功的秘诀其实是用很多小团队解决很多小问题。随着 IT 互联网的飞速扩大,业务规模的海量增长,软件开发领域走向了用大团队解决大问题。
但大团队先天性的臃肿、迟缓、滞后的弊端,带来了瀑布式软件开发的效率低下。于是在世纪交替之际,软件开发领域的先驱 Robert C. Martin 与 Martin Fowler、Kent Beck 等人共同起草了一份后来引发全球软件革命的文件,是为“敏捷宣言”。
二十年过去了,敏捷开发已经演变成了一种文化,但在其落地过程中却遭遇了种种问题,Robert C. Martin 也在近期表示敏捷运动最成功的只有敏捷一词。在过去二十年中,原本简洁明了的敏捷概念已经变得含糊不清,精益、看板、LeSS、SAFe、现代化、技能提升等等理念让人捉摸不透。
实际上,敏捷开发只是一个从众多特性化的实践中提炼出的共性化的指导思想和原则,并没有给出具体的实践步骤。在实际的工作中,如果企业只是照猫画虎,不针对自己的业务模式、团队规模等特性制定自己的敏捷开发流程,最终都只能流于表面,成效寥寥。
腾讯是国内最早一批实践敏捷开发的企业,早在 2006 年腾讯就引入了敏捷开发的理念,敏捷成为腾讯研发文化的内核。14 年后,腾讯用 TAPD 重新定义了敏捷,这个对内覆盖超 90% 业务的研发平台,对外服务数十个行业、数十万家企业客户的 SaaS 工具,走出了一条别样的敏捷之路。
14 年:探索、实践与重定义
2006 年,腾讯的联合创始人、CTO 张志东先生提出了要创立腾讯自己的敏捷产品研发框架,也就是后来的 TAPD——Tencent Agile Product Development,腾讯敏捷研发协作平台。
在那个年代,国内的敏捷开发落地并没有太多参考实践,预见敏捷开发革命性的企业并不多,大家更愿意在瀑布式的模型下按部就班地做着软件开发工作。腾讯借鉴了业界比较成熟的敏捷思想精髓,吸取了 Scrum、XP、FDD 的养分,经过在腾讯团队的敏捷沉淀实践,总结梳理出了这一套腾讯的敏捷产品研发模型。
所有尝试过敏捷开发的研发团队应该都能感同身受:让团队内的研发人员认可敏捷开发这个理念有多难。而在腾讯这样研发人员占据半数以上的集团公司,推行敏捷开发更不容易。不易之处不仅在于理念的认可,更在于如何向数万研发人员做名词解释:究竟什么才是敏捷?
敏捷在实践中的困境也正是如此:一千个读者有一千个哈姆雷特,一千个团队有一千种敏捷实践。腾讯选择了扎根于自己的企业文化,从中提炼出了重定义的腾讯式敏捷:以用户价值为依归的快速迭代,小步快跑,鼓励用户参与,持续交付和灰度验证。
从认定敏捷开发的那天起,腾讯在内部打造了一系列的敏捷培训课程,组织了四百多场的敏捷培训,同时也组建了专业的敏捷教练团队进行指导,同时在公司内组织了线上和线下敏捷实践交流,去帮助各大团队进行敏捷经验交流和分享。通过建立敏捷研发文化,培养兴趣、影响习惯、激发动力,鼓励自适应,从而促进敏捷研发体系进一步完善、进化。
敏捷文化的打造是上层建筑,一款支持实践落地的工具平台是底层基础。2006 年起,腾讯研发团队开始打造这款支撑腾讯敏捷项目管理的工具平台——TAPD。TAPD 平台可以说是沉淀、固化了腾讯最优秀团队的敏捷实践成果。到今天,TAPD 已经覆盖腾讯所有研发团队、各类业务线,沉淀了多种研发模型,支持了 QQ、微信、王者荣耀等明星产品各个阶段的研发协作。
在微信的创业初期,由于团队只有 10 人左右,所有的沟通都在 Excel 上完成。当产品小有名气时,团队规模扩张到了 30~50 人,为了解决版本发布周期极不稳定、经常遗漏 bug 等问题,便引入了 TAPD,尤其是其中的缺陷、迭代需求模块,很好地帮助团队完成了迭代节奏稳定、缺陷跟进等关键问题。当微信进入稳定期后,团队规模扩张到了数百人,对更完善的报表、项目进度、多项目协作以及发布跟进等提出了更高的要求,所幸的是,TAPD 早已能够通过更多模块和功能的配置,很好地给予了支持,也才成为了微信研发团队最值得信赖的研发及沟通协作平台。
正是通过这样内部的持续实践和团队从小到大的成长,丰富了敏捷研发的类型,形成了有腾讯特色的四种研发模型,从稳定迭代到极速发版,从大型团队研发到多业务线敏捷协同,不同的业务场景都能找到适合自己的敏捷研发模型。
这也推动了 TAPD 工具平台的“乐高化”,研发团队可以根据各自团队的规模、业务场景按需组装,TAPD 成为了腾讯敏捷研发协作领域的唯一大中台。
研发过程及工具支撑
DevOps 工具链集成
2015 年,同程旅游通过张志东偶然得知了 TAPD 的存在,双方一拍即合定下了合作意向,这是 TAPD 平台第一次试水对外开放。通过这次合作,TAPD 帮助同程旅游从瀑布流的研发模式成功转型为敏捷研发模式,敏捷迭代、小步快跑,在快速变化的旅游市场中快速占领市场。
截至今天,TAPD 已累计服务数十万家各领域企业,提供适合各行业特色的研发管理解决方案,同时助力高校人才培养,为高校软件工程专业提供课程建设、企业案例和企业实践等支持。TAPD 同时致力于构建开发者生态,从生产端助力开发者,依托服务端连接企业客户,通过搭建开放、连接的平台生态,帮助开发者更快更好地进行应用开发与服务创新。
腾讯的离职员工成为了播撒 TAPD 的“火种”,靠着口碑积累、口耳相传,这一套在腾讯积累沉淀 14 年之久的敏捷研发工具平台开始在金融、游戏、电商、音视频、生活服务等市场生根发芽,由此带来的各异场景下的使用体验,就像敏捷模型的“深度学习”,让这种敏捷变得更加本土化。
敏捷开发在落地过程中遇冷的原因是什么?是抽象化的概念在具象化的场景面前没有统一的解释标准,企业在实践中往往只取到了敏捷的“形”,而忽略了敏捷的“神”。腾讯 14 年的敏捷开发落地过程中,一以贯之的是重定义后的核心理念:以用户价值为依归的快速迭代,小步快跑,鼓励用户参与,持续交付和灰度验证。而 TAPD 在这 14 年的发展过程中,也不再仅仅是一套敏捷研发协作的工具平台,更成为了一种验证有效的敏捷文化落地方法论。
研发过程及工具支撑 DevOps 工具链集成的更多相关文章
- 研发效能生态完整图谱&DevOps工具选型必看
本文主要梳理了研发效能领域完整的方向图谱以及主流工具,其中对少部分工具也做了一些点评.看了之后,大家可以对研发效能这个领域有个整体认识,同时研发效能落地的时候也有对应的工具(黑话叫抓手)可以选择. 我 ...
- 一文解读DevOps工具链 (转)
在列出DevOps 工具链之前,介绍一下什么是DevOps,虽然DevOps这个概念现在还没有标准的定义,但我们可以追溯一下其过去九年的历史发展过程(从2009年-2017年),列出几个相对明确又有所 ...
- DevOps工具链
Devops工具链 DevOps实际是一种文化上的变迁,代表了开发.运维.测试等环节之间的协作,因此DevOps工具是非常多种多样的,甚至可以由多种工具组成一个完整的DevOps工具链.此类工具可以应 ...
- 从大厂DevOps工具链部署,看现代产品的生命周期管理
目录 1. 认识DevOps 1.1. DevOps工具链 1.2. CI 持续集成(Continuous Integration) 1.3. CD(持续交付 & 持续部署) 1.4. Agi ...
- devops工具链概述
1. devops工具链概述 1)devops工具篇 2) 持续集成 3) 持续交付 4) 持续部署 2. devops工具链概述
- 第七章 DevOps工具链
DevOps工具生态圈 协同开发工具 敏捷开发 可视化 加强团队沟通协作 数据分析 协同开发 持续集成工具 Jenkins 自动化编译 自动化测试 自动化部署 丰富的插件库 版本管理工具 Git 简介 ...
- DevOps - DevOps工具链
不要满足于使用世界上已存在的各种方法和技术,而应重点放在希望达到的效果上! 单单使用工具不难,困难的是在团队开发中熟练使用,并形成一套理想的工作流程,只有在团队中工具和思想才能发挥最大价值. 开源工具 ...
- [备忘] DevOps 工具上的准备清单(不断补充中……)
目录 概念 发展历程 工具清单 规划 概念 从字面上来看,"DevOps"一词是由英文 Development(开发)和 Operations (运维)组合而成,但它所代表的理念和 ...
- 如何选择正确的DevOps工具
坦白的讲:世界上没有哪种工具能够像DevOps这么神奇(或敏捷,或精益).DevOps在开发和运营团队之间建立了完美的合作与沟通,因此与其说这是一种神奇的工具,不如说是一种文化的转变. 然而,团队之间 ...
随机推荐
- 【命令】pstree命令
这个命令简单没有什么说的,语法格式: pstree [-a] [-c] [-h|-Hpid] [-l] [-n] [-p] [-u] [-Z] [-A|-G|-U] [pid|user] pstree ...
- MySQL、DM 行转列及字段去重(Group_Concat())
最近在使用数据库迁移适配,由MySQL 库迁移到达梦数据库,其中进行行转列时,MySQL转换达梦sql语法有些问题,特记录. 在MySQL 下有Group_Concat(expr) ,在达梦及神通数 ...
- 01. Consul 入门
简介 Consul 是 HashiCorp 公司推出的开源工具,用于实现分布式系统的服务发现与配置.与其他分布式服务注册与发现的方案,Consul的方案更"一站式",内置了服务注册 ...
- 利用MD5进行加密
package com.cn.peitest; import java.io.UnsupportedEncodingException; import java.security.MessageDig ...
- [leetcode]64Minimum Path Sum 动态规划
/** * Given a m x n grid filled with non-negative numbers, * find a path from top left to bottom rig ...
- Python获取网页html代码
获取网页html代码: import requests res = requests.get('https://www.cnblogs.com/easyidea/p/10214559.html') r ...
- 四元数和旋转(Quaternion & rotation)
四元数和旋转(Quaternion & rotation) 本篇文章主要讲述3D空间中的旋转和四元数之间的关系.其中会涉及到矩阵.向量运算,旋转矩阵,四元数,旋转的四元数表示,四元数表示的旋转 ...
- 一个关于JVM类初始化问题
刚在看虚拟机相关知识点 看到一段代码,大家猜测一下这段代码会触发子类初始化吗 public class SuperClass{ static{ system.out.println("Sup ...
- [剑指 Offer 18. 删除链表的节点]
[剑指 Offer 18. 删除链表的节点] 给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点. 返回删除后的链表的头节点. 注意:此题对比原题有改动 示例 1: 输入: head ...
- hive 将hive表数据查询出来转为json对象和json数组输出
一.将hive表数据查询出来转为json对象输出 1.将查询出来的数据转为一行一行,并指定分割符的数据 2.使用UDF函数,将每一行数据作为string传入UDF函数中转换为json再返回 1.准备数 ...