2001年,敏捷宣言在美国犹他州瓦萨奇山雪鸟滑雪胜地横空出世。时至今日,敏捷软件开发流程早已经深入人心。ThoughtWorks作为敏捷实践的翘楚,一直不遗余力的向行业推广敏捷。而ThoughtWorks自身不仅在所有项目中都使用敏捷,甚至对毕业生的培养都是敏捷的。

在印度浦那有着一所很神秘的大学,叫做ThoughtWorks Univesity,简称“TWU”。每个加入ThoughtWorks的毕业生,都要接受在TWU为期5周的洗礼。笔者于2016年以讲师的身份,参加了两期ThoughtWorks University。整个经历真的是一趟奇妙的旅程,收获颇丰。在这个教授敏捷的大学,我领略到了如何以敏捷的方式来运作一所大学。

敏捷的两个先决条件

《Practices of An Agile Developer》一书讲到,一个项目适不适合敏捷有两个先决条件:第一点是项目是否以价值为导向,第二点是团队是否能够达到高度协作。

第一点也就是说整个团队有一个总体一致的目标。TWU拥有明确的目标,一切都是围绕着培养毕业生的四个方面:Customer Serivce Mindset & Skills(客户服务意识和技能), Business Understanding(ThoughtWorks业务理解), Culture/Way of Life(文化及生活方式), Global & Social Experience(国际经验及社会责任)。

只有打造一个相对扁平的组织,给予充分的信任和自由度,才有利于敏捷的实施。这反过来又要求团队中的每个人有高度的自律性。

TWU的团队主要分为核心团队和讲师团队。核心团队统筹管理所有的TWU活动,确保所有的课程和活动都是围绕着TWU的目标开展。而讲师团队则是由全球各个办公室的员工抽调而来,负责具体实施这些活动。整个TWU团队都是完全扁平的架构,没有上下级的关系。

第二点是说必须能够保证团队中的成员能够流畅的交流。我们那期的讲师来自8个国家:中国、马来西亚、澳洲、美国、印度、巴西、英国、德国。这样的国际化战队能够在组建之后立马投入运作的最大原因就是每个人在ThoughtWorks学到的深入骨髓的合作理念。TWU的核心团队和讲师团队每周都有固定的时间碰头,讨论遇到的问题并商讨解决之道。每天早上TWU的讲师也有固定时间站会,更新各自的状态。下午也有碰头会,讨论当天的工作内容、遇到的问题,并提出行动来解决。

这两个先决条件在TWU完全符合。

敏捷的基础是反馈

《Practices of An Agile Developer》中讲到敏捷的基础就是反馈。如果别人能及时指出你走错了路,那么你就会少走点弯路。只有不断的接受反馈并付出行动,才会不断的提高。反馈也是双向的,不仅自己要接受反馈,也需要主动给同事反馈。

在TWU,首当其冲要接受来自核心团队和讲师的反馈。每周我们有个很独特的活动,叫做Speedback Session。在这个活动上所有的讲师会进行一对一的4分钟的谈话,相互给予反馈。这种开诚布公的行为把大家都团结到了一起。

而在每期TWU的前两周,新讲师会对课程进行试讲,这是获取其他讲师反馈的好时机。笔者本人收到了很多反馈,比如说我的语速很合适、声音洪亮等,也有鞭策我提高的反馈,比如我的引导力能力不强,有的时候课堂感染力不够等。

讲师要给学生讲课,及时收集学生的反馈也相当重要。TWU团队在每个教室都专门制作了一面反馈墙,每次讲师讲完课后都会提醒学生通过贴纸的方式留下对本堂课的反馈。从这些反馈中我找到了自己的一些问题,比如有的学生说我的口音有点重,对一些技术词汇解释的不是很清楚。这会促使我下次讲课时注意解决这些问题。同时我也收到了很多鼓舞,因为很多同学都留言说学到了很多有用的新东西,很感谢我的付出。

正是这种良好的反馈文化让我在短时间内意识到了很多不足之处,也明确了改进的方向。它能使你每天都正面面对工作和生活,每天都能保持提升自己。

敏捷的精髓是拥抱变化

《Practices of An Agile Developer》一书中讲到敏捷的精髓就是拥抱变化。TWU每一期的学生来自不同的国家和地区,各自拥有完全不同的经历。这就要求我们在短短几天内充分了解团队中的学生,并且对课程进行相应的调整。

比如有一次我们要求学生团队进行一次软件发布活动,而当时他们还没有学习功能开关(Feature Toggle),正在思考如何实现只发布想要的功能,而屏蔽掉其他正在开发中的功能。为了能让他们自行思考发布策略,我们特意把介绍发布策略的课程往后挪了一天。

我们不仅会调整课程的安排,对于课程的内容我们也会经常更新。比如有一节教授HTML和CSS的课程,我们对课程进行了大幅改动,删除了一些过时的内容,加上了一些通用的最佳实践。这样的改动能够保证TWU所有教授的内容都能赶得上IT领域日新月异的变化。相比起国内大学有些课程还在使用几十年前的教材,而我们的有些课程可能每半年就会全部更新一次。

一些重大的改动会被放到一年一度的TWU年度升级中进行处理。在年度升级中我们有两个月的时间对TWU的关键活动做升级。比如今年就将TWU使用的整个技术栈全部迁移到了AWS平台,实现能够一键式创建和删除整个学期需要的资源。

TWU在课程的设置方面一直紧跟市场的变化。ThoughtWorks最近不断接收一些关于UX和XD的业务,而TWU当时并没有专门针对UX和XD的培训内容。但是短短三个月的时间TWU一群卓越的同事就创建了相关的课程,并迎来了第一批UX和XD的毕业生。

最后

在TWU当讲师的几个月,笔者一直感觉这个大学是一个充满活力的大学。在这个大学里面,没有权威,没有各种条条框框,整个团队有一股极强的凝聚力,每个人是TWU的主人。运作一所大学不易,但如果能坚持做到持续反馈、拥抱变化的话,这所大学将始终是一所紧追时代步伐的大学。

以敏捷的方式运作一所大学相关推荐

  1. 使用Microsoft Project以敏捷的方式跟踪你的项目

    再不点蓝字关注,机会就要飞走了哦 在项目管理方面,变革是不可避免的.这就是为什么许多项目经理尽可能选择使用敏捷方法.敏捷项目管理不仅接受变更,而且还包含变更,使其成为跟踪项目交付的理想选择. 在本文中 ...

  2. 小团队项目管理开源工具_超越指标:如何在当今的开源项目中以团队方式运作

    小团队项目管理开源工具 传统上,我们如何看待社区健康和活力? 我们可能很快将主要涉及代码贡献的指标归零:有多少公司在贡献? 有多少个人? 多少行代码? 总的说来,这既涉及开发活动的水平,也涉及贡献者基 ...

  3. 开源软件那么多,我们该如何选择?|洞见

    当我们说起开源软件的时候,想必大家都有丰富的使用经历,小到Node.js的一个组件库,大到一套办公软件如LibreOffice,再如Linux操作系统,可以说无奇不有,浩如烟海.就拿我们常用的Gith ...

  4. 系统重构的原则代码重构的原则

    作者:[美]马丁•福勒(Martin Fowler) 译者:熊节, 林从羽 前一章所举的例子应该已经让你对重构有了一个良好的感觉.现在,我们应该回头看看重构的一些大原则. ##2.1 何谓重构 一线的 ...

  5. 月旦评 之 DevOps招贤令2018

    公元164-182年间,汝南平舆的许氏兄弟于每月初一品评人物,褒贬时政,被称为"月旦评".所谓"子治世之能臣,乱世之奸雄也"这句许邵评价曹操的话也是来自于&qu ...

  6. 《重构:改善既有代码的设计》读书笔记(上)

    第一章:重构第一个示例   第一章作者通过一个示例讲解重构的过程.由于需求变化或代码不易于理解需要进行重构,重构前需要有一个可靠的测试,重构的过程应该是小步修改,每次修改后就运行测试,测试过程中可以先 ...

  7. 最高效的七个云原生开发原则

    ​Cloud native是一种软件开发方法,利用云基础架构实现更快.更可扩展的部署.云原生应用程序旨在充分利用现代化的工程实践,如自动化.托管服务和自动扩展控制. 这种模式对组织文化和工作实践也有影 ...

  8. 【重构篇js案例解析重构】第一章 重构的原则

    重构的原则 重构代码示例 重构前的代码 var plays = {"hamlet": { "name": "Hamlet", "t ...

  9. dump文件_一种比Xml更敏捷的配置方式,Python Yaml 配置文件解析模块详解

    为什么选择Yaml Yaml的可读性好.扩展性好. Yaml和脚本语言的交互性好. Yaml使用实现语言的数据类型. Yaml有一个一致的信息模型. Yaml易于实现. Yaml试图用一种比Xml更敏 ...

最新文章

  1. 指定wsus服务器,步骤 2:在服务器上安装 WSUS
  2. python基础之循环与迭代器
  3. Oracle 启动监听命令
  4. flink的scala版本的wordcount+flink没有输出结果的几种原因
  5. 人工神经网络_AI产品经理必修课 | 人工智能概论(四)-人工神经网络
  6. Google Maps API 简易教程(四)
  7. pycharm和pythonIDE安装详解
  8. markdown编辑器 使用语法
  9. spring boot错误: 找不到或无法加载主类
  10. springboot 主键重复导致数据重复_程序员:MySQL处理插入过程中主键或唯一键重复值的解决办法
  11. java语言程序设计 第八版 基础篇_Java语言程序设计基础篇(第八版)编程8.7答案
  12. 利用新浪api获取ip归属地
  13. U-Net网络模型(添加通道与空间注意力机制)代码---亲测提高精度
  14. usereduce reducer使用
  15. 中奖人js滚动效果_H5实现中奖记录逐行滚动切换效果
  16. Java深度历险(四)——Java垃圾回收机制与引用类型
  17. python编程图文_深入Python多进程编程基础——图文版
  18. gethostbyname函数用域名或主机名获取IP地址
  19. ESP32(arduino)和声音传感器数据采集并实现连接WiFi进行MQTT通信
  20. 用 Cloudreve 快速建设基于OSS的个人云盘

热门文章

  1. Eclipse中,查找文件后(使用ctrl shift R/T),如何关联到文件所在目录(查看文件所在的目录结构)。
  2. 详解MySQL双活同步复制四种解决方案
  3. @ControllerAdvice全局异常处理不起作用原因及解决办法
  4. __proto__VS。 JavaScript原型
  5. 为什么Ruby方法中使用感叹号?
  6. 为什么JavaScript仅在IE中打开开发人员工具一次后才能工作?
  7. bcrypt java maven_BCrypt.checkpw()无效的盐版本异常
  8. win11小键盘怎么设置 Windows11小键盘的设置方法
  9. ros开发增加clion常用模板及初始化配置(一)
  10. 路径规划之曲线插值拟合算法分析