Collaborating on Git!

Introduction

Background and Motivation

Git is the industry-leading version control system that streamlines software development and helps teams collaborate more efficiently. It provides a wide range of features to track changes, manage projects, store code, resolve conflicts, create branches/rollbacks and keep an eye on contributions from each team member. Its excellent performance, security, scalability and many implementations make it the standard version control system today. It also has powerful integrations within modern integrated development tools to help coordinate tasks such as code reviews merging or scheduling efficiently amongst multiple developers.

To my surprise, I discovered that when it comes to the fundamentals of Git, many second-year software engineering students are completely lost. They lack the collaboration skills needed for a successful project and don’t understand how crucial requesting proper merges is with this online tool. Instead of utilizing proper merge requests for documents through Git’s powerful online tooling capabilities, these same students are emailing their work in and waiting for manual merges from leaders, which disregards best practices and overlooks useful commands available at their disposal.

Overview

This project aims to equip second-year post-secondary computing science students with the basic knowledge and confidence necessary for working on team projects with an introduction to Git. Through specific workflows that reflect real-world situations, students will experience how software developers can use Git efficiently, effectively, and ethically when collaborating in a group setting. As most have no prior exposure upon starting their course in Software Engineering at my school – this proposed lesson provides them with an invaluable opportunity before participating in more extensive collaborations later in the course.

ISTE Standards

The exercise is developed to align with the International Society for Technology in Education standards for students.  These standards promote students taking charge of their learning by giving them a voice and encouraging the process to be led by them. This creates an empowering environment in which they can reach new levels of achievement.

ISTE 2 Digital Citizenship

By exploring the Git-suggested workflows, students will gain a valuable understanding of working and collaborating ethically in teams. We’ll ask them to consider their rights as content producers on this platform while respecting its privacy rules, by making sure they use public/private repositories appropriately and only grant necessary access when needed. This is in alignment with ISTE standard 2a. “Students cultivate and manage their digital identity and reputation and are aware of the permanence of their actions in the digital world.”, 2c. “Students demonstrate an understanding of and respect for the rights and obligations of using and sharing intellectual property.” and 2d “Students manage their personal data to maintain digital privacy and security and are aware of data-collection technology used to track their navigation online.”

ISTE 1 Digital Citizenship

By using Git, students have the ability to interact with one another and merge their efforts on a project. This allows them to share feedback within the team and quickly implement it into their development cycle for greater overall productivity. This is in line with ISTE standard 1b. “Students use technology to seek feedback that informs and improves their practice and to demonstrate their learning in a variety of ways,” and 1c, “Students understand the fundamental concepts of technology operations, demonstrate the ability to choose, use and troubleshoot current technologies and are able to transfer their knowledge to explore emerging technologies.”

ISTE 7 Digital Citizenship

Broadly stated, ISTE standard 7 states, “Students use digital tools to broaden their perspectives and enrich their learning by collaborating with others and working effectively in teams locally and globally.” This collaborative exercise will enable students to hone their skills remotely, allowing them to experience working with peers from different backgrounds globally, the exercise centers around this core standard.

Backwards Design

We utilize the backwards design principles to create a successful learning experience (Wiggins & McTighe, 2005). This process involves three distinct stages. Firstly, our goals are aligned with accepted content standards and curriculum expectations to identify desired results. Secondly, acceptable evidence is established in order to validate that these objectives have been achieved, emphasizing knowledge over activities or covered material alone. Finally, we plan instructional experiences and instruction based on what learners need to achieve their goals.

Stage 1 Identify Desired Results

Establish Goals:

There are two main departmental learning outcomes based on this exercise:

  1. (LO1a) Students will be introduced to team processes and cooperative programming and understand their pros and cons.
    • Students will understand the use and workflows of using Git as a collaboration tool.
    • Students will collaborate on a document.
  2. (LO2a) Students will understand how to communicate effectively within a team.
    • Students will decide on a workflow for conflict resolution.

Essential Questions:

The provocative questions that foster student inquiry, understanding and transfer of learning:

  • How can you resolve conflicts or disagreements with a spouse or significant other?
  • Why is it important to communicate in any relationship?
  • Why is it essential to collaborate instead of working alone in a software development setting?

Understandings:

Students will understand

  • The general workflow of Git.
  • Why it is essential to use a collaboration tool in software development.

Knowledge:

Students will know the following:

  • What a Git repository is, and what it’s used for
  • The basics of collaborative development
  • The Git conflict resolution process

Skills:

Students will be able to:

  • Fork a project
  • Push updates to branches
  • Merge branches
  • Create merge requests
  • Communicate with teammates over git

Stage 2 – Assessment Evidence

The following are acceptable evidence of learning. We will assess the following via the six facets of understanding outlined by Wiggins (Ch4). To demonstrate mature understanding, students: can explain, can interpret, can apply, can empathize, have perspective, and have self-knowledge of the concepts.

Performance Tasks: what would be sufficient and revealing evidence of understanding?

  • Students can create a branch for their own work (can apply)
  • Students can create a pull request and communicate via the Git interface with the team. (can apply)
  • Students can fork a project from a Git repository (can apply)
  • Students can add text to a document and push it to a repo on Git (can apply)
  • Students can create a merge request and communicate with others in a team. (perspective)
  • Students can resolve conflicts in a file to make a finalized merged document (perspective, can apply)
  • Students can remove a committed document and erase history (can apply)

Other Evidence Required: What are the types of evidence required by Stage 1 desired results?

Academic Prompts:

  • A merged finalized document on the main development branch: Students will add a short profile about themselves and their development background on a pre-existing document.  They will request to merge their part into the main document and deal with any conflicts. The result is a text document that contains background profiles about each of the members of the team. 
  • Properly merged commit tree on a new Git repository after the assignment. The commit tree on the newly created repository should resemble standard merge practices on Git and have evidence of proper communication between teammates.
  • Students can write proper Git messages to communicate a commit or a merge appropriately (empathy)

Quiz and Test Items:

  • Explain the Git conflict resolution process (can explain)
  • Explain Git branches and when to use them (can explain)
  • Describe forking, merging, rebase, revert, and reset (can explain)

Student Self-assessment

  • Students will reflect on improvements to adopt within their groups for a more complex document (self-knowledge).
  • Justify the current workflow and explain other workflows students could have taken to arrive at the same results (self-knowledge).

Stage 3 – Learning Experiences

These exercises are designed to get creative juices flowing and facilitate collaboration between team members. They provide specific workflows and reflections so students can see the bigger picture. They are assessed through the WHERETO standard (Wiggins, 2005):

  • Where is it going?
  • Hook the students
  • Explorer and Equip
  • Rethink and revise
  • E2xhibit and evaluate
  • Tailor to specific needs
  • Organize for maximum engagement and effectiveness

In the classroom (Optional)

Provide each group with a poster board and have students write a brief paragraph on the poster board highlighting their common interests. Each student should write their programming experience and name on individual pieces of paper. Then, manually combine the individual papers with the poster board to create a single poster representing the group. (W,H,O)

Reflect on the following question: What difficulties might arise if we attempt to concurrently write on the poster board? (R)

Setup

Read 1.3-1.8 in the Pro Git Book (W)

  1. The students will complete a survey about their previous exposure to Git, command line tools, and teamwork. The exercise will begin at a different stage depending on their past experience. (W)
    • Students who lack prior experience will be required to install Git. (T)
    • Students who have some familiarity will need to configure Git. (T)
  2. An experienced student will serve as the repository owner. They will fork (or download) a markdown file for a pre-existing project description template from a repository and transfer it to a new repository accessible by the entire team. (E, T)
  3. Reflect on the following question: What are other ways that step 2 could have been accomplished? What are the advantages and disadvantages of each? (R, E2, O)

Experience 1: Git Basics as an individual developer

Read 2.1-2.5 in the Pro Git Book (W)

  1. Students will create a new markdown file that includes their answers to the self-assessment survey. (H, E, T)
    • They will view the changes that they have not committed yet.
    • They will commit their changes. (E)
  2. Students will practice un-staging a commit and re-staging it. (E, E2)
  3. Students will examine their remote and push their work to the main branch. They will check the main branch on the repo and see the results. (H, O)
  4. Reflect on the following question: What will I do if I have staged a change but want to amend it? What if I have committed a change but want to amend it? (R)
Figure 1: Results of Experience 1 on Git

Experience 2: Git Branching

Read 3.1-3.4 in the Pro Git Book (W)

  1. The students will generate a new working branch and switch to it. (E)
  2. In the shared markdown file, students will insert a section introducing themselves. This section should highlight their strengths, developer background, interests, and sociocultural background. (E, T)
  3. They will then commit and push these changes to their branch. (E, O)
  4. Reflect on the following question: With respect to the classroom exercise, what issues may arise during this phase? What is the definition of “stashing”? (R)
Figure 2: Results of Experience 2 on Git

Experience 3: Merge Request

  1. Students will initiate a merge request. (E)
  2. They will then wait for feedback from other group members, with every member expected to participate. (E)
  3. Finally, they will merge their branch into the main branch. (H, O)
  4. Reflect on the following question: What should you look for when a group member creates a merge request? What type of feedback would be constructive and supportive to the group member? (R, E2)
Figure 3: Result of Experience 3 on Git

Reflection

This backwards design process was a great way to carry out this exercise. Evaluating the facets of understanding made it apparent that most assessment evidence centred around application, which makes sense since learning software is fundamental here. Incorporating an empathetic and reflective component into activities could also encourage students to think strategically about how Git can be used in collaboration and why they should use it as part of their software engineering coursework. Ultimately, my hope is that these exercises will promote better comprehension of using Git for future projects.

Issues with Remote Agile Software Development

Introduction

The Agile methodology is a software development approach that prioritizes flexibility, collaboration, and iterative delivery. It involves breaking down the development process into smaller segments called sprints that typically last 1-4 weeks. The focus is on teamwork, communication, and daily stand-up meetings to keep everyone informed. Agile emphasizes individuals and interactions over processes and tools, making it a popular approach in modern software development (Agile Manifesto, 2001). However, the sudden shift to remote work has impacted the personal nature of this model.

During the COVID-19 pandemic, companies like Google, Tesla, Microsoft, and Twitter implemented remote work policies to protect their employees. As the pandemic subsides, these companies are asking their employees to return partially to in-person work, which has sparked a debate about the advantages and disadvantages of remote versus in-person work arrangements. To investigate the impact of remote work policies on team culture and productivity, several studies have examined various aspects of agile development, including onboarding, client and team dynamics, and work-life balance. Some studies suggest that remote software development can be just as effective as in-person development, while others have found that it can lead to decreased productivity and challenges in communication and collaboration.

In this article, we will discuss these findings in the context of the ISTE standard for students 1.7c: “students contribute constructively to project teams, assuming various roles and responsibilities to work effectively toward a common goal.”

Remote Team Dynamics and Development

Mob (or pair) programming is a collaborative approach to agile software development where a group of developers work together on the same task. One person acts as the driver and writes code on the computer, while the rest of the team acts as navigators and provides input, gives suggestions, and thinks strategically about the future. This approach has many benefits, including improved code quality, increased knowledge sharing, and faster problem-solving. It is considered fundamental to the success of many teams, as it aids in solving complex problems by working together. However, Nolan (2021) found that during the pandemic, there was a significant decrease in pair programming and mob programming activities, which significantly impacted companies with a mob programming culture. Without this collaboration, productivity may remain constant, but it could lead to bug fixes or a more complex redesign of features in a later development stage. This is because mob programming allows a development team to consider the big picture while developing a feature, enabling them to see the forest from the trees.

Scrum is another crucial process in agile software development. It involves short daily meetings held by a team to stay synchronized and on track. While many studies have argued that these meetings have little impact on productivity and meeting deadlines (Miller, 2021; Butler, 2021), other studies have found that distractions during virtual scrum meetings can be problematic. For example, Butt (2021) found that team collaboration decreases as there are fewer discussions about user stories or project complexities, and team members may become distracted by emails during these meetings. This can limit the effectiveness of the agile approach. Additionally, attendance at scrum meetings is decreasing, which can be a significant problem as these meetings are crucial for the team’s synchronicity, development progress, and the long-term success of a project, regardless of progress in other areas.

Team meetings are a valuable learning opportunity, particularly for junior development team members. During these meetings, developers can work together, receive feedback from colleagues, share knowledge and experience, and develop confidence in their abilities (giving them a “seat at the table”). While some aspects of this learning experience can be replicated online, Schwartz et al. (2022) demonstrated that remote meetings result in different cognitive processes than in-person meetings. Specifically, certain brain-behaviour associations arise only during live idea exchanges, indicating that specific neurobiological processes underlie human co-presence and are more beneficial for learning than remote meetings.

A goal of the agile development process is client satisfaction. However, according to a survey by Butt (2021), developers reported a decrease in remote collaboration with customers due to issues such as scheduling conflicts, slow internet speeds, and availability to discuss the project. As a result, most of the feedback from the client was received via email or on story cards. Furthermore, 76% of clients reported dissatisfaction with remote meetings with developers due to delayed project delivery times, increased costs, output not meeting their needs, fewer meetings with developers, and overall lower satisfaction with the work.

Hiring and Onboarding

During the pandemic, tech companies experienced a surge in hiring to meet the demand for developers with work-from-home abilities. To ensure a high-quality candidate experience, the virtual hiring process had to be reworked. To aid in the selection process, companies increased the number of staff involved and added more interviews. The technical interview process, which often involves whiteboarding and other in-person techniques, also had to change to a remote and less desirable setting. Candidates found it challenging to envision the company culture during online interviews, while interviewers struggled to assess non-verbal communication, like body language. Furthermore, candidates with better internet connections tended to be implicitly favoured, as highlighted by Fiechter et al. (2018).

The pandemic has affected how software development teams introduce new hires to their company. Rodeghero et al. (2021) conducted a study on 267 new hires at Microsoft. They found that most were onboarded remotely and never had the chance to meet their colleagues in person, as most meetings were conducted with cameras off. This created a challenge for new hires in building strong social connections with their team and feeling comfortable approaching anyone for help. Additionally, since new developers come from different backgrounds and have different levels of experience, a standard approach to onboarding was found to be ineffective. The researchers suggest that onboarding processes should prioritize team communication, encourage camera use during meetings, assign an onboarding buddy and mentor, support different onboarding speeds, and provide up-to-date documentation on company workflows.

Finally, Team managers can face several challenges when working on new projects with new teams. One such challenge is facilitating effective collaboration and problem-solving among team members. This is particularly true for challenging projects that require creative and innovative solutions. While many remote tools are available for brainstorming and problem-solving, research by Nolan et al. (2021) suggests that initiating new ideas without in-person interaction can be more challenging and may benefit from co-located interaction. When team members are physically located in the same space, it is easier to share ideas, build rapport, and collaborate effectively. They can have unplanned discussions and engage in informal brainstorming sessions.

Work/Life Balance

In a survey conducted by Miller (2021), which included over 2000 software developers, it was found that many developers experienced an increase in scheduled meetings, group member notifications, and ad-hoc meetings, while also experiencing a decrease in the quality of meetings and their ability to collaborate with team members. Despite efforts by numerous teams to use social engagements to support their members, 74% of respondents still reported feeling a lack of social interaction in a work-from-home environment.

According to another study by Bulter et al. (2021) conducted at Microsoft, the impact of remote work varied based on individual roles, characteristics, and sociological factors. Individuals who are visually impaired or communicate through body language face unique challenges with remote communication since it relies heavily on visual cues. Additionally, neurodivergent professionals may prefer to keep their videos off during meetings as specific activities that help them remain stimulated or calm down may be misconstrued or cause distractions for other attendees. The study also found that remote work provided flexibility during the pandemic but blurred the boundary between work and personal life in problematic ways. Non-work distractions increased, while work-related distractions decreased, leading to a sense of social and collaborative isolation for most workers in their study.

Conclusion

Remote agile software development requires different skills and tools than in-person development. Teams must rely on virtual communication tools like video conferencing, instant messaging, and collaborative software platforms to stay connected and productive. This presents several challenges that must be addressed to maintain productivity, quality, and customer satisfaction. Developers and team managers must navigate obstacles such as remote collaboration difficulties, new team onboarding, and the need for social connection and support. Additionally, the impact of remote work on individual workers varies, with factors such as role, characteristics, and sociological factors playing a significant role. Overcoming these challenges requires a multi-faceted approach, including promoting team communication, encouraging social interaction, providing mentorship and support, and adapting the onboarding process to meet individual needs. By addressing these issues, remote agile software development teams can continue to thrive in the face of the ever-evolving challenges of the modern software development environment.

References

Nolan, A., White, R., Soomro, M., Dopamu, B. C., Yilmaz, M., Solan, D., & Clarke, P. (2021). To Work from Home (WFH) or Not to Work from Home? Lessons Learned by Software Engineers During the COVID-19 Pandemic. Communications in Computer and Information Science, 14–33. https://doi.org/10.1007/978-3-030-85521-5_2

Schwartz, L., Levy, J., Endevelt-Shapira, Y., Djalovski, A., Hayut, O., Dumas, G., & Feldman, R. (2022). Technologically-assisted communication attenuates inter-brain synchrony. NeuroImage264, 119677. https://doi.org/10.1016/j.neuroimage.2022.119677

Fiechter, J. L., Fealing, C., Gerrard, R., & Kornell, N. (2018). Audiovisual quality impacts assessments of job candidates in video interviews: Evidence for an AV quality bias. Cognitive Research: Principles and Implications3(1). https://doi.org/10.1186/s41235-018-0139-y

Butt, S. A., Misra, S., Anjum, M. W., & Hassan, S. A. (2021). Agile Project Development Issues During COVID-19. Lecture Notes in Business Information Processing, 59–70. https://doi.org/10.1007/978-3-030-67084-9_4

Agile Manifesto. (2001). Manifesto for Agile Software Development. Agilemanifesto.org. https://agilemanifesto.org/

Miller, C., Rodeghero, P., Storey, M.-A., Ford, D., & Zimmermann, T. (2021). “How Was Your Weekend?” Software Development Teams Working From Home During COVID-19. 2021 IEEE/ACM 43rd International Conference on Software Engineering (ICSE). https://doi.org/10.1109/icse43902.2021.00064

Butler, J., Czerwinski, M., Iqbal, S., Jaffe, S., Nowak, K., Peloquin, E., & Yang, L. (2021). Personal Productivity and Well-being — Chapter 2 of the 2021 New Future of Work Report. ArXiv:2103.02524 [Cs]. https://arxiv.org/abs/2103.02524

Rodeghero, P., Zimmermann, T., Houck, B., & Ford, D. (2021). Please Turn Your Cameras On: Remote Onboarding of Software Developers during a Pandemic. IEEE Xplore. https://doi.org/10.1109/ICSE-SEIP52600.2021.00013