作者回复: 👍这些风险都很真实。
给你一些应对方法上的建议供参考。
1. 实习生比例高问题我以前遇到过,靠培养是很慢的,再聪明也需要两三年时间才能独当一面。建议要适当社招补充有经验的程序员,不然管理者和现有的资深程序员会很辛苦,要大量时间救火,短期看大量实习生省钱,长时间看其实成本更高的。
2. 需求评审是很必要的,需要落实,而且要安排多次,刚开始有初步需求文档的时候就要做,这样修改成本低!另外建议产品设计要多用原型设计,原型设计是很好的避免需求模糊的方法,也可以帮助产品设计事先把很多问题想清楚。
3. 还是在第一条里面提到的,不仅要培养人,更要招人开人。
作者回复: 我觉得你提到的借人参与两到三个迭代的方案是非常简单有效的办法,一个敏捷团队,如果大家没这个意识和水平,是很难推动的,但是当有几个人一起,走顺了流程,后面相对就照葫芦画瓢容易多了。
另外辅助培训也是很有必要的,有了一些基本的概念,再执行起来阻力会小很多。
对于多年的项目经理转PO,是要一个过程的,毕竟已经喜欢了以前的一套东西,一时之间很难转变观念。沟通时,建议客观分析利弊,优缺点,尤其是将一些事情和他的利益挂钩,会更有参与度一些。比如说让他意识到:这个试点项目成功对他未来的绩效、职业前景都有好处。
作者回复: 我觉得你对于任务的优先级、降级处理策略挺好的👍
有时候位置不同,看问题的角度也不同。
比如说经理分配并行任务,在他看来这并不是并行任务,而是两个或者多个任务同时分配给你,你要在指定时间内都完成。但并不是说你必须要同时做这几件任务,你可以串行也可以并行,他只关心你最终能按时完成所有的任务。
从员工角度看,同时接到多个任务,会有压力,想同时做好几件事,但往往同时做效率低,不容易做好。这时候需要做的就是像你那样排好优先级、制定好计划。
除此之外,还要设置里程碑或者关键检查点,这样当有可能的风险出现,能及时发现,并可以及时调整,毕竟对于Boss来说,风险没发生还是无法直观感受,但是里程碑没有达到目标就是很直观的信号,也更有说服力,这样就可以根据里程碑的情况及时沟通及时调整。
作者回复: 这种确实有点困难,有两种策略你可以考虑:
1. 减少对人的依赖,让人来了跟流水线工人一样可以马上上手。
如果你的项目类型比较类似,其实可以考虑将相同部分通过架构简化,通过配置或者定制化适用于不同项目。
补充自微博回复:
@bobyuxinyang: 尽量开发流程标准化,然后文档,文档,文档。。。
2. 培养现有的人,提升现有人能力,归属感,减少离职率。
都不容易做到,但都可以试试,或者你也可以想到更好的办法。
作者回复: 👍
很多时候没有做Plan B,只是没意识到风险的存在!等你意识到风险的存在,以后就会条件反射的要考虑Plan B。
在实践中自然会摸索出很多适合你自己的应对风险的方案。
作者回复: 其实要考虑时间维度,你只要把时间范围成本三要素的约束加上就好了。
因为时间变了,这三要素的约束也在变。
给你举个例子:一个创业公司,人少缺钱,这时候人就是个很大的风险,有人离职项目就很危险,这其实本质就是三要素的成本;等到熬过这阶段,进入发展阶段,活下来有钱了,人也多了,相对来说,成本就不是最大的约束了,人的风险就没那么大了,这时候就是求快,时间会变成约束,所以如果你的技术和架构更不上开发的效率,就会成为新的风险。
作者回复: 是的,包括做技术选型的时候,也一样要考虑风险。
作者回复: 关于需求优先级的问题,这个我建议你试试敏捷开发,或者采用迭代开发,因为每个Sprint时间固定,所以逼着你每次Sprint计划时选择优先级最高的需求,这样其他无关紧要的需求可以无限后延。
技术选型是个很重要的事,后面还会再讲讲,希望下次选型时能跟慎重的分析论证。
做项目,想不犯错误也是不现实的,最重要是每一次比上一次做的更好,上一次犯的错误争取不要再犯,这样自然能一次比一次做的更好。
作者回复: 软件工程是围绕软件项目开发过程的,对整个开发过程的组织,对方法的运用,对工具的使用。
软件项目管理的管理对象是软件工程项目,通过管理手段使软件项目能够按照预定的成本、进度、质量顺利完成。
软件工程为你提供的科学的软件开发方法,而软件项目管理是一种实践,通过管人管事将这些方法落到实处,将工具真正应用推行起来。
就好比@老赵 软件工程学的好,知道单元测试在软件工程中的重要性,但是他不做项目管理,所以无法有效在项目组内推行单元测试。如果他同时也做项目管理,那么就会将单元测试作为一种实践在项目内部推行。
软件工程学的好不好,就在于你是不是能明白软件工程的众多理论知识,知道什么是最佳实践,什么情况下用什么开发模式是最好的;项目管理做的好不好,唯一的检验标准就是结果,项目经理的权威就在于你做成了多少项目!
软件工程就是”知“,项目管理就是“行”,做到“知行合一”才能做好软件项目。
对于后果不严重的,即使发生无严重后果,所以可以不予考虑。比如说你交给一个新手做一个UI界面,可能会导致界面不美观,但是不美观用户可以接受,那么并不是什么大问题。
作者回复: 赞,有风险意识是很重要的一步👍
后面就可以针对性去识别和预防
作者回复: 说到这个问题,回头技术选型那篇还要再讲讲。
作者回复: 这个问题已经超出软件工程范畴了,毕竟软件工程只能教你怎么去识别风险应对风险。
我个人建议:
如果你只是普通项目成员,那么你可以应用这些知识,识别可能风险,向负责人提出可能风险和应对建议。至于最后结果,可能不是你能控制的。另外有时候由于信息不对称,作为普通项目成员了解的信息有限,看到的结果不一定是准确的。
如果你是项目负责人,则应该重视风险管理,不只是发现,还应该做出具体的应对措施。