拿什么拯救你,我的团队
2019独角兽企业重金招聘Python工程师标准>>>
一向认为软件开发就像是在搭房子或者说是在构建一座宏伟的大厦,当然这根据工程的大小而定。其实细细想来软件工程的很多地方都是借助于建筑方面的知识,就从“工程”这个词来说就是从建筑学引进的,类似的还有等概念也是来源于建筑学。如此说来软件的开发和建造房屋一样,一般是多人合作完成的。如果您非要自己动手盖一个小平房也不是不可以,但请注意那一定是一个足够小的小平房。
其实要说起团队开发让人最头疼的不是什么技术问题,而是队员之间的合作问题。尤其是遇到矛盾重重的团队,那项目的进度一拖再拖将是家常便饭。团队开发绝不是架个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:“好的呀,马上啊~~”
一样的意思两种不同的表达方式,感受就截然不同。第一种很难让人接受,正常的人听了多少会不好受,虽然括号里面的话并没有说出口,但是那已经影响到了团队内部的和谐氛围。要尽量多用第二种那沁人心脾的话语才能使团队更有战斗力!
其实关于礼貌用语方面中国人普遍做的不好,很多人认为大家都是自己人,那样说话未免太虚假,恰恰相反正因为是自己人所以才更加需要尊重彼此!从接触的外国信息(例如外文、美剧)来看,在国外无论是不认识的人之间,还是亲的不能再亲的亲人之间都是非常尊敬对方的。虽说中国是什么“礼仪之邦”但是国内外对中国人礼貌方面评价普遍不高。我想这也可能是为什么中国造不出大型软件(操作系统、数据库等等)的原因之一吧。缺乏友好的沟通,组员之间彼此不服气、整个团队矛盾重重、相互使绊,那这个团队还合作个磷啊!!!
以上几方面是自己在合作时候的感受,希望可以帮助您的团队更好的合作,请牢记:没有凝聚力的团队最终的结果必是“食尽鸟投林,落了片白茫茫大地真干净!”
注:食尽鸟投林,落了片白茫茫大地真干净——(《红楼梦》 第五回)
转载于:https://my.oschina.net/kaixindewo/blog/17406
拿什么拯救你,我的团队相关推荐
- 对标 PyTorch,清华团队推出自研 AI 框架“计图” | AI 技术生态论
「AI技术生态论」 人物访谈栏目是CSDN发起的百万人学AI倡议下的重要组成部分.通过对AI生态专家.创业者.行业KOL的访谈,反映其对于行业的思考.未来趋势的判断.技术的实践,以及成长的经历. 20 ...
- 如何在团队中做好Code Review
一.Code Review的好处 想要做好Code Review,必须让参与的工程师充分认识到Code Review的好处 1.互相学习,彼此成就 无论是高手云集的架构师团队,还是以CURD为主的业务 ...
- 斯坦福大学李飞飞团队图像分类课程笔记
斯坦福大学李飞飞团队图像分类课程笔记 Stanford image classification course notes 这是斯坦福CS231n课程图像分类基础知识. 目标:这一节先介绍图像分类基本 ...
- 《小团团团队》第五次作业:项目需求分析改进与系统设计
项目 内容 这个作业属于哪个课程 任课教师博客主页链接 这个作业的要求在哪里 实验九 团队作业5-团队项目需求改进与系统设计 团队名称 小团团团队 作业学习目标 (1)掌握面向对象需求分析方法:(2) ...
- 7号团队:团队任务3-每日任务(2018-11-26)
1.为了对项目进度.项目完成情况进行了解,是项目更好的完成,我们团队进行了每日例会 2.团队信息 团队序号:7号团队 团队任务:教师个人题库系统 团队成员:产品经理:刘璐璐 UI设计师:苏雅欣 软件工 ...
- “睡眠猴子”团队项目及成员介绍
"睡眠猴子"团队项目及成员介绍 咳咳--软件工程这门课最终还是来到了团队开发的部分,我们宿舍三只经过一下午的讨论和需求分析决定做一款名叫"睡眠猴子"的安卓版手机 ...
- 挨踢项目求生法则-团队建设篇
摘要: 知道什么是挨踢项目吧?什么!不知道?那IT项目知道了吧?为了不让客户踢.不让老板踢.项目组成员之间不互相踢,俺为大家分享一些减少被踢机会的心得体会.就算不能让项目成功,也至少不会死得那么惨吧! ...
- git 打tag_图文讲解,团队开发中的 Git 最佳实践
私信我,回复:学习,获取免费学习资源包. 在 2005 年的某一天,Linux 之父 Linus Torvalds 发布了他的又一个里程碑作品--Git.它的出现改变了软件开发流程,大大地提高了开发流 ...
- Echo团队Alpha冲刺随笔 - 第九天
项目冲刺情况 进展 已经进入测试阶段,正在消除系统的bug 问题 通过测试,找出了系统中存在的较多bug...... 体会 测试太重要了,很多原本以为没什么bug,一测就能找到好几个,而且改个bug真 ...
最新文章
- 北京赛区总结,以及。。。
- liunx 上传 代码到github
- AI影响将远超互联网 不在乎与AT市值差距
- Go 还是需要泛型的
- EF Core 数据库 Provider 一览
- redis在php上使用教程,Redis在PHP的一些使用方法
- LeetCode Encode and Decode TinyURL
- php如何判断是否为json格式,php如何判断是否为json数据(格式)
- AcWing 2. 01背包问题(01背包模板)
- 随机变量的原点矩、中心距、变异系数
- 游戏服务端加密如何解密
- 目标检测tricks(基于detectron2)
- 小编教你如何打印出一张好看的思维导图
- wechat微信聊天记录两台电脑转移
- UserAgent和获取手机内安装的所有app列表
- HTML俄罗斯方块小游戏
- ubuntu在编译opencv3.4.1遇到[modules/calib3d/CMakeFiles/opencv_calib3d.dir/src/dls.cpp.o]错误
- Discuz中常用数据库操作
- 读取Assets中的数据库 .db文件
- 协同办公工具:在线白板初起步,在线设计已红海
热门文章
- Java校招笔试题-Java基础部分(四)
- localhost 就一定是 localhost 么?
- Laravel测试驱动开发 -- 正向单元测试
- 吉林大学计算机高级程序设计笔记
- 从BIO、NIO到Netty
- swagger的使用方式
- 关于webservlet 请求异步处理,链接未关闭出现的bug
- 在一个由 'L' , 'R' 和 'X' 三个字符组成的字符串(例如RXXLRXRXL)中进行移动操作。一次移动操作指用一个LX替换一个XL,或者用一个XR替换一个RX。现给定起始...
- 紫书 习题 8-15 UVa 1617 (贪心)
- 最快配置本地Yum仓库