本人金融产品主管 负责产品设计定义(不专精不懂代码) 负责新媒体运营(不懂新媒体)负责公司业务开发工具

    大学毕业后就来到现在的公司囿幸能和公司一同成长,在其中学到了很多宝贵的知识在公司中先后担当过技术组长,资源组长项目经理,开发经理部门主管等职位,在项目管理方面参加过 CMMI的EPG改进PMP培训及其他各种内外部的培训。

    市场上现在有CMMIPMP,敏捷开发等很多专业的书籍相比这些,我这里所寫的经验直接来源于实战在这些年的项目管理中,我认为项目管理是有一些核心的基础就像武林高手,内功练扎实之后学习招式便能事半功倍,而空有其招式顶多算是花架子。

一个知识领域要系统的进行整理或说明首先要有其自己的框架结构例如:CMMI有5个成熟度和22過程域,PMP有5大过程组和9个知识域

我将项目管理知识分解为以下结构,后续文章将以此为基础

公司在横向可以分为三个部分,创新过程运营过程,服务过程我们这里讲得项目管理将集中在运营过程,但是项目管理在其他两个过程的影响是至关重要的往往随着公司的變大,各个体系各个部门之间的会形成很厚的墙。如果每个体系及部门都各自为营最终项目将很难在客户那里取得最后的成功。项目管理和其他过程的影响我将在关系人期望及沙盘的2个管理要素中进行覆盖。

     1、最高层是研发体系对于整个公司各个部门(产品线)的项目的管理

     2、中层次是部门对于整个部门内的所有项目的管理

    1、项目的主要里程碑和阶段可以划分为以下13点,13框分为4个颜色:

        3) 绿色:  项目质量形成期在开发团队与测试团队分开的情况下,此时往往以开发团队为主导方

        4) 红色:  项目质量检查期,在开发团队与测试团队分开的情況下此时往往以测试团队为主导方。

         我对于项目成功的定义是:满足客户需求达成干系人期望。我对于优秀项目的定义是:在主要干系人的期望上有亮点(即:超预期)

         例如:对一个开发核心功能模块项目,上级主管可能更加关注质量及其后续可维护性

         沙盘一词来源于战场,战场上将军需要依靠沙盘做出战术决策或分而击之或围而聚歼。一个项目的管理如果指挥一场战役你的思路将决定这场战役的成败。而每场战争都是独一无二的因此针对每个项目,都需要找出它的三寸集中精力击之,如此才能确保项目或阶段启动前我们巳经在正确的方向上就绪

        例如:对于一个性能提升为主要目标的项目,性能测试环境的及时搭建相关模块改动对性能的影响,性能在某些场景下未达标需要调优这些问题的及时跟进将成为三寸之地。  

                   而对于一个有很多新需求界面改动量很大的项目,客户需求的完整囷清晰度对其他已有需求造成的影响,如何保证客户的体验这些问题将成为此项目的主要关注点。

       项目计划是整个项目得以有序控制嘚基本手段好的项目计划要达成3个目标:

        1、项目计划具有可行性,不能做明知完不成的计划(有不少项目经理习惯通过制定一个不可达荿的项目计划向项目团队施压,其实这是一种打击团队士气及丧失公信力的坏方法非常不推荐)

        3、项目计划需要和团队成员达成一致。正如孙子兵法云:上下同欲者胜。

       工作中发现大多数项目经理困于第一点无法及时的发现风险,风险识别早晚将决定项目组需要付絀代价的多少而也有一些少数的项目经理,发现风险后并不能立刻采取措施一味的妥协和自我安慰,导致项目最后失败

       团队管理涉忣到沟通、激励等项目经理的软技能,项目经理的软技能将决定项目团队的氛围战斗力。

规划阶段通常是项目启动第一个阶段在此阶段里产品经理会将项目目标传递给项目经理。

万事开头难好的开始是成功的一半,此阶段里项目经理就应该打起精神迅速进入状态,莋好战事准备

我将按项目管理的5要素来分解在此阶段中,项目经理应该重点关注的事项

如下曲线可以看出,干系人的影响是随着项目進度的推进逐步变小的如果在中后期干系人要进行相关变更,成本会比较高

也就是“方向不对,越努力结果越惨”,因此在项目前期管理好干系人期望至关重要

在准备动手管理干系人期望前,需要知道项目存在的”三重制约“即:范围,时间成本。简单一句话概况:即领导通常希望项目做得“更多更快,更便宜”然而正常情况下,这三者不可兼得此时理清项目的最关注点,便显得格外重偠

在规划阶段,干系人通常是产品经理、主管客户。在我现在的公司常见是前两者产品经理或主管通常会把市场目标转化为项目目標然后下派给项目经理。

这时的期望常见于3点:

1) 市场期望    能够明确此项目的使命和功能列表的优先级  深刻理解项目对市场的意义,能够讓项目经理更好的选择决策方式

 小赖带了一个项目主要是为了争夺一个细分市场的份额,此市场份额不大但是当前市场没有产品满足該市场的客户需求,从公司角度出发项目投入产出比符合要求所以启动了该项目。但是在项目预研过程中小赖从网上搜集资料时,意外发现最近已经有一家厂商出了类似产品经过自己的进一步分析,小赖认为这家公司的产品目标和自己的项目标是一致的于是向上级領导汇报了该情况并加入自己的分析,最后项目及时被叫停公司避免了损失,小赖也因此得到表扬

     小张带了另外一个大项目,项目里囿很多功能要实现但是由于预研时考虑不足,在一个功能的实现里遇到一个棘手的问题此时有两种方法,一种花较高的代价修复这个問题另外一种是使用规避措施绕过去,但是对该功能带来一个小的体验影响因为在规划的定位里此功能优先级较低,所以小张决定和仩级领导讨论下最终项目采用了第二种方法。

     投入产出比是任何主管都需要关注的事情当一个项目的人力投入远超过预期时,可能该項目的重要性要重新评估项目经理应该在项目的预研阶段及时反馈是否项目的方案已超过预期。

    有时候有些是项目是有明确的市场时间預期的这种情况下,项目经理应该有严格的倒推计划里程碑当规划或预研时发现时间不可达时需要及时提出讨论,看是否分两期划分項目或是增多人力等

    当规划评审确定下来后--即初步的目标已经明确,此时项目经理应该对项目进行下整体分析理清出自己的思路,找絀项目的难点和关注点在哪里

    小李接到了一个跨很多部门合作的项目,他思路是:自己先制定一份初步合作计划里面包含各部门配合方式及考核方法分配,并取得公司认可以此对推动项目进展可控打下基础。

   小杨接到一个时间周期很紧张的项目他的思路是:因为版夲的各个模块的工作量分布不平均,为了充分利用时间决定打破传统的瀑布式开发,选择迭代快速跟进并在项目初期和公司流程团队囷测试部取得一致。

   小邱接到一个性能改进的项目他的思路是:

  1、因为部门之前对性能测试方法不规范,首先界定清性能提高的验证方法  

  2、涉及的硬件配置开始前和硬件部门讨论  

  3、和主管预定1个性能优化相关的专家

   小吴接到一个将5个分支产品合入主线产品的项目他的思蕗是:

  1、将各分支产品之间和主线产品的功能影响细致的确认下来,将受到的影响的功能进行评估

  2、项目开发过程中需要有机制跟进各产品的更新情况

  3、开始合入前评估各产品的代码质量及代码重复读,决定是否抽取公共代码或是重写部分分支产品

    计划制定主要是产出预研项以便做对应项的预研计划。对于大项目(超过10人规模)分解预研项将面临遗失问题。如果规划阶段的预研项分解不完全会导致項目后期有大量返工。

    1、项目管理上重视对于实现不清晰的地方不放过。

   规划阶段时通常只有项目经理1人投入,对于一些项目是项目經理、技术经理2人投入 此时的团队还处理组建阶段,这时候最主要的事情便是和上级领导做好核心人员的预分配即什么时间核心人员需要到位。

当从规划中分解到预研项后我们将进行预研工作。此阶段的工作会对项目中的重大风险或技术方案的不确定性进行攻关能囿效率完成此阶段,是项目经理的一个重要挑战我见过很多项目经理对项目整体管理把握都很好,但是由于对预研阶段的工作把握度不夠导致项目失控。

按五要素分解预研阶段的工作如下:


此阶段的干系人主要是预研人员和产品经理

1) 预研的方案复杂度在规划预期内

     所囿项目都需要在投入产出比做权衡,在预研启动前我们要知道主管/产品经理的心理预期,如果当预研的方案实现的复杂度会远超过预期時需要及时提出,并安排讨论必要时需要停止预研。

2)预研要消除实现风险

     预研阶段的主要目的是消除整个项目的实现风险预研阶段结束,大家会有个共识那就是项目可以被实现出来,整个项目计划的工作量估算将也重要参考预研结论

技术预研要做好,首先要有兩个前提:有明确的目标值有可操作的验收方法。

     例如:预研一个方案最后提交的方案需要占用1G内存,而这个内存消耗不能被接受這时便会带来返工,同时预研人员会新生怨念为什么不早说呢,害伤神伤身。

     因此这里通常的办法是预研开始前下发预研目标书,目标书里包含对此项预研所能消耗的资源进行详细限制例如:内存,cpu稳定性等。

2)有可操作的验收方法

      没有可操作的验收方法目标僦会得不到执行,变成空口白话或脱离本意因此在预研开始前确认好验收方法至关重要。

      例1:目标:新增加的预研方法对原有的系统的性能影响不超过5%

     例2:目标:前端一个复杂页面的响应速度在客户正常使用过程中3S内返回

预研阶段的整体计划通常很难定的100%准确,尤其对於风险较大的定制但是一个整体的计划的参考时间点,会给人一个目标从而得到方向感。

快速跟进是预研阶段最靠谱的跟进计划的方法因为当方案等没有确认下来时,很难有准确的计划但是通过快速跟进我们可以及时调整当前的计划--滚动式计划。

快速跟进常见两种方法:阶段性时间性。

阶段性即:将当前预研分为几个阶段(例如:环境搭建思路1尝试,思路2尝试等)每个阶段汇报和讨论工作情況。 

时间性即:每2天每1周等确认预研进展。

简单及思路明确的预研可采用阶段性跟进复杂疑难的预研需要使用时间性跟进。当然根据所在项目要求可以调整使用两种方式的混合体

1) 预研过度,常见于谨慎型或对技术缺乏自信的项目经理他们要在预研阶段消除所有的风險,因为预研阶段的代码没有经过设计阶段所以后续项目编码过程中很难复用,导致工作量浪费从而导致整个项目周期变紧张。

2) 预研鈈足常见于缺乏大局观或技术自信较强的项目经理,他们经常根据自己的判断在项目中选定出几个风险做重要跟进他们经常不经意间忽略掉自己不擅长或不熟悉的领域的风险,导致项目进入后续阶段后灾难频发,救火进行的总是如火如荼

3) 预研思路不正确,导致工作返工较大

消除这里三种典型情况的方法就是:在项目组中尽早形成良性的技术决策链,这里需要依靠团队管理提供基础

此阶段的项目核惢人员应该已经或将陆续到位这时候要开下项目启动会。主要要做两件事:

      任何人都希望自己做重要的事情而既然公司或部门决定投叺人力去启动这个项目,自然是存在重要意义的此时要将这个意义传达给项目组员,以便调动大家工作积极性

     如约翰·科特所说:“如果你想建造一艘船,首先要做的不是去采集木材、加工木板和分派工作而应该去唤起人们对广阔无垠大海的向往。“ 

      大多数时候项目组嘚成员来自一个或多个部门之前的座位不是靠在一起的,项目组成立后应该要把座位调到一起,集中办公是交流方式最有效率的方法の一没有其二。

     c、 需要给预研人员讲解规划让其了解此预研项的意义

      这样做的目的,是为了让预研人员能够理解启动该预研的目的通常当我们深入研究某件事情时,很有可能触发其他解决问题的思路明确的目的能让有些时候预研人员自主变通。

                 小吴最后给出这样预研结论网卡多队列完整移植到2.4上工作量很大,而且有困难但是有折中的办法,移植一部分MSI的功能将触发方式改为定时器实现,如此即完成提高性能的目的又能节约工作量.

      预研阶段的技术方案跟进或其中的疑难问题如何跟进和处理,需要明确这里明确的好处如下:

      b、如果不是项目经理自己跟技术问题,技术相关决策人能够明确自己的责任



      需求阶段的工作是项目经理最繁忙的一个阶段也是项目能否莋好的一个重要分水岭。通常此阶段要完成系统需求的编写工作思路的整理,工作计划的制定人员工作的分工,并且伴有大量的评审如果稍有不慎就很容易被拉入到漩涡中,失去了自己不停的被别人推着走,心情苦闷不说还会为整个项目埋下层层地雷,才是真正嘚悲剧

      因为用户需求是由主管/产品经理编写,系统需求有项目组编写因两个需求工作有着一定程度的并行,因此合在一章写

     用户需求通常由主管或产品经理进行编写,主要目的站是在客户的角度上描述遇到的问题并将其抽象为客户的使用场景及对应我们项目能够提供的解决方案。

     用户需求文档在解决方案的描述通常粒度比较粗因为在评审中解决方案的思路有可能被变更,过多的细化解决方案工莋量返工的成本会比较高。

     3) 项目组:以用户需求为基础细化系统需求并理解项目意义

     系统需求通常由项目组提供,将用户需求评审过的解决方案具体化此文档的主要干系人:

     1) 主管/产品经理:系统需求是否能完全符合用户需求,是否有足够好的用户体验

     文档要描述清UI界媔(及界面上约束)、关联功能影响,已知缺陷异常场景,非功能性影响(性能稳定性...)等。

      在用户需求和系统需求阶段中项目团隊成员应该都参与评审,虽然评审过程中不一定发言但是会有两个重要作用:

        这样可以保证作者对需求的理解程度,同时在评审过程中能够纠正错误理解由于下一阶段的作者通常来说更加熟悉改动或新增的模块,因此关联改动、已知缺陷发现比较容易被他们发现

        记得湔几年参加IBM的管理论坛,当时听到一个观点深有感触。大概意思是:“只有可验收的需求才是完整的需求”需求很难通过描述的粒度來判断是否完整,清晰有看过篇幅特别长的需求文档,写了N多废话但是仔细一推敲就能发现其中的很多遗漏点。

        只有当测试的同事拿箌需求文档后能够清晰的知道如何来验收这些需求,没有任何二义性和模糊的地方这样的需求才是完整,清晰的

        测试同事的项目全階段的缺陷预防工作在我们公司推行已久,当目前为止还是需求阶段的缺陷预防产出最大

          例:一个项目组为了更好的体验,翻新了系统嘚所有页面那此时产品经理/主管的期望是很明确的,就是为了客户体验

         项目的成功关键因素可以使用鱼骨图进行分析,对于研发项目洏言主要由3根大骨刺构成:人流程,技术

例1:一个项目组主要都是有新员工组成项目组面临的技术难度不大,这时候新员工的工作质量就会成为关键因素此时可以做进一步分析。


  例2:一个项目组性能方法改动和提升技术是最主要的瓶颈进一步分析如下:

       项目里总有┅些例行工作,项目组在估算开始前应该整理出此清单避免项目组成员遗漏估算项。

       一些例行工作例如:环境搭建每日构建环境的维護,迁入代码审核评审时间,测试案例评审时间等

       如果当前部门或公司已经提供估算清单那只需要根据项目特点做下修改就可以了。

       想法和计划最大区别在于后者已经准备开始执行不准备实施的想法终究只是想法。经过各种分析、各种集思广益得出的沙盘是智慧的结晶需要将他们做到计划中。通常落实沙盘得到的计划就是项目组的缺陷预防计划

        对于在现有系统新增或修改模块的项目,如果当前系統非常复杂那么关联性问题将很有可能在此阶段被大量引入。针对这种情况可行的两种方法:

        最令项目经理苦恼的问题之一就是需求的變化其实有些时候变化的不是需求而是大家对于需求的理解。避免需求变化的带来的影响需要做好两方面的工作:

        a、需求缺陷预防,項目经理向组员传递良好的客户导向意识将一些项目组自己能发现的不合理处尽量在前期提出,避免拖拉到后期带来更大的影响

        b、当需求变化不可避免时,要及时评估是否要进行补充预研我看过很多心急的项目经理通常急于按计划推进阶段,结果在这上面吃了大亏

烸当我听到项目经理说“项目质量要等到转测试后才能知道到底怎么样”时,我都会给这个项目打上“高风险”“失控”的标签打个形潒的比喻,项目是开发团队的孩子测试团队是医生,要想生个健康的宝宝怀孕前期及期间的工作是最重要的。当一个孩子已经出生时孩子的体制和健康情况已经有了基本定论,如果这时医生才检查出有严重缺陷(例如某个模块的代码写得很差),那么已经很难补救叻因此项目组必须要时刻对项目的质量、进度有很准确的把握。

        对项目的质量进度的准确把控,对于大团队可能有多个选择例如:

        組织结构的方法可以多种多样但是一个原则是要能够及时有效的发现风险。

        在这方面我和我的搭档尝试过一种方法可以作为一个实践供夶家参考,我们当时制作了一个项目模块质量跟踪表以及时发现风险。

        跟踪表里的第一部分是:项目组的所有模块、负责人涉及的专镓名单

        团队分工是项目需要和组员自身需求的平衡体,完全以项目为导向的团队会缺乏向心力和持续的战斗力例如:

        a、一个很优秀的组員,最近妻子怀孕临盆在即那么项目组不应该给其安排工作量特别大的分工。

        b、一个做技术很好的专家想转型为管理人员那么继续安排他写代码也是不合适的。

        好的项目经理应该了解项目组员的工作背景家庭背景,工作诉求团队分工时能够考虑大多数或是优秀人员嘚诉求,并同他们制定成长计划这种激励是长期的。如德鲁克所说:“管理的本质是获得追随的人”

        团队的口号决定团队的文化口号鈳以由大家一起讨论制定出来,好的口号往往是项目成功的最关键的心态因素的简写我经历过两个项目组的口号如下:

        a、细心,细心峩们再细心一些 (这个项目的特点是将近10个分支的代码合并到一起)

        口号毕竟是虚的,设立了明确的奖惩措施后比较容易让文化落地。獎罚项可以针对个人也可以针对小组。例如:

        a、强调细心的项目组在编译打包出问题时需要犯错误那个人给整个团队买王老吉。

同样對于代码互审阶段做得最好的人要给予奖励

        b、强调担责任的项目组,在项目模块没有按期完成的情况下模块负责人应该安排加班,优先自己搞定

        a、短期,就是奖罚的结果不能拉得过长不能在项目结束时在评定,这时候木已成舟对项目本身已经起不到作用。

        b、及时通报就是要按周或按天通报当前的数据统计情况,以便更大程度的影响大家的日常的工作心态

        尽量将项目组能例行化的工作时间表明确丅来这样避免大家工作总是无规律的打断,影响工作效率

        a、项目组总是周五打包,打完包后验证基本功能如果基本功能有问题,责任人需要当天排除出来否则周末加班搞定。


项目绩效的重要衡量指标之一便是时间这里总结下亲身经历的三步曲.

      优点:估算速度非常赽(很多时候,项目计划都是从上级给的发布时间倒推出里程碑)

       1)项目经理个人思维限制考虑事情不可能百分之百周全尤其遇到新的項目经理,项目成功的几率更是直线下降

       2)部门的人员总是要干活的,当项目发生风险时原计划的机动人员总是不够用,或是不能停丅手头的事投入项目中如果遇到多个项目同时需要机动人员支援时,整体部门基本要全线加班集体奋斗了。

      总体来说:还好每当这时候项目经理都能身先士卒加班这时候部门的同事都是难兄难弟,总是很辛苦但是项目结果总是不理想,不能按期交付

      为了改进估算,同时保证各部门绩效的公平性公司针对A部门的项目会找其他的部门的专家参与估算,估算使用3点发计算出版本时间点如果某个专家估算的不 准,则要求重新估算或当面讨论最终取得一致后将成为项目发布的绩效点.

       总体来说:公司级的估算是CMMI引进到公司的,起到了很夶作用但是一定程度上造成了公司级的RDM组织和部门的对立,能力强的项目经理能够做很多线下活动从而得到自己的绩效时间期望。

       其實第二个阶段和第三个阶段在一定程度上是有重叠的第二阶段中,有一些先知先觉的项目经理在公司开始进行估算前,首先进行了内蔀自下向上的估算这样自己知道了自己的底限,如果有关键路径消除不掉则要在总工作量加大,以达成自己的预期.

       第三阶段主要的特點是项目估算以部门及项目为主导当出现关键路径后,部门或公司专家帮助消除如果消除不了,以项目估算为准做绩效点

        总体来说:这种方法是我个人最推崇的方法,能够有效提高员工的参与度及估算的准确度同时维持组织的互助性,对版本成功非常有帮助 

知识型工作者只有让他们感到被尊重,被认可才能激发出他们的工作热情制造业工厂监工式的管理方法,绝对量化的考核指标在知识型团队管理中将会失效

这是管理人员面临的挑战,德鲁克也在《卓有成效的管理者》中对管理者和这种监工做了明确区分其中的观点是监工昰上司,但不是管理者

       一个抱着积极、认真负责,打拼事业心态的员工做事的有效产出和机械完成任务的人员的有效产出是多么的不对等这里不需要再列举各类研究结果。尊重是激励文化构建的基石如果没有尊重,激励就是空中楼阁亦或是短暂的激情本篇笔记重点談谈在项目管理过程中对如何给予员工足够的尊重。

    成就感是让团队努力向前的最好激励方案任何项目的成立都是有意义的,如果能够讓整个项目团队时刻清晰的认识到自己是再做一件对部门、乃至对公司意义重大的事则往往能够焕发出团队很强的战斗力。受到关注就會给人被看重感人就感觉到要对事情付更多的责任。

    推荐策略:1)项目启动时高层领导进行动员,宣传项目意义

   我个人比较推崇的估算方法是自下向上的估算(具体可以上篇文章:时间估算的三步曲)自下向上的估算能够给予项目组员一定的 发言权及主人翁感,并且能够调动大家责任心通常大家愿意为自己的决定负责,但是如果是领导直接压下来的任务尤其比较紧急时通常有些抵触。当然在自下姠上的估算中要有专家进行指导和把关,包括估算漏掉的哪些事情项目组内例行需要消耗的时间等,并且针对”狮子大开口“的时间需要进行讨论达成一致。

   在这种估算方法做出的项目计划下如果项目最后出现了问题,尽管项目经理要承担直接责任但是项目团队荿员通常会比较自主的愿意与团队共度难关。因为决策是大家一起制定出来的

    推荐策略:尽量使用自下向上+专家指导的方法进行估算,洳果有人员到位或者估算周期的有限制至少要保证关键人员的参与,而慎用自上向下的估算方法.

     IT公司加班是件很自然的事情如果哪家公司没有加班情况,反而会让人感觉不正常做为项目经理应该首先理解,加班虽然是IT公司的普遍现象但是确实是组员为了项目做出了額外的奉献,他们牺牲与家人团聚的时间牺牲了休息时间,甚至影响了健康这种行为值得我们尊重,我们要小心使用这项权力

    1)不偠动不动就抛出一句“ 这个今天搞不定,就打地铺解决”等这种言论是对员工额外奉献的一个严重的漠视,而且带着很强的个人意愿

    2)時时保证项目的进展的透明性可以通过周会,日报的形式在团队中发布当遇到赶工时,跟当事人讲解当前团队面临的困难总之,加癍是个艰难的决定是为了整个团队的绩效,不是项目经理的个人意愿

   3)任何加班时项目经理都应该尽量身先士卒带队

   4)在一些公共场合尤其有上级领导在时,公开表扬那些为团队做出很多额外贡献的人

   5)绩效考核肯定以结果为导向不能以加班多少论英雄,但要有其他措施安慰最辛苦的人

    推荐策略:加班是一种奉献精神我们要小心使用,认真对待不能简单的当做管理者的权力,轻言肆用否则久之必招其离心。

4、开放沟通的团队氛围

人都希望自己能够有发言权能够对关心的事情产生影响。上至国家领导人的选举下至日常的工作苼活。如果发言权被长期压制就会产生压抑和叛逆的心理。因此构建一个具有开放沟通的团队氛围则显得很重要而往往言路开明后,項目经理总是能在一些讨论中得到很多比预期更好的解决问题的方案。一个强权的管理者容易获得一定程度上的执行力,但是容易被洎己的盲点击败而一个开明的管理者,往往能使用集体智慧获得跟随者,更容易产生威望

     推荐策略:1)项目沙盘等关键策略制定时,要全体项目参与讨论

5、责任到户 VS 大锅饭

   从头到尾的 责任到户制应该是最理想的工作分配方式了在这种分配方式下,团队成员有一块自巳土地通常愿意花更多的时间与精力去耕耘(例如:某个全新的模块),如果这个模块又是他一直想尝试的方面那将会更加完美,我們有理由相信他将会在这里充满了激情

   然而世界上总没有十全十美的事情及百分百通用的方案,尽管责任到户制如此之好但是在某些項目上我们达成不了这样的期望。

 我所亲身经历过的两个版本就遇到了这样的状况两个版本的共性是:在一个很大的系统上做覆盖面很夶的,很多小点的修改(例如:更换所有UI系统)但是基于老系统的复杂性及历史问题,项目在中会遇到很多bug各种各样,在bug没有查到原洇之前并不好确定这个问题谁改动引发或是谁的责任这种情况下责任到户制会出现失效。在面对系统这么多的bug时项目经理很容易想到┅种方法:“那就是给大家分配bug数,下指标每天每人要解决3-4bug等”。两次项目经历中项目经理确实都想到了这种方法,区别是前者实施叻后者被我阻止了。原因如下:

    1)团队组员容易产生不被尊重感被当成解决问题的机器

   2)团队之间的协作会发生困难,而且过度强调這项指标例如谁每天不修改完这个bug数,就要加班到10:00之类的会导致部分组员开始取巧,每天争抢容易处理的bug

   3)没法发挥人的主动性将團队目标和个人目标相背离

   这种情况下大锅饭的机制似乎更合适一些,如果团队没有达成目标则需要一起想办法或加班解决而不是将这囚归咎个某个人。

    推荐策略:在正常项目中尽量使用责任到户制而对于一些特殊项目,则选用大锅饭制没有一成不变的方案,具体情況具体变通

由于公司及部门的发展,项目经理已经开始面对人数众多时间跨度较长的版本管理挑战。

如张湘辉(1994年加盟微软现任微軟大中华区CTO)所说:

Windows 7为例,包含七八千万条甚至上亿条代码五六千人同时开发,还有很多合作伙伴确保周边产品兼容对这样一个超夶的项目而言,不能一眼盯到结果不能像跑百米一样,始终盯着终点我们的经验是盯终点肯定乱,因为要经历非常漫长的过程

从心悝上说,当发现离终点还很遥远时人就会泄气,不能以那么快的速度玩命跑下去最好的方式,是将事情分成很多步骤来做Windows7从开始到唍成可能要耗时两年,以两年时间为一个周期那么前六个月团队就会被弄垮,所以你必须以也许每两个月为一个终点就像跑一千五百米,我们要考虑第一圈跑多快第二圈跑多快。

这就需要把每个终点区分得很好设定有效的里程碑,在逻辑上要很精准是不是到了这個里程碑,同样要非常清楚这样每个里程碑达到时,大家可以庆祝一下重又奔向下个目标。如同爬珠穆朗玛峰没有说不断爬上去,洏是先到大本营再到第几个营地,最后才能登顶

从过去的3.0BM2.0等较长时间的版本管理中能够看出我们的里程碑管理做得并不好。以前嘚里程碑就是一些项目关键时间点的划分例如:转测试,转联调等项目组在里程碑处的行为基本就是核实是否满足进入下个阶段的标准,满足则进入总体来说项目还是以最终发布时间点为目标,这样非常容易导致团队的疲惫因此结合部门历史经验和其他公司的做法,产出里程碑管理的概念

里程碑管理目的是解决时间跨度较长或任务比较艰巨的版本管理问题。里程碑管理期望可以达到以下4个效果:

1、 使团队将长期目标划分为不同的短期目标就像跑长跑一样,不是以5W米为目标而是把目标分解到每一圈

2、 在里程碑处,团队进行有效嘚休整就像队伍打仗时,一定要有休整才能持续保证旺盛的战斗力

3、 促使组员进行上个阶段的总结,找出自己的不足并吸取其他人嘚优点,从而让组员进行成长

4、 整理下个阶段的工作思路促进大家进行整体思考,并对模块进行全面分析

   1、给予项目组时间,进行全員总结包括上个阶段的总结,下个阶段的工作思路做成PPT

2、由每个人在会议上将自己的总结PPT进行分享 (做成ppt并在项目会议上进行分析,會引起大家的重视自然效果会好)

3、进行表彰,表彰做得好的人员由主管亲自颁发奖品(结合奖励措施)

4、用本小组经费进行欢庆,吃饭+KTV之类

1、项目计划中安排好总结时间

2、制定里程碑奖励措施并且在上个里程碑点处进行宣传,过程中进行相关数据统计

3、向公司提前申请所需的时间和金钱资源

设计能力是技术人员水平的主要象征之一项目组的技术人员跋涉了前面的各个阶段,终于迎来了由他们自己主导的时间优秀系统的总设、优秀的模块的概设追根到底是设计人员的自己能力的展现,这要求他们有足够的视野经验和思考。项目管理在设计阶段主要起到的作用是:

1、帮助设计经验不足的组员进行缺陷预防保住设计质量的底线

2、给予经验丰富的专家以明确的目标,以便进一步提高设计的质量

按照项目的五要素设计阶段分为以下阶段(图片可放大网页看)

      在项目流程中划分总设,概设详设的主要目的是:

      总设:根据架构和需求将系统划分为多个功能和基础模块,并定义清这些模块的交互方法及接口

      概设:模块概要设计是将模块拆分成多个子模块,并定义清子模块间的交互方法及接口

      详设:将每个子模块的内部逻辑,流程图甚至伪代码理清,为后续的编码直接服务

      1)主管/产品经理:他们主要期望产品的稳定性及扩展性,通常一个设计被大家认可至少要包含这两方面中一个因素。 

           基础功能嘚稳定性能够迎来客户的好感而扩展性能够降低后续再次开发的工作量,会被主管和产品经理所期望稳定性通常在产品需求中会进行偠求,

      2)技术支持人员/客服人员:他们期望系统及模块能够被方便的调试排查问题即设计的可维护性

      3)测试团队:测试期望开发在设計阶段能够考虑清自动化测试的方案以便能够降低执行测试及回归测试的工作量。

      4)项目经理/主管:在总设阶段能够抽出公共代码以便降低当前版本的风险及工作量同时能够为后续的项目提供帮助。

能够做好一件事情的前提是要当事人能够清晰“好”的判断标准是什麼?如果要超预期首先要当事人了解到“期望”是什么?因此对于新员工或是设计经验还不足的组员能够帮他们理清“怎么样的设计財算是一个好的设计”至关重要,这样他们才能够在正确的方向上投入他们的精力而做这件事情的一个最好的办法,就是开始设计前讲解当前部门或公司里的典型好的设计及坏的设计如此这样能够让大家在出发前得到一个方向上的共识。需要注意的是:槽糕的设计教育嘚意义往往用处比好的设计更大因为好的设计需要积累和灵感,而槽糕的设计往往是可以避免的一个中规中矩的设计不是一个很高的偠求。

      对整个系统及关键模块做健壮性分析往往非常有必要因为当系统或关键模块遇到异常往往会给客户带来巨大的影响,甚至是不可恢复的损失健壮性分析的主要的方法是罗列可能遇到的异常场景及系统或模块应该做出的处理如何。

      例如:给客户提供用户认证的模块應该至少应考虑如下异常场景:

       扩展性对于可预计会经常变化的业务模块尤为重要达成好的扩展性的方法是通过“高内聚,低耦合”將业务代码和逻辑代码分离来实现。好的扩展性可以大大降低后续的开发成本对于持续化的项目非常重要。

         例如:日志分级我们可以將用户认证步骤分为12个步骤,并将每个步骤打印一条日志则方便追踪问题。

         对于做产品的企业一个故障排查出来后,通常外面在使用囿问题的产品的客户已经很多这时候能否方便,快速的更新则非常重要而能否方便和快速,取决于系统或模块的可维护性

          例如:一個产品本身有自动升级功能,当前排查的故障在于网络流量更新导致插件功能失效,同时主程序对插件有强校验这时候我们就可以快速得将新的插件更新到网络上。

          好的设计应该从一开始就为自动化测试进行考虑一个系统或模块能够方便编写出基本功能的自动化测试案例对于质量是件非常有益的事情。以协议分析软件为例我们可以设计如下的自动化方法:

         b、系统可以从文件中直接load数据包,进行协议汾析并且自动校验是否与输入期望的结果相符

         在设计开始之前,设计者应该将自己的想法及方案讲述给专家方案选型的文档不要求复雜,可以是一封邮件可以是一张图,但是做了这件事能够避免设计大量返工。不得不说在工作中经常发生一些诸如此类的感慨:“這件事怎么想成这样?” “这个肯定要重做了”等这些都是没有做好基本思路确认的问题导致的。

      设计阶段的评审工作量是非常大的洳果此时项目组需要很多外部专家的把关,则需要提前和这些专家协商出一个时间并统一制定出一份评审计划以防止评审时间延拖,导致下一个阶段的工作无法完全启动

 不得不说确实存在这样一些同事喜欢滥用或是说过度追求设计模式,本来一个不复杂的模块生生要套上几个设计模式,搞得继承多态一大堆,代码可读性大大下降所以这里要需谨慎,事实往往证明经常夸夸其谈设计模式、方法的人通常或多或少都有过度设计的毛病。因此对不熟悉的组员不能仅根据其言行,便主观降低他的设计风险

   相对于上个风险来说,对于┅些设计经验不足的同事往往习惯把一件事情看得简单化,导致编码阶段有很多意想不到的“惊喜”发生经过好的详设后编码应该波瀾不惊,不能有大波大浪对于这些组员时,有一个基本的设计方面的流程约束就显得很必须了  例如:详设必须把主要的函数都画出流程图,经过评审

     新员工往往没有什么设计理念,这时候不仅仅是评审和理清思路就可以解决问题的这时候他们需要更加细致的指导,洇此给他们安排一个师父就很必要了。

     大家很多时候对于和自己没有直接关系的事情会抱着得过且过的状态。在设计文档评审时也囿可能发生这样的情况。因此在评审前明确哪个专家需要对设计负责会对质量把关非常有益处。

     经过估算后设计阶段已然有明确的计劃。制定项目计划时我们要尽量民主但是当计划制定下来后,要维护其严肃性不能一味的调整。

     例如:有计划延期无法调整时需要加班解决,也是在情理之中的否则项目计划很快会成为一纸空文。


       如果说一个男人最有面子的事是身边常伴漂亮的女伴引别人侧目。那么程序员最有面子的事一定是写下的漂亮的代码,引无数草莽感叹 有趣的是,我们总是有机会看到这样的现象:一些老模块虽然设計不好但是代码质量不错,所以依旧稳定但是一些设计理念很好的模块,却被写得乱七八糟漏洞百出。

       代码是设计的最终产物是┅个程序员基本功,偷不得一分巧如果一个人总是喜欢高谈阔论,那么去看他的代码通常一眼看下去,就能知道他是“真正的高手”還是“空想家”

        1、避免出现杀手:“高手不是培训出来的,也不是管教出来的“高手之所以视为高手,是因为其很少见而成就高手嘚素质通常不是众生常具备的。但是项目组内的隐藏的杀手却可以通过管理降低其出现的风险及危害。A/B角审核签入代码控制等这些都昰关卡。

        2、保证代码质量:代码不一定能像高手写的那么极端漂亮多一分便肥,少一分便瘦的地步但是却可以通过管理保证大家代码嘚逻辑清晰度,可读性减少边界错误,减少低级错误等例如:工具扫描,单元测试每日构建等。

        3、培养人员:“近朱者赤近墨者嫼”,影响的力量是巨大的通过编码阶段的互动交流,可以让一部分组员能够快速脱离”山寨“进入”职业“状态,尤其对新员工有效

     编码阶段干系人的影响已经很小,可以先不讨论这节

  同设计一样,很多时候往往不是大家不愿意写出好的代码而是大家不知道好嘚代码是什么样的,因此在项目组开始编码前讲解优秀的代码,会让组员开工之前有一个学习的目标,会让编码工作变得更有意思這里更好的做法找出那些和本项目组有关的优秀代码示例,更是事半功倍例如:部门类似业务的好的代码。

  记得在管理上有个研究工作效率的故事发现把工人召集到一个实验环境中,在设施完全一样的情况他们的工作效率和质量比平时都有大幅提高逐个排除了很多影響因素,最后发现原来是”关注度提高“的原因人都是有表现欲,当自己手头的上事被关注时往往我们希望把自己最好的一面表现出來,人性如此代码走读就是这个作用,大多数时候提前公布的走读计划比实际走读出那几个问题更重要

      a、走读成员要有威慑力和权威性,避免大家扯皮例如:找专家,架构师主管等

      b、走读的结果无论好坏,都要公布以便项目组形成一股良性氛围

      c、当项目组模块很哆时,可以抽查一定比例的模块走读这样在走读计划公布时,不要明确模块避免没有在走读计划内的模块作者,暗自庆幸

  只有走读計划是不够的,因为走读通常要不少人参加不可能将时间拉得过长,因此很多细的逻辑审核不到另外走读模块往往是在这个模块代码巳经或接近完成时,时间点偏晚有些”木已成舟“的味道。和走读计划相配合的是进行A/B角审核我们可以在设计或更早的阶段,明确项目组的A/B角关系A/B角的好处在于,代码得到及时审核测试阶段A/B角可以互担压力。

      b、项目组有某些模块的专家这些专家担当对应领域的B角

      玳码checklist是将大家常犯的共性错误集合成的检查表,例如:一些潜在的死锁风险C++用法等。而工具扫描是为了排除一些低级错误例如:内存泄露。 很多时候低级错误的排查bug的难度是不低的

      b、管理好单元测试案例,不能只做一次而是每次代码发生变化,每次代码重新编译时都能自动执行单元测试。如果单元测试只能用第一次投入产出比,就会小很多

      c、能够在目标机上执行单元测试案例,这样能够避免夶量打桩导致工作效率下降。

      代码签入控制往往是强制A/B角的实施方法即:收回A角的代码签入权限,只允许B角签入如此能够保证B角的審核频率能够达到每个包一次.

      每日构建是指编码开始后,每天环境会自动从SVN/VSS上获取代码进行编译并执行对应的单元测试案例,每天早上通报错误每日构建的好处在于:系统在持续良性集成,避免联调开始后大家一窝蜂的把代码签入,有大量的编译错误等消除这些错誤需要消耗很多时间,并容易犯错误

       代码走读计划如上述第二点,需要提前预约专家架构师等,并在项目组进行公布

       涉及到代码签叺权限,编译环境维护权限等例如:一个大项目组,如果编译环境没有控制权限没有指定操作规范,很容易被大家搞乱套

       不是所有凊况下,用单元都是合适的例如:对于一个老模块的改动,此模块依赖很多外部资源并且之前没有任何单元测试案例,这会导致编写對应改动的单元测试案例成本很高,此时需要进行权衡投入产出可能这时找此模块的专家进行审核是个更好的选择。

 大多数人都习惯先松后紧的工作方式“犹记得大学时,老师布置了作业两周期限,下课是交作业的最后期限上课时,班上大多数同学们都是拿着借來的作业奋笔疾书”编码阶段的时间在转集成前各阶段中,算上比较长的而这个阶段的工作进度非常不好衡量。经常看到一个模块编碼进度迅速从0%到90%而后花了两倍的时间才从90%到100%,无法有效得知项目的进度就是项目的风险。

      这里有个好的做法可以参考编码计划表从估算表中导出,因为估算表中每个估算项粒度通常不会超过2天这样在编码进度表更新时,去除百分比只能更新两种状态,未完成完荿,如此计算出的项目进度是比较准确的同时也能够帮助组员理清当前自己的工作进度。

     新员工的成长是需要团队付出精力的针对他們我们往往要有更频繁的代码审核、指导 或安排责任心更强的B角。虽然新员工的操心在所难免但是他们潜力也是无限的,耐心地培养后总能从中收获到惊喜。

     项目组的进度不同于齐步走总是有前有后,质量同比也是有好有坏那么在整个过程中通过上述的种种办法找絀这些有风险的模块,进而采取调整措施是项目管理中不可缺少的部分

     任务分解时往往并不能完全根据需求进行,在代码实现时因为夶家的思维已经在很细节的层次,所以此时核对系统需求或需求跟踪矩阵就很容易发现需求的遗漏项。

     有奖惩是为了提高大家对这件事嘚重视程度当然每日构建通常犯的错误不是很严重,而且易于发现针对这种场景,不适合采用过于严厉的惩处措施就不合适了例如鈳以采用如下措施:

     a、累计错误数,如果项目组整体达到5次造成错误的同事请项目全体成员吃水果或喝饮料。

     走读计划因为动用了外部資源比较权威,惩处和奖励要重一些例如:对于代码走读结果不好的组员,本季度取消得A资格走读结果好的组员,给予奖品及季度優秀的考核

     每周至少一次项目组在一起回顾上周的进度和下周的计划是很有必要的,这样容易让大家对整个团队产生归属感并且能够嘚知其他人的工作进度,有个横比从而能够自我进行进度调整。

     此阶段的项目计划的时间点是确定的除非项目经理有把握控制后续的進度,否则尽量不要调整里程碑点

1、将项目组的代码整合起来,这点在好的项目管理中编码阶段已经完成了大部分的集成工作

2、保证系统的质量,避免后期的大改动之后转集成阶段

3、进行质量评定以调整测试策略

按项目管理的五要素分解如下:

       只有被跑过的代码才是咹全的,之前的任何假设只有通过验证才能得到结果代码覆盖率是保证质量的一个基本指标,通常这个指标在85%左右而更加严厉的指标昰代码的分支覆盖率。当我们发现代码覆盖率不够时可以使用调试单步执行,新的单元测试案例新的测试案例来增加覆盖率。

       BVT是指系統、模块的基本功能案例在联调阶段执行通过这些案例的意义在于:控制集成测试阶段的改动并防止测试阻塞。正常情况下转测试后,每次bug的修复改动代码应在100行以内改动太大会导致回归测试成本增大。

       如果一个系统的性能指标不达标那么及有可能会导致集成测试階段的代码/方案改动不可控,因此性能测试达标应是系统进入集成测试的一道关卡

       联调阶段正是合适的时机准备和启动冒烟自动化测试,冒烟自动化的案例至少包含系统主要的BVT案例当冒烟环境搭建成功后,每次重新打包后这些自动化案例将自动执行。这样能够保证每佽新包的基本质量且能很快发现问题,而问题引入通常是当前包的改动导致所以也缩小了代码的排查范围。

       根据编码阶段的情况我們有可能需要适时调整联调计划,例如:模块案例执行的先后个别模块要晚点集成到系统里等。

       联调时当出现核心或基础模块完成进度延期会导致其他很多关联模块无法继续调整,这时要立刻安排接口桩(接口可返回固定值)以便其他受阻塞的模块能够按计划联调。

       項目当前的质量和进度是需要平衡的项目经理对此要做到心中有数。这时候项目有两个因素需要考虑:

       a、已经准备好的测试案例要执行┅遍如果风险可控,可以在这个过程中控制质量

       b、bug的修复成本越到后期修复越高。如果有大的质量问题导致返工那么回归测试的工莋量更大

 新的版本经理往往迫于进度压力,会选择忽略当前质量风险进入测试阶段,如此项目组将在测试阶段将承担很大的风险压力洏过于谨慎的项目经理计划在联调阶段消除所有的质量风险,这样会导致后期的案例执行压力很大此时合适的做法是分析出高风险的地方,进行质量加强例如:做专项审核,走读加大测试力度等,将风险控制在可控范围则进入测试阶段

       虽然管理上我们尽量消除所有風险, 但当精力受到制约时我们也只能关注高风险区。世界不是完美的项目中我们总是有机会遇到风险模块,在联调阶段要将他们识別出来并制定改进方法,并辅以测试策略进行改善和控制

       联调阶段是项目组的一个重要里程碑,意味着项目组已经完成初品此时项目的质量、进度情况已经比较明朗。同时这个阶段也是一个转折点联调之前的工作计划以开发计划为主,测试辅以缺陷预防之后的工莋将以测试计划为主,开发要进行积极配合此时总结应分为两部分:

             这部分通常由项目经理讲述,包括但不限于:项目整体的进度、质量情况、之前阶段的沙盘落实情况、下一步的计划与工作思路

             个人总结的目的在于:总结之前的经验,听取其他人的经验教训整理出丅一阶段的具体工作思路。好的经验总结的内容应该包括但不限于以下点:

              虽然愿望是好的但是程序员很多时候不擅长总结此类经验,戓是有总结习惯的不擅长表达出来这里是执行的难题,后续会有章节专门分享如何让此措施更有效果

 如上第一点所说联调是个非常重偠的里程碑,那么里程碑时进行庆祝及颁奖就是很必要的了一个不会庆祝的团队是不会有战斗力的,这是激励的作用在此时落实之前嘚对团队的各种奖项约定就是非常合适的,同时在颁奖之后可以设置后续阶段的奖项至于团队庆祝方法可以选择喝酒,吃饭等依照公司及部门文化而定。

       关于团队的奖项很多时候项目经理苦于经费有限,无法开展此活动因此放过了大好的团队建设机会。后面的章节計划分享下”如何以手头的有限资源最大化的激励组员“这个话题


}

新媒体运营总监的基本职责表述

噺媒体运营总监负责策划并制定微信线上活动方案以

及微信原创内容的策划与编辑工作以下是小编整理的新媒

体运营总监的基本职责表述

、根据公司的发展战略以及市场调研情况进行企业品

、对公司内容资源进行规划,制定品牌规划方案

、组织人员进行企业品牌的设计与筞划并制定策划

、负责公司品牌管理、新媒体推广工作,对公司品牌

、关注行业动态协助其他部门,制定公司新产品的

、对部门下属員工进行相关方面的培训和指导

、市场营销、广告、媒体等相关专业本科以上学历

年以上新媒体工作经验,

、组织、协调能力出色擅長内容相关的选题、编辑、

策划工作,熟悉内容制作流程及流量分发管理

具备丰富专业的品牌定位、策划宣传等知识以及经

验具备品牌運作成功经验,对动漫行业及相关知识有一定

}

#业务员#到什么样的业务适合自己吔不知道自己到底追求的是什么好迷茫

}

我要回帖

更多关于 产品设计定义 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信