Community is a word that means a lot of things to different people. When there is talk of community at an A*Team meeting, some people perk up and others tune out. Taking a voluntary role in leading many community efforts on the A*Team over the last year, here are some thoughts I have towards accepting contributions, growing community, and making it work within the team.
Contributions:
Historically on the A*Team we would file bugs which are mentored (and discoverable via bugsahoy) and blog/advertise help wanted. This is always met with great enthusiasm from a lot of contributors. What does this mean for the mentor? There are a few common axis here:
- High-Touch vs Low-Touch
- High-Touch is where there is a lot of time invested in getting the current problem solved. Usually a lot of bug comments, email, irc chatter to solve a good first bug. Sometimes this can take hours!
- Low-Touch is where a person comes in, a patch randomly appears and there is little to no feedback for the patch.
- High-Reward vs Low-Reward:
- High-Reward is where we have contributors that solve larger problems. A rewarding experience for both the contributor and the mentor
- Low-Reward is where a contributor is fixing useful things, but they are little nits or polish. This isn’t as rewarding for the contributor, nor the mentor.
- Short-Term vs Long-Term:
- Short-Term – a contributor shows up for a few days, fixes however many bugs they can and disappears. This is a common workflow for folks who are on break from school or shifting around in different stages of their lives.
- Long-Term – a contributor who shows up on a regular basis, continues to contribute and just the fact of them being around has a much larger impact on the team.
We need to appreciate all types of contributions and ensure we do our best to encourage folks to participate. As a mentor if you have a lot of high-touch, low-reward, short-term contributors, it is exhausting and de-moralizing. No wonder a lot of people don’t want to participate in mentoring folks as they contribute. It is also unrealistic to expect a bunch of seasoned coders to show up and implement all the great features, then repeat for years on end.
The question remains, how do you find low-touch contributors or identify ones that are high-touch at the start and end up learning fast (some of the best contributors fall into this latter category).
Growing Community:
The simple answer here is file a bunch of bugs. In fact whenever we do this they get fixed real fast. This turns into a problem when you have 8 new contributors, 2 mentors, and 10 good first bugs. Of course it is possible to find more mentors, and it is possible to file more bugs. In reality this doesn’t work well for most people and projects.
The real question to ask is what kind of growth are you looking for? To answer this is different for many people. What we find of value is slowly growing our long-term/low-touch contributors by giving them more responsibility (i.e. ownership) and really depending on them for input on projects. There is also a need to grow mentors and mentors can be contributors as well! Lastly it is great to have a larger pool of short-term contributors who have ramped up on a few projects and enjoy pitching in once in a while.
How can we foster a better environment for both mentors and contributors? Here are a few key areas:
- Have good documentation.
- Set expectations up front and make it easy to understand what is expected and what next steps are.
- Have great mentors (this might be the hardest part),
- Focus more on what comes after good first bugs,
- Get to know the people you work with.
Just focusing on the relationships and what comes after the good first bugs will go a long way in retaining new contributors and reducing the time spent helping out.
How we make it work in the A*Team:
The A*Team is not perfect. We have few mentors and community is not built into the way we work. Some of this is circumstantial, but a lot of it is within our control. What do we do and what does and does not work for us.
Once a month we meet to discuss what is going on within the community on our team. We have tackled topics such as project documentation, bootcamp tools/docs, discoverability, good next bugs, good first projects, and prioritizing our projects for encouraging new contributors.
While that sounds good, it is the work of a few people. There is a lot of negative history of contributors fixing one bug and taking off. Much frustration is expressed around helping someone with basic pull requests and patch management, over and over again. While we can document stuff all day long, the reality is new contributors won’t read the docs and still ask questions.
The good news is in the last year we have seen a much larger impact of contributors to our respective projects. Many great ideas were introduced, problems were solved, and experiments were conducted- all by the growing pool of contributors who associate themselves with the A*Team!
Recently, we discussed the most desirable attributes of contributors in trying to think about the problem in a different way. It boiled down to a couple things, willingness to learn, and sticking around at least for the medium term.
Going forward we are working on growing our mentor pool, and focusing on key projects so the high-touch and timely learning curve only happens in areas where we can spread the love between domain experts and folks just getting started.
Keep an eye out for most posts in the coming week(s) outlining some new projects and opportunities to get involved.