过去我认为团队合作没有很多麻烦,只是会发生些小摩擦。但就老师那天说的很多情况,我觉得我想的有些简单。
(一)结对
老师周二上课前十分钟直接通知两个人结一组,并两人做了课堂测试,只允许用一台电脑,在测试中能真切的感受到很急,因为我们要交流,知道双方的想法,但越急越乱,两人只能平和心态耐心地交流,这是最高效的方法。的确,没有什么工程会是一个人开发的,都需要合作。比如惠普公司的创始人,Unix和C语言的创始人,苹果公司的创始人,微软公司的创始人,Excel的创始人,雅虎的创始人,谷歌的创始人,脸书的创始人,这些都不是他们一个人的成果,都是合作而来的。二人合作,都会经历几个阶段:萌芽阶段,磨合阶段,规范阶段,创造阶段,如果两人磨合不来,最后就只能解体。在二人合作过程中,我们需要学会提建议:1.反馈:反馈有很多层次,当反馈是关于行为和后果时,行为可以改正,后果可以弥补,对方还是有挽回局面的机会;当攻击上升到习惯和动机,被攻击的一方就比较难表白并且澄清动机;当攻击深入到核心,被攻击一方已经无法回应。2.影响:结对中的两个人首先要有相同的愿景,让对方觉得处于一个安全的环境,这样提建议就简单了。
(二)团队
团队模式很多,这个我深有体会。和同学参加网页设计大赛,三人组队,两名搭档中,其中一位编程能力强,连接数据库,代码开发,他全都可以,另外一位由于专业性质,已经学习了网页制作相关知识,所以网页排版等等都交给她。这样一来,我的初衷就改变了,起初想通过参加比赛学到些什么,但现在只能干些杂活。这种团队模式是很多团队固有的。但针对团队合作,个人觉得现阶段应该是提高自己的专业能力,并且找好自己的团队中的位置。
就像老师说的,软件工程强调的是与人的合作。计算机只关心编译生成的机器码,你的程序采用哪些缩进风格、变量名有无统一的规范等,与机器码的执行无关。但是,做一个有商业价值的项目,或者在团队里工作,代码规范相当重要。否则谈不上合作。
从两人结对到团队合作,优秀的模式和流程有TSP原则:
1、使用妥善定义的流程,流程中的每一步都是可以重复的、可以衡量结果的。
2、团队的各个成员对团队的目标、角色、产品都有统一的理解。
3、尽量使用成熟的技术和做法。
4、尽量多地收集证据(也包括对团队不利的数据),并用数据来帮助团队做出理性的决定。
5、制定切合实际的计划和承诺,团队计划要由负责具体执行的角色来制定(而不是从上级而来)
6、增加团队的自我管理能力
7、专注于提高质量,争取在软件生命周期的早期发现问题。最有效提高质量的方法是做全面而细致的设计工作(而不是在后期匆忙修复问题)。