CodeBuddies in 2018: a project status letter to the community

Hi everyone! Thank you for being a part of the CodeBuddies community. As you know, we’re a 100% volunteer-led non-profit side project that thrives thanks to all of you who help each other out on Slack, contribute to our open-sourced codebase, donate to our Open Collective, and schedule hangouts that create an intimate and fun space for learning.

I’d like to share this project status update so that we’re all on the same page about our primary mission, goals, and challenges this year, because we’ve never really clearly defined them all before.

PRIMARY MISSION:

Connect people who have the potential to help each other become better at software development, regardless of where they live.

Have we accomplished this?

In short, yes. Community members span across six continents, and there are some standout regulars sharing knowledge or giving advice at all hours on Slack.

Since 2016, over 500 hangouts have been scheduled on the new site. There have been 25 releases on Github and 883 pull requests. And 370K messages have been exchanged in the Slack since March 2015.

Participants from different countries have joined in to study with each other at hangouts scheduled on the site, and people who live thousands of miles away from each other have formed accountability and friendships.

We are remote-first, meaning we believe you shouldn’t need to live near a tech hub city to find a coding community, and you shouldn’t need to commute to meet in person to find effective study partners and peer mentors.

A hangout organized by Julian, Judi, and Rodrick (who in this screenshot is teaching an introduction to AngularJS)

What are the challenges?

  • Some new members sign up, don’t get used to Slack, don’t see a hangout they can join (because hangout organizers are few), and never participate.
  • Because we are on a free Slack plan, valuable discussions get lost.
  • Hangouts can be magical focused learning experiences, but because of the amount of effort required to:

a) figure out timezones,

b) decide on a topic for the session, and

c) invite participants (some leadership skill required)

… not as many hangouts get organized as there could be.

  • We have the no-show problem endemic to free meetups: not everyone who RSVPs to a hangout shows up, and it can be demoralizing for a hangout organizer if they are the only one there.
A Slack notification in the #announcements channel for a hangout to work on exercism.io exercises together

How are we going to confront those challenges?

  • Groups: We’ve created groups, a tool on the site which lets people more easily find other members with like-minded learning goals. These groups also give organizers a helpful set of tools, including the ability to automatically notify Slack channels, point group members to a 24/7 hangout, and set a current status update.
Screenshot of the “Members” tab in a CodeBuddies Python TDD study group
  • CodeBuddies Connect: We’re going to start experimenting with a CodeBuddies Connect idea to match people up with each other.
  • Greetbot: We’ve created an open-sourced Slackbot called Greetbot that recommends resources and welcomes new members.
Welcome message from Greetbot.
  • #Introduce-yourself channel on Slack: Members have stepped up to make a point of welcoming new folks in the #introduce-yourself channel.
  • Global Silent Productivity Hangout: We plan to launch a global silent productivity page that offers a remote coworking room (screensharing encouraged) for anyone looking for some silent, productive coding company at odd hours.
  • Website redesign: We plan to redesign the home page to better reflect the mission and goals of the project, create a CSS Styleguide, and improve the UI to make the main pages more easily navigable.
  • Coffee for hangout organizers: We plan to make it easier for members to tip hangout organizers (or other participants they might’ve met in a hangout!) coffee ☕️ as thanks.
  • Gamification: We plan to support gamification on the website, which will reward and recognize active study groups and active hangout organizers, and also dock points from people who RSVP to a hangout but don’t show up.
  • Better communication tools: We plan to add some new features that will help members connect better — like an inbox feature, improved hangout reminders, and participant messaging tools.

GOAL #2: Support and feature the personal projects created by members in the community.

Have we accomplished this?

Sort of. We have a #personal-projects channel that folks have been posting to for feedback. And when we ran our weekly bulletin board experiment on Slack, we’ve featured links to projects. Our Tinyletter newsletter used to feature personal projects as well.

What are the challenges?

Slack is quite ephemeral. There are also a lot of projects that could use live feedback in an audio discussion between the creator and an audience. Those could come in the form of show-and-tell hangouts, but we’ll need organizers to organize them.

What are we working on to tackle those challenges?

Nothing concrete yet, but but here are some possible approaches:

  • Bill recently organized a wonderful show-and-tell hangout
  • There have been hangouts in the past where folks have walked through the code of a personal project, and been given live feedback
  • Maybe we simply need to recruit more volunteer organizers to set up recurring monthly show-and-tell hangouts?
  • Maybe there could be a space on the website to feature personal projects — especially if those projects were built in hangouts?

GOAL #3: Support members’ career goals in tech.

Have we accomplished this?

Thank you thank you thank you to everyone who’s offered career advice, support, congratulatory🍺, and the like to each other and to junior engineers and job seekers on the Slack. It’s been truly inspirational.

What are the challenges?

  • We have a #job-postings channel, but no formal jobs board.
  • Also, we could probably do a better job of connecting people who want to mentor with potential mentees.
  • Maybe we could invite certain experts to give career-oriented talks in a hangout, but no one’s had the time/inclination to organize them on a grand scale yet. (There was that one time we invited the author of a Python TDD book to speak, and it was inspirational and amazing and we should do it again, but it takes someone to organize.)

What are we working on to tackle those challenges?

We could:

  • Put out a call to invite members to invite and help organize speakers they want to hear (maybe??)
  • CodeBuddies Connect will hopefully help us better connect mentors with mentees.
  • We could set up a codebuddies.org/jobs page on the site.
  • Some of our members are people looking for their first dev job; those of us getting recruiter email could try to formalize a way to connect them with recruiters.

GOAL #4:
Be a space for constant individual growth and experimentation.

Have we accomplished this?

I hope so. CodeBuddies started as a couple of experimental Google Group mailing lists; then we decided we need to build out an events platform, and now we’re on version 2 of our platform that is getting more and more features.

^ One of the earliest CodeBuddies hangouts: before Google deprecated their Hangouts API, and when we realized the awesomeness of the ability for multiple people to screenshare at the same time.
A snapshot of a group chat in the #go-lang channel.

Anyone can file a Github issue to report a bug or request a new feature, or create a PR that fixes their feature request. We’ve also tried our best to provide docs and schedule occasional code walkthrough hangouts to onboard new code contributors.

Screenshot of issues from late 2016.

Many people have stepped up and contributed to the community in various ways, often by offering suggestions for improvements or exhibiting behavior that others have followed.

For example, without various people stepping up, we wouldn’t have:

  • our tradition of @plusplus++ people on Slack to give them kudos
  • the study groups and discussions feature
  • unit tests for the greetbot
  • a resident resourcerer 🎆
  • an Open Collective that lets us collect and disburse 501c3 tax-deductible donations in a fully transparent way
We’ve been hesitant to spend a lot of money in our Open Collective on infrastructure that would be ideal.
  • all the awesome 💃 emojis on Slack
  • a coming-soon-feature that’ll dockerize and deploy a demo URL for new pull requests

CodeBuddies has also been a First PR project for many first-time open source contributors, including coding newcomers, who’ve submitted PRs for issues labeled with a good-for-beginners tag.

What are the challenges?

  • Being all-volunteer and flat, we don’t have any titles. This means that anyone is welcome to run with an idea and experiment with leadership. However, the downside is that because there aren’t defined roles, people don’t step up because they don’t know that they can. Also, if there is a conflict, the identity of the decision maker becomes more nebulous.
Contributors’ section on our Github README
Contributor descriptions on the codebuddies.org/about page
  • Experiments can be expensive. Here is a public spreadsheet of our (yearly) estimated budget.
  • Core contributors have put in a lot of work. We should try to strike some deals with corporate sponsors to give contributors perks, or send contributors a free t-shirt at the very least!

What are we working on to tackle those challenges?


Thank you for reading! We’ve built a lot together and learned so much along the way, and hopefully the projects we’re currently working on can help sustain many more years of collaboration, personal growth, and community.

Once again, thank you to all the contributors. Even the smallest contribution is a big help.

Lastly, if you are looking to help, here are four ways you can help CodeBuddies grow:

  1. Flag bugs or requests on Github: File a new issue on Github if you’d like to request a new feature or would like to report a bug! They really do help.
  2. Join the Sponsors Outreach team: Join the #cb-sponsors-outreach channel on Slack and help us reach out to sponsors and fundraise so that we can sustain our infrastructure costs and mail free 👕 t-shirts to contributors. :) If you know of a grant or sponsor we should reach out to, please mention it in the channel too!
  3. Contribute to the codebase: See an issue you’d like to work on? Comment on the issue thread to claim the issue before you submit a pull request, read docs.codebuddies.org or the onboarding powerpoint, join one of the “Working on CodeBuddies” hangouts if would like to work live with other people also working on the codebase, and ask in the #cb-code channel if you need help. Greetbot has its own open-sourced repo too.
  4. Be an organizer: Start a study group! Or schedule a hangout, even if it’s completely silent! Every time you organize one, you’re creating a space for people who have the potential to help each other to connect.
The three types of hangouts you can start: silent, teaching, or collaboration