沐鸣娱乐


        做好项目管理 ,才是软件开发的关键(做好项目管理,才是软件开发的关键环节)

        分享职场生活 、职场攻略、领导同事相处技巧和创业资源

        文|洪生鹏

        软件开发过程中,往往有很多细节和意外让我们的计划赶不上变化 。譬如需求变更 、人员流动等。为了保证项目进度可控 ,有效规避项目在开发过程中的风险 ,项目管理的作用在软件开发中的重要性可想而知 。

        项目管理大致有项目计划和开发团队管理两方面 。

        建立项目计划

        (1)设计总体架构

        针对项目的实施需要,采取适合项目且相对成熟的框架结构。

        前些年,我在某集团技术部门担任技术员时 ,那时公司的产品总出现各种各样的问题,例如日常发布系统时或访问量稍微过大时,系统就会出现故障,一天下来收到了100多份bug邮件,影响了业务系部门的正常使用。

        之所以出现这么多的bug,是因为无论业务系提什么需求,技术部都全盘接受了 ,按理这样也不会导致出现这么多bug,技术部服务于业务部,是正常的 ,毕竟公司的主要收入在业务部。可问题是,数据字典是每个开发人员自己设计的,导致大多数数据字典冗余、甚至设计不合理 。各自只关心自己负责的模块。等到模块之间有关联时,问题就接踵而至了。

        那时候公司用asp.net mssql server技术,并没有采用相应的框架,代码冗余多,后来团队经过两个多月的整改,系统才勉强能正常使用。

        (2)控制可扩展度

        扩展度过大 ,将提高系统的复杂程度,延长开发时间;扩展度过低 ,会直接影响系统的二次开发与维护 。控制系统的可扩展性 ,能提高开发效率,降低系统维护的难度。

        不知你有没有觉得 ,项目前期没有做好,后面复制粘贴的现象就会到处可见,导致冗余的代码越来越多,维护越来越困难 。

        (3)建立基础设施

        合理分配软 、硬件等基础设施的部署所需要的时间与成本 。

        (4)划分开发任务

        利用WBS(Work Breakdown Structure ,工作分解结构)对可交付结果进行分类与划分。每个项目划分为多个不同阶段 ,每个阶段又可以分为多个工作包(Work Package),工作包是WBS里最小的可交付结果,最后从工作包中分解出多个开发任务列表,分配给各个开发人员。

        (5)部署开发进度

        从需求调研 、进行概要设计、进行详细设计 、执行开发任务、测试、联合调试、SIT部署、生产环境部署都常常延误,项目经理必须有谈判能力  、预判风险能力 、控制能力。项目经理就是在满足各方项目干系人的利益的情况下,推动项目向前发展,最后达到项目验收。

        (6)测试项目成果

        每个工作包都应该同步部署测试工作,提高项目的质量 。对出错BUG的工作包应该由测试人员以文本方式记录,向开发人员展示错误所在,让开发人员及时进行修改。

        管理开发团队

        (1)组建团队

        按照工作任务与项目时间的前提条件建立团队,按团队职责分配人员,一般小组控制在6~10人之间 。当团队人数超过20人时,应该考虑把团队分解成2个独立团队 ,负责不同的开发任务 。

        (2)分配开发任务

        在每个迭代周期内(一般是15~30个工作日),应该把每个工作包进一步细分为多个开发任务,开发任务的开发时间应该控制在15个工作小时以内 ,如果开发任务的开发时间超出15个工作小时,应该考虑把任务再度细化。而开发任务应该以自由选择的方式分配给每个组员。

        (3)跟进开发进度

        在迭代的前期举行一次会议,让组员了解开发的进展及流程 ,并以自主选择的方式分配开发任务。用工具记录开发流程的进展 ,在每个工作包完成开发后应该进行性功能的测试,并以文本方式记录测试结果。

        做好项目管理,才是软件开发的关键(做好项目管理,才是软件开发的关键环节)

        每天举行一次10多分钟的站立会议,让组员汇报昨天已完成的开发任务 ,当天将要做的任务,以及开发过程中所遇到的问题。

        并在每周末举行一次例行会议 ,交待总体进程 。

        在迭代末期举行一次冲刺会议,总结项目的进展,交行已完成的任务,回顾该迭代周期内所遇到的问题,为下一个迭代做好准备。

        期间千万不要忽视开发规范和代码审查。

        关于代码规范,感兴趣,请浏览《》

        代码审查 ,顾名思义 ,是一个检查代码并确保其能正常工作的过程,并且尽可能的优化代码。

        有人会对代码审查的流程反感 ,我写的代码还要别人审查,难道怀疑我们的编码能力。

        其实不然 ,有人检查我们的代码其实是件好事 ,能减少因为粗心的犯错带来的风险。 即使再好的开发人员也会有大意的时候。

        做好项目管理,才是软件开发的关键(做好项目管理,才是软件开发的关键环节)

        在团队中的每个人都有自己的强项 ,通过代码审查。有些人可能会提出一个更聪明的解决方案,用一个更适合的设计模式来降低复杂度并提高性能 。

        通过别人的审查 ,他们可以察觉到可能的问题和发现能改善的地方,对代码提交者的编码水平提高有很大的帮助。

        审查者则可以通过读别人的代码学习到很多新知识和技巧,并找出适合他们自己工作的解决方案。

        (4)系统测试

        对每个已完成的工作包进行适时的测试 ,保证系统质量与性能 。对测试结果进行文本的记录 ,并把测试结果与绩效工资收入挂钩 ,并以真实数据计算组员的绩效收入 。

        测试人员应该以文本方式记录bug,并与开发人员共同工作的,把突出的缺陷演示给开发人员,以提高修改的效率 。

        这里的绩效考核就要慎重了,搞不好会导致团队人员的流失

        (5)解决开发中的问题

        对开发人员进行前期培训,可适当按工作能力分配任务 ,指导组员的开发。当遇到问题时应该在当天的站立会议时即时提出 ,避免影响开发进度。

        (6)流程化管理

        流程化管理(process management),是一种以规范化的点对点的卓越业务流程为中心 ,以持续的提高组织业务绩效为目的的系统化方法。它是一个操作性的定位描述,指的是流程分析、流程定义与重定义 、资源分配 、时间安排、流程质量与效率测评、流程优化等。因为流程化管理是根据团队的具体情况而设计的,因而这种流程会随着内外环境的变化而需要被优化。

        针对一个IT软件管理来说,应该抓好以下四大流程管理 :

        • 编码规范的制定与执行;
        • 开发任务流程化的制定与执行;
        • 开发进度流程化的制定与执行;
        • 测试成果的制定与执行 。

        流程化的管理减少了团队成员盲目与重复的去工作,提高了团队的工作效率。同时也提高了团队管理者的效率 ,为管理提高了一个便捷的管理工具,所以一个高效团队的打造 ,离不开流程化的管理 。

        做好项目管理,才是软件开发的关键(做好项目管理,才是软件开发的关键环节)

        (7)需求变更,修改项目计划

        在开发过程中,遇到需求变更,要做好详细的文本记录,让客户了解需求变更的实际情况和开发方为之所付出的成本代价。与客户探讨 ,让客户了解计划修改对项目进度所造成的影响 。同时为开发人员争取工作量。

        笔者曾遇见过 ,项目开发过程中,需求变更了,可给予相应的开发人的工作量却没有任何变动 ,这对开发人员很不公平 ,开发人员只好通过加班加点来完成任务。这样很容易导致人才流失,做完了这个项目,组员都陆陆续续辞职了。

        软件开发管理,必须得提高软件团队管理能力 ,管理者就要利用一切机会让团队成员感受到团队的力量  ,让他们不孤单,不委屈,并通过每一次的开发任务让他们不断成长 。

        做好项目管理,在软件开发中不容忽视,只有做好了 ,才不会影响项目进度 ,才能推动项目向前发展,最后达到项目通过验收,顺利完成项目的开发任务 。

        【END】

        相关新闻

        联系我们
        联系我们
        分享本页
        返回顶部

          XML地图