This program gives graduates of the discernment class an opportunity to put what they have learned into practice. They form a team and collaborate on a real-world project using Agile Methodology to plan each sprint, refine and estimate the size of issues, divide the work and review each other's code through PRs.
Much to the dismay of collaborators, the project is designed to give everyone many chances to run into merge conflicts, miscommunication, and other common problems that can emerge when working on a team. But they will also have the support of seasoned professionals to work through the challenges and learn from the mistakes.
The first TeamCode team was assembled from graduates from every Refcode cohort to date! They rebuilt the
refcode.org website from the ground up.
This video shows TeamCode collaborators at an early sprint planning meeting.
TeamCode collaborators met once per sprint for a sprint planning where we created tasks for work to be done, estimated them, and assigned them according to how much time each collaborator could commit to. The team coordinated throughout the sprint using Slack, in-person office hours, and GitHub. All code was checked into GitHub and reviewed by other team members.
To enable many team-members collaborating on a complex site, they utilized Atomic Design and maintained a pattern library to keep track of the components as they were built and updated. Once individual components (comprised of Atoms, Molecules and Organisms) were built, the final pages were assembled using the components.
As the skills of the collaborators grew, we decided to increase the complexity of the code to match their skill level, resulting in some pages being built out using React. The final website is a hybrid of static HTML and React pages.
Merge conflicts. So many merge conflicts. TeamCode was designed to give real-world experience with real team collaboration and communication, and that's exactly what happened. Following Agilie Methodology, the team chose their own set of sprint ceremonies to follow, which included sprint planning stand-up meetings, and project refinement. Collaborators got familiar with planning and tracking a project through GitHub Issues. They coordinated their work using GitHub issues and used GitHub pull requests to review each-other's code.
The Git feature branch workflow was used to manage code contributions, which means each collaborator had to fork the main repository ("upstream") and maintain it as their own "origin" repo. For each new feature that was added, collaborators:
upstream(to avoid merge conflicts!)
The best lessons were learned when things did not go smoothly. Not only did the collaborators learn the importance of creating processees to avoid accidental merge conflicts, but they were forced to deepen their knowledge of git and GitHub as well.
Here are the collaborators for the first TeamCode cohort. More info can be found on the GitHub team page.