可行性研究
- 软件工程中是如何去做可行性研究的,通常从三个方面着手做:
- 经济可行性。从成本和收益角度分析,看投入产出比。不仅要分析短期利益,还要分析长期利益,看是不是值得做。
- 技术可行性。软件项目最终是需要人通过技术来实现的,所以要分析技术上是不是可行,如果有技术上解决不了的问题又能否规避。
- 社会可行性。社会可行性涉及法律、道德、社会影响等社会因素。比如,触犯国家法律的事情肯定不能做;产品如若不符合道德标准,可能带来较大的社会负面影响,那么也要慎重考虑。
怎么样去管理一个软件项目?
项目计划
- 项目计划是保障软件项目成功非常重要的手段,制定计划的过程,可以让你对项目有全面的了解,跟踪计划让你知道项目进展情况,出现问题也可以及时调整。
- 将任务分解、估算时间、排路径,三步就可以制定出一个项目计划,制定计划不要追求完美,制定好一个初步计划后,就可以先按照计划推进起来,进行过程中还可以继续调整细化。设置里程碑可以有效的保证项目的按时交付。
流程和规范
为什么要有流程规范?
- 提升团队效率:从个体来看,因为流程规范的存在,确实可能存在效率降低的情况,但从团队的角度来看,好的流程规范反而是提升效率的。这其实很像我们生活中的红绿灯,用一个简单的规则:红灯停绿灯行,来约束车辆行人按照指示灯行进。
- 将好的实践标准化流程化,让大家可以共享经验:站在流程规范的角度看软件工程的开发模式,它也是源自实践过程中,有些厉害的项目经理发现了好的、可以提升软件质量的开发实践,不断总结改进,最后变成了流程,让普通的项目经理按照这一套流程,也能做出不错的软件。
- 借助流程规范,让项目管理从人治到“法治”:好的项目管理,不需要直接管人管事,而是管理好计划和流程规范;项目成员不需要按照项目经理的指令做事,而是遵循计划和流程规范。
流程规范,看起来是约束,实际上你用的好的话,不仅可以提高团队效率,还可以将好的实践标准化流程化,让大家可以共享经验,还可以有效的管理项目。
如何制定好流程规范?
- 第一步:明确要解决的问题:要制定一个流程规范,第一步就是明确你是要解决什么样的问题。项目中很多问题,都可以思考是不是能通过流程解决。
- 第二步:提出解决方案:对于问题,也不用着急马上就想着用流程规范,可以先思考解决的方法,有了方法后再进一步思考是否能提炼流程规范。
- 第三步:达成共识,推广执行:在流程规范提出后,还需要得到大家认可,只有大家认可,达成共识,才能共同遵守,保障制度的执行。
- 第四步: 持续优化,不断改进:流程制定后,在实际执行的时候,难免发现一些不合理或者不科学的地方,这时候就需要对其进行调整。
“软件工程”和“质量工程”需要依靠架构技术,而不是依靠 CMM 和 QA 管理流程。一切工程问题,首先要思考能否通过技术解决,当前技术无法解决的问题,暂时由管理手段代劳,同时不停止寻找技术手段。
项目管理工具
- 禅道:为数不多提供开源版本可以自己搭建的;
- Worktile:集成了即时消息软件;
- TAPD:腾讯出品,可以和腾讯的服务很好整合,例如企业微信和腾讯云;
- 云效:阿里巴巴出品,可以和阿里的服务很好整合,例如阿里云和钉钉;
- DevCloud:华为出品,和华为云有很好的整合。
那么该如何选择适合的工具呢?
- 从功能上来说,基本上,上面提到的每一款产品都能满足日常项目管理的基本需求,建议从项目特色、团队成员和价格服务等因素综合考虑。
- 例如说你的项目完全是微软技术栈,就可以考虑使用 TFS;如果你深度使用阿里云和钉钉,那么就可以考虑阿里的云效;如果你想自己搭建,那么就可以考虑 Jira 或者禅道。
- 这些产品都有免费版本,可以先试用,你可以仔细对比后,根据自身的情况再最终决定。
软件项目管理工具的发展历史:从完全手工方式管理项目,到借助计划工具分解安排计划,到基于 Ticket 跟踪管理任务,再到基于看板的任务可视化。每一次工具的升级,都是对项目管理工作的一次简化。合理的使用项目管理工具,可以帮你极大提高管理效率,起到事半功倍的效果。最后,对于日常项目管理的问题,也可以多思考是不是可以由工具或者技术手段来解决的。
风险管理
风险管理就是指在项目进行过程中,识别可能的风险,对风险进行评估,并加以监控,从而减少风险对项目的负面影响。
如何对风险进行管理?
- 第一步:风险识别,识别可能的风险:风险识别,就是看项目中有哪些可能的风险,因为只有找出来有可能存在的风险,才会有后续的步骤。
- 10 个项目死亡的信号:
- 第一版做太多功能 ;
- 太依赖新技术平台;
- 与公司另一个有份量的产品竞争;
- 团队人手不足;
- 复杂的问题,需要复杂的解法;
- 成员开始隐藏进度落后的事实和原因;
- 不断更改、增加的需求
- 2.0 症候群 - 非要更大、更强、更美 ;
- 产品没有市场立足点;
- 你根本无法解决的大问题。
- 软件项目的风险主要分成以下几类:
- 项目风险:项目预算、进度、用户和需求等方面的问题;
- 人员风险:人员离职、人手不足等问题;
- 技术风险:采用的技术所可能带来的风险;
- 商业风险:与市场、产品策略等有关的商业风险;
- 第二步:风险量化,对风险进行评估量化:在风险识别出来以后,需要从两个方面去评估:发生的概率多大?发生后,后果多严重?对于概率大,后果严重的风险,需要高优先级重点考虑;对于概率不高但后果严重的问题也要考虑,不过优先级略低;对于概率高但后果不严重的风险事件,可以优先级很低或者不考虑;对于概率低后果不严重的,则可以不予考虑。
- 第三步:应对计划,对风险制定应对策略:在评估后,需要后续进一步考虑的,就要制定好应对的计划。针对风险,主要分成以下几个策略。
- 回避风险——更改导致风险的方案:回避风险很好理解,就是要对可能发生的风险,放弃或者修改导致风险的方案。这样就从根源上消除了风险,简单而彻底。
- 转移风险——将损失转嫁出去:在软件项目中,举例来说,如果你的团队对于服务器管理不是很在行,有可能会遇到服务器宕机或数据库丢失数据等风险,就可以考虑购买云服务,这样云服务商会帮你解决服务器宕机或数据库丢失的问题,而且万一宕机或丢数据了他们也会承担一定的责任。
- 解风险——降低风险发生概率或减少可能造成的损失:缓解风险就是在风险发生前采取一定措施,降低风险发生的概率,或者减少风险可能造成的损失。
- 接受风险——明知山有虎偏向虎山行:还有一些风险本身很难避免,或者去应对这个风险的成本超过风险发生后造成的损失,那么就没必要应对,直接选择承担风险后果就好了。
- 第四步:风险监控,对风险进行监控预警:风险在没发生的时候并不会变成问题也不会造成损失,如果风险可以监控,可以预知风险即将发生,或者可以在风险发生后,第一时间知道,那么就可以马上对风险进行干预,避免变成更大的问题。
如何写好文档?
- 从模仿开始:模仿就是最好的写文档方式,尤其是现在网上可以参考的例子也很多,当你写文档不知道该如何下手的时候,不妨去找一个类似的文档,模仿着写试试。
- 从小文档开始:一开始写文档,内容不需要很多,可以从小的文档开始。就像前面我提到的,记一些笔记,不要在意格式,一两句话,一些截图,就是不错的笔记。
- 从粗到细,迭代更新:写得越细则无用功越多,最后,你甚至会因为不想改文档而抵触不同的意见。而从粗到细逐步迭代的方式就好多了,一开始的目的是为了梳理清楚思路,只要脑图这种级别的内容就好了,然后进行调整。因为文档很粗,调整也方便,等到基本确定后再写细节,就不会有大的反复。
- 一些基本的画图的技巧:有人说:“字不如表,表不如图,一图胜千言”。这个观点我非常认同,好的图能帮助你简单而直观地把问题说明清楚。