DEV Community

Cover image for What I Learned From Project Collaboration With The Collab Lab
Ayu Adiati
Ayu Adiati

Posted on • Originally published at adiati.com

What I Learned From Project Collaboration With The Collab Lab

Hello Fellow CodeNewbies ๐Ÿ‘‹,

These past 8 weeks I did a collaboration program with The Collab Lab.
And those 8 weeks ended. It's a wrap! ๐ŸŽ‰

celebration gif

It was one great experience for me as a self-taught web developer to build an app together with other developers.
This experience enriches my knowledge in the web development world. I learned so many things. Not only technical but also how to collaborate in a team. I also discovered more things about myself. About my strengths and also things that need improvement.

In this article, I want to share my journey with The Collab Lab.

What is The Collab Lab?

The Collab Lab is a non-profit project collaboration program for early-career developers that runs by volunteers.
Their main focus is guiding the participants to collaborate in creating a React project.

Why and how I (finally) applied to join a cohort of The Collab Lab

I have heard about The Collab Lab for a while and I wanted to join the program.
I am a self-taught web developer. So I don't have any experience in working together with other developers to build a project.

When I started learning React, I thought I will apply to this program when I'm ready.
But also around that time, a friend of mine who was doing a cohort encouraged me to apply.
So I submitted my application a couple of days before the application period was over. I didn't even think of getting accepted.
But my heart jumped with excitement when I received the e-mail that I got accepted in the Fall cohort 2021! ๐Ÿ˜

How the collaboration works

We are a team of 4 working together to create an app called smart shopping list. We created this app with React and Firebase as the database.

The collaboration program is based on Agile methodology.
Every week, we have 2 tasks to work on. And 2 developers are assigned to each task.
The basic commitment of The Collab Lab is that we spend 5 hours a week, sync & async, to get the work done.
Before our sprint at the end of the week, we have to push our task and create a pull request on GitHub. The other team - and then one of our mentors - will do a final check and code review before it's merged into the main branch.
Then at the end of the week, we will do the sync meeting where we demo our tasks and walk through our code.

What I learned

Git and GitHub

It's not that I'm learning this for the first time. But I'm getting much more comfortable using git and GitHub.
We learned how to write a good pull request and how to use the comment section for communication. We also learned (in a hard way) that we better avoid any command using --force ๐Ÿ˜†.

React

Yes. As I mentioned before, I started to pick up React not long before I got accepted. So with this opportunity, I learn much more about React from collaborating with my teammates and from our mentors.

Firebase

My team's task for the first week was setting up Firebase. Then we had to connect the Firebase with React to add and get data from the database.

I never worked with Firebase before. I had to learn Firebase from scratch in such a short time. Adding to the note, Firebase v9 launched that week. So there were only a few resources about it. Although it was stressful to figure things out, it was also fun. I collaborated across teams to work on this.

Bootstrap

We have to style our app as our last task. To keep a simple styling, we agreed to use a CSS framework instead of vanilla CSS. Our choice goes to React-Bootstrap with Bootstrap v5.0. We chose it because the documentation is clearer and it has many resources.

I have never used Bootstrap before. It was the first time for me to learn and use it in a project. But it wasn't too painful to pick it up on the go.

Accessibility

We have to make our app as accessible as we could.
As I want to dive more into accessibility, this is a great opportunity for me to learn more about it by doing.
I used WAVE, Lighthouse, Axe DevTools, and NVDA to audit the accessibility. And I learned so much about it!

Pair program

As a self-taught, this is one of the things that I cannot get. I did have one single experience with mob programming. And I know, it's definitely not for me. I get lost and anxious with mob programming ๐Ÿ˜….
But pair programming is different.

During the program, I did some pair programming with my teammates.
I'm still not comfortable with it and need to practice it more, but I like it better than mob programming. I learned so much from pair programming. I learned how to listen, ask questions, discuss approaches, and many more.

Delegate tasks

Every week, we work in a team of 2 to finish a task. In the beginning, we tended to work on a task ourselves, had a meetup, and choose which one that we would push to the repo. But along the way, we learned to work together, break and delegate the tasks.

One time, I was responsible for the logic of dynamic background colors and aria labels. My teammate was responsible for the logic of sorting the items. Then we decided who will demo the app and who will walk through the codebase on the sprint.
Another time, for the final task of styling, each of us was responsible to style one component. We coordinated and decided on the design, color, and font type that we will use before we worked on our tasks.

(Remote) Communication

We live in different countries and continents. That's why communication plays an important role in our collaboration.

I learned that communication is not only about how we deliver our thoughts through words. It's not only about the way we talk to someone.
Communication is also about how to listen, be respectful, and have empathy.

Respect people's time. Tell them when we have to cancel an appointment and not leave them waiting. Take time to listen. Have some empathy. Not everyone can let out what's in their mind as fast or as clear as they want to. That sounds simple, but sometimes we fail to do so.

Sync communication

Once in a while, we did sync communication through Zoom or Google Meeting. We did pair programming or walk-through our code and unblock some problems.

My team is based in the European/African timezone. The good thing is that we don't have such huge time differences. But we all have our own activities outside this collaboration program. So when we need to do a sync meeting, we would set up a meetup time and be there at the agreed time.

Async communication

Async communication happens mostly on Slack and sometimes on GitHub. When we had problems or questions, we will communicate them via Slack. And whoever could help, can do so in the thread.
Sometimes over-communicating and making sounds on Slack is better than being quiet.

Ask questions

As a self-taught, I'm used to not asking questions as soon as I get stuck. I tend to try to work on things by myself for so long before asking questions (or giving up ๐Ÿ™ˆ).

But when we're collaborating, we better ask questions as soon as we get stuck and not wait for days.
There is a big possibility that one task is depending on the other task. If we wait to ask questions, we could delay the progress of the whole team.

I learned that when I get stuck, I will ask for help after one or two hours. I include in my question what I want to achieve, the code blocks, approaches that I have tried, and the errors that I get.

Support system

In teamwork, the support system is one of the important things besides communication. And I know in a heartbeat, this is where I want to be if I ever landed a job one day. A community-based company that treats its employees as people first. A company that gives its employees support as they need it.

I had some rough times during the program. And I reached out to the founder, Andrew, and my mentors. They sat together to listen to me, acknowledged my feeling, gave their advice, and cheered me up.
The fact that my mentors, even the founder of The Collab Lab, gave their time to sit with me had made me feel appreciated. That channeling what troubling me is important to them. That my voice was heard. That I'm one of them. And that became my strength to move on and push through. Because I know I have the whole village to support me in this journey.

What I need and want to improve

  • I need to get back to learning React (and Firebase).
  • I want to improve my knowledge of accessibility.

    (This is one of my happy places ๐Ÿ˜„).

  • I want to practice pair programming more whenever I have the chance.

  • I need to learn to do code review.

  • I need to practice more to walk through code.

    (I often get panic attacks even before I start. Then I most likely would ramble and jump back and forth ๐Ÿ˜†.)

Final words

I learned a lot through The Collab Lab. It was one great experience!
How we learned and achieved so much within 8 weeks.
The road wasn't always smooth, but we learned, together ๐Ÿ˜Š.
And I can't be more proud to say that I'm one of Collabies alumni! ๐Ÿ’–

To my TCL-35 teammates and mentors, thank you for the wonderful times that we spent! We did it, Guys! ๐ŸŽ‰

To Andrew and Stacie, thank you so much for your positive vibes and support! ๐Ÿ’™


Thank you for reading!
Last but not least, you can find me on Twitter. Let's connect! ๐Ÿ˜Š

Discussion (0)