The Carpool Vote team created a fully functional platform, from scratch, in less than three months! We did a fantastic job at working together to make this happen, with little in the way of a formal project management procedure.
We were particularly effective at making a working version available quickly, so people could start using the platform, while we made incremental improvements as we went along. This made it possible to test features, demo to partners, and train outreach volunteers in good time.
The nonhierarchical structure of the project created a space where highly competent developers could take initiative in suggesting improvements, and pass on knowledge so more junior developers could also make meaningful contributions.
The passion and adaptability of all of the developers were key to ensuring that the platform met the needs of our service users in 2016 - and made it possible to secure continued support from our partners.
We are working together with Slack, please join us using the link in the contributing page.
Moving forward, we would like to retain these positive aspects of how we worked together, while creating a more sustainable contribution structure. To do this, we will borrow from Agile project management methodologies.
Agile project management focuses on continuous improvement, scope flexibility, team input, and delivering essential quality products. It focuses on people, communications, the product, and flexibility - embodied in the following values:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Partner collaboration over contract negotiation
- Responding to change over following a plan
While there is value in the items on the right, we value the items on the left more.
The below is adapted from the 12 Agile principles in the Agile Manifesto.
- Our highest priority is to meet the needs of the partners and service users through
early and continuous delivery of valuable software. 2. We welcome changing requirements, even late in development, so we can remain adaptable to user needs as they emerge. 3. We deliver working software frequently, with a preference to the shorter timescale, so users can benefit from additional and improved features as soon as possible. 4. Developers work closely together with those in touch with customers and partners, at every stage of the project, so each new development is in line with user needs. 5. Our project is built around motivated volunteers. We create a supportive environment and trust each other to get the job done. 6. The most efficient and effective method of conveying information to and within our team is
video call. When time zones don't permit, messages should go to the relevant Slack channel, tagging all users concerned. IM should be used when data need to be protected. 7. Working software is the primary measure of progress. 8. We want this project to be sustainable. Now that the election crunch is over, we work at a pace that we can maintain. 9. We pay continuous attention to technical excellence and good design, to enhance agility. 10. Simplicity - the art of maximizing the amount of work not done is essential. 11. We recognize that best architectures, requirements, and designs emerge from self-organizing teams. 12. At regular intervals, we reflect on how to become more effective, then tune and adjust our behavior accordingly.
The product owner (Sasjkia) is responsible for bridging the gap between the service users, partners and other stakeholders, and the development team. She cultivates expertise on the platform, user's needs, and stakeholder priorities. She works with the development team to help clarify requirements.
The development team does the work of creating the platform. Programmers, testers, designers, writers, and anyone else who has a hands-on role in product development is a member of the development team.
The coordinators for the development team are Richard Westenra on the front end and Jon Kelly on the back end. They will work together, and with the other developers, to keep the process in line with the vision, product roadmap, and release planning outlined in the project roadmap.
The project will use the below roadmap for development:
- VISION: The product owner identifies the Carpool Vote vision. The vision is a definition of what the platform is, how it will support the Carpool Vote strategy, and who will use the product.
- PRODUCT ROADMAP: The product owner creates a product roadmap. The product roadmap is a high-level view of the platform requirements, with a loose time frame for when we will develop those requirements.
- RELEASE PLAN: The product owner creates a release plan. The release plan identifies a high-level timetable for the release of each feature.
- SPRINT PLANNING: At the start of each two-week sprint, the team has a video call to determine what requirements will be in the next iteration, then starts creating it
- SCRUM: During each sprint, developers post updates in the relevant Slack channel every other day - letting others know what they've completed, what they plan to work on, and any roadblocks they may have. This ensures that we all remain on the same page for the remainder of the sprint.
- SPRINT REVIEW: At the end of every sprint, developers report on what was created. The team then tests the iteration.
- SPRINT RETROSPECTIVE: After the sprint review, the team discusses how the sprint went and plans for improvements in the next sprint.