Talks
How Compose uses Rails to Scale Work, Now Open-Sourced

How Compose uses Rails to Scale Work, Now Open-Sourced

by JP Phillips

In this presentation at RailsConf 2016, JP Phillips discusses how Compose has adapted to the challenges of scaling and communication in a remote work environment by developing and open-sourcing a tool known as Fizz, built on Rails. The talk begins with an overview of Compose, a fully managed platform for open-source databases, which was founded in 2010 and became part of IBM in 2015. Phillips highlights the organization's remote structure, emphasizing that despite geographical dispersion, the company operates harmoniously as a unified team. Key points covered in the presentation include:

  • Internal Communication Tool: Fizz is primarily focused on enhancing communication among team members, helping them understand one another's tasks, and fostering connections across different teams.
  • Core Features of Fizz: The tool incorporates features like 'posts' that allow team members to share updates, utilize emojis, mention colleagues, and celebrate achievements, which strengthens collaboration and community.
  • Self-Organization: Rather than relying on project managers, teams at Compose are self-organized around tasks, promoting flexibility and clear contributions towards team goals.
  • Data Aggregation: The use of hashtags allows team members to categorize and link related updates, making it easier to track progress and inter-team collaboration.
  • Daily Progress Tracking: Fizz includes a command for summarizing daily or weekly activities to keep the entire team informed, crucial for maintaining a sense of connection in a remote context.
  • Integration with Other Tools: Future integrations with other software (like Help Scout and Trello) are anticipated to further enhance productivity.
  • Open-Sourcing Fizz: As the talk concludes, Phillips emphasizes the intention to clean up the codebase for best practices before the public release of Fizz, reaffirming the commitment to open-source principles.

In summary, JP Phillips effectively showcases how Compose utilizes Fizz to improve remote work dynamics, enhance team collaboration and connectivity, and continuously evolve their operational capabilities while maintaining a transparent and inclusive work culture.

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!