How We Use Mattermost to Build Mattermost
We started building Mattermost because there was no collaboration solution on the market that fulfilled our engineering teams’ needs as game developers. These days, we’re a software development startup with many of the same needs, processes, and frustrations as our customers. Mattermost has been 100% remote from the beginning, with employees all over the world. We are fortunate to have focused on remote work and digital workflows long before the pandemic so that we could offer newly remote employees and companies support in a difficult time.
For our team, we are always seeking to ensure that we stay agile, aligned, and deliver the best software we can. Does this sound like your team? We’d like to share how we use Mattermost internally to plan, build, and release our software.
It’s a little meta! Here’s how we at Mattermost use Mattermost to build Mattermost:
Planning: A Journey Needs a Map
The first step of our process is to collect information and discuss potential plans, and what better place to do so than in our office space: Mattermost Channels. We have an internal server for staff discussions, as well as the Mattermost community server where open source contributors and users can get together with our staff to help develop Mattermost. This kind of cross-functional communication and transparency to stakeholders is key because we hear a broad range of feedback to inform product plans and roadmaps.
Members of a Mattermost server can tag others into a conversation for visibility, create channels for special projects, thread conversations, use Markdown formatting, and attach channels to Playbooks and Boards (more on those in a moment). Channels are where we discuss feature requests, bugs, and other technical issues as well as surfacing achievements, sharing successes, and generally collaborating with anyone in the community. They’re also a great place to pin key resources for our teams, such as links to the company handbook, Google Drive folders, roadmaps, company and team goals, and other frequently referenced materials. That helps bring everyone on the team on board and supports our culture of collaboration and enablement for success.
When we are ready to commit to an agreed-on plan or goals we capture it in Mattermost Boards. Boards are a Kanban-style tool with task cards, labels, custom fields, and lots more. We use them to plan features and releases, and to keep the scope and progress of a project in sight. Importantly, Boards are right there in Mattermost with Channels, and integrated so we can communicate about tasks in the same context.
Mattermost has a few board templates built-in, or teams can build their own custom templates to fit specific workflows and needs. We use Boards for projects of all sizes, from go-to-market plans and to OKR progress to team meeting agendas and personal tasks. Boards integrate seamlessly into channels, so that again, team members can share information and discuss tasks without switching context. When the plan for a project or the company roadmap is available directly in the same integrated UI as daily tasks and conversations it’s much easier to help team members move forward together.
Building: Code Handoffs and Communication
No matter what else is going on, the most important thing is that our teams are able to communicate with each other. One of the core principles of Mattermost is transparency, so we work as much as possible in the open, where team members or teams in the company can find the key information they need. We build Mattermost to be developer-centric, which not only means that the platform fulfills our R&D team’s needs, but that the rest of the company has the opportunity to listen to and learn from our developers.
Channels can also be extended with integrations, which is important to any team working with third-party systems, such as code repositories or reporting tools. Our two favorites are Jira and GitHub, but we use others for continuous integration and on-call systems as well. The Zoom integration is important because it lets us open a call within a channel or direct message with a single click, the equivalent of popping into a colleague’s office for a chat.
GitHub is essential to our work, so we always need to be on top of notifications, recent changes, pull requests, and reviews. The GitHub (and GitLab) integration lives in the left-hand sidebar, where we can at a glance see what needs attention among pull requests, reviews, messages, and assignments.
We also use Jira inside Mattermost with slash commands that allow us to create and view issues. Creating new tickets and attaching Mattermost messages to Jira tickets is seamless within the Mattermost UI. New tickets assigned to developer teams get posted to their respective channels. Plus, `/jira view` and `/jira assign` give quick commands to allow teams to view and assign tickets within seconds without the need to leave the Mattermost platform.
The production process is also tracked on cards in Boards, to keep everyone on the same page. Each card on a board has all the details needed for a task, including who’s assigned, the current status, links to specs, designs, drafts, and conversations about the work in progress. We can sort, filter, and save views of boards for different purposes. For example, developers can see tasks assigned to them, project managers can see feature status by release, or executives can see a high-level view of the project status and any “off-track” flags.
All of the connections available in Mattermost help reduce context switching. Instead of having even more browser tabs open, we can focus on Mattermost with the confidence that everything we need to know is available in one interface. Additional notifications can be fed into specific channels, and many actions are available directly in a channel using slash commands and bot interactions. By corralling our work and tools together we gain back time typically lost to remembering where to find resources or keeping track of project progress separately.
Shipping: Pushing Buttons in the Right Order
The next step of our software development life cycle is shipping Mattermost to our users. In order to make this process as smooth and reliable as possible, we use Playbooks. A playbook is a prescribed checklist that a team has built for a repeatable process they follow regularly. Our most frequently-used playbooks are for releases, incident response, and customer onboarding.
For our monthly release cycle, we have a common set of steps that we follow each month. It’s critical that we do not miss a step, and that we coordinate with other team members and stakeholders throughout the process. A playbook brings all that information together in one place so anyone participating can see who owns each step, what the tasks are, and a clear progress status. Each checklist item has details such as the commands to run or links to the tools and environments required. Every month, the release manager starts a fresh “run” of the playbook.
Here’s a snapshot of a completed playbook run for Playbooks. There’s a description of the release, the current status, who the owners and team members are, and a link to the playbook channel. Every playbook run first creates a connected channel where we can work together on that specific run. Status updates post to the channel and stakeholders can be looped in at a high level. When the run is complete everything attached to it is saved in a retrospective format with a chronological timeline for review. Then we go back to the planning stage with this information, update and improve any steps that need it, and do it all again!
For example, the Boards development team at Mattermost has a representative workflow. They have a primary communication channel for general topics and a series of boards. The Boards include the current release board, standup, retrospective, and weekly team meetings. They also use playbooks with the rest of the R&D team to coordinate releases with other features and updates. Everything is in one place so engineers can focus on shipping software and building expertise.
Try It Yourself
Together, Mattermost Channels, Boards, and Playbooks help us manage our work from small tasks to big plans while maintaining alignment and visibility across our fully remote team. We can consistently plan, build, and release software because everyone in the organization has a clear sense of direction, motivation, and mutual support.
If you’d like a closer look, everything we’ve discussed here is available to you on our community server. Mattermost is an open source platform and we welcome your participation in discussions and contributions to our code and community. To take a look around, create an account and join at community.mattermost.com.