This guide is being moved to the Mattermost Handbook. Where possible, links to the Handbook have been provided.
This document is intended for new hires to summarize norms for working at Mattermost, Inc. including:
Getting Started Checklist - Getting ready to work here
Channels - Where we discuss work-related topics
Meetings - When we get together and why
Mindsets - Shared toolsets we have for solving problems
Terminology- Shared vocabulary to convey ideas quickly
Training - Material available to help us ramp quickly in different areas
(People Ops and New Hire) Offer letter accepted via click-sign.
(Logistics) Mail track jacket and socks.
(People Ops and New Hire) People Ops should find out new hire’s preference for laptop, either to be purchased or taken from stock and shipped by People Ops or purchased locally by new hire and expensed. Windows laptops generally cost less than Macs so budget is based on Macs. For non-developers, budget is cost of a MacBook in your local area, for developers budget is cost of a MacBook Pro. Since these items are company property, you do not need to buy insurance or extended warranties for them, but you do need to report any loss or damage to firstname.lastname@example.org as soon as it occurs.
(New Hire) Read the entirety of Onboarding page for info on meetings, mindsets, terminology, and training materials.
(People Ops) Send email invite to New Hire to set up an @mattermost.com email address. New Hire should use this email address on community.mattermost.com (replace personal email with company email if already registered there). FIRST_NAME.LAST_NAME@mattermost.com is the standard naming convention.
(People Ops and New Hire) Set up payroll.
US FTE, receive email to complete TriNet sign-up, payroll, benefits enrollment, I-9 form, banking information, personal information, tax forms.
Non-US Employee/Non-Canadian Employee, complete bank info form for monthly wire transfer.
Non-US Resident Contractor, complete W8-BEN form.
US Contractor, complete W-9 form.
(Manager) Posts welcome message in Stand-up channel.
(Manager) Meets New Hire for first 1-1 meeting.
(People Ops) Meets New Hire for check-in meeting.
(Buddy) Meets New Hire for first 1-1 meeting.
(New Hire) Confirm with Manager all HR paperwork is completed by end of first day (should have been sent in advance).
(CEO) Meets New Hire for welcome meeting.
(People Ops) US FTE - Email regarding 401K account set up.
This section summarizes norms for public and private meetings for the Mattermost community and for Mattermost staff (people paid by Mattermost, Inc.).
When proposing meetings use famous cities as references for time (e.g. 9am Toronto time), since it’s clear and easy to web search. Avoid using “UTC”, as it has been shown to cause confusion.
When selecting a timezone city, use the most well-known city in a country where at least one team member is located. Exception: When possible, use a city where we have an official mailing address, e.g. In Western Americas use Palo Alto, instead of San Francisco. In Eastern Americas use Toronto, instead of New York.
Recurring meetings with more than two people should have one or more regular slots on the calendar reserved so that meetings can be coordinated in a straight-forward way.
Meetings with internal colleagues should be coordinated by checking everyone’s availability in G Suite Calendar.
Meetings with external colleagues should be coordinated manually with one internal person coordinating everyone’s G Suite Calendars.
For efficiency, when Mattermost works with advisors and consultants who engage with two or more internal team members, we aim to schedule meetings in regular slots (or a collection of regular slots) 2-4 weeks apart.
Inspired by Corey Hulen’s blog article of 6 Annoying Things People Do During Video Conferencing.
Avoid responding to messages in chat while on a meeting:
It can be distracting when someone tries to covertly respond to a message. First, other people on call may hear your keyboard and notice you’re looking somewhere else. Second, if they are in the same channel as you, they can see the message
[User] is typing...in Mattermost.
Tip: If you feel the need to respond immediately and are easily distracted, set yourself to “Do Not Disturb” mode while in meetings.
Avoid answering calls or checking text messages on your cell phone:
Tip: Put your phone on silent and place it out of arm’s reach, face down, so you don’t feel compelled to act.
Display your video on a monitor with your camera:
If you have your video display on a second monitor, it may cause you to look away from the camera, not looking at the camera when talking. It almost feels like you’re talking to someone else in the room behind your computer monitor.
Tip: Either move your camera, or move your video window so they are somewhat inline. Also remember to look towards the camera.
Mute audio in large video conferences when not speaking:
When not muted, others can hear random noises, like a fan running or a loud click-clack keyboard, which can be distracting.
Tip: Set your Zoom meetings to be on mute by default via Zoom settings.
Avoid fidgeting uncontrollably or spinning in your office chair:
Tip: If you’re in a group meeting and not doing much talking, feel free to stop your video.
Avoid connecting with your computer but also dialing in via cell phone:
If you connect with your computer and dial in, there are two of you in the meeting and the voice/video are not synced when you talk. In large groups, there will be a random cell phone number that no one will know who they are.
Tip: If you have a bad internet connection and have to dial in, exit the Zoom meeting on your computer.
When presenting, increase window zoom size or set Powerpoint slides to presenter mode:
Otherwise, the text on screen may be too hard for others to see.
Open to the public - (Developers - 1-2 hours/week) Wednesdays 8:30 AM (San Francisco Time)
Goal: Discuss developer issues across Mattermost staff, key contributors and the contributor community.
Attendees: (required) Mattermost staff developers, (optional) key contributors, contributors, and anyone who would like to join.
For confidentiality of customers, internal process meetings are limited to Mattermost staff only.
This is our “All Hands” meeting focused on how we’re aligning the company to serve our customers. “Customer Obsession” is a key leadership principle and we emphasize its priority when we bring the company together.
All Mattermost Staff
Chair: Jason Blais
Reaffirm our obsession with making customers safer and more productive.
Share how we’re aligning resources to make customers successful.
Weekly meeting on Wednesdays from 8:00am to 8:25am Palo Alto time.
(Chair) Schedules items for the weekly agenda, and works 1-1 with presenters to prepare for them.
(Vice Chair) Works with new hires and their managers to schedule week 2 welcomes. If new hire or manager is away, introduction is postponed to the following meeting.
New team members are introduced on their second week by their manager, including name, role, what they’re working on, timezone, additional info as appropriate (max 2 minutes).
New hire can opt-in to introduce themselves if they choose (default is not to require public speaking).
(Team) Shares potential meeting agenda topics with Chair via direct message. Must be shared at least 24 hours prior to meeting start and be aligned with the meeting objectives above.
(Vice Chair) Posts a reminder message in the meeting channel about the meeting 24 hours prior to meeting start.
(Chair & Vice Chair) Signs into their Zoom account to access recording and screenshare during the meeting.
(Vice Chair) At 7:58am Palo Alto time on the day meeting is held, post a reminder in Customer Obsession Meeting channel.
@channel Customer Obsession meeting starting now https://zoom.us/j/2244480297 Meeting notes: https://docs.google.com/document/d/16F86k0I_ipjhHofm5pP6yA_dWTNvmA4ZBr_z53_087Q/edit
(Team) Join the Zoom link in the header of the Customer Obsession Meeting channel, and open the Meeting Notes link in the header to see the agenda.
(Vice Chair) Start Zoom recording at 8:00am Palo Alto time.
(Chair and Co-Chairs) Run through the agenda, which comprises one or more of the following items:
Introduction: One of the founders does an introduction to the meeting.
Week 2 welcomes of new team members: New team members introduced on their second week by their manager, or optionally by the new team member themselves.
Main topics: Examples include: Series A marketing announce; FOSDEM event; key use cases and stories from customers to understand how they use Mattermost. Links to publicly shared documents or slides may be included in meeting notes.
Feedback: At end of meeting, concludes meeting with a reminder to share feedback via survey.
(Vice Chair) Share meeting recording and link to feedback survey.
### All Hands Meeting: February 20, 2019 Meeting recording (and transcript) [here](https://zoom.us/recording/play/j7MHmiva3D7G4KqIcL6qV2Z46NMJZDpsdYo4B0GPDtmrRC0owvEJnC8Xpa9tAyxy?continueMode=true). Share your thoughts on this week's meeting [here](https://goo.gl/forms/AgCNmu3JxTDmSQvp2) @here.
(Vice Chair) Post recording to Cust Obs Prep channel, with timecode of co-founder’s introduction.
(Chair & Vice Chair) Review recording and decide if the introduction is converted to a YouTube video and included in onboarding documentation. Sample recordings include discussions of leadership principles, mission, and core values.
Why don’t new people introduce themselves?
Not everyone is comfortable with speaking in front of 60+ people. Not everyone speaks clear English. We don’t want the first company-wide meeting to be anxious for new team members, hence by default managers intro them. New hires can opt-in to introducing themselves.
These are our product training sessions for the Sales and Customer Success teams, along with QA, focused on frequently asked product areas. They include a functional and technical training session targeted for specific audiences.
All Sales (including CEs), Customer Success (including CSMs and Support), and QA staff
Chair: Jason Blais
Co-Chairs: Product training session leads
Every 3 weeks on Wednesdays from 9:00am to 10:30am Palo Alto time.
(Chair) Schedules a kick-off call with co-chairs two weeks prior to the training session. Purpose is to review expectations and plans for the session, as well as answer any questions.
(Co-Chairs) Prepares a pre-screening survey to assess team members’ knowledge of the product area. This is optional but recommended as it can help guide focus areas of the training session.
(Co-Chairs) Prepares slides and other reference material for the session. Must be shared with Chair at least 48 hours ahead of the session.
When sharing code snippets, highlight the area of focus within the code snippet.
Focus on visuals, diagrams and live demonstrations instead of slides where possible.
Share at least one memorable customer story.
Ensure enough time is given for Q&A.
See the Google Drive on previous materials and training recordings for reference.
(Co-Chairs) Two days prior to the training session, practices a dry run for length and structure of the session. This is optional but recommended.
(Chair) Queues an item for that week’s Customer Obsession meeting to remind everyone of the product training session taking place. Include a mention of the topic, along with who is leading the session.
(Chair & Co-Chairs) Signs into their Zoom account via OneLogin to access recording and screenshare capabilities during the meeting.
(Chair) At 8:58am Palo Alto time on the day the meeting is held, posts a reminder of the session along with a Zoom link to join the call. See example.
(Team) Joins the Zoom link in the header of the Product Training and Q&A channel.
(Chair) Starts Zoom recording at 9:00am Palo Alto time.
(Chair and Co-Chairs) Runs through the agenda, which typically comprises of one or more of the following items:
(15 minutes) Business Use Case
Audience: Everyone, but primarily CEs, CSMs
What does it do, why do people use it, who uses it
Customer use case examples and success stories
Roadmap (status and committed timelines, if any)
(30 minutes) Live Product Demo
End user demo
Admin configuration demo
Known customer issues and workarounds
(15 minutes) Technical Overview
Audience: Primarily CSMs, CEs, Support, QA
Technical flow for the feature, data structure, etc.
What to ask for when troubleshooting
(30 minutes) Technical Deep Dive
Audience: Primarily CEs, Support, QA
Deeper technical review of how the feature works and how it was built
Working session on specific customer issues, retros on support tickets, etc.
Feedback: At end of meeting, remind to share feedback via survey.
(Chair) Encourages questions in Mattermost or Zoom chat throughout the session, but refrains audience from asking during presentation time. Asks back the questions during alloted Q&A time. By reserving questions during Q&A, the session stays on time and sets expectations for attendees on when to join the conversation with questions.
(Chair) Shares link to feedback survey, tailored for each training session to measure its effectiveness. See example.
(Chair & Co-Chairs) Holds a retrospective meeting two days after the training session to review feedback and discuss what could have been improved.
(Chair) Makes adjustments to meeting process based on feedback and discussion with co-chairs. Schedules kick-off call for the next training session.
(Co-Chairs) Updates product documentation or other resources based on the training session.
(Chair & Co-Chairs) Shares slides and meeting recording with Marketing team for potential GTM collateral.
Mattermost staff only - Each team is responsible for its own sprint planning process. Sprints are currently one week long, and start on Tuesdays. Note that teams also share demos and short updates with the whole product team in the “R&D Meeting” (see below).
Goal: Share demos, reflect on previous sprint, and lock on tickets for next sprint.
Attendees: Development team members (typically developers and product manager).
Mattermost staff-only - (Triage team - 2-2.5 hours/week) daily at 09:30 or 10:00 (San Francisco Time).
Goal: To provide consistent review, prioritization and ownership assignment of all tickets.
Attendees: One dev representative from each development team, at least one PM, QA team, Release Manager, and optionally leads, customer support and other Mattermost staff.
- When tickets are first created, they go to triage to be reviewed for clarity and priority and assigned a Fix Version, Mattermost Team and Sprint. Unclear tickets may be assigned to their creator for more information.
The Fix Version determines the sequence in which tickets are addressed and triage team is accountable for that sequence. It is the responsibility of the triage team to make sure tickets are clear before they’re assigned a Fix Version.
When assigning a ticket to a Mattermost Team, it gets assigned to a dev and put into the current release’s Fix Version and the current sprint if the ticket is time-sensitive for release. Otherwise the ticket is assigned to a team with a “Triage” Fix Version and is later prioritized and assigned to the appropriate people within that team.
The Sprint determines the time frame within which a dev is responsible for fixing the ticket.
- If you’re ever unsure about a ticket (if it’s not clear, or doesn’t seem appropriate) add a comment and add triage to the Fix Version field, which will trigger a review by the triage team in 1-6 working days.
Note: If the ticket is already assigned to a team, it will not appear in the triage query - easiest is to let the triage team know about the ticket so that it won’t be missed.
(Attendees): Join Zoom meeting link in calendar invitation at scheduled time.
(Attendees): Review query for tickets needing triage and assign a development team, sprint, and fix version.
Mattermost staff only - (Leads - 1 hour/week) Wednesday (13:00 San Francisco Time)
Goal: Address leadership and process topics.
Attendees: (Required) Leads from R&D, Marketing, Sales, and Operations.
- Decisions should go to Leads meetings when there is lack of clarity or ownership, or to discuss special case topics where process is not well defined.
When possible, decision-making should belong to the people closes to details.
Individual developers or PMs should make most decisions, and raise to developer or PM team if things are unclear, and go to Leads if lack of clarify persists.
To queue an item for Leads ask the dev or PM lead.
Leads is also used for cross-discipline Q&A.
Rather than randomize individual contributors, cross-discipline discussion (e.g. marketing to PM, community to dev, etc.) can happen in leads.
(Leads): Queue items in Leads channel for discussion.
(Leads): During meeting discuss agenda items in sequence.
Mattermost Inc-only - (Product Staff - 45 min/week) Thursdays at 09:00 (San Francisco Time).
Regular team meeting for product staff team at Mattermost Inc.
Goal: Increase team output by effectively reviewing priorities and finding blindspots.
Scope: Mattermost Inc-only meeting given confidential customer issues discussed.
Attendees: Mattermost Inc colleagues working on mattermost-server and mattermost-webapp.
The meeting includes presentations and demos, controlled agenda items (e.g. queued items) with an “open session” where staff can bring up anything they want. Staff should arrive at decisions during the meeting or schedule further discussion for the next meeting.
(Vice Chair) the day before the meeting, post a reminder in R&D Meeting private channel (Mattermost Inc only).
#### @channel A reminder to prepare your items for R&D meeting [DATE]: 1. @[name], @[name] and @[name] - you're up for `ice-breaker <https://docs.mattermost.com/process/training.html#ice-breaker>`__. 2. If you'll be giving a demo, please queue it [in the meeting notes](link). ##### Everyone is encouraged to bring up items for discussion. If the discussion is `time-copped` during the meeting, please be sure to add a `next step` to the notes and post a link to where the conversation can be continued. ~platform channel is usually a good place to continue discussions.
(Team) At time of meeting:
Join the Zoom link in the header of the R&D Meeting private channel.
Open the Notes link in the header to see the agenda.
(Vice-Chair) Post meeting notes template into R&D meeting notes.
Add Follow-ups from previous meeting.
Add New items queued in R&D Meeting private channel (Mattermost Inc only).
Ice-breaker: See Meeting Elements > Ice-breaker below for examples.
Release updates: Overview of current release status.
Announcements: Short announcements that the entire team needs to know about.
Demos: Team members show highlights of what’s been completed this week. Relevant follow-ups noted.
Blind spots, Inspiration, Knowledge Share: Colleagues share areas of concern and ask questions. Proposals for items that have already been discussed outside of the meeting can also be queued here.
If there are follow-up items, these are posted to the R&D Meeting private channel (Mattermost Inc only).
Vice Chair posts a link to the meeting recording for those who could not attend.
Here we summarize meeting elements that can be re-used for meetings across teams.
2-3 minute exercises designed to learn more about colleagues at the start of a recurring meeting.
Typically rotates in random order with names pulled from the R&D Meeting Ice-breaker List, three colleagues per meeting (2 R&D staff, 1 ‘other’ (e.g. Sales, Ops, etc).
“Hobby talk” - Sharing about an interesting hobby, past or present.
“My home town” - Sharing something interesting about where you grew up.
“Two truths and a lie” - Share two true facts about yourself and one lie, team guesses which is the lie.
“Questions” - e.g. “What would constitute a “perfect” day for you?”
Need further inspiration? Take a look here.
Designing world-class software means bringing people together across disciplines and cultures. We want to create a limited amount of shared terminology to help us work better together, while being careful not to make it difficult for newcomers to follow our conversation.
Perhaps in future we’ll have a bot that helps teach newcomers about the terminology in-context. Until then we have this guide.
We use Mattermost terminology to achieve specific benefits:
For example, “0/5” and “5/5” help convey the level of conviction behind an opinion. Also, a precise classification of tickets as “Bug” or “Improvement” is critical since it affects scheduling and decision making, and so forth.
Naming specific repeated mistake helps us find patterns, avoid repeated mistakes in future, and helps newcomers avoid making similar mistakes as they learn our organization’s terminology.
At Mattermost, “Learn, Master, Teach” cycles are core to our culture. You should be constantly growing and cross-training into new skills and responsibilities, developing expertise, and then training your replacement as you prepare to take on new challenges.
Cross-training creates a culture of constant growth, protects against single-points of failure, and challenges each of us to rise to our fullest potential.
The “Learn, Master, Teach” cycle happens in the context of roles. Roles are sets of responsibility needed to achieve objectives. Roles aren’t necessarily job titles, for small projects, a developer might take on a product manager role, or vice versa. Each team member has a “primary role” and training should move people to mastery and teaching in that role, before moving to the next role.
Developers are responsible for architecting and delivering software improvements, and for technical leadership among the Mattermost community.
Developers are responsible for researching, analyzing, designing and reviewing technical solutions to achieve functional requirements. Solutions should thoroughly consider trade-offs and be evaluated based on the effectiveness of the end implementation.
Based on technical designs, developers estimate, implement, test, maintain, review, debug and release software improvements in collaboration with teammates. This includes working closely with product managers to validate requirements and the output of designs and making appropriate adjustments. The success of implementation is judged on the end results achieved by the changes.
- Technical Community Leadership
As leading experts on Mattermost technology, developers support and engage constantly with the broader Mattermost community to accelerate adoption and to discover new ways to improve Mattermost software and processes. This includes investigating and supporting issues from users and customers, reviewing and providing feedback on projects from contributors, and understanding priorities, trends and patterns across the community.
Product Managers are responsible for aligning teams to strategic priorities, leading and managing the product development process, and working effectively with marketing to bring the full benefits of Mattermost solutions to users and customers.
Every project and every team needs to align to strategic priorities and focus on intended outcomes developed through a deep understanding of the market, user, customers and competing products and services. Amid a flood of compelling suggestions, opinions, and data, product managers must find what’s vital, and rally teams around a shared vision.
- Product development
Product Managers lead both the functional design process (user, customer and competitor research, analysis, ideation, prioritization, functional and user experience design, functional specification, user and customer validation), and the software development process (ticketing, prioritization, roadmap design, scheduling, sprint planning, triage, functional verification, implementation validation with users and customers, documentation, and release logistics).
It’s the Product Manager’s responsibility to see features shipped predictably and at high quality through planning, attention to detail and thoughtful persuasion.
- Marketing connection
Delivering benefits to users and customers based on product features is a core responsibility of product managers, working in conjunction with marketing to shape messaging and positioning and delivering collateral, events, and user and customer discussions to support sales.
The following is a list of recommended resources for developing skills “the Mattermost way” in different areas. For the ones that require purchase, message your manager to request an order, whether as physical books, digital books, audiobooks, or other formats.
Code Complete, Steve McConnell - Best practices and guidelines for writing high quality code.
Design Patterns, Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides (aka “Group of Four”) - Fundamental reading on design patterns. Other design pattern books work too, this is one of the most popular.
Monetizing Open Source (Or, All Enterprise Software) - Required reading for business roles.
Papers and Course Materials
Framework for Improving Critical Infrastructure Cybersecurity. National Institute of Standards and Technology - Standards for internal Mattermost security processes and safeguards.
Computer Security in the Real World. Butler Lampson - Fundamental challenges with system security.
Course notes from CS513: System Security (Cornell University). Fred B. Schneider - Well written introduction to system security from one of the leaders in the field.
Recommended training materials are recommended by role at three different levels of priority:
P1 - Required - Complete within 30 days of starting in role.
P2 - Priority - Complete within 30-90 days of starting.
P3 - Supplementry - Complete within 180 days.
The following chart outlines training materials by category, with notes on which materials are relevant to which disciplines by P1, P2, P3 priority:
The following table summarizes abbreviations used in the above table:
To provide guidance, coaching and development for senior and functional leaders, we bring in experts to advise in key areas.
As an example, Jono Bacon–a leading author, speaker and consultant on open source community advocacy–meets with our CEO and community team regularly to refine our processes and understanding. There’s a range of similarly adept company advisers that help advance our thinking and capabilities in critical ways.
Meetings typically take place over phone or video calls. We bring on advisers with standard consulting agreements on either a time and materials basis or a recurring fee.
We use a range of advisers from senior board-level contributors to operational and subject-matter experts.
When becoming a core committer to the Mattermost project we create a “Mattermost Avatar” for you as a fun way to recognize your new level of contribution.
Mattermost avatars are caricatures of core committers in the costume of a popular culture character (e.g. Spiderman, Wonder Woman, Luke Skywalker, etc.) created for personal use, and which may be potentially used in team rosters, demonstration sites, “group photos” where avatar images from the team are collected in one image of all the characters together, and other public uses.
To have a Mattermost avatar created, you’ll be invited to create a Mattermost avatar via email:
Please use the email subject “[YOUR_FULL_NAME] as [CHARACTER_NAME]”, for example “Corey Hulen as Han Solo”.
Attach a clear image at least 600 pixels high and 600 pixels wide showing your character’s full body in a standing pose.
Send a clear photo of your face at least 600 pixels high and 600 pixels wide facing the same direction as your character image.
Character should be human-sized (no giant characters).
Character’s appearance should be family-friendly. For example, no gory or provocative costumes.
You should receive your digital Mattermost avatars by email in 6-8 weeks.
In special cases, a Mattermost avatar may be created for someone from the Mattermost community who has made an extraordinary contribution to the open source project.
Example of photo from core committer: Corey Hulen, co-creator of the Mattermost open source project
Example of reference image for popular culture character: Han Solo from the movie Star Wars
Example of finished Mattermost Avatar:
Staff must use their full name for their username, as in
first.last, on the community server. Staff are also encouraged to link to their GitHub account using the command /github connect so that your GitHub handle will appear on your profile pop-over card. All Mattermost staff should be issued a OneLogin account with a username of
first.last. If issued a OneLogin account, you should switch your sign-in method from email/password to OneLogin via Account Settings > Security > Sign-in Method page. Once this is done, your username will be set from SAML.
This is a team open for any and all to join. It is the main place where staff, contributors, users, customers and partners interact. Our goal is to do as much work as possible in the open. If you find yourself creating a private channel on this team you should pause and ask yourself if it really needs to be private. Mattermost staff will be synced to the appropriate channels based on their LDAP group sync settings.
This is restricted to people with an @mattermost.com email address. It is meant for Mattermost employees and staff and is where we discuss internal company matters. Since this team only includes people with mattermost.com email address, you should prefer creating public channels. Also, if you find yourself creating a channel here, you should ask yourself if it would be better served to have it in the Contributors team. Mattermost staff will be synced to the appropriate channels based on their LDAP group sync settings.
This is an invite-only team meant for Mattermost staff and partners. This is a team for staff to interact with partners and for partners to interact with other partners. You should prefer public channels when you want partner-to-partner interactions and private channels when you want staff-to-partner interactions. Remember that any partner added to the team will be able to join any public channel.