// 上一篇:超链接
// 下一篇:工具和结构化


:在一次软件工程讨论课程进度设计的过程中,出现了这个关于 Alpha/Beta换人机制的讨论,这个机制在不同学校有不同的实施,本篇积累各方观点,持续跟踪。

Talk(1)


@Coach: [Something is important,We Can..]
① 第6、7 周的事情,可以一周做完,建议放在第4周来做, 原来第4周的单元测试往后推一周, 这样同学们不会连续三周都有写代码的工作,给一些同学一个喘息和赶上来的机会。
② 第8、9、10周的事情可以合成两周.
③ 最大的风险是, 连续五天的冲刺时间太少,同学们刚能同步写代码,就停止了。 别的学校都是10天。 至少要连续7天 (同学们可以用周末的时间,由他们自己定)。
④你觉得应该在alpha / beta 之间强迫每一组必须送走一个队员, 然后这个队员自己找下家么?有些学校的同学感情上受不了这个, 但是这个措施对于 “打酱油” 的同学是很好的警戒。

@Teacher: [Interesting, BUT..]
没考虑过,感觉有点残酷,不过确实能起到警戒的作用

@Coach: [Since...]
否则会出现 “劣币淘汰良币” 的情况: 一些差学生就是不干活, 导致团队其他人也不想干活,最后没有产品出来。 老师也不好给团队项目打分。

@Teacher: [First we try, then we trust..]
可以在刚组队完成时,宣布其规则,让他们有心理准备

@Coach: [And...]
① 每班都有助教, 我觉得这是可以解决的。
② 另外,还有情况是有优秀的同学, 作了一个项目后,想试一下别的项目, 所以她要换组。 这也要鼓励。 另一个理由是: 换组的同学, 就会看到别人写的代码, 在别人写的代码上做改进, 这是软件工程非常重要的环节。 她就会意识到代码规范和文档的重要。

@Observer: [Question?]
① 会不会引起同学之间矛盾。感觉应该去培养团队合作性。你目前团队就是 这个情况,团队负责人应该想如何解决这些问题。而不是重组团队,这样差的学生也不可能改进什么。
② 一门课学的好不好不能最终去衡量这个学生综合能力。我们允许差的学生存在一个团队中。我更觉得适合在团队中找一个合适负责人,目前你团队有差的学生,团队负责人要去想怎么解决这个问题,让你的团队更优秀才对。这样可以培养团队合作精神更好。

@Coach: [In fact, It is...]
① 引入这个机制的一个原因就是同学间的矛盾。 因为大多数同学当初组队的时候都没有细想,就在一起了, 结果发现后来脾气、技术都有矛盾。 要有一个释放的渠道。否则被迫在一起没有意思。
② 在我们的经历中, 一些是脾气、技术方面的矛盾,导致一个人要主动离开。
③ 并不是说谁最菜,谁就走。 走的人,大多数是投入太少。
④ 你说允许差生存在一个团队中, 但是如果这个差生就是甘于做“最差” 不想干活,怎么办? 把他送到其他小组, 他能够有再次学习的机会。 就像我们上课也给一些同学挂科, 这是治病救人的态度。 如果所有的课程都禁止挂科, 但是校领导要求老师 “想办法去解决问题” , 老师能怎么解决呢? 优胜劣汰,是自然规律, 早一天让同学有切身体会, 早一天他们会醒悟。

@Manager: [Change Your Perspective... ]
① 学生入学后,也有因为和室友合不来而换寝室的,也有大家能够从始到终都相处好的,两种方式没有孰高孰低。
② 任何组织,都存在类似的情况,既可以流动以保持活力,也可以大家在内部互相做出让步来调整自己,这都要看团队内部的情况如何而定,不可一概而论。
③ 在企业里工作的人,和在高校的老师的感受往往有些不同。高校几乎是不流动的(静态思维或由此而生),而企业则是铁打的营盘流水的兵,所以视流动为常态,合则留,不合则去。因此,在企业工作的人,也会把矛盾和冲突看作常态,设想多种解决思路,而不是只有内部消化这一条路。所以,只不过是学生换个团队,老师们就会觉得这有点『残酷』,但真实的世界不就是这样的吗?
④ 学生的流动,是一种资源组合的优化。也是一种组织结构的优化。原先的团队不能取长补短,学生自发调整后,变得更能取长补短了,这就是组织结构得到了优化,等同于资源组合的优化。

@Engineer: [Think different?]
① 在这个环节设置上,我倾向于要改变认知,旧的认知好像是这样的:
● 换人是残酷和伤害感情的
● 只有一个队伍里做的最差的会被换掉
● 不换人更有团队凝聚力,换人好像团队就会乱掉
② 但是事实上是否一定是这样呢?
● 有的人想要换到别的更好的团队,希望得到更高水平的锻炼,但是不敢或者没有机会
● 有的人希望团队的效率更高,但是别人说他要考研,要干别的事情
● 看上去一团和气,但没有一定的约束,实际上也不能形成凝聚力
③ 可以改变一下我们对换人的认知,通过在心智上重新定义“Alpha/Beta换人”:
● 合理的换人机制,让人才在团队间得到自由流动的机会
● 换人的过程中,需要重新融入其他团队,接触其他团队的代码、文档,对工程产生需求
● 在合理换人中,结对编程、项目文档、解BUG、敏捷、共同远景、责任驱动的深度需求。
● 换人是自然的,是软件工程的一个合适的训练环节

@Engineer: [Build a program!]
例如,可以设计情景游戏,通过情景体验,看到换人机制是一种不错的选择(新队友,新环境,新协作):

在限时游戏环节内,组织学生分组,一组3人,游戏的要求是在10分钟的竞赛游戏后,给2分钟每组必须有一个人到一个中间的“转会”平台,每组同时需要在这个转会平台招募一个新人,然后进入下一轮10分钟竞技。一共进行3轮,3轮后每个人都换过一组。

@Assistant: [The big problem of small change.]
感觉最大的问题出现在“决定谁离开”这个时候.

@Engineer: [Case]
学校里面比较不好模拟真实情况,真实情况下,绝大多是是自由选择离开。我第一份工作的时候,招了一个新人,但是他迟迟无法融入团队,和所有人都没办法说到一块,后面我们决定就解除和他的合作了。过了一年后,我自己因为个人发展原因,我自己离开了这个团队。第二份工作,在1年内团队里有好几个新人因为城市压力,选择离开。中间又有好几个临时到团队里落个脚,呆一段时间自己离开的。大部分是自由离开的,自由离开一般也是因为各种博弈选择。

@Assistant: [How about this?]
不是有个团队分么?分数按从大到小排名,统一决定某个名次的学生离开团队如何?这个名次每学期随机一次。这个是老师决定的,不会有团队不知道该让谁离开的问题。而且具有一定的随机性,学生们无法事先知道谁离开,也就无法提前做出准备.

@Engineer: [Build a new program?]
也就是说,如果决定不出来,那就写一个程序,随机换人?那就可以改为:
①如果团队自己可以决定换谁,那就他们自己换。
②否则,就交给“市场程序”,让“市场程序”,随机挑选。
③在面临“市场程序”的随机洗牌的时候,也许大部分团队希望自己掌握命运。

@Assistant: [Gamelization!]
小于等于6个的话,可以在班级的微信群里用微信的骰子来决定,公开公正,主动掌握命运比被动来得好,不过也需要一定的勇气。

@Coach: [Experience!]
有启发,实际上,团队里的小组换人大部分都是积极的,正面的。我们在课程中设计合适的环节,让学生在实践中体验到这个过程。

Talk(2)


@SoftwareTeacher:
Alpha/Beta之间换人是《构建之法》教学的一大特点, 请看这里的详细解释
http://www.cnblogs.com/xinz/archive/2011/05/16/2048044.html

@StudentA:
团队中如果存在文章中的“有人”,可以理解,不存在的话,强制又是为了什么

@SoftwareTeacher:
我们教学的过程中, 还出现过一个团队, 做完 alpha, 所有人都离开了, 因为团队没有任何凝聚力,做的项目也很差。

@StudentA:
这样的话 会不会出现 划水人员循环流动的这种结果

@SoftwareTeacher:
了解足球吧? 最喜欢什么队?比如足球教练在训练的时候, 把所有队员分成几组打教学比赛, 然后又把他们拆开,重新组队比赛,收集各种数据, 决定谁的能力和状态好。 这个是很正常的训练内容吧。那么, 我们在软件工程课中, 也有类似的做法。

@StudentA:
我先谈谈自己的看法吧。首先,大家并不是第一天认识,已经一起学习了两年,彼此之间也都有点了解。能够组成一个队,首先便说明了自己对团队内部人员的认可,不然干脆就不要加入这个队。既然是自己认可的,我觉得应该要对自己的选择负责到底,哪怕是后来发现自己当初看走眼了,原来某某竟是文章中的“有人”。一个团队中的队员,并不仅仅只是队员,更多的是伙伴。如果团队中有人想要谋求更好的发展,作为伙伴,当然不会去阻止他。但是伙伴不应该把任何人推出一个团队。好像听说以后公司中的项目都会有人员流动,但是我们还只是学生,我们组队不存在任何利益关系。

@SoftwareTeacher:
写得不错。 但是这个课程就是有项目是分两个阶段的, 在两个阶段之间要有人员流动。 你可以要求: “在alpha 阶段对我们团队分常认可, 写高质量的代码+文档, 即使你走了之后, 新人能很快接收你的模块, 把最好质量的软件做出来” 。 我觉得这也很好啊。

@TeachingAssistant:
我之前在上软工课程的时候也有过这样的想法,但经历了阿尔法阶段后反而对换人有所认同。PM,也就是队伍里需要统筹大局的人,要以产品/项目的质量为保障。在这种前提下,如果有比较优秀的同学出走团队,可以视作跳槽;如果有表现平平的同学出走,他也可能是去了一个更适合他的队伍,做着更适合的项目呢。我之前曾作为PM与室友组队,在团队答辩时的感受就是:尽量别跟特别亲密的人组队。

@StudentB:
StudentA你的情况是在于团体各个成员都做得不错, 也没有一个成员想要离队的情况吧?

@SoftwareTeacher:
欢迎探讨,《构建之法》的书和教学方法就是在不断的质疑,探讨,改进中提高的。 这不是“经典”, 而是不断变化的方法论。

@StudentB:
这种情况下,不如这么想:我们一直知道代码规范、手册、文档的重要性,但如果对于自己的代码一直没有真正训练和考察成效的机会。让一名新鲜血液加入项目组,就可以通过这名新成员是否能迅速上手项目,来检验之前编码规范等工作的成效了。

@TeachingAssistant:
团队之间的合作需要是两个独立的子项目拼成一个共同的大项目,这一点上并不是每个团队都能受到锻炼的。如果你们愿意,也可以考虑2-3个团队一起做一个大项目,每个团队分别独立负责一个小项目。但最后团队答辩时依然以你们负责的小项目为评分依据。这样一来,你们换人可以在合作团队间互换,以模拟组里的流动工作。但我不推荐这样做,风险很大。尤其是涉及到团队之间的合作与对接,情况远比想象的复杂。

@StudentA:
你推荐我们应该也不会这样做。。

@StudentC:
如果出现整个团队配合很好,队员都不想离开的情况呢?

@StudentB:
如果真的遇到了这种情况说真的我也比较为难。不过呢,现实世界中肯定是流动才是常态,不流动才是不正常。老师能想出这个设定我觉得也是用心良苦,能让我们在学校就可以提早见识一下,拥抱常态。如果不是换掉哪一个人都很舍不得的情况下,我觉得提前在学校里有这个见识也是不错的。

@TeachingAssistant:
相信我,团队阿尔法阶段以后不会舍不得。

@StudentD:
个人看法:分组对抗中 球员的适应能力 与陌生团队的磨合 也是很重要的考量 也能够发掘球员本身的潜力 那么也适用于在软工中作为交换的学生 这是我的理解 但是也有这样一种情况:一种团队 所有的成员经过了系列的磨合 已经能够得到好的效果 并且都不愿意离队。认同邹老师和助教前辈们的说法 不过我的看法是 可以不强制要求 但是如果有人有要求 或者在进行团队人员的评估中发现不合适(不合适的标准也需要探讨 比如有的人积极性不高)则进行转换。

@StudentA:
臣附议,这大概就是我最后想要说明的情况,还没到最后阶段,就被你给说了。

@Yet Another SoftwareTeacher:
①不强制要求,最终大多数组都不会换人。也许我们有固定认知,也许我们有没尝试但不希望体会的。
②强制要求,体验一次,最终再来评价其得失利弊。 不会全部是利,也不会全部是弊。看到不一样的风景。实施了才能迭代改进。不试试,不知道什么样是真正最适合自己的。
③To improve is to change, to be perfect is to change often. 如同xx级实验班首次要求动态滚动时,你们也不同意的。两年过后,你们不都认同了吗?软工组队中期更换不是淘汰,有人高就 有人离开,换一个组,加一个新成员. 让老师当坏人。alpha阶段后,总有你或你觉得有人离开比较好.

@TeachingAssistant:
我理解大部分组不换人的根本原因还是脸面过不去。组长不好意思换人(因为不是强制的),队员不想走(因为不是强制的)。

@StudentA:
是的 在我刚才的说法中 如果选择一个成员离开 要有标准 比如 个人申请 视为跳槽 比如积极性不高 视为淘汰.

@TeachingAssistant:
①可能潜意识里觉得 离开==淘汰。实际上还有可能是平步青云或者另谋高就什么的.
②也有可能真的是淘汰。 在公司里工作,你就保证不会被开除吗

软工+C(4): Alpha/Beta换人的更多相关文章

  1. 软工+C(2017第4期) Alpha/Beta换人

    // 上一篇:超链接 // 下一篇:工具和结构化 注:在一次软件工程讨论课程进度设计的过程中,出现了这个关于 Alpha/Beta换人机制的讨论,这个机制在不同学校有不同的实施,本篇积累各方观点,持续 ...

  2. [2019BUAA软工助教]团队alpha得分总表

    [2019BUAA软工助教]团队alpha得分总表 [2019BUAA软工助教]团队alpha得分总表 一.团队累计得分 累计得分图 得分总表 二.各项得分计算规则 介绍与采访 项目选择与NABCD ...

  3. 福大软工1816:Alpha事后诸葛

    福大软工·第十一次作业-Alpha事后诸葛亮 组长博客链接 本次作业博客链接 项目Postmortem 模板 设想和目标 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描 ...

  4. 福大软工1816:Alpha(10/10)

    Alpha 冲刺 (10/10) 队名:第三视角 组长博客链接 本次作业链接 团队部分 团队燃尽图 工作情况汇报 张扬(组长) 过去两天完成了哪些任务: 文字/口头描述: 1.和愈明.韫月一起对接 2 ...

  5. [敏捷软工团队博客]Beta阶段发布声明

    项目 内容 2020春季计算机学院软件工程(罗杰 任健) 博客园班级博客 作业要求 Beta阶段发布声明 我们在这个课程的目标是 在团队合作中锻炼自己 这个作业在哪个具体方面帮助我们实现目标 对Bet ...

  6. [敏捷软工团队博客]Beta阶段事后分析

    设想和目标 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 我们的软件要解决的问题是:现在的软工课程的作业分布在博客园.GitHub上,没有一个集成多种功能的一体化 ...

  7. [软工顶级理解组] Beta阶段项目展示

    目录 团队成员 软件介绍 项目简介 预期典型用户 功能描述 预期目标用户数 用户反馈 团队管理 分工协作 项目管理 取舍平衡 代码管理 程序测试 代码规范 文档撰写 继续开发指导性 用户沟通 需求分析 ...

  8. [敏捷软工团队博客]Beta阶段项目展示

    团队成员简介和个人博客地址 头像 姓名 博客园名称 自我介绍 PM 测试 前端 后端 dzx 秃头院的大闸蟹 大闸蟹是1706菜市场里无菜可卖的底层水货.大闸蟹喜欢音乐(但可惜不会),喜欢lol(可惜 ...

  9. 【软工实践】Alpha冲刺(5/6)

    链接部分 队名:女生都队 组长博客: 博客链接 作业博客:博客链接 小组内容 恩泽(组长) 过去两天完成了哪些任务 描述 任务界面设计,任务功能后端实现 任务计时功能及界面实现 展示GitHub代码签 ...

随机推荐

  1. .NET Core微服务之基于Steeltoe使用Eureka实现服务注册与发现

    Tip: 此篇已加入.NET Core微服务基础系列文章索引 =>  Steeltoe目录快速导航: 1. 基于Steeltoe使用Spring Cloud Eureka 2. 基于Steelt ...

  2. 中国.NET:各地微软技术俱乐部汇总(更新中...)

    与微软技术的发展历程相似,微软俱乐部的发展同样经历着沉沉浮浮.2002年周庆麒先生创办的著名Office技术论坛Excel Home的上线,各种线上技术社区在中国的互联网世界中萌发.接着以鞠海洋(广州 ...

  3. 使用 ASP.NET Core MVC 创建 Web API(三)

    使用 ASP.NET Core MVC 创建 Web API 使用 ASP.NET Core MVC 创建 Web API(一) 使用 ASP.NET Core MVC 创建 Web API(二) 十 ...

  4. 基于Twitter的Snowflake算法实现分布式高效有序ID生产黑科技(无懈可击)

    参考美团文档:https://tech.meituan.com/2017/04/21/mt-leaf.html Twitter-Snowflake算法产生的背景相当简单,为了满足Twitter每秒上万 ...

  5. EXPLAIN 命令详解

    在工作中,我们用于捕捉性能问题最常用的就是打开慢查询,定位执行效率差的SQL,那么当我们定位到一个SQL以后还不算完事,我们还需要知道该SQL的执行计划,比如是全表扫描,还是索引扫描,这些都需要通过E ...

  6. MySQL集群架构:MHA+MySQL-PROXY+LVS实现MySQL集群架构高可用/高性能-技术流ken

    MHA简介 MHA可以自动化实现主服务器故障转移,这样就可以快速将从服务器晋级为主服务器(通常在10-30s),而不影响复制的一致性,不需要花钱买更多的新服务器,不会有性能损耗,容易安装,不必更改现有 ...

  7. C# 创建、更改Excel命名区域(NamedRange)

    创建命名区域是指给选定的某个单元格或多个单元格区域设置名称,目的是方便我们在文件中的其他地方对该单元格区域进行引用能够简化公式引用或者方便数据管理.下面记录了具体的C#示例代码.这里创建命名区域分为了 ...

  8. 《JavaScript高级程序设计》笔记:表单脚本(十四)

    表单的基础知识 在HTML中,表单是由<form>元素来表示的,而在JS中,表单对应的是HTMLFormElement类型.HTMLFormElement继承了HTMLElement,因而 ...

  9. android activity的生命周期和启动模式

    activity是android开发的基本中的基本每一个项目都会有activity.activity有自己的生命周期,在网上有很多博客和资料,在这里我也只是印证一下. 一个activity: 在打开a ...

  10. jquery实现静态柱形图(写死的数据,只为系统首页UI更美观)

    这段时间比较空闲,便阅读公司做好的项目的源代码,学习学习同事的开发思路. 在项目中使用图表可以很好地提高人机交互的友好度,开发的时候看到项目的首页有两个很小的柱形图,很漂亮,便找到对应的代码看了看,发 ...