My Experience with Chingu
Tags: collaboration, teamwork, chingu, webdev
Published: 2022-11-28 15:05:16

After a couple of significant pull requests in an [open source project](https://dev.to/klesand/how-i-started-contributing-to-open-source-27i8), I decided to apply to Chingu and join in the next voyage (Voyage 40). 

Chingu is a global platform where UI/UX designers, project managers and developers work remotely in small teams to create an MPV (minimum viable product) in 6 weeks. It's free and facilitated by volunteers. As an early career developer, I wanted to gain experience and see what it was like collaborating with others to build a project together from scratch while improving my soft skills. I also wanted to learn from others.

## The application

I applied on Chingu’s website. There are 3 tiers to choose from - beginner, intermediate, advanced. 
* Tier 1 is for beginners with HTML, CSS, and a little bit of JavaScript experience. 
* Tier 2 is if you have more frontend experience. 
* Tier 3 is fullstack.

I chose tier 2, submitted my own React project and I also joined their Discord channel. 

After they reviewed my solo project, they gave me valuable feedback and I got accepted into the next voyage. I filled out a form to include my timezone and other details, like how many hours a week I can commit to the project. I was placed in a team of other Chingus with similar skills within a few hours of my timezone.

At this point I received more information on Agile sprint project management and how to be successful in the voyage. Chingu runs interactive roundtables each week where they teach various topics needed to complete a successful voyage and questions are encouraged. The roundtables aren’t mandatory to attend but I recommend attending as I found them very beneficial.

## Meeting the Team

After our team channel went live, it took a couple of days for everyone on the team to begin participating. We had our first meeting as soon as we could and we met via voice call for 1-2 meetings every week. Though it was a front-end project, we had a backend developer on the team so we decided our stack to be React.js, NodeJS and MongoDB.

It would have been amazing to have had a project manager and a UI/UX designer on the team so instead, we had to share these roles. One team member wanted to practice his Figma skills so he took on the role to create the design for the landing page and the login/register forms. I quickly created a wireframe for the core part of the app where the user uploads photos, votes and comments.

## The Project

We decided to build a project that would be useful to designers. The app has a landing page where the user can login or register.

![landing page](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lro6gk0qk0bi61u2oy7p.png)

I worked on the login/register forms with email/password and Google authentication using Context API and OAuth, the logout functionality and automatic logout after one hour.

![login page](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ytn8ktgdt246rq94vu50.png)

Here's the best part of the app with instructions for the user step by step.

![WeDesign](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/howwba446jjw4tvlodwt.png)

The user can upload two photos.

![uploading photos](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/t9h9oy2ai8tfqbwdi25v.png)

Both Canadian Rocky mountain photos are from Pexel by [Samuel Bütikofer](https://www.pexels.com/@samuel-butikofer-3490375/) and [Joshua Woroniecki](https://www.pexels.com/@joshuaworoniecki/)

The user creates a voting page they can share with others where users can vote on the photo they prefer, and post comments on the page.

![voting page](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8ciu98h8qqjog6r728me.png)

## The Challenges

1. Consistent communication was often a challenge, with some members more active than others and there were 6 of us on the team initially. Members would get busy with their lives outside the project and pull back without notifying the team but would come back again later.

2. Another challenge was to get members to push code weekly to stay on track with Agile sprints because they preferred to code locally. If I were to join another Chingu voyage, I would definitely insist on putting up code weekly, even if it’s just a simple skeleton of a part of the app. Putting the code together at the end is more challenging, likely to create bugs and code review might be done too quickly.

3. Initially we set up Firebase for the backend just so we could run tests with APIs for the login/registration forms and uploading/storing photos on the Firestore while the backend developer worked on setting up the backend. Unfortunately, the backend developer and another frontend developer dropped out in the middle of the project, so the four of us decided to stick with Firebase and we quickly adapted to finishing the project on time with fewer people. This was also really cool because we saw the team come together to make sure we met the deadlines despite our challenges.

## Flexibility, Adaptability, Teamwork

With no project lead, all decisions are made as a team. That means that being flexible was important as we discussed decisions but then voted when we disagreed. This helped us move forward quickly, not getting attached to small things, but keeping in mind what most of the team preferred.

Adapting is the best skill to learn here. One example is that since two of our members dropped out without notice, we had to quickly change the way we split our work between us and the way we used Firebase as a team. I prefer to work consistently during a project but sometimes it can't be helped and a rush is necessary at the end of the project. We came together and put in extra hours to make sure it was done - and that was awesome!

Team members filled out an optional weekly check in form so Chingu facilitators were aware of our challenges and successes. Then the facilitators messaged us privately and made sure to communicate recognition from the other team members. For example, often I heard that the team appreciated my efforts, like helping others, which helped keep up team motivation.

## Learning & Experience

* This experience threw me head first into an independent, yet collaborative experience. There was no hand holding of any kind. If the team members didn’t come together for the project, there would be no project at the end of the voyage. Even if we hadn’t finished the project on time, it still would have been an important learning experience. Luckily, we finished on time! It’s great to have a completed project after the work we put into it,  while seeing a team come together despite being strangers.

It can be challenging to work with others and this experience taught me a lot and increased my confidence as a team member. It helped that we could reach out to Chingu facilitators for advice on collaboration.

* I got to learn from others by reading their code but also seeing how they manage team relationships - the good and the bad. I learned how to balance being a laid back team member and when to take charge to make sure the team meets deadlines. I learned (and enjoyed) improving other people’s code.

* I experienced what it’s like to work on a remote team and I worked on a real project, ending up with my first team project coded from scratch. I also got to experience a lot in six weeks that gave me a lot to talk about in behavioral interviews about coding, team collaboration, lessons learned etc. It also allowed me to experience what it would be like to work in this career.

## Conclusion

This was a great experience for me and we finished the project on time. But even if we hadn't finished on time, it still would have been just as good of a learning experience. I gained both technical and soft skills and I would definitely do it again.