The Cucumber New Contributors Ensemble aims to enable newcomers, especially those from historically underrepresented demographics, to contribute and become part of the Cucumber community. Matt Wynne hosts a weekly Twitch session for anyone who is interested in contributing to the Cucumber open source project but is not sure how to get started.
The ensemble has been running for over 25 sessions now so, to celebrate, we are writing this blog post of 25 lessons we have learned from the 25 sessions.
The group have just about mastered mobbing together in a live stream, but it didn’t start out like that!
- Prepare. We needed a teenager to help us get started!
We decided we would use Twitch for these sessions, not really giving much thought to how it works or if any of us had any experience using it. When it was nearly time to kick off the first session, Matt realized there was some set up involved that he needed to do super quickly! Thankfully Rufus, Matts teenage son was familiar with Twitch and was on hand to help his dad!
- Values should be shared
We learned that there’s more commitment when contributors can give input into the sessions. One of our first sessions was a workshop to collaboratively define the most important values shared as a group. By explicitly publishing these values we frame the group’s intentions which guide us through each session, making it a safe space where it’s ok to ask anything and be yourself.
- Don’t assume anything
We also quickly learned the danger of assumptions and the value of empathy. A few times we continued with the session assuming that everyone who joins the ensemble is familiar with how it works, only to find out later that they weren’t clear on the roles or what to do next.
We now assume that our assumptions could be wrong and are more explicit about what we do and how we work together. This has greatly improved the team dynamics of the group.
- Safety is a team effort
One of the most important lessons we learned is that safety is created by the very people who participate. You can’t tell people it is a safe environment; you must demonstrate it in each and every interaction.
Each time someone is forgiving when another makes mistakes or needs help, safety is created, and with that, a more productive learning environment.
"One thing that stood out for me in the session(s) is how collaborative, friendly & helpful everyone is. It’s a feeling of safety with the massive added bonus of learning new things whilst also seeing that I know a lot more than I give myself credit for." - @artismarti
- There’s always something new to learn
Whether you are a new or experienced developer, there’s always something to learn - when you’re open to it. For example, in one session we learned different ways to use regular expressions to get the same result. In other sessions we learned how to handle long meetings more efficiently, the pros and cons of different screen sharing tools, and the definition of quality.
On the flipside, we also learned that teaching others is a great way to recognize our own skill level.
"What’s really cool in those sessions is the little tidbits you get from working with people that in my work life I guess i have been missing out on as I haven’t really pair-programmed much at work. Things like helpful command-line shortcuts or how to use your IDE more efficiently and it’s fun to do the role switches between navigator, driver, etc." @mona.ghassemi
- Relationships matter
A valuable lesson we learned was that relationships matter even more in a voluntary community than a work environment where you are paid to show up. Making time to get to know each other personally makes the ensemble sessions something to look forward to. The added bonus is that we also are more willing to help and support each other.
- Joining the live Twitch stream reduce loneliness
Remote work can become lonely. Joining the live session reduces this loneliness, and Jo likes to listen to the Twitch stream whilst working. It makes her feel like people are working quietly beside her and that she’s not alone.
- Learning together is more fun than figuring things out on your own
Coming from vastly different backgrounds means that different people understand different things, or the same thing differently. The ensemble sessions taught us how to communicate more clearly and invite other perspectives that might be different from our own. The community is strengthened by being able to learn together.
"Enjoying the 'finding out together' - everyone pitching in varied theories about what something means, coaxing meaning out of indications we share digitally. Even if the things we learn from others’ workflows aren’t later integrated in our own workflows, it’s nice to understand them" - @olleolleolle
- Create big change by making small changes, regularly
After about 4 months of not being able to attend the ensemble sessions, one of the first participants joined again and exclaimed in surprise “You’ve changed everything!”
At first, we had to think about what changed as it never felt like change. We realized she was right and that the one small change every session stacked up to big change over time. We didn’t realize how much we changed until an outsider pointed it out.
- Do what you say, and say what you do
Each session ends with a short retrospective where we identify actions. We learned that by doing what we said we would do between sessions we keep the momentum going and build trust. It also leaves us more time to do what we love, namely coding together.
- Structure makes it easier to focus on what’s most important
Although the sessions are intended to be informal, we learned that with adequate structure we can spend more time coding rather than preparing or figuring out what we should do.
- Test first, test regularly
We quickly learned that it’s easier to fix small errors regularly than figure out what broke in a larger commit. Running the tests regularly allows us to make faster progress as we never have to spend too much time trying to resolve an error or a failing test.
We’re not only learning how to contribute to the Cucumber project, but also coding best practices that greatly improves productivity!
- What you see isn’t always what I see
We learned that technology is great, but not perfect. In screen sharing sessions sometimes there’s a delay or error that doesn’t update everyone’s screens to display the same contents. At first, we assumed it’s the driver. We quickly, however, discovered sometimes it’s the technology, not the person, and adopted a show rather than tell approach and asking clarifying questions.
- Navigating doesn’t only have to be instructions
A valuable lesson we learned from including newbies in the session is that questions are a great way to navigate when you don’t know what to do next. We learned that a good question reduces the pressure of having to know what to do and includes opinions and expertise from other contributors, making it a more engaging and equitable experience.
- Quality is directly proportional to the joy of making something
In one of our sessions, we started talking about the book “Zen and the art of motorcycle maintenance” and questioned the definition of quality which is the main topic of the book. We learned that although quality is interpreted differently by different people, it is always directly proportional to the amount of joy the people building it experienced while they were doing it.
"Quality is infused in something, according to the joy that was being experienced by the people who made it, at the moment it was being made. That's why I think it's so important to enjoy work, because then you make great things!" - @matt
- A commit a day (or hour) keeps the bugs away
Small is beautiful. We learned that just like testing regularly keeps bugs under control, so too does a frequent commit. It also feels more productive adding to the positive momentum.
- It’s hard to get lost in the wrong rabbit hole when you use Behaviour Driven Development
A common problem when developing complex code is that it is easy to get distracted with details. A delightful lesson we learned was that using BDD makes it close to impossible to get too distracted from the goal.
As a bonus, you don’t have to remember what you were doing. You only have to run the tests.
- Be explicit about roles
We learned the value of being explicit in our communication. It’s easy to get confused when we keep rotating while focusing on the code and not the timer. Sometimes it happens that someone thinks they are the driver when another actually is. We learned that to reduce confusion and increase productivity, be explicit by saying your role at the start of each round.
- This too shall pass
Ensemble sessions teach us to step outside our comfort zone. When you’re new to these sessions, it can feel overwhelming and scary to have to drive or navigate. However, each round only lasts for 5 - 7 minutes which is manageable for anyone.
We learned that the only true way to get equity (one of our core values) is to honour the timer (or task) and rotate regularly. Rotating gives everyone a fair chance and it teaches us to await our turn. As an added bonus it also reduces bottlenecks as you don’t have to rely on one person only to get things done.
- What used to work in the past doesn’t necessary work anymore
We learned that nothing is ever truly finished. Improvement is about constantly questioning everything and making small changes into a habit rather than a goal.
We realized that it’s better to continuously get better than getting it perfect.
- Variety is the spice of life!
It’s not always the same group of people and we never know who to expect. The ever-changing group of participants keep the sessions interesting. It's always a pleasant surprise to have a regular show their face occasionally or have someone new drop in.
- Regular reminders are key
As the ensemble sessions are voluntary and participants live around the globe and have other responsibilities, we learned that reminders are important. We also realized that different people have different preferences, and these reminders and invites need to be in different channels, like calendar invites, Slack reminders and social media.
- Mobbing is fun!
Programming is fun, but programming with a bunch of friends is even more fun! The Cucumber new contributor’s ensemble is a great place to meet people and learn together, all while contributing to open source.
I’ve had the pleasure of being part of the Cucumber team for nearly 5 years but honestly, I have never fully understood what Cucumber does as it is a development tool mostly invisible to non-developers. Watching these sessions has really helped improve my understanding of the tool. I can see scenarios being written, tested, changed, tested again and because the people taking part are also learning, they ask a lot of the questions I would ask. Although I haven’t met most of the participants in real life, it feels like I’m getting to know them better each week.
Thank you to everyone who has been part of these sessions so far and for helping to bring this idea to life. I especially enjoy those moments when the group gets something to work and I hear “Oh look! That passed, it’s green”.- @jo.laing