As a core committer at Mattermost, you are responsible for one of the world’s largest and most popular open source projects. Your work impacts thousands of organizations who depend on Mattermost for daily operations, from high tech (Intel, Samsung, Micron), to healthcare (Medtronic, Epic, Bristol-Myers Squibb), to public sector (U.S. Department of Defense, U.S. Department of Energy), to education (University of California, National University of Singapore), and consumer brands (Urban Outfitters, Wargaming.net).
Working in open source means your work is publicly visible. Your code will receive both credit and critique from the community and with the right mindset and support that can lead to you making the best engineering decisions of your career.
Core committers include volunteer developers from the community, staff by organizations deploying and investing in Mattermost, as well as staff paid by Mattermost, Inc.
This document summarizes the responsibilities and requirements of core committers employed by Mattermost, Inc., skill level requirements, and hiring process. Staff developers work closely with Mattermost product management to envision, design, plan, develop, coordinate, review, and merge improvements per our contribution guidelines on a regular basis.
Ideally, developers are “full stack”, and comfortable moving across backend and frontend projects. As part of our learn, master, teach mindset, our environment has people consistently cross-training, becoming experts, and passing on knowledge to new team members rotating into new areas of responsibility. That said, we also welcome engineers who prefer to specialize in backend and frontend, since there’s ample projects to find in both areas.
Develop features from proposal to polished end result.
Support and collaborate with our community service engineers to find the root cause of issues, find, deliver, and document effective solutions.
Engage with the core team and the open source community to collaborate on improving Mattermost.
Propose, coordinate, manage, review, and merge code contributed by the rest of the community and work with them to get it ready for production.
Work with our documentation team to create and maintain technical information around features, configuration, and troubleshooting.
Take initiative in improving the software in small or large ways to address pain points in your own experience as a developer.
Keep code easy to maintain. Keep it easy for others to contribute code.
Help identify, vet, and recruit other developers to join our community and, when appropriate, as staff developers.
You can effectively reason and discuss software, algorithms, and performance at a high level.
You have a passion for creating open source software.
You have previously played a vital role in production-level applications.
You have strong written communication skills.
You’re self-motivated with strong organizational skills.
You share our values, and work in accordance with those values.
You’re proficient in Golang, React and/or React Native, or are able to ramp quickly into those languages.
You’ve either made substantial contributions to the Mattermost open source project or are open to completing an Audition to assess your comfort in working in open source.
Ideal, but not required: Experience working in online communities, having made at least one Help Wanted pull request to a Mattermost repository, working on other Golang, React or React Native apps.
The level descriptions below are used to categorize core committers based on their capabilities. Regardless of level, all core committers are expected to fulfill the following:
Deliver high quality code that represents the best thinking of the open source project and is ready to be scrutinized by hundreds of community members, including commercial customers.
Write complete code that meets all specifications and criteria, has thorough unit tests and typically no defects.
Work collaboratively in a high trust, asynchronous environment with strong written communication skills and comfort working with fellow developers, product managers, designers, testers, technical writers, support engineers, and other product and business staff.
Software Design Engineer I¶
Influences and executes defined tasks and features across engineering and test automation. Works effectively in teams to align priorities and manage execution. Learns new skills and establishes goals and context quickly by asking precise questions. Engages, guides and enables open source contributors to deliver high quality pull requests.
Software Design Engineer II¶
Capabilities of SDE I plus: Designs, leads and delivers high impact features and changes across the product stack and test automation infrastructure. Sets thoughtful, technical vision for areas of ownership, balancing functional and technical trade-offs, while working effectively with PM and UX. Drops fluidly into different projects, ramps quickly and leads features to successful outcomes. Inspires, organizes and enables groups of open source community members to contribute to development campaigns in building significant new functionality.
Senior Software Design Engineer¶
Capabilities of SDE II plus: Sets and delivers architectural vision for high impact features and changes across multiple products, working in sync with PM, UX, and customer teams. Highly respected by colleagues and community as technical authority, influencing discussions and behavior with input and suggestions. Drops fluidly into customer and community discussions, aligns efforts, and develops superior solutions through discussion and analysis. Attracts, motivates, and trains open source community members to lead the coordination and management of development campaigns to create new features and products.
Architect / Principal Software Design Engineer¶
Capabilities of Senior SDE plus: Sets and delivers architectural vision for entire products and systems spanning multiple products. Engages with peers in customer and partner organizations to shape joint development plans. Works fluidly with PM, UX, and sales leadership to set organizational objectives and direction. Sought out as a technical authority in industry in developing, disseminating, reviewing, evaluating key patterns and reference architectures. Influences, shapes and can redirect customer and community technical discussions, rapidly understanding disparate viewpoints and leading discussions that align thinking and efforts to influence the direction of large scale technical projects.
Candidates for developer roles on the Mattermost staff can expect the hiring process to follow the order below. Please keep in mind that applicants can be declined from the position at any stage of the process.
Both declined and accepted candidates will be invited to share feedback on their hiring experience so we can continually improve our process.
Application - In your application we welcome you to include links to any public open source work you’ve done, including GitHub, GitLab or BitBucket profiles. If you’d like to share privately we can send you our ID for GitHub, GitLab or BitBucket, or we can review code you send in via email. If you really want to impress us, make a contribution to our open source project by completing a Help Wanted ticket.
Email - Follow-up questions - If your application looks good, we’ll email you some questions specific to the role.
Video call - Screening interview - Selected candidates will be invited for a 25-minute screening call with a recruiter.
Video call - Technical discussion - Candidates will be invited to schedule a 60-minute interview with a core committer to discuss their technical experience and suitability for the role.
Video call - Soft-skills discussion - Next, candidates will be invited to schedule a 60-minute interview with a core committer to assess soft skills, and for the candidate to learn more about the role.
Audition - Candidates who appear technically strong and culturally fit may be offered a real-world “try out” project with Mattermost team members to simulate what it would be like to work on a major open source project.
Video call - Discussion of Audition and Soft Skills - On completion of the Audition, candidates will be invited to schedule a 60-minute interview with a core committer to discuss the experience and outcomes of participating in the audition and further assess soft skills.
Video call - CTO interview - Candidates are invited to a 45-minute interview with our CTO and co-creator of the Mattermost open source project. The interview may include technical questions along with a discussion of either past work or results of the audition, the candidate’s interests, their career aspirations, and how being a core committer at Mattermost could align with those interests and aspirations.
Email - Offer - Successful candidates will receive an offer via email. Mattermost offers compensation competitive with a candidate’s local market opportunities.
Staff developers in Canada are typically offered full-time employment through a Canadian co-employer, with local payroll via ADP, benefits and T4 tax reporting.
Staff developers in the US are typically offered full-time employment through a U.S. co-employer, with local payroll via TriNet, benefits and W2 tax reporting.
Staff developers outside the U.S. and Canada are offered full-time consulting paperwork very similar to the click-sign agreement for the paid simulation.
For the benefit of candidates and the company, Mattermost offers real-world “try out” projects with Mattermost team members to simulate what it would be like to work at the company prior to hiring. The practice of auditions in open source companies was pioneered by Automattic (creators of WordPress) and detailed by Harvard Business Review in 2014. This practice has been a vital part of Mattermost culture.
Candidates who show strong potential for technical and cultural fit are invited to work on tasks that are part of their desired position, complete a project designed by their potential manager, or select from open Help Wanted tickets to be completed per the Mattermost contribution guidelines. Your work will become a permanent part of the open source project that you can reference for the rest of your career. You’re also eligible to receive a Mattermost Mug in appreciation of your first contribution. Here’s an example of a successful project completed during a tryout.
While you’re working with us, you can join the Mattermost community site here.
Once signed-in, the following channels are recommended for observing how the core committers work with the community to ship new releases:
Observing these public channels as you work will give you a good sense of what it is like to work at Mattermost in a full time capacity to ensure joining the company aligns to your interests and desired career direction.
During the tryout, candidates will submit invoices for up to 40 hours of work (example here). All candidates will be paid $25/hour, regardless of position. Mattermost uses a standard consulting agreement template and provides instructions for invoicing at the start of the tryout. Note that the hourly rate is not necessarily representative of the final offer that would be extended to a successful candidate.
Frequently Asked Questions¶
Do you have internships?¶
While we no longer offer internships for developers, if you get a couple of Help Wanted pull requests accepted, we’ll interview you for one. This will be a remote internship without supervision; you’ll only get feedback on your merge requests. If you want to work on open source and qualify, please submit an application. In the cover letter field, please note that you want an internship and link to the accepted pull requests. The pull requests should be of significant value and difficulty, which is at the discretion of the hiring manager. For example, fixing 10 typos isn’t as valuable as shipping 2 new features.