PM 如何帮程序员提高效率?做好这 5 件事 - 博客 - 伯乐在线



PM 如何帮程序员提高效率?做好这 5 件事 - 博客 - 伯乐在线

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

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

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

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

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

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

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

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

3) 沟通管理

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

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

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

4) 让程序员远离麻烦

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

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

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

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

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


Read full article from PM 如何帮程序员提高效率?做好这 5 件事 - 博客 - 伯乐在线


No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts