The work-reflection-learning cycle - Department of Computer and ...

The work-reflection-learning cycle - Department of Computer and ... The work-reflection-learning cycle - Department of Computer and ...

21.01.2014 Views

communicating with the OSS community through his brokering role maintained a position of power in the SE team. Based on our findings, we provide an account of (i) mechanisms enabling a SE team to successfully interact with an open source community and (ii) possible pitfalls and benefits of the engagement in terms of project success. First, we provide a theoretical background for the issues focused in our study. Next, we present our case, research method and findings. We further discuss the findings in the context of the above outlined research objectives, before concluding the paper. 2. THEORY This section starts by providing a theoretical grounding for understanding power structures in SE teams, viewing teams as communities of practice. We then address how collaboration across communities can be achieved, before briefly outlining relevant research on how participation in OSS communities is typically structured and how OSS projects may serve as a resource in SE education. A student SE team can be viewed as a task-based learning community [7], a form of community of practice [8] oriented towards learning and the time-limited effort of solving a particular task. The building of knowledge in the team is likely to be combined with the application, through trial-and-failure, of various solutions to the development task in question. Learning within the team may be based on expertise within the team, as seen in peer programming [9]. A student SE team may learn through interaction with course staff, e.g. a supervisor, and with the external customer, if the project is an industry project. In addition, there will typically be a need to acquire information from other sources, e.g. textbooks or resources on the Internet. Power structures in student SE teams can be seen as having several dimensions, for instance between the customer’s and the university’s goals, between experienced and inexperienced programmers, between various roles within the team, as well as between the team’s needs and individuals’ needs. A team typically regards it as the most important goal of their project to deliver working software in line with the customer’s requirements. Even when the project report weighs heavily in the formal assessment and grading of the project, documentation is typically conceived as something which is required by the university, but which is not too important for the customer – which might be a realistic observation [1] – and is not the real challenge of the project. With students’ orientation towards the ‘real’ development task follows that programming is regarded as the core of the practice of the community constituted by the SE team. Accordingly, the skilled and talented programmers get authority as core members of the team. The ongoing programming tasks tend to be both a major constraint and a driving force in the projects. As a result, whatever programmers decide to spend time on tends to be regarded as adequate use of time. Other team members, including the project manager, might not be able to judge whether it actually is. Team members good at activities regarded as secondary to programming will be closer to the periphery of the team community [10]. From the author’s professional experience as SE project course staff over several years, it is common in the teams that the role of project manager is seen as important, but less central to the project than the programmer role, mainly because good programmers are a scarce resource. Sometimes, due to convenience or availability, information needed for the team’s work is collected from outside the communities of the team, the university, and the customer organization. The information may be found in a more or less pedagogically organized form, and its gathering may be of a more or less interactive nature. Useful information sources include textbooks and tutorials, handbooks, FAQs, case descriptions / examples, and templates. Often, such resources are freely available on the Internet and can be found by the aid of a search engine. More interactive sources of information include communication channels belonging to a virtual community, e.g. associated with the use and/or development of a particular technology. Email lists, forums, wikis and blogs are frequently used to support virtual communities [11]. Also, synchronous communication may be supported through instant messaging and chat rooms. Gutwin et al. found that developers in OSS communities, who generally are distributed in their work, maintain awareness of each other primarily through text-based communication (mailing lists and chat systems) [12]. In order to cross the border to a (virtual) community, a certain understanding of the rules of interaction and the community as a social system is required [13, 14]. Lave and Wenger described how the mechanism of legitimate peripheral participation (LPP) allows newcomers to gradually become members of a community of practice [10]. Not only is LPP seen a way of entering the community; it is also seen as the basic way of learning the practices of the community. Wenger explained how two main mechanisms support the interaction between two communities: brokering and boundary objects [8]. A broker is an individual who is a member of both communities and is able to contribute to one community based on the understanding of the practices of the other community. Boundary objects, originally described by [15], are artifacts, abstract or concrete, that retain an identity across the communities they connect and play a role in the meaning-making of each community. A boundary object thus works as a means for two communities to coordinate their practices, even if the communities understand the boundary object in different ways and use it differently. Often, it will not be necessary for members of a SE team to become full-fledged members of a community to get necessary information from that community. In respect of communities related to a particular technology, there might be an opening for outsiders to participate as users, but not as developers. In the case of OSS development (OSSD), there is typically an openness that allows for participation in development for those who are able and willing to contribute. OSSD takes on many different shapes, but some general characteristics pertain to many developer communities [16]. The participation structure tends to be layered, with a core of active developers, intermediate layers of codevelopers, active users and, constituting the outer layer, passive users [17, 18]. Roughly, the model postulates that active users report defects, co-developers repair defects, and new and updated functionality is provided by core developers. Passive users may contribute by answering questions from other users. Contributions to the development of the OSS code may be seen as based a form of gift economy where the giver achieves status from giving away. At the same time, these mechanisms assure a certain quality of the code [13]. The threshold for being admitted as a developer in an OSS community may vary between projects, large OSS projects based on the sponsorship of major corporations being far more restrictive than small OSS projects in terms of accepting development contributions. 792 110

Due to the openness of OSS communities, students may use them as an environment for learning which is interactive, ‘real’ and outside the university. OSS development has been acknowledged both as a means and as an objective of learning in SE education. Whereas the number of studies reporting lessons learned from students’ participation in OSS development is still limited, experience and lessons learned from student projects have been reported (e.g. [19, 20]). Toth [20] lists the following benefits of using and extending OSS tools in student SE projects: a baseline of such tools automatically gives a ‘critical mass’ to the projects, the tools can freely be extended, using OSS is engaging for students, students may evolve their own tools (‘eating their own dog food’), and students increase their value in the job market. Spinellis [21] points to the following benefits of working with OSS in general: increased industry contacts, professional maturation, improved skills in written communication, experience with system administration, and exposure to management approaches. These are benefits equally relevant to SE and CS students as to SE professionals. Jaccheri and Østerlie [22] demonstrated that students may learn from an action research approach to participation in OSS development, resulting both in familiarity with action research and improved capabilities in programming and design. Ellis et al. [19] mention possible disadvantages of using OS projects as a basis for SE education: lack of documentation, inconsistent coding standards, and inconsistent quality. Lessons learned and guidelines emerging from current studies on student projects engaging in OSS communities generally address the pedagogical organization of SE project courses in which students’ primary development task is itself OSS development. There is however a lack of research on (i) ways in which the OSS community might be an important source of knowledge relevant to the students’ development task without being its main arena, and (ii) pedagogical issues arising from such a setting. This is where this paper aims to contribute. 3. OUR CASE The particular SE project investigated in this work is part of an undergraduate level course at a Norwegian technical university. The students take the course in the final semester of their Bachelor program, i.e. their 6 th semester. The students work in mostly selfformed teams of 3-5 students, developing software for an external customer. Students make a prioritized wish list from a number of available project descriptions mainly provided by industry, and teams are assigned tasks by course staff according to students’ preferences and skills. The workload of the course is half of the semester, but students tend to spend more time on the project, giving it higher priority than parallel courses. In addition to the software product, the students must hand in a project report (both a preliminary and a final version) to the customer and course staff. Also, the teams give oral presentations of their projects halfway through the semester and at the end of the semester. There are no lectures in the course except an introductory lecture in which available projects are presented. Each team receives supervision on their project process from a member of course staff, usually a teaching assistant. The customer is responsible for providing supervision on technical issues when necessary, as well as providing resources otherwise unavailable to the students (e.g. particular hardware, software, and physical or virtual workspace). Based on the course staff’s evaluation and customer feedback through an evaluation form, each team is given one grade (except in rare cases where major variation in individual work effort is documented by the team). The grade is based on a combination of the software product, the documentation and the project process. The teams are provided with some templates and guidelines for their work, e.g. related to project planning, status reporting and contents of the project report. There are no general requirements that any particular process model, analysis/design methodology, development tool or collaboration technology be used in the projects. Students are expected to relate to the customer’s requirements and draw on their skills and resources from previous and parallel courses at the university. The teams use tools available at the university, provided by the customer, or otherwise available. When needed and feasible within the time frame of the project, the teams are expected to get into new technology as part of their project work. The student team followed in the case study presented in this paper consisted of five male students: Ethan, George, Sam, Owen, and Morgan (names have been altered), all in their twenties. Their development task was to make an auctioning system for an IT consultancy company, here called Anniva. The company wanted to use the system for in-house purposes and as a substitute for an existing system used by employees to sell items (such as PCs and bicycles) to colleagues on a private basis. As a secondary objective for the project, the company wanted the team to make use of a particular open source Java development framework, here denoted PLENTI, in making the auctioning system, to see how the framework could be utilized. The team succeeded in developing the auctioning system, receiving the grade B on their project. (B is regarded as a good grade; of the nine project teams in the 2007 semester of the course, there were 2 As, 4 Bs and 3 Cs.) Crucial to the team’s development work, as will be seen, was their interaction with the PLENTI developer community. 4. RESEARCH METHOD The student team of our study was observed during the spring semester 2007, i.e. over a period of four months. Given the real-life context, focus on a contemporary phenomenon, lack of control over events and our intent to explore “how” and “why” aspects of the setting, a case study was appropriate [23]. Part-time participant observation was conducted with adherence to principles of interpretive field research [24]. For the research project at large, data (mainly documents and interviews) was collected across all teams in the course. Data for the study reported in this paper originate from an in-depth study of one particular project team and includes recordings, field notes and pictures from 15 hours of meetings between the team and customer/supervisor and 60 hours of teaminternal work sessions and meetings (mainly in the computer lab), copies of pages from the team’s wiki, some logged msn conversations, various project documents from the team’s workspace, the preliminary and final version of the project report, all email correspondence going through the team’s email list, recorded interviews with the team, the supervisor and the customer, and the threads in the PLENTI user forum (listserv) resulting from the team’s requests to the forum. Generally, the researcher was given free access to work sessions and meetings (participation and recording) as well as to the team’s server workspace, wiki and email list. The researcher attended all meetings with the customer, with the exception of a couple of meetings which were audio recorded for the researcher by a team 793 111

communicating with the OSS community through his brokering role<br />

maintained a position <strong>of</strong> power in the SE team.<br />

Based on our findings, we provide an account <strong>of</strong> (i) mechanisms<br />

enabling a SE team to successfully interact with an open source<br />

community <strong>and</strong> (ii) possible pitfalls <strong>and</strong> benefits <strong>of</strong> the engagement<br />

in terms <strong>of</strong> project success.<br />

First, we provide a theoretical background for the issues focused in<br />

our study. Next, we present our case, research method <strong>and</strong> findings.<br />

We further discuss the findings in the context <strong>of</strong> the above outlined<br />

research objectives, before concluding the paper.<br />

2. THEORY<br />

This section starts by providing a theoretical grounding for<br />

underst<strong>and</strong>ing power structures in SE teams, viewing teams as<br />

communities <strong>of</strong> practice. We then address how collaboration across<br />

communities can be achieved, before briefly outlining relevant<br />

research on how participation in OSS communities is typically<br />

structured <strong>and</strong> how OSS projects may serve as a resource in SE<br />

education.<br />

A student SE team can be viewed as a task-based <strong>learning</strong><br />

community [7], a form <strong>of</strong> community <strong>of</strong> practice [8] oriented<br />

towards <strong>learning</strong> <strong>and</strong> the time-limited effort <strong>of</strong> solving a particular<br />

task. <strong>The</strong> building <strong>of</strong> knowledge in the team is likely to be<br />

combined with the application, through trial-<strong>and</strong>-failure, <strong>of</strong> various<br />

solutions to the development task in question. Learning within the<br />

team may be based on expertise within the team, as seen in peer<br />

programming [9]. A student SE team may learn through interaction<br />

with course staff, e.g. a supervisor, <strong>and</strong> with the external customer,<br />

if the project is an industry project. In addition, there will typically<br />

be a need to acquire information from other sources, e.g. textbooks<br />

or resources on the Internet.<br />

Power structures in student SE teams can be seen as having several<br />

dimensions, for instance between the customer’s <strong>and</strong> the<br />

university’s goals, between experienced <strong>and</strong> inexperienced<br />

programmers, between various roles within the team, as well as<br />

between the team’s needs <strong>and</strong> individuals’ needs. A team typically<br />

regards it as the most important goal <strong>of</strong> their project to deliver<br />

<strong>work</strong>ing s<strong>of</strong>tware in line with the customer’s requirements. Even<br />

when the project report weighs heavily in the formal assessment <strong>and</strong><br />

grading <strong>of</strong> the project, documentation is typically conceived as<br />

something which is required by the university, but which is not too<br />

important for the customer – which might be a realistic observation<br />

[1] – <strong>and</strong> is not the real challenge <strong>of</strong> the project. With students’<br />

orientation towards the ‘real’ development task follows that<br />

programming is regarded as the core <strong>of</strong> the practice <strong>of</strong> the<br />

community constituted by the SE team. Accordingly, the skilled <strong>and</strong><br />

talented programmers get authority as core members <strong>of</strong> the team.<br />

<strong>The</strong> ongoing programming tasks tend to be both a major constraint<br />

<strong>and</strong> a driving force in the projects. As a result, whatever<br />

programmers decide to spend time on tends to be regarded as<br />

adequate use <strong>of</strong> time. Other team members, including the project<br />

manager, might not be able to judge whether it actually is. Team<br />

members good at activities regarded as secondary to programming<br />

will be closer to the periphery <strong>of</strong> the team community [10]. From<br />

the author’s pr<strong>of</strong>essional experience as SE project course staff over<br />

several years, it is common in the teams that the role <strong>of</strong> project<br />

manager is seen as important, but less central to the project than the<br />

programmer role, mainly because good programmers are a scarce<br />

resource.<br />

Sometimes, due to convenience or availability, information needed<br />

for the team’s <strong>work</strong> is collected from outside the communities <strong>of</strong> the<br />

team, the university, <strong>and</strong> the customer organization. <strong>The</strong><br />

information may be found in a more or less pedagogically organized<br />

form, <strong>and</strong> its gathering may be <strong>of</strong> a more or less interactive nature.<br />

Useful information sources include textbooks <strong>and</strong> tutorials,<br />

h<strong>and</strong>books, FAQs, case descriptions / examples, <strong>and</strong> templates.<br />

Often, such resources are freely available on the Internet <strong>and</strong> can be<br />

found by the aid <strong>of</strong> a search engine. More interactive sources <strong>of</strong><br />

information include communication channels belonging to a virtual<br />

community, e.g. associated with the use <strong>and</strong>/or development <strong>of</strong> a<br />

particular technology. Email lists, forums, wikis <strong>and</strong> blogs are<br />

frequently used to support virtual communities [11]. Also,<br />

synchronous communication may be supported through instant<br />

messaging <strong>and</strong> chat rooms. Gutwin et al. found that developers in<br />

OSS communities, who generally are distributed in their <strong>work</strong>,<br />

maintain awareness <strong>of</strong> each other primarily through text-based<br />

communication (mailing lists <strong>and</strong> chat systems) [12].<br />

In order to cross the border to a (virtual) community, a certain<br />

underst<strong>and</strong>ing <strong>of</strong> the rules <strong>of</strong> interaction <strong>and</strong> the community as a<br />

social system is required [13, 14]. Lave <strong>and</strong> Wenger described how<br />

the mechanism <strong>of</strong> legitimate peripheral participation (LPP) allows<br />

newcomers to gradually become members <strong>of</strong> a community <strong>of</strong><br />

practice [10]. Not only is LPP seen a way <strong>of</strong> entering the<br />

community; it is also seen as the basic way <strong>of</strong> <strong>learning</strong> the practices<br />

<strong>of</strong> the community. Wenger explained how two main mechanisms<br />

support the interaction between two communities: brokering <strong>and</strong><br />

boundary objects [8]. A broker is an individual who is a member <strong>of</strong><br />

both communities <strong>and</strong> is able to contribute to one community based<br />

on the underst<strong>and</strong>ing <strong>of</strong> the practices <strong>of</strong> the other community.<br />

Boundary objects, originally described by [15], are artifacts, abstract<br />

or concrete, that retain an identity across the communities they<br />

connect <strong>and</strong> play a role in the meaning-making <strong>of</strong> each community.<br />

A boundary object thus <strong>work</strong>s as a means for two communities to<br />

coordinate their practices, even if the communities underst<strong>and</strong> the<br />

boundary object in different ways <strong>and</strong> use it differently.<br />

Often, it will not be necessary for members <strong>of</strong> a SE team to become<br />

full-fledged members <strong>of</strong> a community to get necessary information<br />

from that community. In respect <strong>of</strong> communities related to a<br />

particular technology, there might be an opening for outsiders to<br />

participate as users, but not as developers.<br />

In the case <strong>of</strong> OSS development (OSSD), there is typically an<br />

openness that allows for participation in development for those who<br />

are able <strong>and</strong> willing to contribute. OSSD takes on many different<br />

shapes, but some general characteristics pertain to many developer<br />

communities [16]. <strong>The</strong> participation structure tends to be layered,<br />

with a core <strong>of</strong> active developers, intermediate layers <strong>of</strong> codevelopers,<br />

active users <strong>and</strong>, constituting the outer layer, passive<br />

users [17, 18]. Roughly, the model postulates that active users report<br />

defects, co-developers repair defects, <strong>and</strong> new <strong>and</strong> updated<br />

functionality is provided by core developers. Passive users may<br />

contribute by answering questions from other users. Contributions<br />

to the development <strong>of</strong> the OSS code may be seen as based a form <strong>of</strong><br />

gift economy where the giver achieves status from giving away. At<br />

the same time, these mechanisms assure a certain quality <strong>of</strong> the<br />

code [13]. <strong>The</strong> threshold for being admitted as a developer in an<br />

OSS community may vary between projects, large OSS projects<br />

based on the sponsorship <strong>of</strong> major corporations being far more<br />

restrictive than small OSS projects in terms <strong>of</strong> accepting<br />

development contributions.<br />

792<br />

110

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!