Fist Bump: The Social Network For Your Office
When I first interviewed at Everlaw, there were 22 employees (6 of whom had won USAU Nationals). By the time I started (1 year later), there were 33 employees. Now, 2 years after I started, we are pushing 100 employees and accelerating.
One of the best things about Everlaw, and what attracted me to working there in the first place, was the fantastic company culture. We emphasize growth, respect, and fun. Board games, team lunches, and escape rooms help everyone get to know each other and realize what makes their colleagues particularly qualified and capable.
But amidst rapid growth that closeness and camaraderie can disappear. How can you get to know everyone when we have 9 people start in a week? And when teams grow to 10x their original size, it becomes difficult to get any insight into what is going on inside them. Fist Bump is an attempt at solving these problems.
Being located on the same side of the Bay as the Warriors, we know a little bit about winning sports teams. One thing that great teams do is high five each other, a lot. And since we already have some great athletes in the office, and we would like to think of ourselves as the Golden State Warriors of the legal tech world, we wanted to translate that into the office.
So in the spirit of Silicon Valley, we took a face to face interaction and moved it into the cloud. We call it Fist Bump (high fives are like on-premise discovery solutions: so 2008), and it is essentially a social network for the office. Its main feature is a feed of “fist bumps” that colleagues have sent to each other, as well as the ability to send your own “bumps”. You can bump a single colleague, a set of them, or even an entire team! The site also allows you to create your own bio with a profile picture and answers to a set of fun and informative questions. The goal is to create a fun space where people can appreciate each other, be goofy, and learn about what their colleagues are working on.
Overall it’s been a great success. We have sent over 5500 bumps, and people have commented over 700 times on those bumps! We’ve continued to improve it to try and encourage people to use the platform more, including introducing gif support (400 gifs have been sent) and building a visualization that maps connections between coworkers.
The site was developed fully in-house, and it’s built using the Django web framework. It’s hosted on an EC2 micro instance, so it costs pennies per month to maintain. A major benefit of in-house development is that we can fully customize it to match our company culture. For example, we have a set of culture tokens that get passed around to people who exemplify certain aspects of our company culture. Although we haven’t scrapped the physical tokens, we added a token feature to Fist Bump so that people can see who has each token at any given time. We’ve also been growing quickly, and it was becoming difficult to keep up with all of our new hires! We used to use a Google Doc as a company directory, but it became unwieldy as we surpassed a head count of 70. So Fist Bump now has a company directory, where you can quickly peruse people’s pictures and a set of questions and answers. You can also view any bumps they’ve been a part of, which can hopefully give you a bit of insight into what they’ve been working on.
On top of adding features that we think promote good company culture, we avoid adding ones that detract from it. For example, we’ve avoided any kind of “Most Bumps Received” feature, or any way to sort people based on their stats on the site. We want to avoid creating any competition around the site, the same way that NBA players shouldn’t be competing to give the most high fives in a game.
As we’ve expanded and begun to approach the magical Dunbar’s number, Fist Bump has helped preserve some of the best aspects of startup culture. For our newest employees, they can learn what people look like and what Harry Potter house they belong to even if they haven’t met everyone. People can match the appropriate gif to a successful sales call, and debate the pronunciation of GIF (here at Everlaw, we pronounce it “híf”) in the comments. And if anyone wants a quick update on what’s going on outside of their team’s bubble, all they have to do is browse down the Fist Bump feed.
Technical Thoughts
Fist Bump is by far the most fleshed out product I’ve built from scratch, and it was fun to make all the decisions (and stressful). I so far haven’t made any terrible ones, but the volume of usage and the scale of the site are quite low.
For a DB I’m currently using SQLite. It works fine for the scale of transactions that Fist Bump handles, and the db file is only 2.5 MB at the moment. It has some major benefits as well. The fact that db is just a single file means that it’s easy to back up, and easy to transfer around between instances. It is also incredibly easy to set up a new database (basically you just have to make sure SQLite is installed) which was important for me since I wanted other devs to contribute to the code base, which means local instance setup has to be easy.
The site itself is built in Django. I like Django, and it abstracts away a lot of the messiness of dealing with request routing, storing / querying objects in the DB, and managing user accounts. It also comes with the Django admin console, which is a massive time saver.
When you create the app, Django builds a full web site for managing the objects in the DB. The UI for each object is created based on the data type you assign to the table / column, and it automatically populates Foreign Keys
as dropdowns (in the example above, the team
field is a key into the Team
table). This is a massive time saver for the engineering team, since it allows non technical employees (e.g. Ian, our VP of Operations) to administer the site without any intervention from devs.
However if you want to do something that is not within the design philosophy of Django, it can end up being quite messy. So far it hasn’t been too bad, although static asset management is beginning to crop up as an issue.
Django encourages you to include static assets with static
tags. If you include these in the HTML template the the server fills out and sends to the client, Django will automatically fill out the tag with the URL of the static asset. Unfortunately this is not compatible with ES6 import
tags (since those import static files within a different static file) so you can’t use those tags very effectively if you want to use modern Javascript imports.
This compounds if you want to use Django’s version management. This generally modifies the name of the static file to reflect the content of the file. If the content changes, the filename (and the URL inserted into static
tags) change as well. But there’s no way to automatically update the filenames in import
tags. I still haven’t settled on the best solution for static asset versioning in Fist Bump yet, so please let me know if you have a good idea!
Final Notes
Fist Bump has sort of been a side project, although I have spent a good number of hours working on it during the workday (and a good number working on it outside of that as well). Everlaw doesn’t have a 20% policy a la Google, but employees are encouraged to work on stuff to improve the company, even if it’s outside the scope of their current major feature.
If Everlaw sounds great to you (it is), let me know and I can refer you to work here! Check out our current jobs and reach out.
Shoutout to bryant 🌊🔥for doing the initial design work on Fist Bump, I’ve followed the design framework and philosophy he laid out as the site expanded.
There’s a possibility Fist Bump will be open sourced and made public, so let me know if it’s something you want for your workplace (or personal use!).