Skip to article frontmatterSkip to article content

A programming CAFE (Code Along, Feel Empowered) is a community event that brings together programmers - both researchers and research supporters - to share knowledge about programming and learn with each other in an open and informal setting.

Why a programming CAFE?

Programming has become an essential skill for many fields, including research. However, learning to code can be a challenging and sometimes isolating experience, especially for beginners. That’s where a programming CAFE or community can make a significant difference. Here are some reasons why you might want to consider starting a programming community in your university:

Build a supportive community

Learning to code can be a frustrating and challenging experience, especially when you’re stuck on a problem or error. Having a community of fellow programmers to turn to for support, advice, and encouragement can make all the difference. A programming community like CAFE can provide a supportive environment where researchers can connect with others who share their passion for programming and are eager to help them succeed.

Foster collaboration and knowledge-sharing

Programming is a collaborative activity, and having a community of programmers can help foster collaboration and knowledge-sharing. By working together on projects, sharing tips and tricks, and discussing best practices, researchers can learn from each other and grow their skills faster than they would working alone.

Provide access to resources and opportunities

A programming community like CAFE can also provide access to resources and opportunities that might otherwise be difficult to find. For example, members of the community might share job or internship opportunities, recommend useful tools and libraries, or organize coding workshops and hackathons.

Promote diversity and inclusion

By actively promoting diversity and inclusion, a programming community like CAFE can help create a more welcoming and supportive environment for all researchers, regardless of their background or level of experience.

Types of working CAFEs that work for you

A programming CAFE will vary depending on the needs and interests of the community. Here are some things to consider when defining the focus of your programming CAFE:

Programming languages

A programming CAFE can be focused on a single programming language, cater to multiple languages, or be language-independent. For example, you might start a CAFE that focuses exclusively on Python, or you might create a more broader CAFE that covers several programming languages such as Python, R, and MATLAB. The choice of programming languages will depend on the interests and needs of the community.

Skill level

Another factor to consider when defining the focus of your programming CAFE is the skill level of potential participants. You might start a CAFE tailored to beginners, or you might create a more advanced CAFE that caters to experienced programmers. Alternatively, you might choose to create a CAFE that is open to researchers of all skill levels, with a focus on collaboration and knowledge-sharing.

Research applications

Finally, you might choose to define the focus of your programming CAFE based on specific research applications. For example, you might start a CAFE focused on programming for analyzing biological data or one that is dedicated to programming for social sciences research. The focus on research applications will depend on the interests and needs of the community.

Choose your target audience

The CAFE community is for researchers of all levels who are interested in programming, regardless of their field of study or level of experience. Here are some examples of personas who might benefit from participating in the community:

The beginner programmer

The beginner programmer is just starting to learn how to code and may feel overwhelmed by the complexity of programming languages and tools. They might have a background in a non-technical field, such as the humanities or social sciences, and are interested in learning how to use programming to solve problems in their research. They might have followed a Introductory course, but get stuck as soon as they start working with their own data and therefore feel discouraged. The CAFE community can provide the beginner programmer with a supportive environment where they can connect with others who are also learning to code, ask questions, and get help when they need it.

The advanced programmer

The advanced programmer is an experienced coder who has already developed a strong skill set in one or more programming languages. They might be looking for opportunities to share their knowledge with others, collaborate on projects, or learn about new tools, techniques or best practices related to Open Science and FAIR data and software. The CAFE community can provide the advanced programmer with a platform to share their expertise, connect with other skilled programmers, and stay up-to-date with the latest trends in the field.

The interdisciplinary researcher

The interdisciplinary researcher comes from a field of study that traditionally has not emphasized programming, but recognizes the importance of using computational methods to answer research questions. They might have a basic understanding of programming concepts but lack the technical skills to implement them. The CAFE community can provide the interdisciplinary researcher with a supportive and collaborative environment where they can learn programming skills that are relevant to their research.

The data specialist

The data specialist is a researcher or support staff who specializes in working with datasets. They might be looking for opportunities to collaborate with other data experts, learn about new tools and techniques, or share their knowledge with researchers and others. The CAFE community can provide the data expert with a platform to connect with other researchers who share their interests, learn from each other, and collaborate on data-driven research projects.

What to consider before launching a CAFE?

Organizers

Building and sustaining a community around learning how to program relies on a core team of organizers who can take responsibility for managing the community and ensuring that it runs smoothly. The time commitment for each organizer may be around 0.1 FTE (Full-Time Equivalent) per organizer, depending on the size and scope of the community. Make sure you can commit sufficient time for organization, before you commit to organising.

Funding opportunities

Programming CAFEs usually work thanks to shared voluntary effort of many motivated individuals. Thus having a financial aid for running such events is not strictly necessarily. But it certainly helps providing some extra perks (such as refreshments or merchandise) that can help attract initial attention of your target audience.

Securing funding can be a challenge, but there are resources available to help. In the Netherlands, there are several Open Science Communities that support initiatives like Programming Cafes. Consider reaching out to these programs to see if they would be interested in supporting your community. You can also explore crowdfunding options, ask your department head for budget allocation, or look for sponsorships from organizations that are aligned with your community’s goals.

Internal communication

Organized internal communication is critical to the success of any community. It’s important to have a clear and effective system for communication among organizers, including regular meetings and status updates. Consider using tools like GitHub project boards to track progress and assign tasks. It’s easy to create a template for monthly meetings, for example, and share a checklist of tasks that need to be completed for each monthly meeting.

Considerations for meeting planning

When it comes to planning community meetings, it’s important to stay organized and keep everyone informed. Make sure to have a clear plan for each event, and consider whether there will be a theme, who will be giving a presentation, and if you will be offering food or drinks. Create a schedule of events that can be published online and advertised ahead of time, and make sure to stick to it.

Reaching your audience

There are many technologies and tools available that can help you manage your community more effectively. For example, you can use Slack or Discord to communicate with members, create a website with GitHub pages to share resources and information, and use social media platforms like Twitter to promote your community and attract new members.

In conclusion, building and sustaining a community around learning how to program requires a dedicated team of organizers, clear communication, effective event planning, and access to resources like funding. By relying on a core team of organizers to make key decisions and create an overarching vision, you can create a thriving community that supports and inspires each other.

Logistics

Organizing a coding cafe requires some logistics, as for every event. However, coding cafes may come with special requirements that you need to take into account. The key message of this chapter is: Know your audience!

Frequency

Finding the right frequency for you as an organizer AND your community is crucial for the sustainability of your programming cafe. Your cafe will not be a success if you are eager to meet as often as possible, but your community consists of programmers with extremely busy schedules. Meeting too often may be exhausting for you as an organizer, and frustrating for your community as being pushed to constantly declining events may feel overwhelming. However, meeting only once in a blue moon is certainly not frequently enough to build strong bonds in your community.

Finding the right balance is important. Try to find out what frequency may be seen as a standard for your audience and live within the rhythm of your institution. You can also reach out to partner institutions that already have experience and ask for advice. Nothing is written in stone: you can later change the frequency based on your experience.

As a suggestion: most of our coding cafes are organized on a monthly basis with a dynamic audience. That means that some people will join most of your events while others may only come irregularly for certain topics. However, some coding cafes do not follow a strict schedule but are organized ad-hoc once there are enough speakers, topics, or volunteers.

Best dates & times

Finding your rhythm is important, but not enough. Making exceptions to your frequency may be necessary. Some events may alter your planning such as for example:

Additionally, planning around events that bring a lot of people together anyway may be beneficial. If you know that your audience will come together for a shorter event, you may want to try to get them after the event for your programming cafe.

Finding the right week day and the best day time is equally important. A lot of institutions are offering telework options. Some of your colleagues may work part-time, or researchers may split their time between multiple institutions. That means that not everyone will be available to join an event on campus on certain days. If you know your audience well, you may avoid some pitfalls with setting the date. Mondays and Fridays may be preferred telework days for example, so plan accordingly on other days.

Depending on your format, certain times during the day may be more suitable than others. If you offer food and drinks for example, you may benefit from setting your coding cafe during lunch hours or organize it in the late afternoons as an early dinner option.

Food & drinks

No one likes to work on an empty stomach - same goes for programming. Offering food or drinks may help to increase the mood of the audience and may attract some additional people. There will probably be a lot of events and meetings to choose from on busy days, and offering snacks or drinks may help people to decide to spend their time at your coding cafe. Some advantages of offering food and drinks are:

However, providing foods and drinks also comes with disadvantages such as

If you order pizza for example for all participants, you need a higher budget and you have an additional effort of ordering and receiving pizza in time.

There is a vast amount of choices for selecting the right food and drinks for your audience. If you organize an event for a vegan audience, offering steaks for barbecue seems an odd choice. The same may be true for your audience. A traditional choice for programming events may be pizza and you probably can hardly go wrong with this all-time favorite. However, there may be better lunch options that can be distributed much easier, such as onigiri for example.

Drinks can be organized in the same fashion depending on your audience’s preferences. Decide if you want to offer alcoholic options for example or if you need both, hot and cold drinks at the same time.

Room setup

Last but not least, decide on the right room. A coding cafe can be organized online which comes with its own challenges. If you decide to organize an in-person event, you need to book a room that fits the needs of your event.

Things you may need to consider are:

All in all, make sure that the idea of your programming cafe fits into the chosen room. 30 participants may not fit in a common meeting room. A room at a non-central building may be a barrier for your community since they need to travel there. Also make sure that your participants will be able to access the room, even if they don’t have access cards for example. Investing time into printing way points may pay off since it minimizes the risk that your participants get lost on the way to you. As an alternative, you can also provide a detailed description of how to get there in your invitation. Make sure that the room is fit for programming needs: check whether power outlets and tables are required. As an alternative, you can organize extension cables or similar. Think also about your format: do you need a screen for presenting or a flipchart or room to freely move around. If you order pizza, make sure you are not thrown out of the room for smuggling greasy food into an auditorium.

Format

There are several considerations for the format of the programming CAFE. These include: Frequency, Timing, Agenda, Topics. These aspects may differ depending on the size of the community, the capacity of the organizers, and the needs of the community.

Frequency and Timing

We have successful experiences of running monthly and bi-weekly CAFE events. They can be planned as lunch meetings, at the end of the working day or (partly) after office hours. There are pro’s and con’s to each of these options. You may initially start with something that works for the organizers and the initial community, and then adjust based on the needs of the community as the community grows.

Presentation component

At CAFE, we believe that knowledge-sharing is key to fostering a supportive and collaborative community. That’s why we dedicate at least some part of the events on a presentation component on a programming related topic. These presentations can be given by an expert in the field or by someone from within the CAFE community who has knowledge to share.

Benefits of presentations

The presentation component of CAFE serves several important purposes. First and foremost, it provides a platform for experts and community members to share their knowledge and insights on programming-related topics. This not only helps to deepen the knowledge and skills of individual community members, but it also promotes collaboration and mutual support among members of the CAFE community.

Secondly, the presentation component helps to keep the CAFE community up-to-date on the latest trends, tools, and techniques in programming. By staying abreast of new developments in the field, community members can continue to grow and expand their skills, and can also explore new research opportunities.

Finally, the presentation component is a great way to showcase the diverse range of interests and expertise within the CAFE community. By providing a platform for community members to share their knowledge and insights, we hope to foster a sense of pride and ownership within the community, and to encourage more community members to get involved and share their skills.

Format of presentations

The format of the presentations will vary depending on the presenter and the topic being discussed. However, in general, presentations will be structured as a short talk followed by a Q&A session. This will give community members the opportunity to ask questions, clarify any points of confusion, and engage in a dialogue with the presenter.

Examples of CAFE topics

The topics covered in the presentations will also vary depending on the interests and needs of the community. Some examples of potential presentation topics might include:

By covering a diverse range of topics, we hope to provide valuable resources and knowledge to community members of all skill levels and interests.

Coding component

We also schedule time for coding during the CAFE events. This is a great opportunity for community members to work on their own projects, collaborate with others, and ask questions about programming-related issues. We also allow participants to code during the presentation component of the event if a presentation is not relevant to their interests or needs. In this way the event is always open for a diverse audience with different interests and skill levels, which is valuable for interaction and knowledge sharing in the community.

Promoting interaction

Community organizers can promote interaction by keeping an informal overview of the community members (and their projects, questions and skills) and facilitate connections. Snacks and drinks are a great way to promote interaction and collaboration among community members. This helps to create a more relaxed and informal atmosphere where connections are made more easily.

Exercises

Exercises provide a great opportunity for community members to practice their programming skills and to learn new techniques. They also help to reinforce the concepts covered in the presentations and to ensure that community members are able to apply what they have learned in a practical way. Besides, exercises can be a great way to get community members to interact with each other and to collaborate.

Community building

Programming can be a daunting task, especially when you’re just starting out, but it doesn’t have to be a lonely one. By building a community of learners, you can support each other, learn from each other, and grow together.

Communication is key

First and foremost, effective communication is key to building and sustaining a learning community. Make sure that everyone has a way to communicate with each other, whether it be through an online forum, a social media group, or a messaging app. Encourage members to share their experiences, ask questions, and offer advice. Consider setting up a regular newsletter or email list along with a list of upcoming meetings on your website to keep everyone informed about upcoming events and opportunities.

Event registration

When it comes to registrations for events, make sure that the process is simple and easy to understand. Use a platform that is user-friendly and accessible, such as Eventbrite or Google Forms, and make sure that people know how to sign up.

Meetings

Whether you choose to meet online, in person, or hybrid, a consistent schedule of meetups can be a great way to build connections and foster a sense of community. Ice-breakers can be a great way to get people talking and help everyone feel more comfortable. Some good ice-breakers include “two truths and a lie”, “speed dating”, and “name games”. Make sure to create an inclusive environment where everyone feels welcome and valued.

Creating an inclusive atmosphere

It’s important to make sure that everyone feels included in the community. Consider assigning mentors or buddies to new members to help them get acclimated. Encourage members to share their experiences and to help each other out. Create opportunities for people to connect and collaborate, such as hackathons or study groups.

Creating and maintaining connections

To help community members stay connected, make sure to provide ongoing opportunities for engagement. Host regular meetups or workshops, and encourage members to share their projects and successes. Consider setting up a Slack channel or other messaging platform to facilitate ongoing conversations and collaborations.

Swag!

Finally, swag can be a fun and rewarding way to recognize and incentivize community members. Consider giving out stickers, t-shirts, or other branded merchandise to show your appreciation. Not only does it make people feel valued, but it can also help to spread the word about your community.

In conclusion, building and sustaining a learning community takes effort and dedication, but the rewards are worth it. By fostering effective communication, creating a welcoming and inclusive environment, and providing ongoing opportunities for engagement, you can create a community that supports and inspires each other.