IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

如何与异地的开发人员沟通

iamsujie的产品设计:人人都是产品经理 2011-06-21 23:54:10 累计浏览 3,617 次
本机暂存

本文节选自《启示录:打造用户喜爱的产品》一书和作者的博客,并发表在《程序员》杂志11年05期,作者Marty Cagan是享有世界声誉的产品管理专家,曾经担任网景副总裁、eBay产品管理及设计高级副总裁。译文由七印部落出品,原文太长,这篇是第三部分,也是最后一坨了。除了讲述“如何与异地的开发人员沟通”,还讲了当“程序员想重写代码”时,我们应该怎么办。

如何与异地的开发人员沟通?

如今产品经理与开发团队各处一方的情况很常见。除了印度软件外包业务,大型公司的分支机构之间,以及公司与被收购的子公司之间,都可能出现这种情况。

如果开发团队不在你身边,沟通和执行的难度将进一步放大。异地开发出现的问题常常导致团队士气低落,有人甚至公开质疑异地开发能否真正节约成本。

提高与异地开发团队之间的沟通效率,我有三条建议。

  • 开发团队距离越远,语言、文化、时差带来的沟通难度越大,确定完善的产品说明文档就越重要。如果产品经理不确定开发什么样的产品(或者反复改变想法),异地开发团队只能疲于奔命,白费力气。这简直就是一场灾难,丝毫不亚于医生开错方子。如果你与开发团队相隔很远,无论是沟通产品文档的内容,还是讨论修改产品设计,一定要借助高保真原型进行交流。阅读文档毕竟不轻松,如果文档是非母语的,或者阐述不清楚,那沟通效率就更低了。
  • 本地的开发团队很容易发现和解决各种冲突(比如,两个管理者给出相互抵触的指导意见)。异地开发团队则会发生很多意想不到的情况,往往过了好几个月才发现问题。这是因为异地开发人员不得不揣摩各种不同的意见(但经常揣摩错)。因此,必须有人在本地负责与异地团队的协调工作。这并不是说所有沟通工作都必须经过此人,而是应该明确异地开发团队只接受他的命令。这项工作可以由本地的项目经理、资深开发人员或者其他主管担任。
  • 如今商业沟通手段很丰富,除了电子邮件和即时消息外,还有视频会议可供选择,此外,语音电话业务(VoIP)大大降低了国际长途通话费用支出。尽管如此,当面交流的优势依然不可替代。每个季度,产品经理至少应该前往异地与开发团队见一次面,与软件架构师、管理者当面交流。面对面交流有助于改善(合作)关系,提高沟通效率。此外,交换人员也是一种有效的沟通方式,可以让主程序员来本地与产品经理共同工作一段时间,或者让产品经理到异地工作一段时间。
  • 按照我介绍的方法与优秀的开发团队合作是一种特别的享受。如果是与印度外包团队合作,那么由于时差的原因这种合作会让人觉得更加惬意。每天早晨上班时,对方的项目进展已经摆在面前。你可以用白天(对方的夜晚)检查、测试代码,反馈信息,显著缩短项目的循环周期。

    请注意,如果是在异地开展与产品原型相关的工作,由于循环周期非常短(一天迭代好几次),你必须随时准备处理对方的问题,投入更多的精力。

    解决异地开发问题的另一种方式是在异地聘请产品团队。这种趋势正在兴起,我相信这种模式会被更多的公司采用。你大可不必为此担心。我们曾经用了10年时间在异地培养专业的开发和测试人员,培养专业的产品经理和设计人员很可能还要再花10年时间。

    程序员想重写代码?

    产品经理最担心听到开发人员这样抱怨:“不能再增加功能了!我们得停下来重写代码。代码库一团糟,就像纸糊的老虎,根本应付不了持续增加的用户。我们维护不下去了!”

    这一幕在很多公司上演过,现在依然在不断重演。1999年eBay遭遇这一幕时,公司濒临崩溃的情形超出所有人想象。Friendster几年前也 发生过这种情况,当时他们正在向MySpace开放社交网络用户。网景与微软展开浏览器大战时,也发生过类似的事情,最后的结果大家都知道。事实上,没几家公司能渡过难关。

    一旦公司陷入这种困境,开发团队往往沦为替罪羊。经验告诉我,这类问题通常是由产品管理失误引发的。因为产品经理一直迫使开发团队满负荷工作,开发 尽可能多的功能。所有软件架构都存在功能极限,如果忽视产品的基础技术构架,一旦系统越过崩溃的临界点,就会造成无法挽回的结果。

    在重写代码的过程中,用户无法看到产品的任何改进。你可能认为重写代码至多也就几个月,但是实际花费的时间无一例外要多得多。你只能坐在一旁,眼睁睁看着用户投奔竞争对手,而这个时候,竞争对手恰恰在不断地改进产品。

    如果你还没有遇到这样的情形,未雨绸缪很有必要――你需要预留一定的研发技术能力,在eBay被称为余量(headroom)。很多因产品迅速膨胀产生的问题都与扩展规模有关,余量意味着避免触及技术能力的上限,为用户数量的增长预留空间,为事务增长预留空间,为新增功能预留空间,保证产品的基础技 术构架能够满足团队的要求。

    与开发团队合作应该遵循以下原则:在产品管理上为开发团队预留20%的自主时间,让他们自由支配。开发团队可以利用这些时间重写代码、完善架构、重构代码库中有缺陷的部分,或者更换数据库管理系统,提高系统性能,避免“我们需要停下来重写代码”的情形发生。

    如果你的糟糕处境已经初现端倪,应该拿出至少20%的资源进行调整,而我担心有些团队连20%都不愿意拿出来。如果你已经身陷重写的困境,说明公司危在旦夕,这里给出一点建议供你参考。

    第一步,针对开发团队确定的产品修改目标并制订切实可行的计划和时间表。通常,有经验的开发团队估计的开发时间八九不离十,但是重写代码是个例外,因为多数团队都没有重写代码的实际经验,估计往往过于乐观。你必须审时度势,仔细检查每处细节,确保计划切实可行。

    第二步,只要有可能,最好把重写目标分成几大块,实现递增修改,让用户感受到产品的改进,哪怕会因此把9个月的工作时间延长至2年,也一定要采用这种方式。重写代码时,保证让用户看到功能的改进――即使会占用少则25%,多则50%的开发资源――对保持产品(尤其是互联网产品)的市场占有率至关重要。

    第三步,由于开发用户可见功能的资源有限,必须谨慎选择正确的产品特性,并确保产品定义的正确性。

    eBay起死回生后,我们发誓绝不重蹈覆辙,马上开始新一轮的代码重写,把危机甩在身后。事实上,由于发展迅速,eBay已经重写了三次代码,最后一次采用了完全不同的编程语言和架构。开发团队花了几年时间,大规模地改写了几百万行代码,同时在不影响用户群的情况下,开发了大量新功能。这是我知道的最惊心动魄的中途重建网站的故事。

    临渴掘井不如未雨绸缪,为防患于未然,别忘了预留20%的余量。如果你从未与开发团队谈过这件事,今天就去找他们吧。

    同分类推荐文章

    1. 科技爱好者周刊(第 401 期):如何赚到10亿美元 (2026-06-26 08:05:38)
    2. 如何做决策 - 从 Go 的一个 issue 说起 (2026-06-26 08:00:00)
    3. Seven Player:Windows上播放115网盘视频的增强工具 (2026-06-09 00:06:47)

    查看更多 开发者 文章 →

    建议继续学习

    1. Git常用命令备忘 (累计阅读 54,699)
    2. Git log diff config高级进阶 (累计阅读 24,843)
    3. Git subtree 要不要使用 –squash 参数 (累计阅读 23,397)
    4. 我的git笔记 (累计阅读 20,259)
    5. 在西方的程序员眼里,东方的程序员是什么样的? (累计阅读 9,919)
    6. Zend Studio集成Git使用 (累计阅读 8,978)
    7. 腾讯敏捷开发及快速迭代 (累计阅读 8,055)
    8. 腾讯抄你肿么办 (累计阅读 7,755)
    9. Git commit 注释格式 (累计阅读 6,922)
    10. 程序员最怕的事 (累计阅读 6,923)