最近,公司在开发一款新的APP项目,由于APP项目本身的时效性要求非常高,所以项目本身的工期被限制到很短的时间,大概就一个月的工作日时间。在这一个月的时间内,项目本身是从零开始搭建的,并且要承受需求变更、目标变更的风险与开发人员不足的缺陷。这就使得团队之间的配合要非常紧密,合作无间,并且在业务逻辑上不能出现大的偏差与错误,对团队的整体素质要求比较高。而令人沮丧的是,我们的团队是刚刚组建起来的,并且团队中有经验的人员又相对较少。

说到这里,可能有人会说,既然是这样,那项目怎么可能在这么短的时间内完工呢?其实一开始定计划的时候,我也是这么想的,按照以往的开发经验,确实很困难,因为敏捷开发崇尚的每周40小时工作制是有它的道理的,程序猿其实是一个半脑力,半体力工作者,每天集中精力经过8小时的精神上与身体上的摧残,基本上已经耗尽了身体上的能量。剩下的时间是需要好好回顾一天工作中所遇到的问题,及寻求解决方案,这样才能达到最高的效率。每天长时间的体力劳动(加班)会降低程序猿的思维敏捷度,导致生产出来的代码会有很多bug,从而导致生产效率下降(生产效率=出产的代码/花费的时间)。所以加班不是个好办法。当然,在项目后期,大家的精神会因为联调(指前端与服务器端的数据交互调试)达到长时间也可以高度亢奋的状态,这也就是为啥通常在项目上线的前两天,大家都要加班加点的工作,而不是按部就班的完成上线工作。所以,当初在领导说出项目的上线日期时,我的第一感觉就是,以我们团队目前的能力(包括人员素质,人力资源)是肯定完不成的,就算加班也完不成。但是领导有所要求,作为团队中的一员,应该尽自己所能的去做。(前提是要保证自己不会坐马桶死)然后,我们的团队开始了一个“尽力而为”的开发过程(其实,大多数项目,我们都是在人力不足,工期短的情况下加班加点熬出来的,这是一个很残酷的现实)。

这次的开发出现的问题完全在我的预料之中,包括由于开发人员对于需求的理解所花费的时间、开发人员开发水平不足所带来的开发效率下降,负责某项工作的人员由于人手不足导致整个项目开发出现瓶颈,旱的旱死,涝的涝死以及必要的不同开发角色之间的相互沟通所耗费的时间。目前,我们还在开发中,并且截止日也快到了。所以在这么一个时间节点,我对整个项目进行了一下反思与总结,我的想法是试图从项目管理的视角上去尽量优化整个项目的开发进度,以降低除硬性开发时间上的其它时间成本。这里强调下,我没有学过PMP,也不大懂CMMI,我的想法完全是根据自己以前的一些工作经历再加上一点点的意淫出来的,所以肯定有鬼扯的成分在里面,如果各位看了觉得不靠谱,那就当我在放屁就好了,嘿嘿,请不要喷我就行。下面,我就向大家说下,我对于项目的理解。

项目的管理,包括需求管理、标的管理、设计管理与开发管理。项目管理是一个需要一个人主导并且全员配合执行的过程。

项目管理以标的管理最为重要,也就是我们这个软件是用来干嘛的。这个问题也许看起来很好回答,但实际上并不是那么容易。因为在项目的每一个阶段,标的是不同的。也许在第一个阶段,软件的目的是用来演示的,第二个阶段是用来给内测用户试用的,第三个阶段才是公测给所有用户使用的。项目标的决定了开发策略,是用原型开发,还是用迭×××发取决项目标的是什么。而开发策略不同,会直接影响之后的开发进度。所以项目的决策人在项目伊始阶段,一定要交心以及频繁的沟通交流,确定好项目标的。一个团队内对于软件在某一个时间段上的目标必须是一致的,这样才能有凝聚力。当然,确定项目目标不是一个轻松的活,是需要领导们把想法从抽象到精华的过程,而且是需要技术决策人与项目决策人深度交流的一个过程(所以这种费脑子的事还是给领导们去做吧,哈哈)

需求管理,为啥程序猿都恨产品狗?因为需求变更。但产品也是无可奈何,因为人的思维本来就是不断进化的,有些东西不画出来,不多想一下就不可能更深入的理解,一旦进行了深入理解,想法一扩展,原先的设计就会被自我否定掉,然后就出现了万恶的需求变更。那么在需求变更的情况下,能够保证项目的进度么?这个要看情况,如果是颠覆性的,比如今天我要生产苹果,明天改生产梨子了,那么可能就保证不了了。但是如果今天我要生产一个红苹果,明天改成生产一个青苹果,我认为还是有办法的。通过软件架构的设计,我们可以做到,在一定范围内的需求变更情况下,把项目进度的延期降到最低。所以如果我们以项目进度为最高优先级,对于需求管理,第一要控制需求变更的范围,第二就是要设计一个好的系统架构。需求管理,在软件工程上是一个很重要的课题,包括需求文档管理与需求开发管理,在传统的需求管理中涉及到大量的跟踪,追溯文档,并且要与后期的开发代码对应。不过在如今这个快节奏的开发过程中变得不再适用,但并不代表我们不需要需求管理。我们应该让需求管理轻量化,比如通过一个excel来记录需求变更的过程以及原因,并且记录需求变更的通过原因及否决原因。这样产品经理可以通过需求变更了解到自己在产品设计中进入的误区,程序猿可以了解到现在有哪些功能是应该要做但没时间做的。决策者也有一个直观的视图了解到目前软件具有哪些功能,是否达到了阶段性的项目标的。

设计管理,在确认项目标的与需求后,就应该进行架构设计。架构设计对于一个项目的开发及后期的变更起到了至关重要的作用。架构设计要根据项目的人员配比,人员水平,需求变更以及项目进度计划来确定。它不仅仅是一个技术决策,更是一个管理决策。比如在人员配比失衡的情况下,如负责前端的开发人员较多,但负责后端的开发人员较少,那么这个时候,还是按照传统的开发方式,将所有的业务逻辑全给后端人员去做,前端人员只负责视图和套模板的话,无疑是在本来就很拥堵的马路上放行更多的车辆。又比如在一个需求频繁变更的场景中,还是根据功能来设计API的话,那后期的代码更改,不管对前端还是后端来说,就是噩梦。架构设计也不是一个一劳永逸的工作,针对不同的项目标的,架构也会不断的更新。比如第一阶段的架构设计主要是实现系统功能,第二阶段的架构设计需要优化系统性能,那么第一阶段只需设计好业务框架、数据库结构。第二阶段再来设计缓存策略,心跳监听等。

开发管理,开发管理是始终穿插在开发过程中的。包括项目进度跟踪,联调计划执行、测试计划执行。他们有一个共通点,就是都是需要多人协作完成的。一旦涉及到多人协作的问题,就需要一个协调者来组织。因为大家在都很忙的情况下是没什么时间自愿去充当沟通者的。但是大家又的确有着信息沟通的需求,因为团队中的每个人都有了解整个项目进度的义务和责任。大家对项目整体进度了解了,对需求了解了才能更好的进行各自的工作。打一个很简单的例子,前端了解后端的API是如何设计的,才能知道在哪个页面调用哪支API。同时,后端要知道前端页面内有哪些内容,才能知道如何去设计API,给出哪些数据给前端。这样在真正联调的过程中,才会有更高的效率,不至于修改很多。所以无论是敏捷开发还是传统开发,沟通是必不可少的。我反对长时间毫无目的的会议,但完全不开会,靠程序猿私下沟通,这个效率可能也会很低。

好久没写博客了,最近实在太忙。以往只喜欢写关于技术方面的问题。这次不知怎么突然脑袋抽风写下了上面的文字,也许是怕自己一闪而逝的想法被遗忘,所以记录下。往后还是会继续写关于技术方面的文章,话说我的apache系列还没讲完呢。。。

转载于:https://blog.51cto.com/wangweiak47/1649796

关于项目管理的一些想法相关推荐

  1. 软件测试流程和项目管理流程

    背景 工作五年了,一直是做测试.认识了很多人大牛,也接触到很多新人,从他们身上看到了很多,自己的过去,自己的未来(当然很多是自己达不到的高度). 做这测试这一行的,很多人都追求技术:自动化+性能,往往 ...

  2. 分享一款好用的项目管理工具

    现在很多项目管理工具功能都非常复杂,尤其是每个团队成员的接受度又不完全一样,不经过一些培训很难把一套管理工具和管理方法真正的用起来. Beeo比牛工作流是我们专门为中.小团队研发的一个简单易上手的项目 ...

  3. scrum项目管理_Scrum,用于初创企业(或针对该项目的任何项目)

    scrum项目管理 Scrum is a lightweight framework designed to help small, close-knit teams of people develo ...

  4. 项目管理中如何进行多方合作

    经常参与一些项目,在大大小小的项目合作中总会遇到一些问题.比如抱怨那是对方的事与我无关:我这边就是这样的规范,你的接口程序有问题:和你沟通太费劲,找懂技术的来......这些出现的问题导致合作很艰难, ...

  5. 构建更好的敏捷项目管理组织所需的4种工具

    作者:KYLE FOREMAN 持续改进,易于管理 作为一名研发团队的Leader,面对的工作是繁琐且复杂的.你需要组建团队,规划最佳研发计划,并在实践过程中关注全局,处理遇到的各种问题和阻碍,最终使 ...

  6. 项目管理:多项目同时进行如何做好进度管理?

    我们可能能找到很多关于多项目管理的原则和方法论,但人普遍有个毛病"知道很多道理,却依然过不好这一生." 有了必要的原则和方法论,怎么在团队里实施和落地这件事却也是个大问题. 下面就 ...

  7. 如何学习项目管理?项目管理工具有哪些?

    先说一个观点:人生处处皆项目,项目管理是每个人必备的底层能力,它可以让复杂的问题变得简单,是保证项目成功的手段. 项目管理是一门学科,是管理学的分支,经过多年的发展,已经呈现出庞大的知识体系.官方定义 ...

  8. 收藏!一篇文章搞懂项目管理

    先说一个观点:人生处处皆项目,项目管理是每个人必备的底层能力,它可以让复杂的问题变得简单,是保证项目成功的手段. 今天和大家聊聊什么是项目管理,项目管理的重要性,如何提高项目管理能力. 01.什么是项 ...

  9. 互联网项目管理要点(转)

    互联网项目,会定一个计划发布日期,然而这个项目有个隐藏的实际合理发布日期.因为软件开发并不是一个直接添加资源就可以加快速度的过程,所以这个实际合理发布日期是在现实资源合理利用前提下一个客观存在的最可能 ...

最新文章

  1. EasyBridge:一种简单的js-bridge设计方案
  2. 海思前几帧图像不正常_电视有声音没有图像要怎么维修
  3. 配置token_Nginx常用的配置
  4. python翻页_python实现电子书翻页小程序
  5. linux github中文官网,GitHub使用简介
  6. 前端小知识点(8):作者为什么设计原型
  7. 漫步凸分析二——凸集和锥
  8. Java类加载器( 死磕9)
  9. DB2数据库对现有表格字段修改
  10. 微软不愿意提及的软肋:Win10的语音识别
  11. 老李分享:浏览器引擎的介绍
  12. 计算机二级考试公共基础知识都是一样的吗,计算机二级公共基础知识全国一样吗?...
  13. 人不成熟的几大特征-----海尔集团CEO张瑞敏演讲稿
  14. 263.Ugly Number||202 happy number||476 Number Complement||136 Single Number
  15. MATLAB提示错误使用network,优化双隐藏神经网络出现错误使用 network/subsasgnne...
  16. 区块链与金融基础设施——兼论Facebook Libra
  17. 解决:SpringBoot使用@Value读取application.properties中文乱码
  18. JS 事件冒泡、捕获。学习记录
  19. 大学计算机专业可以用台式电脑吗,大学带台式机的人多吗 方便吗
  20. 商务咖啡机实力推荐——Barsetto百胜图BAV01咖啡机

热门文章

  1. java转换工具类_Java数据转换工具类
  2. Sybase identity 字段
  3. 数据仓库之 ETL漫谈
  4. C# AE放大缩小地图全局显示功能
  5. CDH-5.7.1离线安装
  6. Python学习札记(二十八) 模块1
  7. si4438-IAR不能接收和发送的问题
  8. J.U.C atomic 数组,字段原子操作
  9. MySQL及其分支或衍生版
  10. ftrace使用说明(二)