00:00:09.769
Today’s talk is about scaling Compose with Fizz. Fizz is a tool that we built internally to help us with communication.
00:00:19.140
For those who don’t know us, I’m JP, and Compose is a fully managed platform for open-source databases. We have several offerings today, including Elasticsearch, Redis, Postgres, RethinkDB, RabbitMQ, and more.
00:00:25.410
This is a sponsored talk, so I wanted to include a marketing slide. If you go to Compose.io/trials, you can sign up for a 60-day free trial. We also have a campaign where if you try out Redis, we will send you a special edition red t-shirt.
00:00:48.180
Compose began in 2010, and by 2015 we had about 20 employees. We are fully remote, with a pseudo-office in Birmingham where a couple of people like to congregate, but for the most part, we span the United States and several other countries.
00:01:12.420
Around this time last year, we were acquired by IBM, which was quite a reaction for us at the time. Since then, we have continued to grow. The green dots on our chart represent all of the new employees who joined us since the acquisition.
00:01:33.119
What’s exciting is that we have become even more remote now than before, and I believe we’re doing a pretty good job of making it feel like we are one big team, even if we’re in different locations. Is anyone else here working on a remote team?
00:02:02.790
A breakdown of our organization shows that it is primarily engineering-focused, followed by support and ops. Our three other groups are fairly balanced, and it’s not a typo—we don’t have salespeople, now or then.
00:02:23.060
Our organizational structure is quite different. Everyone is empowered to make their own decisions. We choose what we work on, who we work with, and how we go about it. In practice, this is how it looks and how our tool reflects this approach.
00:02:31.820
This graphic shows the connections between people, which illustrates the things they have worked on together. It’s a unique way to visualize teamwork when you’re not in the same office and don't have those daily interactions.
00:03:15.720
Fizz is obviously a Rails app. It uses Postgres as its primary database and Redis for some Slack commands as well as sessions. We are also currently trying out Disque for background processing with Active Job.
00:03:38.730
To break it down, Fizz’s core functionality focuses on enabling communication among team members. It helps everyone understand what each person is working on. This outreach helps team members connect across different groups, be it engineering or marketing.
00:04:12.560
One primary concept within Fizz is called 'posts.' This feature helps team members remember each other’s names and contributions, which can be challenging even within a relatively small team of 40.
00:04:47.050
When creating a post, we encourage the use of emojis and mentions of other individuals to foster collaboration. Including others in posts is essential, as that's how we acknowledge our collective efforts.
00:05:34.000
Another cool feature is the ability to share casual updates and personal milestones throughout the day. For example, if someone has an update regarding IBM, acknowledging it in a post is encouraged. We also have general rules for posting that support this community focus.
00:06:11.510
These rules include using emojis, mentioning colleagues, and utilizing hashtags. Regular posting is encouraged—ideally, once or twice a day. If team members don’t post for a couple of days, our Fizz bot will send reminders to encourage engagement.
00:07:06.660
We’ve also introduced a praising feature where team members can acknowledge one another’s hard work. This can be for any reason, such as praising someone for their effort on a project or taking time off for vacation. We want to create an atmosphere where appreciation is easily communicated.
00:08:17.479
Next, I want to discuss projects. Thankfully, we don’t have traditional project managers at Compose. Instead, teams are self-organized around a single goal or task, whether that's a feature release or addressing a bug fix.
00:08:43.130
This structure allows for flexibility and ensures that everyone is clear on their individual contributions, while still remaining aligned with the team's goals. While we don’t set rigid due dates, we maintain open communication about ongoing tasks and their importance.
00:09:15.470
In Fizz, every day, we evaluate what is most important for us to work on, both for customers and internal support. Although we don’t utilize email for communication, we have a 'noteworthy' tag that aggregates significant updates, shared by one of our team members, DJ.
00:09:56.770
These updates encapsulate our milestones, highlighting all the important activities within a defined timeframe. They help the team stay informed about all accomplishments and progress in a concise manner.
00:10:45.559
Hashtags are another feature we leveraged to provide context in posts, serving as a tagging mechanism that links related updates to specific teams or functions. This helps in understanding how different tasks interlink across various groups.
00:11:00.600
Using hashtags has made it easier to aggregate information, especially in bigger projects involving various teams. Each individual and team can see the hashtags they interact with the most, which helps elevate visibility on shared projects.
00:11:42.020
Connections are crucial in our remote setup. Since we lack traditional groups, organizing posts around common hashtags allows us to visualize the relationships in our workflow. Edges represent these relationships, where we analyze the frequency of interaction and collaboration among team members.
00:12:17.919
This approach leads to a visual graph of our company's health, aiming to minimize silos and ensure that everyone feels involved. By observing this, we can gauge how well people are collaborating and supporting one another.
00:12:47.899
Slack serves as our communication lifeline, where all posts hit the general channel. In this way, team members can stay updated, even if they are on vacation or out of the loop for a day or so.
00:13:25.400
We have special commands that summarize daily or weekly activity, allowing team members to catch up quickly on what occurred. This functionality enhances the sense of connectedness within the team.
00:13:44.970
Lastly, GitHub links into our system for engineering purposes. By tracking contributions made through pull requests and issues, team members can easily include this effort in their daily posts.
00:14:00.150
Our system allows quick access to project activity, letting team members share their contributions, whether they are reviews or commits on projects they care about. This significantly boosts transparency and reinforces collective teamwork.
00:14:38.600
In the long term, we plan to integrate additional tools, like Help Scout for ticketing and Trello for our operations team. We value the flexibility to utilize various tools that enhance our productivity.
00:15:06.360
As we work on Fizz and prepare it for open-source release, we are cleaning up the codebase to ensure it reflects best practices, like using environment variables for sensitive data rather than hardcoding information.
00:15:50.640
That concludes my talk today! If you have any questions or comments, I'd be happy to discuss. I'll be around afterward, and feel free to stop by our booth to talk about databases or the Fizz project.
00:16:09.350
Thank you for coming!