谈谈软件的项目管理之道(一)

本人学了7年电子,毕业后从事软件开发4年,磕磕绊绊,一路走到现在。今天所写的文字权当是个人的一些感悟和心得吧。

谈软件的项目管理,就不得不谈软件项目的两个构成要素:软件项目和实施项目的人员。下面我就按照这两个要素分别谈谈。

(一)软件项目

首先是软件项目的管理。我们为什么要管理软件项目?为了不让软件乱七八糟从而能工作么?这只能说是低水平的目标,而我们最根本的目标,是开发高质量的软件。什么事高质量?窃以为就是满足客户的需求,使用户使用起来不仅感到需求得到满足,更感觉非常方便,快速,两个字“巨爽”。这其实包含了两种境界,a)满足用户所有的需求;b)用额外的性能或性能给用户惊喜,以自己的创意和审美,构建一流用户体验,并把它灌输给用户,让他们也产生认同。就想乔帮主所做。不过这需要极高的天赋。

虽然我们大多数做不到第二个境界,但是我们把第一境界做好就足以立稳脚跟。那么,如何才能开发出高质量的软件呢?个人理解,要想开发出高质量的软件,那么第一要素就是非人化,即使软件的质量尽量的不要受人为因素的影响,更不能将其依赖于个别几个人甚至个别某个人的身上。工作期间,小组中某个leader或某个大牛离职,造成项目的停滞,公司中一时没有人可以接手的现象屡见不鲜。新人在项目压力下因为没有时间去理解消化原有的软件设计架构和思路,就只能按照自己的思路继续恣意的修改代码,导致代码越来越混乱,软件也没有一个统一的清晰的思路作为支撑,于是软件越来越难以维护。如果软件的开发过程中再没有相应的需求文档,设计文档,测试计划,乃至回归测试,那么好戏就越来越热闹了,需求无据可查,代码除了一点过时的注释无法理解,功能没有测试的检测,那么基本上就可以想怎么来就怎么来了,直到把项目改死算。遗憾的是,很多公司,没有吸取教训,依然我行我素。看了难免让人感慨唏嘘。

因此,我们管理软件首要原则就是,一定要让软件项目非人化,就是说,不管公司什么级别的人离职,都绝对不能导致项目停滞不前(软件走向混乱就是一种停滞不前,打个比方,这两种方式就像是两种死刑,一种是枪决,另一种是凌迟,最终都会死,只不过后者慢一点而已)。 其实,归根结底就一句话,就是将所有人的工作成果尽最大可能的留在公司。那么我们怎么做呢?

首要的措施就是项目的文档化,也就是凡是项目的重大决定和事件我们必须有记录,我们不追求事无巨细的文档,因为那毫无意义,容易过时,而且还超级耗费精力。但是绝对有必要保存项目的需求文档,软件设计文档,测试计划,测试报告。需求是一切软件设计,架构的根,只有理解了需求,我们才能更好地理解软件架构和思路。而设计文档就更不用说了,基本上记录了软件的思路,架构,流程,实现方法,乃至类图等详细内容。当然测试计划和测试报告就更重要了,测试计划基本说明了最初软件准备实现的功能,而测试报告测精确地记录了那些功能实现了,那些没有,那些地方有bug,那些地方有欠缺,那些地方有待优化。

第二个措施就是小组化,在软件的实现过程中,最好有两个人一起协同开发,不要完全依赖于某一个人,这样可以避免个人思路误入歧途,写出的代码晦涩难懂,还可以在有问题的时候一起商量,更可以不让这部分软件被一个人的水平所左右。当其中有人突然离职时,也不会造成没有人能接手的现象出现。这对于贯彻同一个软件架构和思路至关重要。

第三个措施就是流程化。所谓流程化,就是说在项目的每个阶段都要有明确的负责人,这样才可以让项目不陷入无人管的境地,在有人负责的情况下,就要充分发挥负责人的功能,使之成为该阶段的项目经理,尤其统一协调各种人员和工作,以及讨论技术方案召开必要的会议等等,这样做既可以增强员工责任感和参与感,更可以锻炼其能力,给他带来收获。同时也要在每个关键节点都有相关的review人员,哪怕只是简单的讨论和提问,然后由review人员将项目迁移到下一个阶段。这也意味着,项目要模块化,因为一个完整的功能基本上会牵扯到很多模块,这样当自己的模块代码被别人修改时,必须得经过自己小组内的人员sign off才可检入代码,这个流程必须走,我们后面具体谈到SVN部分时还会谈到这个问题。

第四个措施就是规范化,从我们常说的coding rule到文档格式,从新人的生活带入,到技术培训,从显示信息用语到界面风格,等等等。为什么这些归纳在一起作为规范化的范畴呢,因为,这些其实都是说将我们很多人开发的同一个软件让客户感觉就放佛出自一个人之手,给人一种非常专业的感觉。coding rule可以让代码风格统一,同时避免很多经验错误;文档可以让被记录的事件风格统一,也就是说该记录的必要的地方都被记录,否则你想想任凭每个人自己去写设计文档,难免有人考虑不周,有些重要的地方没有考虑,因此文档风格即可以增加review文档的效率,也可以避免新人水平或者老人遗忘造成的重要遗漏,使得被记录的事件不依赖于人。而新人的生活带入和技术培训,更是为了把新人的生活状态和技术水平提高到一个基本的工程师水平;而界面和显示信息等,完全就是站在客户的角度看这个团队的规范化(专业化)怎么样。

第五个做到非人化的措施就是自动化,对了,所有可以由机器自动完成的工作,尽量全部让机器自动做。人所做的工作就是第一次构建这个自动化所需的工作,只做一遍,以后就让机器自动执行即可。尤其是测试。只有自动化,才可以避免人员因为操作失误,情绪不好,或者忙碌忘记或者疏忽忘记。这里需要说明的一点就是,一定要珍惜QA的劳动成果,所有的bug不管有没有时间修,一定要记录在bug系统中。还有就是测例才是把需求文档,设计文档,测试计划,测试报告真正落实到实处的东西,所以一定要珍惜,处理recase和regold的时候一定要慎重再慎重。

好了,非人化部分基本就告一段了,关于软件项目管理的心得在后续的文章中继续。

时间: 2024-10-21 12:20:20

谈谈软件的项目管理之道(一)的相关文章

谈谈软件的项目管理之道(二)

上一篇杂七杂八的说了说软件项目的问题,这一篇说说码农本身.最近事情一直比较忙,没来得及更新,直到刚看见公司代码里有同事在头文件里加了一个函数和.cc文件的一个函数实现的功能一模一样,甚至代码都完全一样,可是这哥们就这样随心所欲的增加了代码的重复,实在是无语.感慨之际,迫使我今晚把这篇文章赶出来.上次还有评论说,软件的管理不是要非人化,而是相反,应该更加人性化.我个人的理解是,项目本身的设计,实现,和测试应该尽量减少对人为主观因素的依赖,对于对开发者的管理,那必然得人性化.好了,不废话,开始.  

项目集管理:战略项目与多项目管理之道

宣晓锋 项目管理者联盟总经理,PMP Program Management,项目集管理,是指对多个关联项目的集中管理与协调管理.相对于对多个项目实施单独管理而言,实施项目集管理的管理效果表现为收获更好的整体收益与控制效果.国内也有将Program Management译作项目群管理或大型项目,但都对其的理解是一致的,即均认为项目集管理是组织高级管理人员在更高层面对大型战略项目与组织多项目开展的高级管理.     项目集管理的发展现状 目前在全球范围,单项目(Project)管理标准.理论及实践已

[转载]什么是“成功的项目”:谈谈软件的价值

题外话: 由于职业规划的需要,开始职场新挑战,加入一家新公司,开始项目管理工作,感谢新东家的信任和支持,给我这个机会,我将投入更多的精力把接下来的工作做到尽善尽美,为公司创造更大的价值. 为项目管理工作做好,需思考什么是成功的项目?什么是成功的项目经理?如何做才能更好的保障项目成功?如何制度化.体系化.流程化.信息化搭建企业管理? 其实会发现项目管理是个永恒的话题,中小型公司都存在不一样的项目管理困惑,大型公司比较系统化的项目管理方法不太适合,探索适应“国情”的项目管理之法. 原文如下: 在开始

现在流行的源程序版本管理软件和项目管理软件

现在流行的源程序版本管理软件和项目管理软件有: 1.  Microsoft TFS 2.  Github 3.  SVN 4.  Coding 他们各自的优缺点是: Microsoft TFS: 优点:任务版上能将需求.项目进度一览无余,对于小团队而言,它集成了项目管理.版本控制.BUG          跟踪,能有效实现 SCRUM能与 VS 无缝接合 缺点:不适合新手,新手需要多加练习.个人成本上的消耗相对来说更大一些.整个系统是用 asp 实现的,用浏览器访问相当慢. Github 优点:

3. 上网调查一下目前流行的源程序版本管理软件和项目管理软件都有哪些, 各有什么优缺点?

3.  上网调查一下目前流行的源程序版本管理软件和项目管理软件都有哪些, 各有什么优缺点? (1)Microsoft TFS的优缺点: 优点:是对敏捷,msf,cmmi等项目.过程管理.过程改善的支持.任务版上能将需求.项目进度一览无余,对于小团队而言,比甘特图更有用. 缺点:能应用起来的团队.公司的数量极少,多数真正用起来,也就是源代码管理这部分,这也仅仅是占TFS极小部分功能. (2)GitHub的优缺点: 优点:GitHub提供Git存储库服务,基于web,允许你使用Git的源代码管理功能

作业二:源程序管理软件与项目管理软件

本周的作业题目要求: 上网调查一下目前流行的源程序版本管理软件和项目管理软件都有哪些?各有什么优缺点? 初识源程序版本管理软件与项目管理软件 当看到这个题目时有点迷茫,在此之前并不知道什么是源程序版本管理软件,项目管理软件是什么.于是就进行了百度一番得到了如下的回答:源程序版本管理软件(版本控制软件)提供完备的版本管理功能,用于存储.追踪目录(文件夹)和文件的修改历史,是软件开发者的必备工具,是软件公司的基础设施.版本控制软件的最高目标,是支持软件公司的配置管理活动,追踪多个版本的开发和维护活动

软件外包项目管理的经验感悟

自2003年参加工作至今,一直在参与软件外包项目.从程序开发人员到设计人员,再从设计人员到项目组长.项目经理,风风雨雨走了将近8个年头. 这期间经历了大大小小数十个项目,对项目和项目管理的认识也从无到有经历了下面几个阶段: 对项目.项目管理所知不多阶段:这个阶段是刚进入公司的头一年,对项目完全没有概念,完全是领导让做什么就做什么. 入门阶段:在有几年的项目经验后,开始了解项目及项目管理,知道项目经理需要统计一些数据,但是为什么需要这些数据.这些数据的作用却不了解.开始带几个人的项目小组一起工作,

第八篇——源程序版本管理软件及项目管理软件

作业四:上网调查一下目前流行的源程序版本管理软件和项目管理软件都有哪些, 各有什么优缺点? (提示:搜索一下Microsoft TFS.GitHub.Trac.Bugzilla.Rationale,Apple XCode)? 一.CVS 是一个C/S系统,是一个常用的代码版本控制软件.主要在开源软件管理中使用.与它相类似的代码版本控制软件有subversion.多个开发人员通过一个中心版本控制系统来记录文件版本,从而达到保证文件同步的目的.CVS版本控制系统是一种GNU软件包,主要用于在多人开发

谈谈软件的服务模式

软件服务是一种把管理软件和实施服务一体化打包的软件服务模式,在目前的市场上主流软件服务有五种模式. 一是以开发和销售为主的外包模式; 第二种是IaaS(Infrastructure-as-a-Service),基础设施即服务; 第三种是PaaS(Platform-as-a-Service)平台即服务; 第四种是注重通讯的CaaS(Communications-as-a-Service),协作即服务, 第五种是SaaS(Software-as-a-Service),软件即服务. 其实还可以再细度划