Content from Introduction
Last updated on 2025-07-14 | Edit this page
Overview
Questions
- What makes for an effective development community that is also enjoyable to work in?
Objectives
- Understand how this module fits in with other, more technically oriented modules in contributing to building an effective collaborative community.
This lesson serves as an introduction the the other lessons on Working Collaboratively:
- Tools for Working Collaboratively
- Collaborative Git
- Issues and Pull Requests
- Documentation
- Licensing
- Project Management
- Code Reviews and Pair Programming
The slides for this introduction can be found here.
- Building an effective collaborative community involves Social, Socio-technical and Technical aspects.
- Other modules cover some of the technical aspects, such as Project Management, collaborative use of Git and GitHub, Code Reviews and Pair Programming.
Content from Benefits
Last updated on 2025-07-14 | Edit this page
Overview
Questions
- Why work collaboratively?
Objectives
- Understand the benefits of building a collaborative community
Take a few minutes to think about what the benefits of working collaboratively might be.
Some benefits we have come up with are:
- Most real-world projects too big to do alone
- Produce working code more quickly
- Better designs by considering more options
- Can be more enjoyable
The slides for this introduction can be found here.
- Most projects involve working together.
- Most people produce better code and enjoy work more when they work with others.
Content from Challenges
Last updated on 2025-07-14 | Edit this page
Overview
Questions
- What are some challenges of working collaboratively?
Objectives
- Understand challenges of working collaboratively
Take a few minutes and think about what challenges you have come across when working collaboratively.
- Logistics
- Location
- Time zone
- Decision-making
- Standard practices
- Designs
- Communication and coordination
- Who works on what
- Status
- Egos (personal factors)
- The benefits of collaborative construction are greatly affected by the egos, or humility, of the participants
- The Egoless Programmer
“…most of programming is an attempt to compensate for the strictly limited size of our skulls. The people who are best at programming are the people who realize how small their brains are. They are humble. The people who are worst at programming are the people who refuse to accept the fact that their brains aren’t equal to the task. Their egos keep them from being great programmers. The more you learn to compensate for your small brain, the better a programmer you’ll be. The more humble you are, the faster you’ll improve.” (Code Complete 2ed. pg. 821, summarizing a 1972 Turing Award lecture by Edsger Dijkstra)
Strive to become an egoless programmer
The slides for this introduction can be found here.
- Logistics, decision-making and communication all can negatively impact your ability to work effectively
- Egos can be a significant problem. Strive to be an egoless programmer.
Content from Socio Technical Aspects
Last updated on 2025-07-14 | Edit this page
Overview
Questions
- What are important socio-technical aspects of building a collaborative community?
Objectives
- Be aware of socio-technical aspects of community building
- Be able to apply these aspects when building your own community
The following are technical considerations when working collaboratively:
- Remote Collaborations
- Meeting scheduling
- Need for more explicit communication
- Feeling “part of the team”
- Getting to know each other
- Modes of communication
- Common terminology
- Helping people at remote sites
- Understanding team expertise
- Science
- Data
- Visualization
- Computer system and language
The slides for this introduction can be found here.
- Technology can augment collaboration, but it is not a replacement for clear communication.
- Make use of the diverse experience on your team. Different technical skills make a well-rounded team and is a great opportunity for collaboration.