Leadership
This page covers the things managers and other leaders at Fleet need to know about running a great company.
CEO flaws
Openness is important, and so I want to live that by sharing the flaws I know I have. I’m fully responsible for improving the things below, listing them is no excuse.
These flaws are listed here publicly for two reasons. The first is so that people know it is not just them, but actually my fault. The second is so I can improve and be held accountable.
- I have a bad habit of not wanting to impose.
- But this can result in me over-specifying solutions for problems, instead of presenting the whole problem and putting someone in charge of it.
- You can say: "Mike, what was the original problem? If I'm not the right person to run with solving it, I understand, but could you let me know some time candidly why I'm not?"
- I can get nervous and rush things.
- I can speak quickly. It is ok to say “Mike, hold on a second.”
- I can be quick to criticize before I appreciate, especially if something looks almost done.
- I appreciate it when fleeties ask “What do you think of my work?” It reminds me I'm speaking in front of the sculptor, not just alone with the statue.
- I can hurry to decisions when I think something is time-sensitive or nearly ready to ship. It is ok to say “I’m looking for early feedback" vs. “I’m not yet 70% sure I’m 100% done with this."
- I often need to talk to think.
- It is ok to set a boundary and let me marinate. You might say: "Hold up. What is our goal?"
- I get grumpy when I am tired and I worry that I'll forget to follow up about things. So I try to say them all.
- I can talk too much. On video calls, and especially during a screenshare session, I sometimes will keep talking longer than I otherwise would. If you get lost, or overwhelmed, you can interrupt me or send a chat: "Hold up, I'm feeling out of phase from this conversation."
If you notice one of these flaws, and especially if you deliver feedback about it and don't feel heard, or you feel hurt, or you feel like I didn't "get it", please send me a link to this section of the handbook, or just interrupt me and give me feedback in the moment. I will be extremely grateful, and value your bravery in pursuit of what's in the best interest of the company. (And if I don't, keep trying. I'll come crawling back. Promise.)
Contact the CEO
Still want to contact the CEO? You can send @mikermcneil
a DM in Fleet Slack, at-mention him in the #help-leadership channel, or schedule time with the CEO.
CEO responsibilities
Ultimately, the CEO is responsible for the success or failure of the company. The CEO is the directly responsible individual (DRI) for pricing, tiers, the business model, human resources, legal counsel, signatures on all documents, and brand & product marketing (brandfronts, pitchfronts, featurefronts, ICPs, personas, and targeting).
Note: When the CEO is out of office, CEO responsibilities are either paused, delegated, or coordinated through the Apprentice to the CEO so they can be handled promptly. (It depends on the responsibility and the situation.)
Outline of departmental page structure
Departmental pages are for reference, not philosophy. For philosophy, use "Communications" (for all fleeties), "Leadership" (for managers), "Product groups" (for core product and website contributors), and "Why this way?" (for key decisions).
Departmental pages exist to outline people, responsibilities, recurring rituals, and intake. They always follow the structure below.
Changes to departmental pages can be merged when the change results in a page consistent with this structure.
Please see https://fleetdm.com/handbook/digital-experience for an example of what this structure should look like in practice.
Biggest learning is that we federated carte blanche edit permissions a bit too early back in 2021, and it’s resulted in the need for a lot of cleanup as different people have had their hands in the content prior to introducing a framework for organizing that content.For reference, Sid at Gitlab didn’t delegate ownership over pages away from a single individual (him) until they were close to 100 employees, whereas at Fleet we did it in the 15 employee stage, and are dealing with the consequences. It meant that until late 2023, about 1/3 of the Fleet handbook was completely wrong, duplicated, or out of date. (We’re now close to 100% accurate.)
The audience for the “Communications” page is every Fleetie.
The audience for the “Leadership” page is every manager.
The audience for individual department pages are the people working with and within that department (in that order, with “Contact us” and other generally useful information and intake channels listed first). This pass through the handbook has also eliminated several pages in favor of getting more onto single pages. This is because there is still a lot of duplication, and it’s easier to deal with when everything is on a single page.
If you have any questions or feedback, please make a pull request.
Departmental page structure:
# Name of department
"This handbook page details processes specific to working
[with](#contact-us)
and[within](#responsibilities)
this department."## Team
- Table that displays each position and the team member(s) that fill that position, linking each Fleetie's LinkedIn to their name and GitHub to GitHub user name. See handbook/digital-experience#team for example.
## Contact us
- "To make a request of this department,
[create an issue](https://github.com/fleetdm/confidential/issues/new?assignees=&labels=%23{DEPARTMENTAL-GITHUB-LABEL}&projects=&template=1-custom-request.md&title=Request%3A+_______________________)
and a team member will get back to you within one business day (If urgent, mention a[team member](#team)
in[#g-DEPARTMENTAL-SLACK-CHANNEL]({DEPARTMENTAL-SLACK-CHANNEL-LINK})
)."- "Please use issue comments and GitHub mentions to communicate follow-ups or answer questions related to your request."
- "Any Fleet team member can
[view the kanban board](https://github.com/orgs/fleetdm/projects/{PROJECT_ID})
for this department, including pending tasks and the status of new requests."
- "To make a request of this department,
## Responsibilities
- The "Responsibilities" section consists of a flat list of H3 sub-headings written in the imperative mood (e.g. "Process CEO inbox") and designed to be the internal "How-to" of each department.
## Rituals
Key reviews
Every release cycle, each department leader discusses their key performance indicators (KPIs) (confidential) with the CEO. KPIs are numbers measuring results and everyday excellence, usually accompanied by time-bound goals.
In this meeting, the department leader discusses actual week-over-week progress toward the goals for a particular quarter with the CEO.
- Key reviews are scheduled during the e-group time slot every three weeks and are not moved or rescheduled. If a department leader is not available to lead a particular key review, another team member from their department will join the meeting and discuss their department's key performance indicators (KPIs).
- Use this meeting to add, remove, or change the definitions or ownership of KPIs. Otherwise, KPI definitions do not change, even if those definitions have problems. For help with KPIs, contact the Digital Experience department.
Hiring
At Fleet, we collaborate with core team members, consultants, advisors, and outside contributors from the community.
Hiring restrictions
Incompatible former employers: Fleet maintains a list of companies with whom Fleet has do-not-solicit terms that prevent us from making offers to employees of these companies. The list is in the Do Not Solicit tab of the Digital Experience spreadsheet.
Incompatible locations: Fleet is unable to hire team members in some countries. See this internal document for the list.
Recruiting
Fleet accepts job applications, but the company does not list positions on general purpose job boards. This prevents us being overwhelmed with candidates so we can fulfill our goal of responding promptly to every applicant. This means that outbound recruiting, 3rd party recruiters, and references from team members are important aspect of the company's hiring strategy. Fleet's CEO is happy to assist with outreach, intros, and recruiting strategy for candidates.
Receiving job applications
Every job description page ends with a "call to action", including a link to the hiring manager's LinkedIn to apply for the job directly with the hiring manager. Fleet replies to all candidates within 1 business day and always provides either a rejection or decisive next steps; even if the next step is just a promise. Hiring managers are encouraged to use email/message templates for consistency and efficiency.
Candidate correspondence email templates
Fleet uses certain email templates when responding to candidates. This helps us live our value of 🔴 empathy and helps the company meet the aspiration of replying to all applications within one business day.
Communicating with applicants
At Fleet, we use LinkedIn to communicate with future team members. Allowing potential candidates to apply via LinkedIn direct message lets community members quickly introduce themselves and apply while providing the maximum amount of async data to the hiring manager. Community members will often inquire about positions that aren't currently being hired for.
Recommending someone for an open position at Fleet? Add their info to the spreadsheet and leave a Google Doc comment at-mentioning the hiring manager or Head of Digital Experience.
Department-specific interviewing instructions:
Consultants
In addition to core team members, from time to time Fleet hires consultants who may work for only a handful of hours on short projects.
Who ISN'T a consultant?: If a consultant plans to work more than 10 hours per week, or for longer than 6 weeks, they should instead be hired as a core team member.
Who IS a consultant?: A consultant is someone who we expect to either:
- complete their relationship with the company in less than 6 weeks
- or have a longer-term relationship with the company, but never work more than 10 hours per week.
Consultants:
- do NOT receive company-issued laptops
- do NOT receive Yubikeys
- do NOT get a "Hiring" issue created for them
- do NOT get a company email address, nor everyone's calendars, nor the shared drive (with occasional exceptions)
- do NOT go through training using the contributor onboarding issue.
- do NOT fill any existing open position
Consultants track time using the company's tools and sign Fleet's consulting agreement.
To update a consultant's fee, submit an issue to Digital Experience with the consultant's name and new hourly rate.
Hiring a consultant
To hire a consultant, submit a new consultant onboarding request to the Digital Experience team.
Core team members (Fleeties)
Core team members:
- are hired for an existing open position
- are hired using Fleet's "Hiring" issue template, including receiving a company-issued laptop and Yubikeys
- must be onboarded (complete the entire, unabridged onboarding process in Fleet's "Onboarding" issue template)
- must be offboarded
- get an email address
- have a manager and a formal place in the company org chart
- are listed in "🧑🚀 Fleeties" (private Google Doc)
- are paid as part of the standard payroll ritual for the place they work and their employment classification.
Employment classification isn't what makes someone a fleetie. Some Fleet team members are contractors and others are employees. The distinction between "contractor" and "employee" varies in different geographies, and the appropriate employment classification and agreement for any given team member and the place where they work is determined by Head of Digital Experience during the process of making an offer.
Creating a new role at Fleet
Do you need to create a competely new role at Fleet? Use these steps to open up a completely new position on the core team and hire a fleetie for that role.
Are you hiring for a role that already exists? Check out
- Propose headcount: Add the proposed position to "🧑🚀 Fleeties" in an empty row (but using one of the existing IDs. Unsure? Ask for help.) Be sure to include job title, manager, and department. Set the start date to the first Monday of the next month (This position is still only proposed (not approved), but would make it easier for the approver to have the date set).
- Propose job description: Copy, personalize, and publish the job description:
Create an entry for the proposed position in the open positions YAML file. To do this, you can either duplicate an existing open position and update the values, or you can copy and paste the commented out template at the top of the file.
Update the required values for the new entry:
jobTitle
: The job title of the proposed position. This will determine the living URL of the page on the Fleet website.department
: The department of the proposed position.hiringManagerName
: The full name of this proposed position's hiring manager.hiringManagerGithubUsername
: The GitHub username of the proposed position's hiring manger. This is used to add the hiring manager as the open position page's maintainer.hiringManagerLinkedInUrl
: The url of the hiring manger's LinkedIn profile. People applying for this position will be asked to reach out to the manager on LinkedIn.responsibilities
: A Markdown list of the responsibilities of this proposed position.experience
: A Markdown list of the experience that applicants should have when applying for the proposed position.
If needed, you can override the default compensation range ($48,000 - $480,000) in the open position template page by adding a
onTargetEarnings
value to the open position. If provided,onTargetEarnings
values should be a string containing the salary range for the the proposed position.
A completed open position entry should look something like this:
- jobTitle: 🐈 Railway cat
department: Jellicle cats
hiringManagerName: Skimbleshanks
hiringManagerLinkedInUrl: https://www.linkedin.com/in/skimbleshanks-the-railway-cat
hiringManagerGithubUsername: skimbieshanks
responsibilities: |
- ⏫ Elevate the standard of train travel
- 📖 Learn the ins and outs of rail operations
- 🏃♂️ Dash through stations to ensure punctuality
experience: |
- 🎯 Punctuality is crucial
- 🌐 Familiarity with the Northern Line
- 👥 Excellent at commanding attention
- 🤝 Adept at coordinating with the Night Mail
- 🦉 Skilled at nocturnal operations
- 🛠️ Proficient in tap-dance communication
- 🟣 Ability to maintain railway order and standards
- 🐭 Can swiftly and silently eliminate any rodent problems
- 💭 Speak the language of timetable jargon
- 💖 Sing praises of a smooth rail journey
- 🐭 Can articulate effective rodent control strategies
- Create a pull request to add the new position to the YAML file.
The "living" URL where the new page will eventually exist on fleetdm.com won't ACTUALLY exist until your pull request is merged. A link will be added in the "Open positions" section of the company handbook page.
- Link to pull request in "Fleeties:" Include a link to your GitHub pull request in the "Job description" column for the new row you just added in "Fleeties".
- Get it approved and merged: When you submit your proposed job description, the CEO will be automatically tagged for review and get a notification. He will consider where this role fits into Fleet's strategy and decide whether Fleet will open this position at this time. He will review the data carefully to try and catch any simple mistakes, then tentatively budget cash and equity compensation and document this compensation research. He will set a tentative start date (which also indicates this position is no longer just "proposed"; it's now part of the hiring plan.) Then the CEO will start a
#hiring-xxxxx-YYYY
Slack channel, at-mentioning the original proposer and letting them know their position is approved. (Unless it isn't.)
- Why bother with approvals? We avoid canceling or significantly changing a role after opening it. It hurts candidates too much. Instead, get the position approved first, before you start recruiting and interviewing. This gives you a sounding board and avoids misunderstandings.
Hiring a new team member
This section is about hiring a new core team member, or fleetie, for an already planned position.
To hire an already planned position at Fleet, create a pre-onboarding issue and complete the steps for the hiring manager.
Create a 30-60-90 day plan
The hiring manager creates a 30-60-90 day plan outlining key role objectives to be reviewed in 1:1 meetings during the first three months of employment. To create the 30-60-90 day plan, use the prompts in the "Vision" section of the new teammates 1:1 meeting doc (TEMPLATE) to ensure continuous support and alignment with company goals.
CEO shadow program
The CEO shadow program is a three-day temporary assignment (usually completed during onboarding) in which core team members will shadow all relevant meetings on the CEO's calendar. This gives team members an overview of all aspects of the company and provides high context and in turn, high-output contributors. The program also creates opportunities for the CEO to build relationships with team members across the company and to identify challenges and opportunities earlier.
What it's not: The CEO shadow program is not a performance evaluation or a determinating factor for a promotion or raise.
As a CEO shadow, you will be attending both internal and external meetings regarding various areas of the company. In order to make the most of your time as a shadow:
- Be on time: Your time is priceless, your time as a CEO shadow is short! Join each meeting on time, this limits the distraction for other attendees and gives the CEO the opportunity to introduce you to other folks on the call without interrupting the meeting.
- Be present: During meetings outside of your department, it can be easy to find yourself charging ahead on other projects. The interactions you'll have in these meetings and the context you'll gain are important.
- Be active: There are many short-term tasks you'll be asked to perform as a shadow. Here are some examples:
- Prepare for, participate in, take notes during, and follow up on meetings.
- Make handbook updates and shadow PR reviews.
- Solve urgent issues. For example, help solve a complaint from a customer or coordinate the response to a technical issue.
- Create and/or complete GitHub issues involving multiple departments at Fleet, and work towards closing or creating pull requests to complete issues.
Prepare for the program
CEO shadows join all meetings on the CEO's calendar that do not have "[no shadows]" appended to the calendar event title. Before beginning your time as a CEO shadow:
- Make sure you've read through the CEO flaws to better understand how to communicate with him.
- Update your Zoom display name to be "CEO shadow | [your name]" (e.g. "CEO shadow | Jayne Doo").
- Know which meetings you're expected to join. You won't be listed as an attendee on any of the CEO's calendar events to avoid confusion when scheduling meetings with external participants. You're intentionally marked out of office to avoid scheduling conflicts.
Please DO NOT add yourself as an attendee to any of the CEO's meetings. The CEO regularly meets with prospects and customers in the community, and without the context of the CEO shadow program, an unknown name on the calendar event could be mistaken for a sales tactic.
Tracking hours
Fleet asks US-based hourly contributors to track hours in Gusto, and contributors outside the US to track hours via Pilot.co. This applies to anyone who gets paid by the hour, including consultants and hourly core team members of any employment classification, inside or outside of the US.
Note: If a contributor uses their own time-tracking process or tools, then it is OK to track the extra time spent tracking! Contributors at Fleet are evaluated based on their results, not the number of hours they work.
Communicating departures
Although it's sad to see someone go, Fleet understands that not everything is meant to be forever like open-source is. There are a few steps that the company needs to take to facilitate a departure.
- Departing team member's manager: Create a private "#YYYY-offboarding-xxxxxx" Slack channel (replace "xxxxxx" with the Fleetie's name and YYYY with current year) for discussion and invite the CEO and Head of Digital Experience. Document any context about the departure via "FYI:" in the "¶ 🗣 E-Group weekly" (confidential Google Doc).
- Digital Experience: The Head of Digital Experience will coordinate the team member's last day, offboarding, and exit meeting, then create and begin completing offboarding issue, to include coordinating team member's last day, offboarding, and exit meeting. At the appropriate time, The Head of Digital Experience will post in #g-e to inform the E-group of the team member's departure, asking E-group members to inform any other managers on their teams.
- CEO: The CEO will make an announcement during the "🌈 Weekly Update" post on Friday in the
#general
channel on Slack.
Request a role change for a Fleetie
From time to time, someone's job title changes. The hiring manager can use the following steps to change someone's position:
- Create Slack channel: Create a private "#YYYY-change-title-for-xxxxxx" Slack channel (replace "xxxxxx" with the Fleetie's name and YYYY with current year) for discussion and invite the CEO and Head of Digital Experience.
- At-mention the Head of Digital Experience in the new channel with any context regarding the title change. Share any related documents with the Head of Digital Experience and the CEO.
- After getting approval from the Head of People, the Digital Experience team will take the necessary steps to change the fleetie's job title.
Delivering performance feedback
When it comes to performance feedback, speak freely, sooner, and provide an explicit example of the behavior you observed and the impact it had.
- Deliver negative feedback privately whenever possible, and be constructive, not punitive. Celebrate positive feedback publicly.
- Performance management is a part of every 1:1 document. Start each 1:1 by delivering performance feedback.
- When you meet with your manager for your 1:1, periodically provide an update on how each of your direct reports is doing at the top of your own "Performance management" section in your 1:1 agenda doc.
Plan a Fleetie get-together
When several Fleeties are in the same geographic location, Fleet will sponsor a one-time or recurring in-person Fleetie get together. It is up to the Fleeties in each area to organize and plan their own events. The cost should not exceed $25 per attendee, and does not require pre-approval unless the cost exceeds your Brex limit.
Request a team offsite
Our goal is for each team at Fleet to conduct an offsite once per year. Team offsites provide valuable opportunities to build cohesion, align on objectives for the coming year, and get to know each other outside of work. Offsites help build trust, which is the foundation of an effective team.
- Make a copy of the offsite budget template document.
- Populate the document with the proposed dates and location.
- Populate the table with all attendees, using the provided budget guidance for each category.
- Share the document with the DRI for your department.
The DRI for your department will review the proposed budget with the e-group and provide approval or request revisions.
Look for central locations near major international airports to minimize travel. Avoid high-cost areas during peak travel times to minimize cost.
Plan a team offsite
When budget is approved, begin planning the offsite.
1. Decide where to stay
Hotels. The simplest and most common option is to purchase a block of rooms from a hotel along with a conference room for the offsite. Submit a request for proposal (RFP) to multiple hotels before selecting an option.
Airbnb. For a more unique experience, one or more Airbnbs can be used to provide lodging and meeting space for the offsite. Ensure that every attendee has their own room, and that there are an adequate number of bathrooms.
2. Decide how to get there.
Ask each attendee to arrange their own travel using the budget guidance from the offsite planning document and the travel guidance from our handbook.
3. Plan an agenda.
The primary purpose of team offsites is to build team cohesion. A large portion of the time together should be spent enjoying each other's company, sharing meals, and participating activities together. An agenda provides clear structure for all attendees so they know what to expect.
The agenda of each offsite varies based on number of days and the team. Below is a sample agenda from a product group offsite:
- Day 1:
- Arrive at location.
- Day 2:
- Morning:
- Icebreaker activity. A Fleetie favorite is the day in the life slideshow.
- Break for lunch.
- Afternoon:
- Product Designer presents product roadmap, holds Q&A.
- Engineering Manager demos real-world workflow that the product group is responsible for.
- Evening:
- Casual dinner dinner with all product groups.
- Morning:
- Day 3:
- Morning:
- Hackathon using expedited drafting to build real user stories.
- Break for lunch.
- Afternoon:
- Continue hackathon.
- Evening:
- Casual dinner separately for each product group.
- Morning:
- Day 4:
- Morning:
- Create presentation for hackathon demos.
- Lunch provided.
- Afternoon:
- All product groups meet in large conference room to present hackathon projects.
- Break early for team activity.
- Evening:
- Premium casual dinner for all product groups with table service.
- Morning:
- Day 5:
- Travel home.
When the agenda is complete, share it with the team in advance to set expectations for the offsite, and to provide a chance for feedback.
4. Review with finance.
Schedule a call with a finance engineer to review total anticipated cost for the offsite. The finance engineer will assist if any cost adjustments are needed, and can provide budget guidance based on the specifics of the offsite.
5. Purchase accommodations and make reservations.
Once approved by the finance engineer, they will finalize purchase of accommodations and can assist with dinner reservations, activity reservations, and travel considerations.
Stubs
The following stubs are included only to make links backward compatible.
Interviewing
Please see 📖handbook/company/leadership#communicating-with-applicants.