Creating a culture of gratitude

Harsha Srikara
11 min readJun 4, 2022

Exploring the evolution of the ACM Leadership Project

During my senior year I set out to design an internal recognition tool for the ACM Chapter at the University of Texas at Dallas. As part of my leadership role in the student organization, I focused on achieving high level objectives that would broadly improve the quality of teams at all levels. During my internship at Amazon in summer 2021, I observed how the company had an internal service that employees could use to shoutout their colleagues by giving them “accolades”. I was inspired by this system and set out to create a similar culture of gratitude when I returned back to UT Dallas. In this article I will cover the challenges I was seeking to solve, how I engineered a solution from scratch, how it continued to evolve and adapt over time & finally some important lessons I learned along the way.

Photo by Hannah Busing on Unsplash

Chapter 1 | Growing Pains

What makes small tight knit teams work well together? Can we bring that feeling to a larger audience?

This was question that I found myself asking as the ACM student organization at UT Dallas accelerated its growth over the years to approach close to a 100 officers & several thousand members. When I first started out as an officer in the organization back in 2019, it was possible to fit the entire team in a single room. Our teams and members often knew everyone else in the organization and it was common for all officers to be invited to socials, parties, events & more. People were more than just fellow colleagues; they were your friends that you would hang out with informally to enjoy time beyond working on student organization affairs.

However, over the years, the organization continued to grow and extend the scope of its operations to include new programs, fresh initiatives and offer more opportunities to students. With the expansion came many growing pains among which one was a disconnect between different sections within the organization. By 2022, we had 7 different divisions that catered to a wide range of interests in the student community from academic research to team-based project development to running hackathons. Each of these divisions had their own teams that operated on independent schedules and timelines. These smaller sub-teams organized their own socials and team-building events, created their own mini-traditions and continued to maintain that small team vibe. This was good! Our individual teams were strongly bonded together but we lacked something that could bring the entire organization together. Officers often weren’t aware of who was who across other teams. There weren’t any ways to naturally discover what roles different people performed & most people tended to remain within their sub-team bubbles.

Photo by Martin Sanchez on Unsplash

In an attempt to establish opportunities to bring the community together, we focused on creating avenues for recognizing the work done by our team. Using open appreciation as a way to encourage cross-team collaboration our team created a public channel on our slack workspace called #shoutouts. Officers that engaged in activities that showcased initiative, demonstrated willingness to volunteer, and participate in community building would get public shoutouts. A good first step towards bridging gaps and drawing awareness to the accomplishments of team members, its implementation left much to be desired. To start with slack messages on a free workspace are ephemeral. People read them when they’re posted and there’s no way to persist them for viewing once you’ve used up all your slack history. We needed a more robust solution that would serve as a foundation for everything our growing team needed to come together.

Chapter 2 | Identifying MLP Objectives

Over Summer 2021, I began laying an outline for the minimum set of objectives that this new service should accomplish. One core tenet that guided me during this time was to think about what set of features would constitute a minimum lovable product. This was a product design concept that I had learned during my internship. Instead of engineering to reach a minimum viable product (the set of features that makes the product just “work”), the target is to instead build out a minimum that people love & would enjoy using. To address the various issues faced I settled on the following goals:

  • Allow natural student discovery. In an organization with over a hundred officers & many more alumni we needed an easy way to look people up.
  • Capture team transitions & role changes for officers over time. Many students often begin in one team but by the end of their tenure either have switched teams horizontally or grown into a more senior leadership position.
  • Design a method for officers to award accolades to their colleagues for their achievements. As an extension, these shoutouts should persist and be viewable forever.
  • Feel simple to navigate & incorporate existing tools used by the organization. This includes integrating with our slack workspace & our google workspace accounts to provide a seamless feel.
Photo by Kaleidico on Unsplash

Chapter 3 | The Building Process

With an ambitious goal now defined it was time to start building. As with many projects, I begin with a simple 3-step process.

  • Step 1: Identify objectives & find all the information needed
  • Step 2: Build the project
  • Step 3: Encourage adoption of the new service

At this point I’d already identified our MLP objectives & set out to find all the information needed. To begin building I would at a minimum need a list of all officers in the organization (past & present), a list of the various roles they had held & finally start/end dates for their tenure. Getting a list of names was fairly straightforward. Our team maintained an internal directory of everyone that had held a leadership role, when they had started & when they had graduated / left the organization. The more tricky part was finding a list of all the roles that an individual had held. We only kept track of an officer’s initial role & their current role (or for a past officer we recorded the last role they had held). Getting this information required thinking out of the box. Although our team didn’t keep an active list of all roles, we did update people’s current roles on our team website.

Team page on https://acmutd.co/team. Truncated to show the first 8 names.

Since the code for our organization website is on GitHub to allow for collaboration and iterative development, I realized that it would be possible to search up past records on the website through the codebase’s git history. For those without a technical background, using GitHub meant that all changes to a project over time would be saved (usually to allow for changes to be rolled back or to review an earlier implementation). In this particular situation, we would be using the git history to find revisions where the roles associated with officer names were changed. After writing a couple scripts to pull information from our internal directory and the website codebase we were ready to build the project.

Over the next few weeks I quickly planned out what the new website (for the Leadership Project) would look like, identified access patterns for the data, created schemas, and built out a simple full stack application. The project used NextJS, GraphQL, Vercel, and Google Cloud as the main frameworks/providers to power the application. Finally in early September, I released the initial version of the project → https://leadership.acmutd.co

Homepage for the ACM Leadership Project Website when first released.

The initial release for the website allowed for users to browse through the list of all ACM Student Organization officers (from 2012 through present day), make simple searches based on names & roles, and finally open an individual officer’s profile page to view their start date, end date & list of past roles. It was a very simple implementation that served as a pretty interface to explore ACM’s leadership over the years.

An officer’s profile page. In the initial implementation only their name, start date, end date & list of past roles was visible. Profile pictures, links to linkedin & several other pieces of information were added in at a later date.

Chapter 4 | Accolades

With a foundation in place I set out to build the features that bring the community closer through interactivity. The website as it had been created was a passive service. It allowed for asynchronous browsing and student discovery but it didn’t yet do anything that engaged officers. The first new feature addition was one that accomplished our MLP Objectives → to allow officers to award each other accolades. I added Google Workspace authentication to the project using NextAuth, a couple of UI changes to allow typing out messages & updated the backend to include email support via SendGrid & message support via Slack.

Profile page for John Cole. Shoutout card displayed at the bottom to award accolades.

Officers that are signed in would be able to open the profile page for a fellow student, type out a short congratulatory / thank you message and send them an accolade. Optionally, an accolade can also be sent to multiple officers at a time when wanting to award an entire team/division/group for an achievement. Once sent, the receiving student would receive an email notifying them & a slack message would be shared with the same information. This allowed for a seamless transition from officers manually posting in a slack workspace to an automation resharing it after an officer sent an accolade using the website.

Email received by an officer when they are awarded an accolade. Image using an older version of an email template.

Although the term “accolades” can sound very professional we encourage our team to shoutout the achievements of their peers no matter how large or small the impact is. While not directly related to software development, a valuable skill that I learned during my time building projects is that product adoption isn’t just based on how well the code is architected or how efficient the system design is.

“Product adoption is based strongly on how users feel when interacting with a service and whether the context the product exists in encourages people to continue using the service”

In this particular situation making sure to invest time into the UX & add thoughtful messaging that creates a warm vibe when both sending and receiving accolades was an important factor in driving up its adoption in the first few months.

Email received by the officer sending an accolade. Image using a newer version of an email template.

To encourage officers to frequently shoutout their peers it was important to bring the Leadership Project website & its features to the limelight often. While it would suffice to only notify the accolade sender and receiver via email, this service also posts the message to slack. The primary purpose is to recognize the officer for their effort & for receiving an accolade. However, each message also includes a link to the website as a subtle way to drive fellow users reading the messages to thank their peers for acts of going above and beyond that they witnessed.

Shoutout message shared in slack. Includes message sent as well as a link to the leadership project website.

Chapter 5 | Anniversaries, Programs, Events & More!

Having achieved the core objectives it was now time to raise the bar and continue adding more features that would deepen the sense of cohesiveness throughout the organization. Over the next few months, I gradually added in Dark Mode, updated records to include member information (in addition to the officer info), included data on the various teams, programs & events hosted by our organization, and more. Along with these changes also came a more robust admin interface to allow current officers to self-manage the information on the website and collectively ensure that it is always up to date. The project also got its own dedicated documentation portal!

One cool feature that I enjoyed creating was a powerful external facing GraphQL API with support for infinitely nested queries to understand the relations between the different forms of data. View it at https://leadership.acmutd.co/api/graphql. This API allowed for drawing connections between different pieces of data easily and visualizing the organization as a graph.

GraphQL API landing page. Access the API at https://leadership.acmutd.co/api/graphql

Along with all these new features came a new way to bring the community together through a sense of celebration. Since all officers’ start dates were now available via an API, it was possible to celebrate their anniversaries. To facilitate this I created a script that runs every night through GitHub Actions (a service to allow scripts to execute on a time-based schedule). This script scans across all the officers to check for any anniversaries & if found then posts a congratulatory message in our slack workspace.

Anniversary message shared in the ACM Slack Workspace.

In addition to sharing their anniversary count, the script also includes some positive messaging as well as a fun fact. These facts can range from sharing the number of roles the individual had, how long they’d held a specific role, which role they had started out in, and more! These posts aim to invoke a sense of reflection and give occasion for various officers spread throughout the organization to celebrate their peers.

Chapter 6 | Thoughts & Reflection

I worked on improving this project for almost a full year and learned many valuable lessons along the way. Its common for members to have thoughts and opinions about the sense of community within their organization.

We may all have thought at one point “I wish our team had more socials” or that “I wish we all knew each other a little better”.

Most of the time these thoughts remain just that → thoughts. However, its certainly possible, and to some extent a responsibility upon every individual, to take steps towards making it a reality. I believed in a vision and was able to leverage my skills in a manner that helped reinforce bonds across an entire organization.

I wasn’t alone in pursuing these endeavors. While I built projects and designed applications to create a culture of gratitude, many other exceptional officers that I came to befriend in the organization pursued the same goal in their own inventive ways. This article would be remiss without mentioning some of the steps they took towards this mission. Saksham Sangruala (President 2022) created Celebration Night, an event dedicated to celebrating the accomplishments of the organization and all its officers in an academic year. Jocelyn Heckenkamp (VP 2022) led a team to create a yearbook for the student organization. Jafar Ali (Director of Operation 2021) led the creation of an online community through platforms like Discord during the peak of the pandemic. I could continue listing many other amazing individuals here but I encourage you, the reader, to perhaps see https://leadership.acmutd.co to explore our phenomenal leadership team. I’m thankful that I’ve had the opportunity to work alongside many of these brilliant individuals and hope that every individual, in every team, in every organization will continue taking steps towards nurturing their own Culture of Gratitude.

Team photo during HackUTD VIII.

--

--