一向认为软件开发就像是在搭房子或者说是在构建一座宏伟的大厦,当然这根据工程的大小而定。其实细细想来软件工程的很多地方都是借助于建筑方面的知识,就从“工程”这个词来说就是从建筑学引进的,类似的还有设计模式等概念也是来源于建筑学。如此说来软件的开发和建造房屋一样,一般是多人合作完成的。如果您非要自己动手盖一个小平房也不是不可以,但请注意那一定是一个足够小的小平房。

其实要说起团队开发让人最头疼的不是什么技术问题,而是队员之间的合作问题。尤其是遇到矛盾重重的团队,那项目的进度一拖再拖将是家常便饭。团队开发绝不是架个SVN拉几个有水平的程序员就可以开始的事情!需要注意很多方面才有可能出色的合作完成一项工程。

l  给力的项目经理(项目组长)

首先,项目经理(项目组长)必须全面的了解项目的需求,根据需求和组员们商讨出一套合理的解决方案来。在这个过程中遇到不同的解决方案项目经理(项目组长)要敢于拍板,敢于承担责任。无论选择的对错都要比不选择要强,选择时畏首畏尾只会令项目延期,而选择错误大不了下次升级版本。一般说来在能实现功能的前提下,用户更加关心完成的日期而不是性能。因为每拖一分钟用户对软件能否实现的信心就减小一分。

其次,项目经理(项目组长)要有霸气。相信每个团队都可能会遇到不配合的队员,对于这样的队员尽量为他分配一些灵活性小的工作。如果队员严重影响合作那么就需要项目组长(项目经理)出面了,让你干嘛就干嘛,不要废话,出了事我担着!毕竟在一个项目中项目经理最大,项目如果出了问题客户或老板不会去责怪一个程序员,他会直接劈头盖脸的骂项目经理(项目组长)。所以在项目中队员有义务也有责任听项目经理(项目组长)的安排。这也是为什么项目经理(项目组长)在招人的时候格外注重队员的合作能力的原因(是否听从安排也属于合作能力的一种),招个不听话的人是多么郁闷的事情。

l  敢于否定自己

在项目的设计阶段,大家一起商讨具体的解决方案。很多时候大家是为了面子而不愿意否定自己的解决方案。其实这很容易理解,大家都是从程序员走过来的,程序员的通病就是常常盲目欣赏自己的代码,在软件设计的时候依旧“本性”难易,对于自己的设计不忍抛弃。一旦别人说自己的设计的有问题,恨不得马上和其大吵三百回合。争论,对于软件的设计绝对是好事,越争论对软件的需求、设计越清晰,“辩则明”就是这个道理。但是必要的时候(大多数人不肯定自己的时候)就应该好好的想一想:争论是因为面子还是因为自己的想法真的是完美的、无懈可击的?难道别人的想法真的是不可就要的、烂到不行的?如果是前者,无论你是谁(普通组员也好项目组长也罢)为了整个项目、为了团队,请放下自己的面子,否定自己!!!

l  不要正面否定他人的意见

无论什么时候都不要正面否定组员的意见,就算你是项目组长(或者项目经理)也不行!

在项目设计阶段,当组员为系统提出其他的见解的时候,如果你觉得合理那自不必说表示赞同即可。如果觉得不合理,你要做的仅仅是把你的观点摆出来和他的观点对比,让团队所有人进行讨论、选择,到底哪个更有利于软件的实现。

一旦项目设计完成,无论组员有任何好的方案都不应该采用!!!这时候要做的只是记下来为以后升级系统做准备,这也是为什么大公司的软件(例如windows系统)往往在上一个版本还未发行的时候下一个版本就已经开始准备了。很多时候开发人员就是在开发的过程中产生了更好的解决方案。好的解决方案——记录下来下次系统升级就从些方面做起。

为什么设计完成后不能“完善”?

如果在项目设计完成后再去修改设计,那么很有可能对项目其他部分造成影响。整个系统经过了长时间的设计可以说很少再有前后矛盾的地方。如果突然改变某一方面的设计,很大几率会造成牵一发而动全身的结果,甚至因为沿着这一处小小的改动走下去而使得整个软件前后矛盾,最终导致推倒从头再来的恶果。(还有什么比重头再来更糟糕?!!)

l  善于利用第三人避免“踢皮球”

不得不说的是任何详细设计文档,任何UML图都不会把系统的各个细节照顾到。毕竟文档以及UML仅仅是建模,一个大概的样子而已。这样一来难免会有细节部分没有涉及到如果非常不幸,这些细节恰恰是在两个开发者任务之间那就麻烦了。相互推诿责任,相互“踢皮球”是不可避免的,类似下面的话就会变成团队的主要语言。

A:“你的方法中怎么没有……的数据处理啊,这样传给我的我还得再处理!”

B:“处理这个数据不应该是你做的么?”

A:……

可能无论谁处理一下这个数据仅仅需要1个小时,但是争论到底是谁的责任却会花费数小时,这也是导致团队开发进度缓慢的原因之一。但是如果有另一个人在场(要是项目经理最佳),无论第三人到底向着谁,这场“战争”双方人员比例肯定是2:1。这样一来对于整个项目来说会大大缩短不必要的争论时间。

整个预期对话如下:

A:“你的***方法是不是没有处理……数据呀?”

B:“这个数据处理应该在你哪吧,C你说对么?”

C:“按道理来说,这应该是B的责任,你看啊我是这么认为的……”

A:“我也是这么认为的,还有就是……,B你说呢?”

B:“好吧,我这就去加”(虽有一千个不愿意,虽有一万个骂娘,但是……你懂得!)

l  沟通的方式无比重要:Change your words,change your world(点我呀)

要注意自己的说话方式,同样的意思不同的表达,效果不同。不用或少用第二人称,要多用“我们”、 “咱们”、“您”或者直接用昵称(*哥、*姐等等)之类的代词开头。试比较下面的句子

方式一:“你为什么不这么写这个方法?”

方式二:“咱们为什么不这么写这个方法?”

毫无疑问第一句带有责怪的语气,尽管你说的时候可能没有这个意思,但是听者会很容易这么认为。如果再加上任务繁重、心情烦躁,那么这势必会造成团队内部的不和谐。

无论自己的心情是多么的不好,请使用礼貌用语!试比较如下不同的对话。

对话一:

A:“你的那个方法写完了没有啊,快一点啊!哥等着测试呢!”

B:“哦”(TMD跟谁充哥呢,慌你妹,赶死啊!就不给你写!)

对话二:

A:“*哥(*姐)咱们的那个**方法实现了没有呀,拜托稍微快一点啊,你那一搞定我这就基本可以完工了,完事儿咱一起去喝茶啊。”

B:“好的呀,马上啊~~”

一样的意思两种不同的表达方式,感受就截然不同。第一种很难让人接受,正常的人听了多少会不好受,虽然括号里面的话并没有说出口,但是那已经影响到了团队内部的和谐氛围。要尽量多用第二种那沁人心脾的话语才能使团队更有战斗力!

其实关于礼貌用语方面中国人普遍做的不好,很多人认为大家都是自己人,那样说话未免太虚假,恰恰相反正因为是自己人所以才更加需要尊重彼此!从接触的外国信息(例如外文、美剧)来看,在国外无论是不认识的人之间,还是亲的不能再亲的亲人之间都是非常尊敬对方的。虽说中国是什么“礼仪之邦”但是国内外对中国人礼貌方面评价普遍不高。我想这也可能是为什么中国造不出大型软件(操作系统、数据库等等)的原因之一吧。缺乏友好的沟通,组员之间彼此不服气、整个团队矛盾重重、相互使绊,那这个团队还合作个磷啊!!!

以上几方面是自己在合作时候的感受,希望可以帮助您的团队更好的合作,请牢记:没有凝聚力的团队最终的结果必是“食尽鸟投林,落了片白茫茫大地真干净!”

注:食尽鸟投林,落了片白茫茫大地真干净——(《红楼梦》 第五回)

项目开发团队如何更有凝聚力相关推荐

  1. 项目开发团队分配管理软件总结

    目录 前言 一.项目需求 二.主要思路 三.系统流程 四.代码实现 4.1 登录 4.2 开发人员管理模块 4.3开发团队调度管理模块 4.4开发项目管理模块 4.5 IndexView类的设计 五. ...

  2. Java 项目开发团队分配管理软件

    目录 1 系统结构功能 2 系统流程 3 软件设计 3.0 前提 3.1 用户注册登录模块 3.2 开发人员管理模块 在这个模块中,我们需要创建几个实体类 3.3 开发团队调度管理模块 3.3.1 需 ...

  3. 【JAVA】项目开发团队分配管理软件

    目录 前言: 一.系统功能结构 二.系统流程 三.实现思路 四.常见问题 五.具体实现代码 六.全部代码 前言: 模拟实现一个基于文本界面的<项目开发团队分配管理软件> 熟悉Java面向对 ...

  4. 项目开发团队分配管理软件

    一.目标 1.模拟实现一个基于文本界面的<项目开发团队分配管理软件>: 2.熟悉Java面向对象的高级特性,进一步掌握编程技巧和调试技巧. 3.主要涉及以下知识点: 类的继承性和多态性 对 ...

  5. java实现、项目开发团队分配管理软件

    目标: 模拟实现一个基于文本界面的<项目开发团队分配管理软件> 熟悉Java面向对象的高级特性,进一步掌握编程技巧和调试技巧 主要涉及以下知识点: 类的继承性和多态性 对象的值传递.接口 ...

  6. 基于J2EE架构的项目开发团队中的角色与职责

    [声明] 1.2内容来源:<J2EE Architects Handbook>中文翻译<J2EE系统架构师参考手册>[翻译 Mellon] 1.角色 Technical arc ...

  7. Java 项目开发团队

    目录 项目开发团队 1. 项目经理 2. 系统分析师 3. 设计员 4. 程序员 5. 测试人员 6. 其他人员 项目开发团队 具有明确且有挑战性的共同目标: 团队具有很强的凝聚力: 具有融洽的交流环 ...

  8. 实现一个项目开发团队分配管理软件思路及过程

    做一个项目之前首先要知道做什么?实现什么功能?得到什么效果?然后再理思绪以及怎么做,慢慢来,一口吃不成个胖子,切忌一上来就动手做,简单的代码还好,一旦代码更多更复杂进行到后面就很容易乱成一锅粥,所以我 ...

  9. 项目 开发团队分配管理软件

    一.系统功能结构 二.系统流程 三.实现 以下功能不分先后 3.1账户 3.1.1账户类 3.1.2账户管理类 3.2开发人员 3.2.1架构师类 3.2.2开发人员管理类 3.2.3无职务类 3.2 ...

最新文章

  1. 深度学习中 Embedding层两大作用的个人理解
  2. 聚焦点showModalDialog的一些方法
  3. 三层架构实现增删的简单实例
  4. Kubernetes里的ConfigMap的用途
  5. --设备丢失故障表.
  6. 迪士尼收购福克斯,传媒巨头江山瓦解?
  7. jQuery中的join方法
  8. linux虚拟磁带机管理,RHEL6 虚拟磁带机使用指南
  9. 华为设备接口视图_华为交换机的三种视图
  10. 家用电脑设置成小程序服务器,电脑微信小程序设置全屏的方法是什么
  11. 对数 java_Java对数函数及Java对数运算
  12. 通过css设置canvas背景图片
  13. 使用 jquery.wordexport.js导出的Word排版
  14. java抽奖_JAVA实现用户抽奖功能(附完整代码)
  15. 张量学习(6):张量代数
  16. 倍福--ip地址修改
  17. OpenStack 应答文件简单翻译
  18. Boll布林带波动率策略
  19. 假设某专业有若干个班,每个班有若干学生,每个学生包含姓名和分数,这样构成一棵树,如图1所示。假设树中每个结点的name域均不相同,该树采用孩子兄弟链存储结构,其结点类型定义如下:
  20. Jetpack Navigation

热门文章

  1. 看完这篇,别说你还不懂Hinton大神的胶囊网络,capsule network
  2. python 比较 2张图片的相似度
  3. 国际PEO和EOR服务2022年全球行业分析报告
  4. Android实现轮询
  5. 软件测试【测试用例设计】面试题详解
  6. ios 基本语法介绍啦。(上篇)
  7. Tainted kernels
  8. 划过时代黑暗天幕的两颗彗星
  9. keil5左边的project窗口打开或者放置原位
  10. 卸载流氓软件云龙输入法和智能云输入法的方法