当前位置: 首页 > news >正文

Jessica Kerr:高绩效团队简史

对高绩效敏捷团队的早期历史感兴趣的人,可以了解一下1580年左右在意大利佛罗伦萨兴起的佛罗伦萨歌剧同好社(Florentine Camerata),他们因创造了歌剧而改变了当时的音乐形式。该俱乐部在组织上更像是一种聚会,而非正式的团队,它是跨职能的,其中融合了包括音乐家、艺术家、诗人、占星师、哲学家和科学家。Jessica Kerr在Explore DDD(探索领域驱动设计)2018大会上所做主题演讲的主要内容是佛罗伦萨歌剧同好社的经验。

在佛罗伦萨歌剧同好社看来,改革当时复调音乐(polyphonic music)的最佳方式,是沿革古希腊人以文字为音乐的做法。虽然事实上他们并没有看到任何古希腊的音乐记录,但是该理念为他们的创造提供了理论依据,正如现代软件架构师会引用上世纪七十年代的计算机科学论文一样。该组织也不仅仅是一个公开讨论的论坛。赞助商之间的竞争导致了音乐风格的分歧。类似于代码审查,一个思想总是在反对者的挑战和捍卫者的辩护声中产生的。正是因为此,才得以诞生歌剧这一形式,它由单一的旋律和单一的音乐表现组成。

如果故事至此戛然而止,那么它就不会成为本次技术大会的主题演讲内容。真正值得学习的经验是,看看歌剧这一创新是如何影响所有俱乐部成员的,此后各位成员继续对音乐发展做出了独立贡献。Kerr在演讲中引用了Ruth Katz博士在《创意史研究》(“Journal of the History of Ideas”)发表的《音乐史上的集体“问题解决”:佛罗伦萨歌剧同好社实例分析》(“Collective ‘Problem-Solving’ in the History of Music: The Case of the Camerata,”)一文。

纵观历史,个人从群体中受益的现象比比皆是,尤其是在科学领域。尽管我们习惯于将科学发现归功于某个人,但事实上并非如此。那些与其共事并提出建议的人往往被忽视了。举个例子,我们认为是本·富兰克林发明了电力,但事实上他只是数十位早期的电力学家之一。他的那些“不可见的同事”互相提出了很多建议。如果没有这样的群策群力,社群就无法掌握如此重要的想法。如果你的想法无法被他人接受,那么这个想法也不会走得太远。社群有助于推进想法、说服他人接受想法,这与有人提出想法同等重要。

Kerr为阐述群策群力的优点。重点列举了多个著名的历史事件。Joseph Priestley,启蒙运动期间在伦敦咖啡馆聚会的辉格党人俱乐部(the Club of Honest Whigs)中的一位成员,他对氧气的发现推动了整个化学领域的发展。形成于巴黎的沙龙,是艺术创作力的培育场所。艺术家、评论家和经销商可以在这些地方见面,因为他们认识到,单靠自己是无法变得伟大的。这不仅限于艺术家,因为有一个沙龙是由Gertrude Stein运营的,她是一位作家、哲学家和数学家。从近期的软件领域看,一个很好的例子是2003年至2006年期间Thoughtworks伦敦创意总部。Jez Humble(持续交付领域的顶级专家,《持续交付》和《精益企业》两书的首要作者)、Dave Farley(持续交付布道师,《持续交付》一书的合著者)、Dan North(敏捷软件开发专家)、Nat Pryce(独立软件顾问,英国敏捷开发的先行者)和Sam Newman(《微服务设计》一书的作者)等人曾在此聚会,分享理念,进而提出了一些影响了全球软件开发团队的重要思想。

伟大团队造就伟大人士。

在列举上述历史实例之后,Kerr提出了本次演讲的主要观点,即“伟大团队造就伟大人士”。我们常说,企业需要将优秀的员工招致麾下,但事实总是大相径庭。如果企业在招聘高效开发人员上存在问题,那么它永远不会招聘到高效的员工。高效开发人员并非通过培训得到的,更不用说通过自学了,而是通过共同学习的团队培育的。

Kerr在演讲中提出了共同学习体(“Symmathesy”)这一术语。该词最早由Nora Bateson提出,是表示“共同”的“Sym”和表示“学习”的“Mathesie”组合而成。尽管最初提出该词是用于描述持续变化的生态系统,但是该词适用于更广的范围。一个系统并非是其各个组成部分的简单累加,聚合而成的。而是系统各部分通过以往的相互作用产生的。

Kerr进而指出,相比起给出的这些历史实例,软件系统更像是这样的共同学习体。软件系统并不仅仅是软件团队,而且还包括客户,以及软件的运行、数据库、硬件,还有团队使用的所有工具。各个部分相互作用,互相学习,构成了一个团队,团队成员可从中成长和发展。

要参与到这样的环境中,人们应该表现出全身心的投入,并已准备好加入这个有活力的系统,成为其中的一份子。kerr指出,这正是采用此心态的困难之处。不仅要考虑自身或所在的团队,还必须更加广泛地从整体上考虑所在的组织、部门甚至是企业,并在必要时与其它的团队建立沟通桥梁。如果不改变环境,共同学习体是不可能存在的,所以Kerr认为不能将团队封闭起来。体系需要让具有影响力和与外部有联系的人取得成功,进而将共同学习体推广到整个组织中。由于系统的各个部分均具备学习的本质,因此kerr提出,团队不应直接招聘一些成功者。因为你的系统是独一无二的,并且每天都在发生独有的变化,我们必须聘用那些对系统具有潜在影响的员工。

Kerr还讨论了团队与个体对于推演系统模型的重要性。作为个体,首先得确定软件中需更改什么,而这个工作正是使用个人心智模式的练习,代码更改只是个副产品罢了。事实上,在某种角度来说,每个个体的模型均是过时的,不完备的。这时我们需要的是一个团队,因为个体的脑中无法掌控整个模型。由于各个模型之间存在着差异,因此团队必须协作,以确保模型之间相互重叠并保持一致。这样做确保了团队得以在正确的地方做正确的更改。Kerr也承认,团队要达到这一理想状态,要比每个个体所设想的更难。

在与此相关的演讲部分中,Kerr指出,这些不完整的模型通常会抛出一些想法并将其重写一遍。她说,“从头开始构建一个复杂的系统,要比理解一个已有复杂系统的工作原理更容易”。她在此开了个玩笑,说这可以解释了为什么存在如此之多的JavaScript框架。

Kerr说,要使团队成功,需要考虑团队成员的激励措施。如果是一个完全针对个人开发者的奖励系统,那么这将导致一种封闭的心态。个体对团队做的最糟糕的事情,就是保留自己的想法。因此,我们需要寻求各种可使整个团队学习最大化的方法,并找出在学习时互相给予信任的方法。“局限性并非在于我们能做多少,而是我们知道的多少”。Kerr偏好Mob编程,因为这种方法最大限度地发挥了学习的作用,并融合了各种心理模型。

在结束演讲时,Keer回顾了文艺复兴时期。在文艺复兴之前,并不存在所谓的艺术这一概念。在公元1200年至1600年间,对艺术的认知已从仅是一种职业技能(仅限行业协会许可)发展为普世大众(在学术和文化圈得到讲授)。文艺复兴时期是一个分裂期,它打破了导致墨守成规的旧有障碍,并加以重组。这一“新风格”强调的是在设计和工艺之美上的表现力。

借鉴文艺复兴,Kerr尝试对软件分分类,从它不是什么开始着手。

软件并非一件工艺品。Kerr并不认为自己是一名手工艺者,也不认为编程是一项技能。软件并非只是我们编写的代码,而是我们将如何影响这个世界。

软件并非一项艺术。软件正以不同于艺术的方式在无时无刻地改变着我们这个世界。此外,软件也是我们以前从未涉足的一种工作媒介。

软件并非一项工程,也并非过去任何“受人尊重”的职业。它是一项新事物。

以软件为媒介的共同学习者

Kerr认为“软件是继艺术之后的下一次变革”。发展中的软件开发是共同学习体的实践,参与者可称为“以软件为媒介的共同学习者”。该理念并不属于任何个体,而是整个社区。我们都是共同学习者,目前我们正处于继文艺复兴之后的下一次时代变革。

Kerr在她的博客上,撰文详细介绍了“歌剧的起源和编程的未来发展”(Origins of Opera and the Future of Programming)。在YouTube的Explore DDD channel上,提供了本次主题演讲的视频。

查看英文原文: A Brief History of High-Performing Teams by Jessica Kerr

感谢冬雨对本文的审校。

相关文章:

  • Windows操作系统查看电脑开关机记录
  • 实现图元及属性的算法---椭圆生成算法
  • 大快搜索数据爬虫技术实例安装教学篇
  • 解决项目不编译4大clean
  • 迭代器 /生成器 yield
  • mysql表与表之间的关系
  • 对标汽车之家,新势力杉车网的另类崛起
  • RabbitMq集群搭建
  • vue-cli2使用cdn方式引入cytoscape
  • VS2015 提示 无法启动 IIS Express Web 服务器
  • P5003 跳舞的线 - 乱拐弯
  • 阿里数据库十年变迁,那些你不知道的二三事
  • RTSP(Real Time Streaming Protocol)实时流传输协议详解
  • 《三块广告牌》
  • 【重磅】Spring Boot 2.1.0 权威发布
  • ----------
  • HTTP中的ETag在移动客户端的应用
  • Mysql5.6主从复制
  • pdf文件如何在线转换为jpg图片
  • Python进阶细节
  • Swoft 源码剖析 - 代码自动更新机制
  • Vue 重置组件到初始状态
  • Wamp集成环境 添加PHP的新版本
  • 从 Android Sample ApiDemos 中学习 android.animation API 的用法
  • 记一次删除Git记录中的大文件的过程
  • 微信端页面使用-webkit-box和绝对定位时,元素上移的问题
  • 微信小程序填坑清单
  • 为视图添加丝滑的水波纹
  • 移动端唤起键盘时取消position:fixed定位
  • 如何用纯 CSS 创作一个货车 loader
  • ​人工智能书单(数学基础篇)
  • ​业务双活的数据切换思路设计(下)
  • #NOIP 2014# day.1 T3 飞扬的小鸟 bird
  • #微信小程序:微信小程序常见的配置传旨
  • (非本人原创)史记·柴静列传(r4笔记第65天)
  • (附源码)ssm高校升本考试管理系统 毕业设计 201631
  • (九十四)函数和二维数组
  • (三)elasticsearch 源码之启动流程分析
  • (转)memcache、redis缓存
  • .NET CORE Aws S3 使用
  • .net core IResultFilter 的 OnResultExecuted和OnResultExecuting的区别
  • .Net Core与存储过程(一)
  • .NET 设计模式—简单工厂(Simple Factory Pattern)
  • .net 桌面开发 运行一阵子就自动关闭_聊城旋转门家用价格大约是多少,全自动旋转门,期待合作...
  • .NET(C#、VB)APP开发——Smobiler平台控件介绍:Bluetooth组件
  • .netcore 如何获取系统中所有session_ASP.NET Core如何解决分布式Session一致性问题
  • /usr/lib/mysql/plugin权限_给数据库增加密码策略遇到的权限问题
  • @EnableAsync和@Async开始异步任务支持
  • [ CTF ] WriteUp- 2022年第三届“网鼎杯”网络安全大赛(朱雀组)
  • [ 渗透测试面试篇 ] 渗透测试面试题大集合(详解)(十)RCE (远程代码/命令执行漏洞)相关面试题
  • [<事务专题>]
  • [2016.7 test.5] T1
  • [8481302]博弈论 斯坦福game theory stanford week 1
  • [Angular] 笔记 9:list/detail 页面以及@Output
  • [AS3]URLLoader+URLRequest+JPGEncoder实现BitmapData图片数据保存