抖音技术能力大揭密!钜惠大礼、深度体验,尽在火山引擎增长沙龙,就等你来! 立即报名>> 了解详情
写点什么

《Agile Impressions》作者问答录

2015 年 10 月 13 日

Gerald Weinberg 《Agile Impressions》一书中分享了他关于敏捷运动的观察结果:“它从哪里来,现在在哪,将往哪里去。”在书中,他对敏捷的基础和原则进行了探讨,论述了他是如何看到敏捷被违反的,并为敏捷原则的应用提供了理念和实例。

《Agile Impressions》是一个“正在进行的工作”,发表在Leanpub 上,Leanpub 允许作者逐步完成书本的内容,并自动更新给所有过去的购买者。Jerry 欢迎大家对此书提出反馈,以帮助他逐步完成敏捷印象一书。

InfoQ 就客户参与和参加的重要性,业务和 IT 部门之间的协调,交流和文档记录的问题对 Weinberg 进行了采访。InfoQ 同样就刚从大学毕业想成为专业的软件开发人员和想提高自己技能的软件开发人员问题对 Weinberg 进行了咨询。

InfoQ:您的书是您通过电子邮件或在网络论坛上获得的博客帖子、文章和讨论的一个集合。是什么让您决定以书本的形式(重新)出版的?

Weinberg并不是每个人都阅读我的博客和文章。我希望通过这种方式接触更广泛的,对敏捷相关话题感兴趣的读者。

InfoQ:敏捷软件开发宣言强调了客户的协作与参与。您能分享一下您对此的看法吗?

Weinberg就在今天,一名同事给我分享了一个与这相关的故事:

我们发现根据新的格式规格很难读取数据。原来新的规格在一些地方是模棱两口的,并与数据的产生相矛盾,尽管可能在其它地方是相吻合的。当就此问题询问创作者,对此他会做点什么时,他说:“什么也不做。我是一个程序员。我可以做任何我想做的事。”

是的,程序员可以做任何他们想做的,但是如果他们的工作是向其他人提供有用的产品和服务时就得例外。除非你是一名读心者,否则你怎么能知道别人想要什么呢?就个人而言,我不认识任何读心者,但是我遇到过许多这种自以为是类型的程序员。敏捷宣言为这种愚蠢的傲慢者提供了一种疗方。

InfoQ:在您的一篇文章中您记述了让客户参与的重要性。但是如果客户说他们没有时间这样做,或者因为其它一些原因不能参与,怎么办呢?

Weinberg如果你不能找到一个合适的客户代表参与到你的项目中去,就不要开始这个项目。很明显,如果客户觉得他们不需要参与其中,那么项目注定会失败。

InfoQ:很难做到满足客户的要求。 团队会感到压力,可能会承诺一些他们不能交付的东西。您对如何识别这种行为以及如何处理有什么建议吗?

Weinberg我们称这种行为为“抚慰(placating)”。本书有一个章节是讲述抚慰的,以及如何避免和预防。首先,你意识到你的确在抚慰。任何时候,不管你感觉或者认为如何,当你感觉到你“必须做”或者“必须是”的时候,你已经处在抚慰的危险之中了。最终,不抚慰的秘密在于 _ 保持一致性 _,意味着你的外在行为要与你的内心感受一致。比如,如果你说,“我要在明天之前完成那个东西,”因为老板坚持要明天之前完成,但是你并没有真的觉得你能够在明天之前完成,那么你就是不一致和抚慰的。更好的一种说法是,“当然,如果你希望我明天之前完成,我会付出最大的努力,但是现在看来,我不认为我可以完成。”你的老板可能不喜欢那样,但是这是事实。如果你的老板不喜欢这种事实,那就是她的问题了。

InfoQ:您认为,**“业务人员和开发人员必须*很好地*相互合作,项目中的每一天都不例外。但是我们如何发现不是*很好地*相互合作?您能详细说明很好地相互合作”**看上去是什么样子?

Weinberg有很多很好地相互合作的方式,并且当他们没有很好地相互合作时是很容易辨别的。我看到的最常见的症状是你之前提的问题:是否每一方都做好了随时奉献到为另一方解决问题的行列中去?如果不是,甚至于他们都没有在一起工作,那么很明显他们没有很好地相互合作。

他们知道对方的名字吗?他们不需要是死党,但是他们必须互相尊重。当他们在见面时,是否大部分问题都得到了解决?答案不需要是提问者想听到的,但是他们的问题是否都做出了回应,没有被忽略?那些是我最常见到的双方没有很好地相互合作的迹象。

另外一种迹象则不能通过观察他们工作发现,但是,不管如何他们都会公开讨论他们在一起工作的好坏程度。向外界抱怨(比如经理或者顾问)是他们没有很好地相互合作的一个明确的迹象。

InfoQ:敏捷宣言写明,它更倾向于面对面的交流。在书中您认为这不应该是沟通的唯一方式。您能提供一些其它的沟通方式可能更合适的情景案例吗?

Weinberg无论何时,都应有一个关于未来行为准则的协议,即使这个协议是面对面达成的,它也应该遵循书面文件进行交换。无论何时,当对日期或者金钱进行讨论的时候,需要以书面形式详细记录确切的数字。这同样也适用于产品需求——尤其是对需求进行变更的时候。无论何时,准确性是非常重要的,记录永远要优先于空中的手势或者震动。

InfoQ:你在书中提到,从维护的角度,**“最低限度,每段代码都应该有它的为什么记录。”**您能详细阐述一下吗?

Weinberg关于敏捷在产品维护方面的书刊实在是在太少了。如果你曾经维护过别人的代码(往往也是你自己的),你就会意识到知道为什么这么做,而不是仅仅知道如何做多么的重要。举例来说,你不能轻易移除那些看上去冗长或者多余的代码同时保证它可以安全运行,除非一开始你就知道它为什么在那儿。不能记录“为什么”无疑是代码随着时间推移而衰变的主要原因。

InfoQ:回顾软件开发的历史,您能说说这些年软件行业发展的亮点和不足吗?

Weinberg当然可以!

亮点:

  • 一些真正伟大的人,比如 Grace Hopper 和 Harlan Mills,以及数以百计的名字不是那么广为人知的人
  • 廉价的可及性,几乎每个人都能方便使用的计算能力
  • 对质量关注的增长,至少被许多专业人士关注
  • 工具和流程的可用性,用来指导和帮助我们追求品质

不足:

  • 垃圾邮件
  • 滥用廉价的计算能力,使人们相信低质量的软件“就像计算机廉价的计算能力”
  • 对行业没有价值的,成百上千的编程“语言”的随意扩散
  • 风行一时的对“捷径”(magic bullets)的追求

InfoQ:未来您期待软件开发将给我们带来什么?

Weinberg正如 Woody Allen 和其他人所言,“我可以预测任何事情,除了未来。”例如,在 1956 年,我预测 FORTRAN 不会持续很久。也许它不会,但是很明显,它的使用寿命将比我长久。这应该让你知道,不要让我来预测未来。

InfoQ:您对刚从大学出来立志成为专业软件开发人员的青年有什么忠告吗? 以及在软件开发方面有很长一段经历,但是希望提高他们技能的开发人员呢?

Weinberg我可能无法预测未来,但是我仍然还记得过去。大约 30 多年前(1984),我发表了一篇文章,题名为“写给我的儿子 John,在他毕业取得计算机科学学位之际的一封信,忘记事实。”我很惭愧地说,这封信满满的都是忠告,但是我更自豪的是,John(现在叫 Keats)居然执行了一些。也许一些忠告真的帮助他实现了他作为程序员的非凡的职业生涯。如果 / 当我找到这封给 John Keats 的信时,如果合适,我会把它添加到书里去,重新出版,这样你的读者对你提的重要问题就会得到一个经过一段时间考验的答案。

关于本书作者

Gerald Weinberg是名作者,出版了超过 100 本书,包括最畅销的《Secrets of Consulting》,其它非小说系列,和广受欢迎的小说《Women of Power》。他是 Weinberg 国际咨询公司负责人,他的客户遍布州和国家政府;教堂;大学;医疗中心;以及美国国会图书馆。纪念文集《The Gift of Time》((Fiona Charles 编辑)是在他 75 岁生日时作为表彰他工作成就的礼物。他的网站 http://www.geraldmweinberg.com http://www.thewomenofpower.org

查看英文原文: Q&A on the Book Agile Impressions

2015 年 10 月 13 日 18:34616
用户头像

发布了 92 篇内容, 共 17.1 次阅读, 收获喜欢 4 次。

关注

评论

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

关于GDB你需要知道的技巧

helloworld

c c++ C#

浅谈SpringCloud之服务注册中心Eureka

北漂码农有话说

开源商业模式促进金融业科技生态的发展

fino星君

开源 金融科技

css常见问题总结

靖仙

CSS css3

字节流(InputStream/OutputStream)

Howe

Java 工作流

利用goaccess分析nginx日志

Megatron7

nginx Linux

快捷考勤打卡设置

Megatron7

ios

centos7 maven私服自动启动

kcnf

各大公司面试题分类整理

是小毛吖

后端 面试题

MySQL中 int(11)和 int(10) 到底有没有区别?

周三不加班

MySQL 字符宽度 数据库数据类型

写字工具更新史

Bonaparte

学习 读书笔记

从删库到跑路?

岳老三

产品 职业 产品经理 职业素养 职业道德

Bash 的4种运行模式

Megatron7

bash Linux DevOps Shell

python 之 「奶茶名字」的词云展示

小匚

Python python 爬虫 python教程

内存对齐

helloworld

c c++ C#

一个平凡程序员的年度总结

小智

程序员 人生

Graylog部署文档

蚍蜉

Linux 开源 工具 日志分析

Service Worker in Action

xgqfrms

Service Worker Web Worker

从一道面试题来看计算机基础知识的重要性

周三不加班

数组 堆栈 函数栈 函数栈调用

maven私服搭建

kcnf

maven

Kubernetes 将迎来首个 LTS 版本

倪朋飞

Kubernetes 容器 微服务

《零基础学Java》 FAQ 之 1-HelloWorld程序发生了ClassNotFound错误怎么解决

臧萌

Java Hello World !

《零基础学Java》 FAQ 之 2-Java版本那点事儿

臧萌

Java

pip 配置路径要死记硬背?

风起帆扬了

Python Linux windows pip

当我们谈到ThreadLocal的时候,我们在谈什么?

Jason

Java 多线程 ThreadLocal

Redis 6.0 新特性-多线程连环13问!

牧码哥

redis 多线程 io

一次线上服务高 CPU 占用优化实践

张亚

性能优化 JVM cpu

业务代码的救星——Java 对象转换框架 MapStruct 妙用

周三不加班

MapStruct 对象转换

【译】【UX】一个页面可以有多个面包屑导航吗?

Yukun

用户研究 UX 面包屑导航

聊聊苹果账号的那些事儿

不要艾特我

iphone

Python3.6.1官方文档练习——初入江湖(一)

小匚

Python python3.x 入门

Study Go: From Zero to Hero

Study Go: From Zero to Hero

《Agile Impressions》作者问答录-InfoQ