管理人员常见面试问题
一般管理层面试的免提都比较深入,所以在面试管理层的时候我们常常要从容面对,做到举一反三,大家来看一下以下的常见问题及参考回答吧:
1. 范围、时间、成本,这三项中哪些是可以由客户控制的?
答:范围、时间、成本,是项目管理中常说的、相互制约的三角关系。任何一方改变都可能牵扯到其他两方的变动。项目管理的本质,就是在保证质量的前提下,寻求这三者之间的最佳平衡。因为客户是需求方和投资方,客户有要权对这三者进行控制,希望完成更多的功能,成本降到最低而时间又是允许的,这是最理想的。但同时,它们之间是矛盾的,相互制约的,增加的项目范围,要么增加成本(如增加人手)、要么延长时间。在项目实际工程中,不同的客户关注点是不一样的,但一般更关注项目范围,提出他们的需求----项目要完成的工作,和承包方讨论交付时间和费用。承包方,一般应在满足客户的需求情况下,在时间、成本上和客户进行不断交流、谈判。从项目管理的角度看,最好固定其中一项,其他两项可以根据实际状况来调节,最终保证项目质量。
2. 谁该对项目中所要付出的一切做出估算?谁有权设置最后期限?
答:项目的成功是团队协作的结果。在对项目进行估算的时候,也应该让相关人员参与,即由参与项目各个环节的人做出符合实际的估算,获得项目总的估算结果。项目估算方法有两种----从顶向下和自底向上,多数采用“自底向上”。如果采用“自底向上”的方法,项目的最后期限根据估算获得,然后由相关的管理委员会(例如Software Release Steering Committee)来决定。但由于一些客观因素或市场需求,客户、市场部门或企业最高层可能设置了最后交付时间,没有商量余地,这种情况也常常发生。对于这种情况,根据上面决定的日期,实行“从顶向下”的估算,时间确定了,可以调整的是资源和项目范围。
3. 减少交付的次数,或是减少每个交付中的工作量,你喜欢哪种做法?
答:根据项目类型和项目进行中的实际情况来决定。如果项目规模比较大,时间比较长,那就应增加交付次数或者减少每个交付中的工作量,以便及时考察进展,保证项目进度。
在传统的软件项目中,开发周期比较长,往往减少交付的次数,能更好的控制质量;而现在,有部分公司比较倾向于敏捷方法,喜欢减少每个交付中的工作量,交付周期只有几周(最短的周期,可能是1周),拥抱变化,更好、更及时地满足用户需求。而对互联网上的Web应用软件开发,“减少每个交付中的工作量”是比较好的策略,力求及时获得用户的反馈,将用户的需求及时融入新的版本,及时发布出去,赢得竞争市场。例如,“永远的Beta”的软件工程思想。
4. 你喜欢用哪种图来跟踪项目进度?
答:还是要根据项目的特点来决定,具体项目具体对待。当然,有时也不能由自己决定,而是取决于公司已有的工具和习惯。对于复杂、规模大的项目,可能要借助甘特图和网络图来分析和跟踪进度。简单、规模小的项目,根据进度报告百分比和表格跟踪就可以了。
5. 迭代和增量的区别在哪里?
答:软件开发不是一蹴而就,其过程犹如雕琢工艺品,由无形到有形、由粗到细,很难一次就开发出一个功能完善、强大的版本,而往往是分阶段进行,一个版本接一个版本地发布出去。软件开发分阶段可以通过两种模型来描述,即增量模型和迭代模型。
增量模型描述软件产品的不同阶段按产品所具有的功能进行划分,先开发主要功能或用户最需要功能;然后,随时间推进,不断增加新的辅助功能或次要功能,最终开发出功能强大且全面的、高质量的、稳定的产品。
迭代模型描述软件产品的不同阶段是按产品深度或细化的程度来划分,先将产品整个框架建立起来,在系统初期,已经具有用户所需求的全部功能。然后,随时间推进,不断细化已有的功能或完善已有功能,这个过程好像是一个迭代的过程。最终的目标是一致的,也是为了实现一个强大的、功能完善的,高质量的、稳定的产品。
6. 试着解释一下风险管理中用到的实践。风险该如何管理?
答:风险管理就是通过风险的识别、预测、估算和衡量,选择有效的方法和手段,对风险进行预防、避免、降低或者转移的管理过程。
风险管理的实践很多,包括头脑风暴、风险列表(checklist)等,例如人们常采用十大风险清单。在项目进行中,不时地更新和处理项目当前风险最高的前十项风险,以保证项目不脱离主轨道。因为项目中大大小小的风险会很多,而十大风险清单就是抓住重要的风险并及时处理,一些相关联的小风险可能也就随之消失。从这里可以看出,风险也是动态的,需要经常地、及时地评估当前的风险,例如每周或每两周进行一次风险评估:关键的项目,甚至可能每天做一次评估。
7. 你喜欢任务分解还是滚动式计划?
答:根据项目特点来定,一般会选用任务分解的计划,责任清楚,可控性更强。滚动式计划的灵活性比较强,适应性比较好,但容易引起大家对计划不够重视,计划能力降低,或者可控性会差些。有时会将这两种方法结合起来使用。
8. 你需要哪些东西帮助你判断项目是否符合时间要求,在预算范围内运作?
答:前提是这个项目的进度计划和成本计划符合项目实际情况,并不断随着项目的时间发展而滚动更新;还要确保收集的进度和花费的成本是真实可靠的:项目的范围还不能影响到时间和成本的规划。满足上述三点,就可以根据项目时间与计划的内容进行对比,来判断项目是否符合时间要求,在预算范围内运作。常用的方法有基线对比法和挣值法。
9. DSDM、Prince2、Scrum,这三者之间有哪些区别?
答:动态系统开发方法(Dynamic System Development method,DSDM)是众多敏捷开发方法中的一种,它倡导以业务为核心,快速而有效地进行系统开发。该方法的详细内容可以参考《DSDM业务中心框架开发方法(第二版)》。这种方法主要是在英国应用比较广泛。一般来说,敏捷方法适合于规模比较小、变化比较快(需求不够稳定)的项目。敏捷开发的方法很多,包括下面所说的Scrum、自适应软件开发(Adaptive Software Development,ASD)、Crystal方法和特性驱动开发(Feature Driven Development,FDD),可以参考《敏捷软件开发生态系统》。
PRINCE2(Projects in Controlled Environments2)为项目管理提供了一种结构化的方法,这种方法最早是在1989年由英国政府计算机和电信中心(CCTA)开发的,作为英国政府IT项目管理的标准。PRINCE2如今正日益流行,是英国项目管理阶段,保证让所有资源得到有效的控制。依靠严格地监控,项目在控制和组织的方式下得到执行。详细参考:http://zh.wikipedia.org/wiki/PRINCE2。
Scrum(英语的含义是橄榄球里的争球)是一种迭代式增量软件开发过程,通常用于敏捷软件开发,包括了一系列实践和预定义角色的过程骨架,其主要角色包括同项目经理类似的Scrum主管角色----负责维护过程和任务,产品负责人代表利益所有者,开发团队包括了所有开发人员。在每一次冲刺(一般为15到30天周期),开发团队创建可用的、可随时推出的软件一个小版本(增量)。每一个冲剌所要实现的特性来自产品订单(product backlog)。产品订单是按照优先级排列的工作需求。在冲剌的过程中,没有人能够变更冲剌订单(sprint backlog),这意味着在一个冲剌过程中需求是被冻结的。管理Scrum过程有很多实施方法,从白板上的即时贴到软件包。Scrum最大的好处是它非常容易学习,而且应用Scrum不需要太多的投入。详见:http://zh.wikipedia.org/wi/index.php?title=Scrum&variant=zh-cn。
过程方法的应用,同样由项目规模,业务特点(需求是否稳定)等决定,而且还受企业文化、流程和领导意识等影响。如果需求稳定、项目规模比较大或周期比较长,一般会选用PRINCE2;相反,可能会选择DSDM或Scrum,后两者没有本质区别,只是具有不同的最佳实践。
10. 如果客户想要的东西太多,你在范围和时间上怎样跟他达成一致呢?
答:首先要向客户说明,如果在某个时间内去做不可能完成的工作,其结果必然是质量得不到保证,或者所花的成本过大。实际上,没有客户想做赔本的生意,每个客户都会重视质量,而不愿意损害自己的利益。
然后,和客户一起,按需求重要性、紧急性等对需求进行分类,分为不同的等级,然后从优先级高的需求开始,来估算不同优先级类别的需求实现的工作量。设定几个不同的开发周期或交付时间,从而由用户做出选择,例如:
只做优先级最高的那类需求,开发周期需要3个月;
做优先级最高和优先级高的那两类需求,开发周期需要7个月;
做优先级最高、高和中等的共3类需求,开发周期需要12个月;
所有需求都实现,开发周期需要18个月。
用户可能选(2),先完成两类需求,签订合同。等这合同履行很好之后,再继续下一步的开发。
管理人员常见面试问题的评论条评论