产品经理如何帮助程序员提升项目效率

我是创始人李岩:很抱歉!给自己产品做个广告,点击进来看看。  

产品经理如何帮助程序员提升项目效率


要成为一名高效的程序员,光技术牛X 可不够。除了技术,一名优秀的程序员更需要关注其他的一些方面。我认为最重要的就是和项目组其他人沟通的能力。无论项目是做什么,你都需要通过沟通把事情做完,比如:


作为一个开源项目的贡献者,你需要合作审查别人的补丁或者让其他人审查你的补丁,你需要解决用户提出的问题,你需要和新用户沟通功能,和其他提交者或共同维护者一起做计划。


作为一个自由职业者,你需要同现在的和潜在的客户进行沟通。你也需要和项目组的其他程序员、设计师和测试人员沟通,你还需要明确每个负责人对应负责的项目。


当你在一家公司工作,需要协调你的团队和其他团队的程序员,和你的经理特别是和项目经理进行沟通。


程序员和项目经理通常不会一见钟情。


和项目经理的关系时常会出现一些状况:作为程序员我们很容易去抱怨他们。毕竟他们总是企图让我们为了一些改动而在周五的时候加班,也是他们一直逼迫我们去做一些根本说不通的功能。


但我认为项目经理在一个成功的团队中发挥了至关重要的作用。只有团队成功,我作为程序员才能成功。出于这个原因,我认为和项目经理保持很好的关系,才是交付成果的关键。我很幸运可以和那些很棒的项目经理合作,他们给予我很大的帮助。特别是我在Top 500 工作的时候:我在那里遇到的项目经理都很棒。但我还时常会和其他程序员一起抱怨他们 :)


但我知道正是由于他们的工作,我们才可以沿着正确的方向前进,快速地发布功能,并在项目上和公司的其他团队展开合作。


所以我深信项目经理对公司的影响力举足轻重。但这种影响可以是极其负面的或是非常积极的。我并不了解一个项目经理所有的职责,而且我也相信有很多事情他们并没有与程序员沟通。我只是在想项目经理应该如何同程序员沟通,以及程序员对项目经理有什么期望。


在我看来,一个项目经理如果做到以下五件事情,就可以帮程序员提高效率。


1) 沟通业务重点,思考技术重点


我们都在超负荷工作,我们有一堆希望可以在本周完成的工作。作为一名程序员,我需要评估每项要完成的工作所花费的精力,以及它们之间的关系。也许某个重构可以简化一项功能的开发,因此对这些工作做相应的排序是非常合理的。某项工作可能需要两周,而其它三个功能每个只需要半天就搞定了。我当然希望可以先完成它们。


但技术方面只是一方面的考量:对这些工作进行排序,需要了解业务的重点。什么功能对客户最重要?什么功能对收入有直接影响?这对我们决定集中精力先交付什么相当重要。我认为项目经理应该和程序员经常沟通项目的优先顺序,并且项目经理也得明白:他需要对业务方面和技术方面的项目优先顺序都加以考虑,才能决定我们下一步的工作是什么。


有时候技术的优先顺序也是很重要的:不能只考虑业务优先顺序而忽视它们,因为如果这样做会影响我们交付软件的质量,进而影响到业务。


2) 提前让开发者知道截止时间


曾几何时你突然发现有件事情需今天晚些时候就要交活?或者昨天的时候有人承诺客户会拿到一个新的版本?它们不是惊喜,而是惊吓。坦白来讲就是一旦出现异常我们需要立刻处理。如果应用程序挂了的话,公司每分每秒都在赔钱:所以无论你手头上有什么事都要停下来,把它解决掉。比如说发现了一个棘手的新的 bug,或者存在安全漏洞需要尽快解决等等。现实生活中很多事情都不是计划好的:我们只能见招拆招。


但不能每件事情都这样,我们不能总是进行应急驱动开发。这是很差的实践。大家需要讨论截至日期并达成共识,开发就可以按计划行事。程序员通常看不到整个项目的全貌,但项目经理又何尝不是呢:他们会忽视技术的方面,但如果不能提前知道这些,是不可能在截止日期前完成工作的。所以亲爱的项目经理们:一旦你们知道截止时间就马上告诉我们。


提醒:我所说的“让程序员知道截止时间”,是指真实的截止时间。项目经理做的最烂的事情就是给出一个假的、自己强加的截止时间。有的项目经理有自己的小算盘,他们给自己留有一定的时间余量,比如他告诉开发者客户希望 1 号交付,但实际上他和客户承诺的日期是 15 号。他们这么做可能是因为我们经常晚交付东西,但是……你猜怎样?程序员早晚都会发现,并认为这些无谓的压力和长时间的工作都是拜你的谎言所赐。你猜他们会有何反应?


3) 沟通管理


我知道这听起来让人不爽,但程序员或多或少都会有些小缺点。其中一点就是开发者的沟通方式……与众不同。他们倾向于直言不讳。这样的性格很适合与机器一起工作,但是对客户也这样就会出问题。是的,客户提供给你的 SDK 是不是看上去不够……优化。是的,如果我们给一群猴子,提供一瓶廉价的威士忌和一本手册,上面记载了所有软件工程上的最差实践,他们也就做成这个样子。好了,还是不要让客户知道这些。项目经理需要重新措词再告诉客户。


每当看到项目经理追着客户要他们确定需求的时候,或者是他们与其他团队的项目经理交涉,说服其他团队回复我们提出的需求的时候,我都感到异常欣慰。是的,我们很迫切地需要回答,但是往往一个同样的需求我们转了三遍,都好几周了还没有回复。


一个出色的项目经理会提供给我们所有工作中所需要的信息,并且可以确保所有参与的团队都可以顺畅地沟通。我们很可能没有意识到他为此所付出的努力。


4) 让程序员远离麻烦


公司里压力很大。压力来自方方面面,所以需要对它进行管理。作为一名程序员,我们需要应对很多的技术难题:一个很难复现的 bug,一个和线程同步有关的偶发问题,一个改动很大的框架发布,一段不可靠的、无法通过集成测试的基础代码。我们有足够的理由感到压力山大。


项目经理也一样:他们需要比我们处理更多的内部规章,参与功能开发的讨论,还要积极为团队争取资源。他们会和其他团队展开竞争,也要接受客户对他们的咆哮发泄。对此我深表同情,但如果项目经理把这些压力转嫁到程序员身上,那我们这些程序员就会成为板上鱼肉,任人宰割。我们会受到两方面的压力,一方面是现实的技术难题,另一方面是疯狂的客户和办公室政治。这些重担太沉重,所以我们需要达成一个共识:技术上的问题,我们会负责搞定。而其余的问题——虽然我同情项目经理——但那些都是你们的责任。


5) 确保我们没做不相关的工作


想要开发对公司产品影响很少的东西是非常困难的。尽管对于那些喜欢长时间开发很酷的东西的人而言,会很享受这一点,但是这对你的职业生涯很不利。如果你一直开发不相关的东西,你很难被升职加薪。相反如果你做的事情可以对于业务开展非常有意义的话,好处是显而易见的:它为你提供额外的动力,容易让人注意到你,也更容易在组织内获得更多的资源和支持。


开发一个不相关的功能并被不是最糟糕的事情。最惨的是工作的项目在完成前或完成后马上被丢弃掉。想象一下你的努力和汗水就这样被丢弃掉。感觉很差,不是吗?所以最好和那些不会把你带入这种境地的项目经理合作。


结束语


我认为项目经理会为我们挡掉很多问题。他们是我们和客户以及公司其他团队的接口。他们保证我们为客户提供有价值的工作。他们来统筹大局,而我们只需要关注下一个功能的开发、产品测试和交付。


事实上很多时候程序员认为项目经理没什么大不了的。我相信大多数程序员都会低估项目经理。我们只是不理解他们的职责。但是请相信我,如果你和优秀的项目经理和不那么棒的项目经理都共事过的话,你肯定能发现差距的。


我希望程序员和项目经理都可以从良好的关系中受益。我可以告诉大家,这是有可能的。因为我现在就和一位项目经理住在一起,没错,他就是我的兄弟。


【相关推荐】


互联网产品盈利模式设计思考  
把自己当做用户不是让你代表用户  
浅谈移动互联网产品App的研发流程  
产品经理工作的边界在哪里? 
以分答为例,数据化的用户研究应该这样做  


*著作权归作者所有,转载请联系作者获得授权。

随意打赏

产品经理 项目经理产品经理项目管理程序员项目经理如何提升效率项目产品经理
提交建议
微信扫一扫,分享给好友吧。