Angus Lam / All blog posts

Building a student tech community


During my time as a student at University at Buffalo (UB) between 2015 to 2019, I extensively participated in the computer science student community. At the beginning, I was that bright-eyed first year, eager to sign up for everything that even remotely seemed interesting. At UB, Association of Computing Machinery is the undergraduate computer science club. I became more involved towards 2017 to 2019, where I was elected and served as the club president. I was in the front row seat of seeing all the ways a community could form and function.

A few factors made building a community for student technology enthusiasts at UB possible:

  1. A growing computer science program1—UB increased admission to the BS program by 20% year over year from 525 students in Fall 2015 to 949 students in Fall 2019
  2. Growing demand for software developers from companies in the local city of Buffalo, as well as other tech hub cities
  3. UB is a research university, and therefore had opportunities for students to participate in research. The industry path in contrast has fewer rails--companies had some presence on campus through job fairs, but students had to find and apply to co-ops or internships mostly on their own
  4. Students are also just looking to meet new peers with similar interests

These factors made sense that a community with can form fairly organically and address some of the gaps and demands from students. We later formalized the club's mission to offer resources to student peers on succeeding in the industry path. "Computer science by students for students".

Measuring success

It's hard to define the success of a community, as purpose and perceived value are very subjective. Reflecting back, I think the team did really well overall given the environment and constraints we had to work with. The following metrics give a rough idea of how things went.

  • Raised $16,500 in the 2018-2019 academic year from company sponsors to fund events (compared to $0 the previous year)
  • Ran around 25 events per semester, each ranging from 15 to 150 attendees
  • Reached 800 University at Buffalo students (validated with @buffalo.edu emails) in Slack workspace in 2017-2018, and 1,000 in 2018-2019 (compared to 500 members in retired Facebook group)

Unique challenges

The canonical four year undergraduate experience introduces a particular quirk in the lifecycle of a student club. The upper bound of the time that someone will participate in a club is based on how long they are in the undergraduate program. People generally volunteering in an official leadership position, think people who can use the school corporate card, generally hold it for one to two years. The top level challenges include:

  • Identifying what people are looking for in the community and, as leaders, fill in its gaps
  • Recruiting community members to participate in organizing chapter activities
  • Find long-term help and resources

Identify what's missing

UB is a public research university, so there is guidance for students who want to participate in research labs and independent studies. Its computer science classes tend to lean towards computational theory, and although there are some applied software engineering electives, there is no software engineering track or degree.

There are fewer resources for students interested in finding a job in industry, or at least getting exposure to post-degree career options. These circumstances together means there is a demand for consistent, student-focused, practical software engineering-related activities. An opportunity to expand and better connect a community with common interests.

We took an approach to run events at a consistent cadence throughout the semester and in the same rooms. Scheduling the rooms ahead of time made logistics more difficult upfront, but promoting the events were a lot simpler, as well as with being able to dedicate a space for the community. These events weren't just hosted by the chapter leadership, but also by people who just so happened to volunteer. Some examples include:

  • Workshops for introducing popular programming languages and frameworks such as JavaScript, Python, React, Kotlin, iOS programming
  • Tech talks on industry topics such as mock interviews, machine learning, and blockchain technology
  • Hack nights, which provided a coworking space every other weekend for students explore creating personal projects or just catch up on schoolwork
  • Additional social events such as barbecue socials, resume reviews, and internship panels

A few parts of the community operate in a positive feedback loop. Activities such as running workshops, presenting tech talks, offering interview prep, and hacking on new projects have self-motivated students who find them interesting. They want to find, or sometimes even help, their peers. Students also learn to develop their technical skills through coursework and internships, which means topical experts in many aspects of software engineering likely exist within the student population. On the other hand, making the connections and organizing the logistics for these events are a challenge. Project management and operational skills are incredibly complementary to the technical skills that the chapter is focusing on, but the formal computer science coursework prepares little in these aspects in the first few years of the curriculum. Although we may not be experts, here are a few formulas to maintain some degrees of consistency on the chapter's function across the years.

Continuity and thinking long term

For UB ACM, continuity means documentation and onboarding new leaders. It's also important to acknowledge that continuity doesn't mean keeping things exactly the same. The community should change and adapt to new interests over time. However, at the very least the institutional knowledge shouldn't be lost from year to year. Here were some of my approaches.

Creating tools like rundown checklists for events, templates for posters and presentations, and general logistical guides (filing for a food permit, staying compliant with student association requirements, booking spaces, etc.) are ways to improve continuity of the chapter's mainstays. UB provides GSuite to all students, so these artifacts are located in a shared Google Drive folder.

Encouraging students to participate, especially in volunteering for events, is also another way to build context and attract potential future organizers of the chapter. Of course, a volunteer student club can only continue to prosper with new volunteers beyond the years. Explicitly stating that the community has an open invitation for volunteers early, like during general interest meetings, can help reduce the barrier of entry to participating in an organizational capacity.

Working with the school faculty can greatly help reduce operational complexity and drastically improve the organization's access to school resources. The school faculty at the end of the day may not be the most active party in establishing a grassroots student community, but overall the school's incentives are aligned with creating value for students. People who work at the school tend to stay longer than the students, so establishing norms and processes with them helps with distributing organization knowledge for the long term.

For UB ACM, key points of contact included the chapter's advisor, the computer science and engineering department director, and the School of Engineering and Applied Science Student Affairs office. They can help demystify the school's organizational structure, validate ideas, make connections with the right people, and help with navigating and executing complex requests. For example, situations that they helped us with include

  • How to keep track of the community's finances in a school-compliant way
  • Where to direct and earmark sponsorship funds for the chapter's exclusive use
  • Where to acquire a physical space with storage for computer science and engineering students

If I could do it all over again, what would I do differently?

Not everything went smoothly, and I wasn't perfect while I was at the helm of the chapter. There's a lot to list if I wanted to point out what went wrong, but if I had to pick one thing to change, I wish I focused on defining better success metrics and finding ways to measure it. If UB ACM is a community focused on helping students develop software engineering as a career, then it should be able to answer some basic questions like:

  • How many students ended up finding a job in software engineering after graduating?
  • Where did members of the community go for internships? Which places after graduating college?
  • What community activities provided the most impact in helping them succeed in career goals?

Being able to answer these questions would make it easier to see the organization's impact quantitatively, and make it easier to justify chapter expenditures and raise sponsorship money. Ideas varied in quality and ambition, like creating surveys for students and alumni to optionally self-report on their career interests and progression, or building a unified student organization web application that collected resumes and recorded event participation. However, I was unable to make substantial progress in this area before I graduated.

Building a community is difficult, and there's a lot of trial and error. I think my participation in UB ACM during university improved my software engineering skills, allowed me to practice in working with peers and faculty in a semi-professional setting, and gave a lot of insights in analyzing organizations. I hope the leadership team and volunteers' hard work in making UB ACM all come together made a positive impact on my peers at UB.

Footnotes

  1. https://web.archive.org/web/20200202173244/http://engineering.buffalo.edu/home/academics/undergrad/data.html

Last updated October 25th, 2021


Why does the site look like a default nginx page?

I have very fond memories of snooping autoindex pages on poorly configured servers back in the late 2000s. It's hard to find those nowadays. "Browser default" HTML also has a brutalistic and uninstrusive quality in the comtemporary time. It has allowed me to focus on creating more novel works rather than tweaking every pixel on this site to stylistically tie together everything I work on, no matter how disparate, in a futile manner. That is not to say there's no styling here—every detail is still meticulously chosen. I could have went for a more conventional modern minimalist design, but what's the fun in that?

© Angus Lam 2015-2024