Collaborative Development - RepoCamp/ohsu2018 GitHub Wiki
Overview
The Samvera community employs little-a agile development practices. This means we focus on delivering incremental functionality created by self-organizing cross-functional (and cross-institutional) teams. At the community and individual institutional level, we generally work in short sprints, focusing on tickets that describe new features and functionality requested by our users. We engage in a continuous process of planning and reflection to ensure we're on track to delivering value to our users.
Various teams employ slightly different practices, but a few themes run throughout our community:
- Collaboration via tools that enable shared ownership such as public source control e.g. GitHub
- Processes and tools that help make work visible such as agile boards and continuous integration services - e.g. Waffle and Travis-CI
- Rituals and rhythms that encourage the radiation of information throughout working teams such as sprint planning, daily stand-ups, and sprint demos
- A spirit of continuous learning and improvement
- A commitment to providing a welcoming, safe, and respectful environment for everyone - see our Code of Conduct
Rhythms & Meetings
- Release planning: High-level goal setting for the most valuable features to be released next. Releases can require multiple sprints.
- Backlog grooming: Sorting the possible work to be done in order of user value - how much benefit does this work provide. Sometimes balanced against the effort required. Led by Product Owner.
- Sprint planning: Goal setting for the next increment of work; often 1 or two week sprints.
- Daily stand-up: Planning for the next 24 hours; coordination of work in support of the sprint goals.
- Sprint demo: Showcasing the work done during the last iteration of work. Typically led by the development team. All stakeholders and interested parties invited.
- Sprint review or retrospective: Internal team review of successes, challenges, and lessons learned during the sprint. Helps the team capture and persist helpful practices. Gives a safe environment to reflect on areas for improvement. Wash, rinse, repeat...
Collaborative Coding
- Do development work in (short-running) feature branches. Integrate early, integrate often.
- Encourage peer review through pair programming and ego-less code reviews of pull requests
- Use commit messages that communicate effectively to colleagues
- Follow the community guidelines for contributing.
References
- Info World: What is agile methodology? Modern software development explained (March 15, 2018)
- Medium: Compassionate Coding