Sajid Ibrahim Hashmi,Jouni Markkula
(M3S Research Unit, University of Oulu, Finland Oulu, 90014)
软件工程(SE)是一种团队合作活动,软件工程师与其他人一起工作,软件是由在专业环境中工作的团队开发的。从事开发活动时,软件工程师应能够与同行、客户和用户充分、熟练地协作和交互。软件工程也是国际学科。软件公司和其他组织通常是国际性的,其员工具有不同文化背景。团队工作并不简单,因为它需要团队成员的特定专业能力和技能。在软件工程中,专业技能通常分为两类:硬技能和软技能,两者都是专业从业者所需的。它们是专业技能,因此也应在软件工程教育期间学习这些技能。它们是软件工程教育课程学习目标的一部分。除了技术硬技能外,学生还应该学习非技术软技能,这对于成功的软件工程职业生涯也是必不可少的。软技能在软件开发中发挥着重要作用,这些技能有助于应用硬技能获得成功的最终结果。团队合作属于软件工程的专业实践。富有成效地、高效率地开展团队合作需要一定的知识和技能。技能通常被认为是除了知识之外可以教授和学习的能力。熟练掌握技能可以通过训练、练习、实践获得。为了学会应用团队合作相关的技能,软件工程学生应接受这方面的指导;此外,学生将其作为技能集的一部分进行练习和实践。一旦这些技能成为学生技能集的一部分,他就可以在专业工作中展示它们并在职业生涯中取得成功。
在教育方面,除了学生的个人学习活动外,课程通常还包括作业和其他学习活动,这些活动需要在较小的学生小组中进行团队合作。在教育的语境里,它们通常被称为小组作业。在软件工程教育中,小组作业不仅仅是让学生学习特定的给定主题,而且还要学习、练习和实践与团队合作相关的技能,以丰富他们的专业技能集。学生学习、实践相关技能以助其学业,随后会将这些技能平移到他们的专业工作中。
本研究的目的是调查团队合作相关技能及它们与国际软件工程教育之间的关系。我们从软件工程教育设计和负责设计和实施课程的教师的角度来处理这个主题。为此,本研究选择焦点小组作为从专家(在本例中为软件工程教师)那里收集实证信息的方法。研究背景为国际软件工程教育及与之相关的方面。我们通过这项研究设计,了解专业团队合作相关的技能培训如何嵌入软件工程课程以及在国际软件工程背景下应该特别考虑哪些方面。
本文的其余部分组织如下:第二节回顾了软件工程团队合作方面的相关研究,第三节描述了我们的研究方法,第四节解释了以焦点小组形式开展研究的结果,第五节和第六节分别涵盖讨论和结论。
不同形式的团队合作是所有专业工作的常见做法。它是一群具有共同目标的人的联合行动。然而,团队合作并非易事,除了专业技能之外它还须进行某些专业实践。此外,它涉及多种人力资源的整合。团队及其活动的某些特点(例如,团队凝聚力、沟通、投入度和责任感)会影响团队的运作和产出[1],因此,团队应该高度团结。一方面,沟通影响团队的工作效率。团队成员无法克服新出现的障碍或解决争端,除非他们能够很好地彼此沟通。另一方面,沟通影响团队的凝聚力。团队成员对共同目标的坚守有助于集中精力实现共同目标。如果团队成员不能恪尽职守,分担相应的工作量,团队不太可能成功完成任务。问责制确保团队的目标得以实现,所有成员都对团队的共同目标负责。
团队合作实践及其特点是相互关联的,不能相互独立地发展。Borysewicz等[2]描述了由沟通、协调、合作和相互依靠组成的团队动力学。沟通确保团队成员之间能够相互交流,除此之外它对于解决团队成员之间的任何冲突都是不可或缺的。协调对于在团队中分配任务至关重要,每个成员都应该完成自己应该完成的任务。对于要执行的任务和交付所需的结果,需要通过工作共担进行合作[3]。相互依靠对于通过成员之间的信任促进团队合作和应对风险至关重要。遵循团队合作的动力学及其特点,才能成功完成任务,并且产出符合预期。否则,团队合作不能视为成功。
在专业的软件工程学科中,团队合作被明确认为是专业实践的重要组成部分。IEEE计算机学会出版了《软件工程知识体系》(SoftwareEngineeringBodyofKnowledge, SWEBOK)[4],旨在为软件工程领域提供知识体系的基准线。SWEBOK中的“软件工程专业实践”是其主要知识领域(KA)之一。软件工程专业实践分为三个子领域:“专业精神”“群体动力学与心理学”和“沟通技巧”。团队合作在“团队动力学和心理学”下明确表示为“团队/小组工作动力学”。“沟通技巧”也可以被视为与团队合作相关的技能密切相关。此外,团队合作中的国际意识被呈现为“群体动力学和心理学”下的“处理多元文化环境”。就软件工程教育而言,与SWEBOK中的专业实践相对应,团队合作已被纳入软件工程教育指南。国际上广泛应用的“美国计算机学会软件工程课程指南”(ACM SE Curriculum)[5]参考了专业实践,并将“软件工程教育知识”(SEEK)与之相关联。
作为这项研究的基础,我们需要初步了解与专业团队合作实践相关的技能。根据初步文献综述和专业指南(SWEBOK, ACM SE Curriculum, SEEK),本文对这项基础进行了概述。与团队合作实践相对应的团队合作相关技能见下表1。
表1 团队合作实践和团队合作相关技能
从表1中很容易看出,与专业团队合作相关的技能在很大程度上与学习和实践中需要的技能相似。沟通和演示实践基本上也是学习实践,一些与团队建设相关的技能也应用于学习中。学习期间的团队合作和小组作业为学生提供了练习、发展和提高不同团队合作相关技能的机会。这些技能的熟练掌握有助于他们毕业后开启职业生涯。
软件工程是国际学科,毕业生通常在国际公司和多文化团队工作,因此了解团队合作中的国际元素至关重要。学生在一个国家接受教育,在另一个国家从事职业生涯,这种现象并不罕见。各国的教育文化和在特定文化中学习的文化实践也各不相同。它们在不同文化中并不一致。例如,在一些国家,学生从小学开始就更习惯于团体合作,但在另一些国家,重点更多地放在个人学习和表现上。这意味着,团队合作教育所基于的学生技能基准线在来自不同文化背景的学生中可能存在显著差异。
本研究的目的是调查与职业软件工程团队合作实践相关的技能及其与国际背景下软件工程教育的关系。软件工程学生应在学习期间学习这些技能。调查放在国际教育的背景下,应该理解学生群体的文化背景对教育设计的影响。本研究的研究问题以下列方式制定:
研究问题1:学生在软件工程教育中应该学习哪些与团队合作相关的技能?
研究问题2:通过团队合作,学生可以学习哪些与专业团队合作实践相关的技能?
研究问题3:如何为多文化学生群体规划团队合作,以支持团队合作技能的学习?
在本研究中,上述研究问题的答案来自于经验丰富的软件工程教师,他们是该主题的专家。他们充分了解未来软件工程专业人员应该学习什么以及应该如何教授他们。
选择焦点小组作为数据收集方法。焦点小组成员间互动,从而激发他们产生对服务、产品或概念的看法,并对这些看法加以利用[6]。这种方法用于探索性研究,产生解决问题的创新性想法以及确定未来的研究方向。 本研究中的焦点小组是根据Krueger[6]和Kontio等[7]定义和使用的步骤设定的。在为焦点小组设计问题时,本研究使用了从一般到具体的漏斗原则。它让参与者更舒适,更容易参与进来;确保问题的异质性,即没有问题相互重叠;提出了一些反思性问题,以便小组成员能够回忆一段经历,而不是预测他们对未来的看法;避免了非黑即白的二元对立问题和疑问性问题。本研究计划由一名主持人组成决斗—主持人焦点小组。在焦点小组中,参与者被要求回应各种提示,比如分享他们对某些团队合作技能的看法。
焦点小组访谈的讨论主题以开放式问题的形式呈现给参与者,如表2所示:
表2 焦点小组问题
在访谈期间研究小组也可以提出一些子问题,以便引导讨论步入正轨。在提出问题2之前,研究小组向参与者展示了与团队合作相关的初步技能(表1),目的是激发和集中讨论目标。
受邀参加焦点小组访谈的专家是奥卢大学经验丰富的软件工程教师。最后一组由3名教师组成。参与者具有丰富的相关专业经验,既有在公司从事专业软件工程工作的经验,也有长期的软件工程教学经验。他们都是奥卢大学在职的软件工程教师,有向奥卢的国际学生群体和南京的中国学生群体教授软件工程课程的经验。因此,他们有教授芬兰学生团体、多国籍国际学生团体以及中国学生团体的经验。参与者具有多年的教学、行业和管理经验。
在焦点小组访谈中,研究小组听取了参与者的讨论并做了笔记。主持人通过朗读来重复提出问题后的回答和讨论,以供参与者确认,同时做了要点记录。访谈也被摄录下来,以供进一步分析。
焦点小组数据分析包括多个阶段,包括检查、分类和制表[6]。研究进行了主题分析,这是定性分析的基本方法。这些主题旨在捕捉数据中与相应研究问题相关的话题。在主题分析中识别模式有两种主要方法:归纳法或演绎法[8]。因为分析中未使用预先存在的编码框架来组织数据,所以研究采用了归纳法。为了进行主题分析,本研究使用了Clarke和Braun[9]提出的指南。
在研究问题的指引下,本文对焦点小组数据进行分析,从而按照图1所示的结构在总体上组织结果:
图1 结果的结构示意图
通过软件工程课程中的团队合作活动,学生逐渐能够掌握团队组织和工作分配技能。例如,通过小组讨论,他们不仅可以凸显自己的技能,还可以了解他人的技能。这为他们提供了一个机会,以每个团队成员都可以充分发挥其技能的方式组合和组织工作。随着时间的推移,团队成员往往会培养合作技能。即使他们最初是在团队中工作,他们的解决方案也可能像是一系列独立的尝试拼凑在一起的结果。在焦点小组中,有人提到:“通过将工作和思维过程结合起来,完成任务变得不难。有时,你给他们工作,他们自己内部分工,各自完成的部分分别复制粘贴到报告中,看起来就像这样。报告的各部分语气不同。其实团队成员应该共同努力,使报告具有连贯性。在某些时候,他们应该学会合作。”
在一个小组中共同完成的工作似乎对教师而言更显得浑然一体,因此具有更大的价值。这也会导致根据学生的兴趣或技能划分任务。
在团队合作作业中,我们需要分配任务、划分责任,从而使学生学会计划生成技能。该技能通过最大限度地利用每个团队成员的能力,帮助组合和有效地管理资源。这与个人优势的发现有关并加强了对个人优势的发现。小组可以有效地计划和组织工作,并可以在成员之间分配不同的任务。在实施团队合作的同时,学生通过应用计划生成技能,他们学习自己和他人的长处,这有助于他们更好地学习,更好地分配工作,发现自己的长处。因为每个小组成员都喜欢在小组内人尽其才、人岗相适,所以“分工”也有同样的功效。这种做法不仅有助于他们提高核心竞争力,还能激励他们发展各种技能。正如焦点小组所表达的那样:“一起讨论,找到各人的长处。根据成员的兴趣或技能划分工作。就如同在真实的业界中做的那样。有些人会躺平,让其他人做工作。对个体的考评会扭转这种趋向。因此,躺平者承担起责任。”
与大学不同,专业人士不太可能有机会与软件行业的朋友合作。因此,精通这项技能至关重要。
冲突处理技能使学生能够找到共同点。例如,学生在团队工作时单独提交他们的工作,可能出现小组成员对实现目标的看法恰好不同的情况。然而,不断的沟通和协商使他们对实现团队目标达成一致。这反过来也可能增加集体凝聚力,学生可以因分工协作而培养责任感。焦点小组谈到了冲突处理技能的重要性:“你不必喜欢与你共事的每一个人,你必须学会和团队中的其他人共事。即使国籍不同,兴趣有冲突,你仍然应坚持工作,工作是重要的。”
团队合作培养成员的责任感促使他们全身心投入。团队必须通过反思自己的工作来进行评估,即根据哪些方面做得好、哪些方面做不好来分析自己的工作,并对此负责。随机分组有助于团队成员为职业生涯做好准备。在软件行业,管理者和技能决定了谁将成为你的队友,而他们可能不是你最好的朋友。因此,团队合作需要进行充分的沟通,这么做是责任感使然,其目的是完成任务。焦点小组提到:“学生需要有责任感,学会投入……。这些技能是非常相关的,投入、责任感和团队凝聚力,它们是相互关联的。”
沟通技能的学习和提高是团队合作的一个明显结果。团队合作需要在整个课程中进行频繁的互动,无论是演讲、解释、回顾还是培训。分组工作有助于培养沟通技能,例如,编程练习通常是单独进行的,但同时,小组成员进行交流和讨论是有益的,有助于他们相互交往和合作,并在不抄袭他人成果的情况下培养实用技能。这种做法可以帮助他们向擅长软件编码的同龄人学习。“我试图强调,如果他们一起解决问题,往往会更容易,因为一个人知道一个概念,另一个人知道另一个概念;学会合作会让他们自己的生活更轻松。”
因为学生倾向于写下他们阅读、演讲的笔记,所以学习和练习文档技能是团队合作不可缺少的一部分。文档也有助于他们进行协作,现在在线协作工具被广泛应用于团队合作,团队成员借此远程会面或协作。正如下面引用的一位专家所说,文档很自然地包含写作技巧:“我们需要文档和写作技能。其他技能,如沟通、倾听,也会在团队中发生。”
写作或文档技能尤其有助于支持非言语交流,当存在交流限制时,团队成员碰巧通过远程交换电子邮件或文本信息进行交流,这时这两项技能就有用了。
决策是学生在学习中通过团队合作学习的另一项技能。这对他们来说是非常有益的,软件行业同样需要这种技能。焦点小组认为,国际行业的专业团队合作通常具有管理文化,这种文化期望团队成员对自己的工作和计划负责。在一些文化中,工作组织以及相应的学习组织采取层级鲜明的分层管理。因此,在组织软件工程教育团队活动时,组织者应考虑文化因素。学生应该学习和练习自我组织和处理更公开的团队作业和任务,以便日后能够适应在具有更多自组织管理文化的软件组织中工作。一位参与者就这一问题提出了宝贵的观点:“芬兰公司拥有某种管理文化,为个人、个人思考和个人决策提供自由;我也不清楚其他国家的教育体系,但我的猜测是早期教育的组织方式对来这里的人产生了影响。”
总之,在软件工程教育过程中学习团队合作相关技能至关重要,熟练使用这些技能是软件行业的基本要求。图2说明了焦点小组的调查结果:
图2 研究结果主题示意图
多种因素可能影响嵌在软件工程课程中的团队设计。从国际教育的角度来看,例如,团队成员之间的多样性和团队的性别构成会影响团队合作,而团队合作也具有文化依赖性。远程学习也会限制学生团队的互动机会。不同教育背景的学生可能对远程团队合作方法和实践有不同的经验和知识。为了有效地计划软件工程课程中的团队活动,团队作业设计应充分理解影响因素,并在教学上明确考虑这些因素。
以小组作业和练习的形式,由经验丰富的软件工程教师组成的焦点小组很好地探究了与软件工程课程中的团队合作相关的技能。学生应通过与课程相关的作业和练习学习和展示多种与团队合作相关的技能。下文通过回答研究问题的方式总结和讨论研究结果。
1.学生在软件工程教育中应该学习哪些与团队合作相关的技能?
根据这项研究,学生在软件工程课程中需要训练、学习和展示的与团队合作相关的基本技能是不同的解决问题方法、文档记录、决策、计划生成、冲突处理、团队凝聚力、工作投入和责任感。在小组作业和练习中,学生学习多种解决问题的方法,从而打开他们的思维定式。这让他们有机会确定自己作为个人的核心优势。值得一提的是,一些技能也可以引导学生成功地练习其他一些技能。例如,通过团队合作进行不同类型的学习以解决问题就是其中之一。他们通常在团队中进行分工,这使得他们在团队中单独工作时找到了共同点。这也有助于培养团队凝聚力。小组成员的不同技能和能力的组合可能会导致他们解决问题的方法多样化。其中最重要的一点是团队成员对工作的投入。团队中技能水平差异的多样性也可以使团队成员学会如何应对来自不同背景的同龄人。
2.通过团队合作,学生可以学习哪些与专业团队合作实践相关的技能?
根据这项研究,教师们发现学生在软件工程课程中可以学到的与专业实践相关的团队合作技能包括沟通、团队建设和展示。通过团队合作,学生被授予一种权力,以他们认为最适合自己的方式作为一个团队来完成他们的工作。团队可以一起规划他们的工作,随后在团队内部他们可以反思工作结果。这种现象通过团队对工作的所有权,帮助学生做出决策和组织工作。
除了文档和写作技能外,展示也是学生可以学习的重要能力。展示可以替代直接交互,展示可以同时有多个受众。小组中的任何一个成员都可以代表小组进行展示,也可以在小组成员之间平均分配展示任务。 然而,在课程开始时学生应该被明确告知,所有小组成员都必须进行展示。
研究还表明,团队合作有助于学生通过交流、社交和学习,培养将思想和工作结合起来的技能。这也提高了思维的清晰度。来自不同学术背景和年龄段的学生群体的多样性也有助于他们组队,这是一项必须学习的重要技能。然而,教师仍有责任通过组建不同的小组,让学生练习团队合作;让学生通过交流,甚至通过接受彼此的差异,相互学习;为彼此提供所需的专业空间。
3.如何为多文化学生群体规划团队合作以支持团队合作技能的学习?
团队合作是一种社会活动,受文化习惯、行为习惯和规范的影响。因此,在规划团队合作和在教学中实施团队合作时,规划者应理解和考虑文化对团队合作的影响。根据教师的经验,不同文化背景的学生在开始学习时,在团队合作技能和实践方面存在差异。不同的文化会有不同的更可取的方式来练习团队合作技巧。
在国际教育中进行学生团队合作实践时,教学计划应考虑以下方面。展示可以帮助学生发展他们可能因学术背景而缺乏的多种技能。由于展示技能和经验可能因带有文化印记的背景教育而异,展示活动规划(作为课程的一部分)应理解这种变化,并相应地规划学习活动。在设计团队作业时,教师还应了解并考虑学生的学习环境。例如,可用于学习活动的设施和场所可能会有很大差异。学生应该有适当的空间进行小组学习活动。
在特定的国际环境中学习与团队合作相关的技能可能在很大程度上依赖于文化。教学内容和教学实践应考虑到多元文化的背景,根据教学情况调整教学内容和教学方法;同时,还可以考虑到文化上不同的基本技能集,这些基本技能集是进一步学习的基础。尤其是当某些学生群体不能很好地掌握文化依赖性技能时,教师可以在教学中对这些技能划重点。
这项研究旨在通过大学水平的课程来发现团队合作对软件工程学生的重要性。之所以对这种现象进行调查,是因为学习和实践团队合作对于软件工程专业学生为职业生涯做准备是不可避免的,该行业需要与团队中的个人打交道。我们进行了小型焦点小组访谈,小组由具有竞争性和多样化背景的大学软件工程教师组成,这些教师的授课对象是芬兰和中国的国内和国际学生。
研究表明,一方面,与团队合作相关的技能,如向他人学习、问责和投入,对于学生从团队合作中成功获益至关重要。另一方面,为了考虑与团队合作相关的文化元素,并迎合学生因文化背景差异而不同的技能,教师应为学生提供广泛的团队合作机会。这样做是为了学习和练习团队合作技能,也是为他们未来的职业生涯做准备。
研究表明,来自不同文化背景的学生因过去的学术接触有异,在团队合作方面的技能和经验可能存在差异。本文的焦点小组研究为团队合作相关技能在软件工程教育中的作用和意义提供了良好的初步认识。本文还证明了不同背景的学生之间存在文化差异,这影响了团队合作技能的培育。
在考虑研究结果时,应注意的是,研究是通过一个由相当少的参与者组成的焦点小组进行的,因此,无法得出非常有力的结论。与团队合作相关的技能也没有得到全面和系统的囊括。相反地,这项研究更多地依赖归纳法以及焦点小组的专家们想要强调的内容。尽管存在这些局限性,但研究表明,需要更好地理解软件工程教育中的团队合作技能,以便找到在团队合作技能方面改善国际软件工程教育的解决方案。因此,这项研究应继续进行,并就此主题进行更广泛、系统的理论和实证研究,希望最终能够对教学设计解决方案及其在软件工程团队合作技能教育中的实施进行实证研究。