OceaBase开发者大会落地上海!4月20日共同探索数据库前沿趋势!报名戳 了解详情
写点什么

西蒙•布朗谈可持续竞争力

  • 2014-04-01
  • 本文字数:4039 字

    阅读完需:约 13 分钟

为什么有些团队很成功,而其他团队不那么成功呢?团队可以使用流程开展工作吗?管理人员如何帮助团队变得更好?团队需要有改善软件质量的激励措施吗?在 2013 年 6 月举行的 GOTO 阿姆斯特丹大会上名为“可持续竞争力——人员与流程和技术”的演讲中,西蒙·布朗谈论了其中部分话题。

InfoQ 采访了西蒙·布朗,他从持续改进、平衡人员与流程,以及软件质量与架构等几个方面谈了可持续竞争力。

InfoQ:您可以向 InfoQ 的读者介绍下自己吗?

西蒙:我经常把自己描绘成一个懂架构的软件开发人员,或者会写代码的软件架构师。和许多人一样,我的职业生涯也是从一名软件开发人员开始的,然后逐步成为项目的软件架构师。只要可能,我仍然参与到日复一日的开发工作中。

五年前,我搬回到海峡群岛的泽西岛。由于泽西岛并不以软件开发闻名,所以这可能看上去是个奇怪的选择,但我出生在那里,而且那是一个极好的生活之地,尤其是如果有孩子。那之前,我在伦敦为一家 IT 咨询公司工作了十二年,虽然我的大部分工作重点在城区的金融业,但我在垂直行业中的工作范围很广泛。从技术的角度来看,那些大部分是 Java 项目:从富桌面应用程序和网站到分布式消息和面向服务的架构。

在过去几年里,我的大部分工作是帮助软件团队理解软件架构、技术领导力,以及与敏捷性的平衡。我正在写一本书,叫做“Sofeware Architecture for Developers”(由 Leanpub.com 连载)。跟我合作过的团队遍及整个欧洲,我教他们软件架构以及如何采用一种“恰到好处”的方法做预先设计。实际上,这与引入技术领导力有关,在通往敏捷性的道路上,这一点经常被忘记。

InfoQ:您谈到,并非所有的团队创建时都是一样的。您能解释下那是什么意思吗?

西蒙:虽然我们都希望能够在一个敏捷布道家所描述的经验超级丰富的自组织团队里工作,但以我的经验来看,这样的情况比较少。在现实世界中,一个人很少有机会选择与他共事的人。有些人很棒,而有些人则没那么棒!不同人的动机也不同。有些人从事软件开发,是因为他们享受使用技术生产某个东西所具有的创造性挑战。其他人从事 IT 工作是因为工资高。由于 IT 行业里有各种各样的人,所以说并非所有的团队创建时都是一样的。

InfoQ:您在演讲中介绍了使用流程开展工作的团队。这些流程是什么?流程如何帮助团队开展工作,以及如何改进团队的工作方式?

西蒙:软件团队经常使用若干流程来开展工作,从塑造软件项目运行方式的高级流程,到帮助团队将需求转变为代码直到测试的低级流程。如果回顾过去,在敏捷成为主流之前,许多软件团队都曾经是由明确的流程驱动并遵循这些流程。瀑布模型和统一软件开发过程(RUP)是两个明显的例子。作为一个产业,我们现在不再遵循明确的流程,而且“敏捷理念(agile mindset)”告诉我们,可以通过调整工作方式获得改进。可以说,盲目地遵循流程已经过时了。可是,虽然通常这是件好事,但我经常发现,软件团队因此而不知道从哪开始。一个明确定义的流程会提供一个起点,在团队不知道从哪儿开始的时候会非常有用。虽说并没有得到很多关注,但 DSDM Atern 是一个管理敏捷项目的流程框架。尽管在敏捷社区有些人说这是自相矛盾,但我个人认为,对于刚刚接触敏捷的团队而言,Atern 是一个不错的起点。这里的关键是,它只是一个 * 起点 *,应该随着团队经验日益丰富而调整。

InfoQ:计划驱动的方法非常关注流程,而敏捷喜欢人胜过流程。用什么方式可以平衡人和流程,结合两者的优点?

西蒙:对我来说,这是个关于将一些组织结构和纪律落实到位的问题,因为我们不想要一种“放任状态(free for all)”。一个成员富有经验的团队所具有的经验使他们自然而然就能做正确的事。这就是为什么说他们有经验!一个成员能力参差不齐的团队,就像在现实世界中经常见到的那些团队那样,常常需要一些指导。我会建议这样的团队保留简单的流程,并确保每个人都知道这些流程是什么。流程可以严格,但有时候,人们只是需要一些指导以及工作界限。关键是要了解跟自己共事的人,并根据需要调整流程等级。

InfoQ:外包要求你作为客户与供应商合作,从而保证你可以从他们那里得到你想要的。这听上去简单,但许多组织为此陷入了挣扎。为什么?

西蒙:让我们设想一下,一个内部 IT 能力非常有限的组织需要构建一个能为企业带来若干好处的新软件系统。一种选择是通过雇佣人员或利用承包商有系统地建立和发展自己内部的 IT 能力。长远来看,这可能是更好的选择,但是,对于不太了解 IT 的人而言,这听起来很复杂。另一个选择是把工作外包给一家 IT 供应商,付钱给他们,让他们为组织处理一切相关事宜。为了从这种关系中获利,就需要建立合作关系。虽然这听上去很简单,但是合约协议和组织缺乏 IT 经验会成为障碍。

我曾经见过现在仍然会见到的大部分客户 - 供应商合同形式是:“我们支付 X,你们在日期 Z 前交付 Y”;固定了价格、范围和时间。想想你最近一次决定雇人安装厨房、翻新浴室或者扩建一个房间。对于想要什么,你得有个大致的想法,还得有个预算。但是,如果你想法变了,要改变瓷砖的类型或者窗户的尺寸,那会发生什么?如果合同价格一定,你可能会发现,由于你侵蚀了供应商的利益空间,“合作”关系开始破裂,工作用时开始变得长于预期。

有效合作的关键是确保人们不把客户 - 供应商约定看成“我们和他们”。每个人都要有这样的想法,我们是一个团队,我们有共同的目标。以我的经验来看,只要简单地使客户与供应商的距离非常近,并在同一间办公室里工作,通常就足以保证项目有一个好的开端。

InfoQ:您谈到了质量激励。首先,我们真的需要质量激励吗?它为什么重要?

西蒙:这又回到了那个问题,为何并非所有的软件团队创建时都是一样的。如果一个供应商为你安装厨房,当他们投机取巧或者使用不合规格的材料时通常会很明显。通常,外观检查就是所有要做的事,因为很少有地方你看不到。在软件世界里,情况并非如此。当然,供应商可能会交付一个非常优美的网站,所以,从表面上看,网站看起来很好。但是,内部质量——那些“在引擎盖下面”你看不到的东西怎么样呢?换句话说,你怎么知道软件设计是不是“好”以及代码是不是“好”?内部质量不佳的软件往往难以变更、增强、维护、管理和支持。虽然这些问题可能不会立即显现出来,但稍后,你必然要为此付出代价。如果不了解软件开发的任何事情,那么该如何判断正在交付的软件质量是不是很高?

当然,可以在合同中加入若干质量指标(如单元测试覆盖率、圈复杂度等),但这些并不能保证质量,而且我也见过把一些指标当儿戏的团队。理想的情况是可以相信供应商会做正确的事。如果供应商有个糟糕的团队,并且受利益而不是技术驱动,那么你可能就会发现自己做了一笔不公平的交易。而且由于不是做技术工作的,所以你永远都不会看后台代码,也就可能永远不会发现。过去,我审查过若干外包的软件项目,我确实见过一些项目不是由我说的“专业开发人员”构建的!如果客户团队中有能够客观地审查交付物的人,那会有所帮助,否则,我会建议他们雇佣一个可信任的顾问,由他代表他们做这项工作。再说一下,客观是关键。

InfoQ:为了交付优质的软件,优秀的团队会怎么做?在您看来,什么是有用的,什么是没用的?

西蒙:编写软件相对比较容易。但编写好的软件,就没那么简单了。这关乎纪律和对细节的关注。优秀的团队会有意识地关注他们交付的软件的质量,而且他们懂得用清晰易读的代码构建架构良好的软件的重要性。这样的团队也会采用诸如自动化测试和持续集成那样的做法。尽管这些技术实践已被看作是“主流”,但我还是遇到了没有采用它们的团队。甚至连使用源代码控制都不能保证!颇具讽刺意味的是,更优秀的团队经常在那里设法持续改进。通常,这样的团队具有鼓励学习、分享经验和持续改进的文化。另外,对于自己的工作,他们有激情。

InfoQ:您谈到了团队中的软件架构。这是一个什么样的角色,如何履行?

西蒙:软件架构角色关乎软件团队的技术领导力,这是考虑这一角色的最简单方式。传统上,人们认为软件架构师是这样的人,他为开发团队制定解决方案,并自己承担实现解决方案这一易惹麻烦的任务。我的观点是,软件架构角色可以由团队中的一个人或许多人充当,这关乎通过协作与指导发挥技术领导力。简而言之,该角色的职责包括理解构成解决方案的要素、设计解决方案、保证解决方案可行、根据需求改进解决方案以及负责技术质量。这一描述过于简单,该角色的职责可以而且应该包含编码,但它已经抓住了主要内容。

InfoQ:为了使团队中的专业人才能够发展自我、培养和提高他们的技能和价值,管理人员可以做些什么工作?

西蒙:在我的职业生涯中,我非常幸运,因为我工作过的大部分组织都有一个非常结构化的技术职业路径。例如,为了进到下一个工资级别或角色,你需要证明你已经展示了若干能力。多半,这些能力基于技术 * 和 * 软技能(例如,咨询和领导力)。除此之外,通过适当的技术和软技能培训,组织在实际帮助人们沿着职业路径前进的过程中投资巨大。组织还为每个指定一位导师,帮助确保人们的职业生涯从来不会被忘记。

大体上,大多数这样的组织都有一种卓越的文化,奖励学习和帮助他人学习。从实践角度来看,这包括创造一个人们不会为寻求帮助而感到害怕的环境,并通过诸如“特殊兴趣小组”——人们可以聚到一起分享经验——这样的活动来保证团队意识。在我看来,这一切都指向组织文化。组织文化非常重要。

关于受访者

西蒙•布朗居住在泽西岛(海峡群岛中最大的岛屿),他作为一名独立顾问,专注于软件架构、技术领导力以及与敏捷的平衡。西蒙是一名屡获殊荣的演讲者,经常在国际软件开发大会上发言,也为欧洲的软件团队提供咨询和培训。他是“编码架构( Coding the Architecture )” (一个实用的关于软件架构实践经验的网站)的创始人,著有 _ Software Architecture for Developers _ 一书(一本通过 Leanpub 连载的电子书)。他仍然在编写代码。西蒙的 Twitter 账号是 @simonbrown

查看英文原文:**** Interview with Simon Brown about Sustainable Competence

2014-04-01 05:521777
用户头像

发布了 256 篇内容, 共 81.6 次阅读, 收获喜欢 11 次。

关注

评论

发布
暂无评论
发现更多内容

企业云服务器免费使用后会存在哪些隐患?

一只扑棱蛾子

云服务器 企业云服务器

1688代采系统,淘宝代购系统,海外淘宝代购系统,淘宝代购集运系统

api开发

ElasticSearch架构介绍及原理解析

霍格沃兹测试开发学社

IT外包的三大优势对企业的发展有何影响?

Ogcloud

IT IT外包 IT外包公司 IT外包服务 IT外包企业

2024上海国际气浮设备与技术展览会

吹吹晚风

一文看懂如何做好 SQL 质量监控

阿里巴巴云原生

sql 阿里云 云原生

好用的AI绘画软件,一次安利给你

霍格沃兹测试开发学社

亮点功能:流水线编辑支持并行了!

Jianmu

DevOps

2024北京国际智能机器人展览会

AIOTE智博会

机器人展 智能机器人展

破晓未来·迎接智能新时代:混合 AI 大模型开发者工作坊震撼预告

阿里巴巴云原生

阿里云 云原生

解决Java中文显示乱码问题的原因与方案

霍格沃兹测试开发学社

如何避免MYSQL主从延迟带来的读写问题?

不在线第一只蜗牛

MySQL

龙智携全方位芯片解决方案亮相IIC Shanghai 2024,助力客户解决复杂的芯片研发挑战

龙智—DevSecOps解决方案

芯片开发 芯片研发

2024上海国际泵业及配件产业展览会

吹吹晚风

2024上海国际冷凝器与冷却器技术设备展览会

吹吹晚风

Atlassian被Forrester评为企业服务管理领导者,Jira Service Management助力提升团队服务水平

龙智—DevSecOps解决方案

Atlassian Forrester企业服务管理

ETL的数据挖掘方式

RestCloud

数据挖掘 ETL 数据集成

2024年AI辅助研发趋势:数智时代革新新引擎

EquatorCoco

人工智能 AI辅助

小白一眼就能懂的JSON简介与基本使用指南

霍格沃兹测试开发学社

低代码与鸿蒙开发:重塑软件开发的未来

不在线第一只蜗牛

低代码 鸿蒙开发 鸿蒙系统

深耕版本控制、代码质量与安全等领域,龙智荣获“Perforce 2023年度合作伙伴”奖项

龙智—DevSecOps解决方案

版本控制

云游戏发行是什么?云游戏发行的演进历程

Ogcloud

游戏 云游戏 游戏发行 游戏云化 游戏发行公司

面试官:说说线程池的工作原理?

王磊

Java 面试

客户说|从4小时到15分钟,一次分布式数据库的丝滑体验

阿里云数据库开源

阿里云 运维 polarDB PolarDB-X 识货

2024上海国际反应精馏技术及设备展览会

吹吹晚风

李彦宏:程序员职业将不复存在,会说话就能当程序员;ChatGPT 日耗电超 50 万度丨 RTE 开发者日报 Vol.161

声网

继续总结Python中那些简单好用的用法

快乐非自愿限量之名

Python windows 开发语言

AI+办公!5款超实用AI软件,一键生成PPT、视频、思维导图等!

彭宏豪95

人工智能 在线白板 AIGC 效率软件 AI生成PPT

2024上海国际离心机及压滤机技术设备展览会

吹吹晚风

Jira自动化的实用工具——ScriptRunner简介及最佳实践

龙智—DevSecOps解决方案

DevSecOps

MySQL安装最全最简教程

霍格沃兹测试开发学社

西蒙•布朗谈可持续竞争力_架构_Ben Linders_InfoQ精选文章