如何做好一个信息系统项目经理,一个项目经理的个人体会和经验总结

简介: 该文讲述了信息系统项目经理在项目开发阶段应关注的要点。首先,需组建项目小组,确保团队中包含熟悉客户业务的成员,以便有效沟通。其次,选择稳定的技术栈,避免使用未经充分测试的新版本以降低风险。此外,项目经理应合理分解任务,设定可检查的交付标准,并利用项目管理工具控制进度和时间。通过敏捷开发方法提高效率,同时避免过度加班。建议项目经理充当客户与开发团队间的桥梁,减少现场开发带来的冲突。

前言

之前文章讲了在 项目开始阶段,作为一个信息系统项目经理应该做好哪些内容(参见 如何做好一个信息系统项目经理,一个项目经理的个人体会和经验总结(一)),这一篇我们继续聊聊在 项目开发阶段,项目经理又需要做好哪些事情呢?😃

二、项目开发阶段

项目开始阶段 ,你已经明白了要做哪些事情,也清楚了你手上的筹码以及你做这个项目的总体策略,就可以进行项目开发了,在这个阶段,作为一个做好一个信息系统项目经理,需要做好哪些事情呢?我的体会主要有以下几点:

1. 首先是成立项目小组,组建开发团队

成员的组成根据企业的规模和项目的不同,相差较大,很难有什么具体要求,大企业或者比较大的项目,成员配置会比较完整,比如有项目经理、行业专家、产品经理、系统分析员、系统架构师、美工、前端工程师、后端工程师、测试工程师等等,在中小企业或者比较小的项目,就享受不了这种待遇了,往往项目经理加几个前后端技术人员就是标配了,有时候还没有前端工程师,团队里每个人都需要身兼数职。

但是,不管怎么样,成员里一定要有精通客户业务的人,很多小项目里,这个人就是项目经理本人,大项目里会配备行业专家(Industry expert),这样和客户沟通起来才不会鸡同鸭讲,双方才可以相互理解。

我经常看到的情况是我们的技术人员和客户交谈时满口的专业术语,结果搞得客户一头雾水,反过来,他还指责客户不懂技术。

其实,明白自己想做什么的客户已经是很好的客户了,不知道自己要做什么,更不懂怎么做还要指手画脚的客户到处存在,所以要明白,是客户选择了你,而不是你选择了客户,有了客户你才有工资拿,要多劝告我们的技术人员心平气和一点吧。

2. 其次是选择技术。

其实技术没有太多的选择余地,当前比较流行的高级开发语言如 Java、C# 等都大同小异,可能它们有各自侧重和擅长的方向,但基本上无论选择哪一个都能实现客户的目标,所以一般是团队熟悉哪一种技术就选择哪一种。

当然,要说没有太多的选择余地也不太正确,因为每一种技术都有新旧版本,我的建议是尽量选择稳定的旧版本,而不要选择最新的版本,因为最新的版本相关文档比较少,里面可能有些 "坑" 还没有被测试出来,用的人也不多,有时候踩到 "坑" 时,真的很难找到解决方法,很耽误进度。

在这一方面上,我是有 "血" 的教训的,很多年以前做过一个广交会的项目,当时微软新出的 Visual Studio 2003 有一项新技术叫连接池,微软当时在发布会和官方文档上极力推荐这项技术,认为是提高性能的不二之选,所以我们的项目组采用这项技术,项目顺利地开发完成了,也顺利地通过压力测试和验收,但没想到上线的第一天,程序就挂掉了,我们的技术人员认为是并发压力太大的原因,但诡异的是,服务器的 CPU 和 内存的占用率都不高,技术人员调试了很久也找不到原因,最后只好宣布项目失败,直到后来 N 年后,在另外一个项目也出现这种问题,偶然间才发现是连接池满了没有自动释放的原因,但当时真的怎么也没有考虑到这方面。

一般技术人员都喜欢钻研技术,展示自己的高超水平,所以他们总是倾向于采用最新的技术,作为项目经理的你一定要坚决杜决这种风险,当然,这需要项目经理懂一些技术,如果不懂,就比较被动了,只能依赖团队中比较成熟的技术人员的意见。

在选择技术上,问题也不全是来自团队内部,有些客户比较懂技术,有时候会被某种新技术打动,坚持要你采用那种新技术,这时作为项目经理的你就应该说服他:你选我做这个项目,就应该容许我采用自己最喜欢的方式做事情,新技术之所以有诱惑力,就是因为吃亏的人还不多,我不希望你成为第一批受害者。_

3. 控制好项目进度和开发时间

合理分解工作任务是有效控制开发时间和项目进度的前提,有条件的话,可以找几个关键组员,比如客户业务专家、系统分析员等等,做一下项目模块划分工作,比如项目分成几块去做,每一块完成什么,模块之间的信息如何交换等等。需求定义的是做什么的问题,而这里就是怎么做的问题。

在分解工作任务时,有一点是必须要注意的,就是最终可交付成果一定要是可以被检查的,比如,【界面要求:美观大方、简洁明快】,这个要求我就不知道如何检查,又比如我见过一个计划,里面有一个任务【开发人员调研熟悉 Elasticsearch 搜索引擎】,这个任务,调研什么程度算熟悉,结果也很难被检查。所以,时刻考虑如何检查结果,是分解工作任务时一个重要的考量。

采用一个项目管理工具会让你的工作更加明确,比如 Jara、Worktile、禅道等之类的工具,通过这些工具,可以更清晰地知道这个项目有多少件事情要做,每件事情需要什么资源,他们之间的前后关系如何,消耗的时间有多长,完成后有什么标志等。

按照我多年的经验,分解工作任务和评估时间之后,在项目管理工具上往往会惊奇地看到,甘特图上项目的结束时间通常会远远落后于你的计划结束时间(签合同的人永远不会先征求你的意见的),所以需要想方设法进行时间控制,优化任务路径和加班是通常会使用的方法,但是加班太多会使团队成员变得更疲倦,长期来看不一定真的能提高工作效率,而任务路径再优化也不太可能把所有的工作任务安排到计划的时间结束,一个有效的方法就是对任务有所取舍,列出任务的优先级,集中精力完成优先级高的任务,对于优先级比较低的任务,可以考虑牺牲它们的时间(也意味着质量),比如有十件事情,如果什么都赶进度,其结果可能就是十件事情你一件也没做好,但如果按照任务的优先级投入资源,结果是有三件做成了精品,三件完成,还有四件因为某些原因延误,这样的成绩单就靓丽了很多,所以正确排列事情的优先级也是一个项目经理能力的主要体现。

如果提高开发效率?我的体会就是采用敏捷开发效果会比较明显,每天10 - 15分钟左右的站立会议会让团队成员的工作目标更加聚焦,可以每周或者每两周设置一个 Sprint,每隔一段时间就有成果出来,这样对于团队的士气会是很好的激励,对客户和公司领导来说,时不时就能看到成果,也是一个好消息。

另外我插一句:我是极其不主张到客户现场开发的,尤其是一大群技术人员直接和客户交流,很容易引起冲突和矛盾(技术人员的本性决定的),我的建议是软件开发人员还是在公司做项目,项目经理和项目实施人员到现场与客户交流沟通,做好客户和研发人员的桥梁,这样会比较和谐些,效率也比较高,我曾经见过一个公司,很喜欢让技术人员到客户驻场开发,结果人员流失非常严重,项目还没完成,人员已经换了两三波,这样项目进度肯定是要延误的,项目质量也不高。

未完待续

相关文章
|
1月前
|
存储 定位技术 项目管理
软件工程IT项目管理复习之 十:项目沟通管理
软件工程IT项目管理复习之 十:项目沟通管理
75 1
软件工程IT项目管理复习之 十:项目沟通管理
|
1月前
|
项目管理 Windows
软件工程IT项目管理复习之 九:项目人力资源管理
软件工程IT项目管理复习之 九:项目人力资源管理
194 0
|
前端开发 程序员 测试技术
程序员成长第十二篇:做好项目计划
程序员成长第十二篇:做好项目计划
83 0
|
监控 数据可视化 Java
测试工程师如何做到初级测试管理(个人思考)?
测试工程师如何做到初级测试管理(个人思考)?
105 0
测试工程师如何做到初级测试管理(个人思考)?
|
项目管理
产研项目管理-实用经验
项目管理方法是一门通用技能。当你正在管理一个项目时,如果没有系统的方法,那么只能事倍功半。项目管理用结构化的方法告诉我们:如何就目标达成共识,如何与相关方协作,如何拆分工作,如何控制项目工期,如何达成项目目标,从而为公司收益做出贡献。
624 0
|
项目管理
漫谈项目管理之:面对严重的技术问题,你应该怎么做?
  接到紧急电话,你匆忙的赶到用户现场。初步分析后,你大吃一惊:可以确定,这是一个方案设计阶段的重大失误,现在暴露出来,导致项目中的所有工作全面停顿。   此时此刻,作为项目经理,你马上要做那些事情?   你想到了什么? 组织技术人员进行讨论,对技术问题进行分析?非常好,这是必须要做的工作。
1421 0