Content from Introduction


Last updated on 2025-06-16 | 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.

Some points here about the other modules

Blah blah blah

Key Points

  • 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-06-16 | Edit this page

Overview

Questions

  • Why work collaboratively?

Objectives

  • Understand the benefits of building a collaborative community

Most real-world projects involve teams

  • Too big to do alone

Produce working code more quickly

Better designs

  • Consider more options

Can be more enjoyable

Key Points

  • 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-06-16 | Edit this page

Overview

Questions

  • What are some challenges of working collaboratively?

Objectives

  • Understand challenges of 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

Key Points

  • 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 Social Aspects


Last updated on 2025-06-16 | Edit this page

Overview

Questions

  • What are important social aspects of building a collaborative community?

Objectives

  • Be aware of social aspects of building a community
  • Be able to apply these aspects to building your own collaborative community

Inclusivity

Codes of conduct and their enforcement

Attitude: “Our” vs. “My” software

Engaging with new contributors

Group practices

  • Leadership
  • Decision-making style
    • Egalitarian vs. acknowledged leader
    • How much autonomy does an individual developer have?
  • Time commitments to the project

Key Points

  • Social aspects of collaboration such as inclusivity, conduct and attitudes contribute significantly to how effective and enjoyable work will be.

Content from Socio Technical Aspects


Last updated on 2025-06-16 | 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

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

Key Points

  • None