PM帮程序员提高效率需要做的5件事

jopen 8年前

PM帮程序员提高效率需要做的5件事

英文原文:how a Project Manager can help developers becoming much more productive

作为一个软件开发人员,只有卓越的技术是不够的。更重要的是应该专注一些作为一个专业人士应该了解的内容。在我的排序中,与参与项目的其他人的交往能力是名列前茅的。无论项目是什么性质的,你都需要与其他人互动:

  • 作为一个开源贡献者,你必须合作审查补丁或让别人来审查你的补丁,你必须解决用户提出的问题,你需要与其他提交者或共同维护者一起规划好如何同新用户交流功能
  • 作为一个自由职业者,你必须与现有的和潜在的客户互动。你还需要和参与项目的其他开发人员、设计师和测试人员互动,你需要清楚明白地传达谁负责什么
  • 当在一家公司工作时,你需要与团队中或其他团队中的开发人员进行协调,需要与你的经理进行沟通——最重要的就是关于如何与项目经理的互动

程序员和项目经理……并不总是一见钟情

我们与项目经理的关系并不总是那么和谐:我们作为开发人员非常容易抱怨他们。毕竟是他们的吹毛求疵导致了我们一再需要改动代码,甚至到周五晚上六点还得赶去公司加班。又或者,他们要求持续地发布一些对我们毫无意义的功能。

不过,我认为项目经理在一支成功的团队中有着基础性的作用。作为一个开发者,只有当团队成功了,我才能成功。出于这个原因,我认为与项目经理打 好关系是交付成果的关键。我很幸运我碰到了很多助我良多的项目经理。当我在 TripAdvisor 的时候,尤其如此:在那里我遇见了一位堪称绝对伟大的项目经理。但这并不意味着我没有和我的开发同事对他们时不时地抱怨。

然而一个好的项目经理意味着,我们正朝着正确的方向前进,我们能快速发布功能,我们能和公司其他部门协调我们的项目。

所以我非常确信,项目经理可以扭转乾坤。但是,这种影响既可以是残酷消极的,也可以是精彩积极的。我不敢说我理解 PM 的所有责任,而且,我相信有很多的事情,他们是不用和像我这样的开发人员互动的。我只是在想,项目经理如何与开发人员交互,以及我作为一个开发人员能够从 项目经理那里学到什么。

从我的角度来看,通过这 5 件事,项目经理可以让开发人员的工作生活变得更容易。

1)交流业务重点,考虑技术重点

我们都超额工作过,我们每个人都有过要在一周内完成一大堆疯狂任务的经历。作为开发人员,我得能够评估完成每个任务以及任务间关系所需的努力。 也许一定程度的重构可以简化开发某个功能,所以相应地排序这些任务是有意义的。如果某个任务可能需要两个星期,而实施三个其他功能可能只需要仅仅半天的时 间,那么,我会先去完成后者。

但是技术方面不过是一半而已:顺序任务要求我们要知道业务的优先顺序。客户对什么最看重?哪些功能对我们的收入有着直接的影响?这些都是非常重 要的,因为我们能从中知道应该往哪里花精力,先交付什么。我认为,项目经理需要经常与开发人员讨论优先次序,并同时需要加以考虑业务重点和技术重点,然后 才能决定我们接下来的工作。

有时项目技术重点也很重要:我们不能总是忽略技术重点,只考虑业务重点,因为这最终会影响我们提供的软件,影响该业务。

2)让开发人员提前明确知道最后期限

你有没有遇到过开始不需要后来又需要去做的事情?或者说,客户昨天应允接受一个新构建,今天却表示不需要了?这些都不是令人愉快的“惊喜”。明 确这一点:工作生活中总会有各种需要我们去处理的意外发生。应用程序出现故障,导致公司每分钟都在亏损:于是,你只能先停下你手头的工作,去解决故障。发 现新 bug,需要尽快解决存在的安全问题……,等等,现实生活中总有一些事情是我们无法预料的,是在我们计划之外的。我们只能被动地作出回应。

然而,这并非是一定的,因此我们不能总是预备着应急驱动开发。这只是意外情况。截止期限必须经过沟通讨论后得到一致的同意,这样才能得到很好的 规划。作为开发人员,我们常常无法总览全局,但这句话同样适用于项目经理:他们经常忽略技术方面的问题,以致于最后无法在最后期限内完成任务。所以,亲爱 的项目经理:请尽可能早地让我们知道截止日期。

说明:我所说的“让开发人员知道最后期限”指的是真正的最后期限。关于项目经理,最糟糕的事情之一就是提供一些虚假的,强加的最后期限。有些项 目经理为了能有一个时间缓冲,会告诉开发人员客户想要在 1 号发布,但事实是,客户同意的时间是 15 号。也许,他们是因为觉得我们常常发布得比较晚才这样说,但……你猜最后结果会怎样?就像狼来了一样,早晚开发人员不会再相信你,会无视你给出的压力和时 间限制。

3)管理沟通

我知道这可能听起来有点不合理的,但开发人员确实有一些缺陷。其中一个缺陷就是,开发人员的沟通…与众不同。他们更趋向是用直接而生硬的方式。这在机器上面很好使,但对于客户则不。因此,最好让项目经理帮我们去传达意思。

而且项目经理能够厚脸皮地追着客户问一些我们开发人员需要他做决定的问题。或和其他团队的项目经理交谈,说服他们来回答我们团队提出的要求。是的,我们确实需要一个答案,一个过去几周我们转发了三次却一直被忽略的答案。

一个了不起的项目经理能为我们提供我们工作中所需要的所有信息,保证与有关部门和有关人员的通信顺畅。不过,我们可能甚至都不会意识他们付出的这些努力。

4)保护开发人员

在一家公司工作是有压力的。压力有不同的来源,而且需要人为管理。作为软件开发人员,我们需要处理来自于技术挑战的很多压力:难以重现的 bug,取决于线程同步的间歇性问题,默默打破一切的框架新版本,不可靠的会导致一些集成测试失败的基础设施。各种各种的压力让我们不堪重负。

项目经理也有他们的压力:他们要处理更多的内部政治问题,他们要参与讨论应该开发什么功能,他们得为团队争夺资源。他们要和其他团队竞争,他们 要面临客户的咆哮。但是,如果项目经理因此而将所有的压力转嫁给开发人员,那么,我们,开发人员,就会成为落入风箱的老鼠,两头受气,腹背受敌:既受制于 技术困难,又被客户和政治虐得一塌糊涂。所以,我诚挚地希望我们能够达成一个约定:技术我们来解决,而剩下的,则是你们项目经理的责任。

5)确保我们工作于相关项目

我们在工作中会碰到这样的情况,非常非常努力构建的东西,却对公司产品只有非常有限的影响。可能这对那些喜欢构建一些超酷的玩意儿的家伙来说, 是一件令人愉快的事情,但从长远来看,这将不利于你的职业发展。它不会有助于你的升职加薪,如果你一直努力工作在这些无关紧要的东西上的话。致力于那些可 以给业务带来重要影响的事情,有下面这几个优势:给你额外的动力,让别人注意到你,有可能获得来自于企业的更多资源和更多支持。

工作于不相关的功能还不是最糟糕的事情。刚完成功能,项目就被放弃了,是不是更糟糕?感觉就像一腔热血付诸东流,问君能有几多愁,恰似一群太监上青楼?因此,最好和那些不会置你于此种境地的项目经理工作。

写在最后

我承认项目经理帮我们拦截了很多问题,有些我们甚至都不知道。他们是我们与客户,与企业其他部门之间的接口。他们确保我们正在做的事情是能够提供价值给用户的。因为他们掌控了全局,所以我们才能奢侈地只需要专注于接下来要实现的功能,测试它,发布它。

很多时候,开发人员认为这都是项目经理理所应当做的,因此常常低估了项目经理。这是因为我们不能理解他们的职责。但是请相信我,如果你和一个伟大的项目经理工作以及一个……没有那么伟大的,你就会发现其中的差异。

我希望我们开发人员和项目经理双方都能从一种更好的关系中受益,达到双赢的状态。别说不可能,我就是一个事实:我的项目经理恰好就是我的女朋友哦:  )

-

译文链接:http://www.codeceo.com/article/5-things-pm-programmer-productive.html

翻译作者:码农网 – 小峰