fleet/handbook/people.md

627 lines
45 KiB
Markdown
Raw Normal View History

# People
## Directly responsible individuals
At Fleet, we use the concept of Directly Responsible Individuals (**DRI**s). This person is singularly responsible for a given aspect of the open source project, the product, or the company.
This person is accountable for accomplishing goals and making decisions about a particular element of Fleet.
DRIs help us collaborate efficiently by knowing exactly who is responsible and can make decisions about the work they're doing.
2021-12-22 02:39:34 +00:00
| Aspect | DRI |
2022-02-02 22:39:12 +00:00
| ----------------------------------------------------| ------------ |
| Wireframes (Figma)| Noah Talerman |
| How the product works | Noah Talerman |
| fleetctl CLI interface (and other tools) | Tomás Touceda |
| REST API interface design | Luke Heath |
2021-12-22 02:39:34 +00:00
| [REST API docs](https://fleetdm.com/docs/using-fleet/rest-api) | Luke Heath |
2022-02-02 22:39:12 +00:00
| Postman | Luke Heath |
| Terraform | Ben Edwards |
| Customer PoV deployments like acme.fleetdm.com | Ben Edwards |
| dogfood.fleetdm.com | Ben Edwards |
| Quality of core product UI | Luke Heath |
| Ticket movement from product to engineering | Luke Heath |
| Lead engineering standup and sprint planning | Zach Wasserman* |
2021-12-22 02:39:34 +00:00
| Customer Slack channels | Tony Gauda |
2022-02-02 22:39:12 +00:00
| Customer renewals | Tony Gauda |
| Quality of core product backend | Tomás Touceda |
| Quality of fleetctl (and other tools) | Tomás Touceda |
| Final cut of what goes into each release | Zach Wasserman |
| When we cut a release, version numbers, and whether to release | Zach Wasserman |
2022-04-25 17:18:09 +00:00
| When a feature is advertised as "beta" | Zach Wasserman |
| When a feature is placed behind a feature flag | Zach Wasserman |
2022-02-02 22:39:12 +00:00
| Release notes | Noah Talerman |
| Documentation quality | Mike Thomas |
2022-02-02 22:39:12 +00:00
| Publishing release blog post, and promoting releases | Mike Thomas |
| fleetdm.com | Mike Thomas |
| Self-service Fleet Premium license dispenser | Mike Thomas |
| Security disclosure and policy | Guillaume Ross |
2022-02-02 22:39:12 +00:00
*Luke Heath is backup
2021-12-22 02:39:34 +00:00
>You can read more about directly responsible individuals in [GitLab's handbook](https://about.gitlab.com/handbook/people-group/directly-responsible-individuals/)
## Spending company money
As we continue to expand our company policies, we use [GitLab's open expense policy](https://about.gitlab.com/handbook/spending-company-money/) as a guide for company spending.
In brief, this means that as a Fleet team member, you may:
* Spend company money like it is your own money.
* Be responsible for what you need to purchase or expense to do your job effectively.
* Feel free to make purchases __in the company's interest__ without asking for permission beforehand (when in doubt, do __inform__ your manager prior to purchase or as soon as possible after the purchase).
For more developed thoughts about __spending guidelines and limits__, please read [GitLab's open expense policy](https://about.gitlab.com/handbook/spending-company-money/).
### Reimbursements
We provide all of our team members with Brex cards for making purchases for the company. Fleet will reimburse team members who pay for work-related expenses with their personal funds.
Team members can request reimbursement through [Gusto]([https://app.gusto.com/expenses](https://support.gusto.com/article/209831449100000/Get-reimbursed-for-expenses-as-an-employee)) if they're in the US or [Pilot]([https://pilot.co/](https://help.pilot.co/en/articles/4658204-how-to-request-a-reimbursement#:~:text=If%20you%20made%20a%20purchase,and%20click%20'Add%20new%20expense.)) if they are an international team member. When submitting an expense report, team members need to provide the receipt and a description of the expense.
Operations will review the expense and reach out to the team member if they have any questions. The reimbursement will be added to the team member's next payroll when an expense is approved.
>Pilot handles reimbursements differently depending on if the international team member is classified as an employee or a contractor. If the reimbursement is for a contractor, Operations will need to add the expense reimbursement to an upcoming recurring payment or schedule the reimbursement as an off-cycle payment. If the reimbursement is for an employee, no other action is needed; Pilot will add the reimbursement to the team member's next payroll.
Why this way?" #4821 (#4894) * Update people.md Things new and old employees should know Why do we wireframe first?
 - Wireframing is called “drafting” at Fleet and is done in Figma. - Anyone can make a wireframe suggestion, and wireframes are easy to contribute without being code literate. - Drafting is completed for each change. - It can be thrown away after changes. Coding first leaves verbiage that is difficult to update, if it ever gets done at all. - It allows you to simplify the creation and testing of error messages. - Iterating in wireframes first lets us do all this for: - Error messages - Layouts - Flows - Interactions - Help text - Button text - Forms - URLs - API parameters - API response data…and more Why mono repo? - One repo keeps all of the relevant work in one place. The only exception is when working on something confidential. - One repo means that there is less to get lost. - One repo pools GitHub stars to reflect Fleet’s actual presence better. Why organize work in team-based kanban boards? - Kanban boards provide a uniform layout across all teams where anyone in the company can look to see what other teams are working on and have coming up. - The different columns on the boards allow us to create a game plan for our to-do list for each 3 week iteration. - These boards allow anyone in the world to contribute. Why 3 week cadence? - Fleet product is released every 3 weeks so everyone in the company is synced up to this same schedule. - Other companies use a 4 week release cycle but at Fleet, we like to move a little faster so we can get more done. - Everyone always knows when the new release is so they also know when their work is due. Why agile? - See: https://agilemanifesto.org/ - Collaborating and pushing for the next release creates the best product and culture. Our values and mission. - See: https://fleetdm.com/handbook/company Why the emphasis on training? - Investing in people makes them better and faster contributors. - Creating a culture of helping others results in people feeling more comfortable and confident even if they aren’t familiar with osquery. - A sharp focus on training means things are written down. Why handbook-first strategy? - Watch: https://www.youtube.com/watch?v=aZrK8AQM8Ro - For more details see: https://about.gitlab.com/company/culture/all-remote/handbook-first-documentation/ - Documenting in the handbook allows Fleet to scale up and retain knowledge for consistency. Why not continuously generate REST API docs from javadoc-style code comments? - It looks cheap. Those using open API still are embarrassed by their docs. - Generated documentation via tools like Swagger/OpenAPI have a tendency to get out of date and becomes harder to fix to make it up to date. - There is less control over how to add annotations to the doc. - It has less visibility/ accessibility/ modifiability for people without Golang coding experience. - Fully integrating with swagger's format sufficiently to document everything involves more people on the team learning about the intricacies of swagger (instead of editing markdown that looks like any other markdown in the docs/website)). - Autogenerating docs is not the only way to make sure docs accurately reflect the API. - Generated docs become just as out of date as handmade docs, except since they are generated makes them more difficult to edit and therefore gated/siloed. Adaptability is efficient. - Using markdown allows anyone to edit our docs. - Replacing markdown files with code comments makes API reference docs harder to locate and edit. I also removed "." from "### Purchasing a company-issued device" on line 120. * Update people.md 39 replaced “employees with “team members” 79, 84, 94, 95 updated to a Markdown link * Update company.md All edits are recorded by line: Lines 30- 97 added "Things new and old team members should know" section. * Update people.md Removed all edits
2022-04-07 15:25:56 +00:00
### Purchasing a company-issued device
2022-06-23 19:59:41 +00:00
Fleet provides laptops for team members to use while working at Fleet. As soon as an offer is accepted, `@charlottechance` will reach out to the new team member to start this process. `@charlottechance` will work with the new team member to get their laptop purchased and shipped to them.
Most of the team at Fleet uses 16" MacBook Pros, but team members are free to choose any laptop or operating system that works for them, as long as the price [is within reason](#spending-company-money).
When selecting your new laptop, we ask that you optimize your configuration to have a large hard drive and be available for delivery or pickup quickly, without waiting for customization.
When a device has been purchased, it's added to the [spreadsheet of company equipment](https://docs.google.com/spreadsheets/d/1hFlymLlRWIaWeVh14IRz03yE-ytBLfUaqVz0VVmmoGI/edit#gid=0) where we keep track of devices and equipment, purchased by Fleet. When the team member receives their computer, they will complete the entry by adding a description, model, and serial number to the spreadsheet.
### Attending conferences
When attending a conference for Fleet, please make a post in [g-digital-experience](https://github.com/fleetdm/fleet/pull/6288) on Slack with the following information:
- The start and end dates for your trip.
- The price of your flight (feel free to optimize a direct flight if there is one that is less than double the price of the cheapest non-direct flight).
- The price of your hotel per night.
- The price of the admission fees for the conference.
The monthly limit on your Brex card will be increased temporarily as necessary to accommodate the increased spending associated with the conference.
We highly recommend you order a physical Brex card if you do not have one before attending the conference.
## Paid time off
What matters most is your results, which are driven by your focus, your availability to collaborate, and the time and consideration you put into your work.
Fleet offers all team members unlimited time off. Whether you're sick, you want to take a trip, you are eager for some time to relax, or you need to get some chores done around the house, any reason is a good reason.
For team members working in jurisdictions that require certain mandatory sick leave or PTO policies, Fleet complies to the extent required by law.
### Taking time off
When you take any time off, you should follow this process:
- Let your manager and team know as soon as possible(e.g., post a message in your team's Slack channel).
- Find someone to cover anything that needs covering while you're out(i.e., meetings, planned tasks, unfinished business, important Slack/email threads, anything where someone might be depending on you).
- Mark an all-day "Out of office" event in Google Calendar for the day(s) you're taking off.
If you cant complete the above because you need to take the day off quickly due to an emergency, let your team know, and they will help you.
If you ever want to take a day off, and the only thing stopping you is internal (Fleetie-only) meetings, dont stress. Consider, “Is this a meeting that I can reschedule to another day, or is this a meeting that can go on without me and not interfere with the companys plans?”
Talk to your manager if youre unsure, but it is perfectly OK to reschedule internal meetings that can wait so that you can take a day off.
This process is the same for any days you take off, whether it's a holiday or you just need a break.
### Holidays
At Fleet, we have team members with various employment classifications in many different countries worldwide. Fleet is a US company, but we think you should choose the days you want to work and what days you are on holiday, rather than being locked into any particular nation or culture's expectation about when to take time off.
When a team member joins Fleet, they pick one of the following holiday schedules:
- **Traditional**: This is based on the country where you work. Non-US team members should let their managers know the dates of national holidays.
**Or**
- **Freestyle**: You have no set schedule and start with no holidays. Then you add the days that are holidays to you.
Either way, it's up to you to make sure that your responsibilities are covered, and that your team knows you're out of the office.
### New parent leave
Fleet gives new parents six weeks of paid leave. After six weeks, if you don't feel ready to return yet, we'll set up a quick call to discuss and work together to come up with a plan to help you return to work gradually or when you're ready.
## Meetings
* At Fleet, meetings start whether you're there or not. Nevertheless, being even a few minutes late can make a big difference and slow your meeting counterparts down. When in doubt, show up a couple of minutes early.
* It's okay to spend the first minute or two of a meeting being present and making small talk. Since we are all remote, it's easy to miss out on hallway chatter and human connections that happen in [meatspace](https://www.dictionary.com/browse/meatspace). Use this time together during the first minute to say "Hi!" Then you can jump into the topics to be discussed.
* Turning on your camera allows for more complete and intuitive verbal and non-verbal communication. Feel free to leave your camera on or turn it off when joining meetings with new participants you might not be familiar with yet. Turn your camera on when you lead or cohost a meeting.
* In an all-remote company, “face time” matters. Remember: even if someones calendar is open, they have other work to do. Limiting (or batching up) internal meetings can enable longer, uninterrupted stretches of deep work.
### Internal meeting scheduling
Use the Google Calendar "[Find a meeting
time](https://support.google.com/calendar/answer/37161?hl=en&co=GENIE.Platform%3DDesktop#zippy=%2Cfind-a-meeting-time)"
feature to coordinate meetings with Fleet team members. Enter the `@fleetdm.com` emails for each
participant into the "Meet with..." box in Google Calendar, and the calendar availability for each
participant will appear in your view. Then, when you select a meeting time, those participants will
automatically be invited, and a video conference will be attached to the invite.
Please prefer this strategy over negotiating meeting times via chat -- This can save a lot of
communication overhead, especially when scheduling with multiple participants.
It is important to [set your working
hours](https://support.google.com/calendar/answer/7638168?hl=en&co=GENIE.Platform%3DDesktop) in
Google Calendar and block out any personal time/events/PTO, so that team members do not inadvertently
schedule a time when you are not available. Many team members use the free tier of
[reclaim.ai](https://reclaim.ai/) to synchronize personal event times (without event details) into
their work calendars. It is also common practice to block out time for focused work.
#### Modifying an event organized by someone else
To edit an event where someone else at Fleet is the organizer, you can first subscribe to their calendar in Google Calendar and then edit the event on their calendar. Your edits will automatically apply to all attendees.
> This works because every Fleetie grants edit access to everyone else at Fleet as part of onboarding.
### External meeting scheduling
When scheduling external meetings, provide external participants with a
[Calendly](https://calendly.com) link to schedule with the relevant internal participants. If you
2022-06-23 19:59:41 +00:00
need a Calendly account, reach out to `@charlottechance` via Slack.
### Zoom
We use [Zoom](https://zoom.us) for virtual meetings at Fleet, and it is important that every team member feels comfortable hosting, joining, and scheduling Zoom meetings.
By default, Zoom settings are the same for all Fleet team members, but you can change your personal settings on your [profile settings](https://zoom.us/profile/setting) page.
Settings that have a lock icon next to them have been locked by an administrator and cannot be changed. Zoom administrators can change settings for all team members on the [account settings page](https://zoom.us/account/setting) or for individual accounts on the [user management page](https://zoom.us/account/user#/).
#### Scheduling a Zoom meeting
We use the Zoom add-on for Google Calendar to schedule Zoom meetings when we create calendar events. To add a Zoom meeting to a calendar event, click the "Add video conferencing" dropdown and select "Zoom Meeting." Google Calendar will automatically add the Zoom meeting details and instructions to join the event.
We configure our Zoom meetings to let participants join before the host starts the meeting. We do this to make sure meetings start on time, even if the host isn't there.
## Slack
At Fleet, we do not send internal emails to each other. Instead, we prefer to use Slack to communicate with other folks who work at Fleet.
We use threads in Slack as much as possible. Threads help limit noise for other people following the channel and reduce notification overload.
We configure our [working hours in Slack](https://slack.com/help/articles/360025054173-Set-up-Slack-for-work-hours-) to make sure everyone knows when they can get in touch with others.
### Slack channel prefixes
We have specific channels for various topics, but we also have more general channels for the teams at Fleet.
We use these prefixes to organize the Fleet Slack:
* ***g-***: for team/group channels *(Note: "g-" is short for "grupo")*.
* ***oooh-***: used to discuss and share interesting information about a topic.
* ***help-***: for asking for help on specific topics.
* ***at*** or ***fleet-at***: for customer channels.
## Performance feedback
At Fleet, performance feedback is a continuous process. We give feedback (particularly negative) as soon as possible. Most feedback will happen during 1:1 meetings, if not sooner.
Founders evaluate and update compensation decisions yearly, shortly after the anniversary of a team member's start date.
## Growing the team
### Creating a new position
Every new position being created goes through this process before interviewing, accepting applicants, or extending offers.
1. Add the proposed position to ["Fleeties"](https://docs.google.com/spreadsheets/d/1OSLn-ZCbGSjPusHPiR5dwQhheH1K8-xqyZdsOe9y7qc/edit#gid=0) as a new row, with a blank start date. Be sure to include job title, manager, and department.
2. Add a job description to the ["Roles."](https://docs.google.com/document/d/1wS5jFfrZtO4xMH-3U_S8pE59gNXOTR3rS1WWD8pkq9E/edit#heading=h.5z24knw25190) Include only "Responsibilities" and "Experience." (You will insert these into the existing job description template.)
3. Create a private "#hiring-xxxxxx-2022" Slack channel (where "xxxxxx" is the job title) and invite the CEO (Mike McNeil) and People Operations (Charlie Chance).
- People Ops is the DRI for all `#hiring-xxxxx-2022` Slack channels.
4. In that channel, post a message proposing the position:
- At-mention CEO (@mikermcneil) and Charlie (@charlie).
- Include a link to the job description in "Roles."
- Include a link to the Fleeties document.
5. People Ops will:
- Confirm the "Roles" document has the job description, consisting only of "Responsibilities" and "Experience," and that both look accurate, grammatically correct, and otherwise ready to post in a public job description.
- Confirm the "Fleeties" document has a manager, job title, and department, and that the start date is not entered yet (so we can tell the position is proposed but not planned, yet).
- Using Pave, determine an anticipated salary and equity range, then add that research to "Compensation decisions" as a new heading.
- Share a direct link to the new heading in "Compensation decisions" with the CEO.
6. The CEO will then:
- Determine whether this fits into the budget and equity plan.
- Decide whether Fleet will open this position at this time.
- Set tentative compensation in the budget and equity plan.
- Set a tentative start date in the Fleeties doc to indicate this position is now part of the hiring plan.
- Reply in the `#hiring-xxxxx-2022` Slack channel, at-mentioning the original proposer, to let them know the new position is approved.
After getting CEO approval, create a position in Breezy.
### Creating a new position in Breezy
> TODO: document how to post a job on fleetdm.com/apply using Breezy and manage the hiring process
2022-05-02 16:30:05 +00:00
### Interviewing at Fleet
We're glad you're interested in joining the team!
Here are some of the things you can anticipate throughout this process:
- We try to reply by email within one business day from the time when the application arrives.
- You may receive a rejection email (Bummer, consider applying again in the future).
2022-05-02 16:30:05 +00:00
- You may receive an invitation to "book with us."
If you've been invited to "book with us," you'll have a Zoom meeting with the hiring team to discuss the next steps.
2022-05-02 16:30:05 +00:00
### Hiring a new team member
> Fleet is unable to hire team members in some countries. See [this internal document](https://docs.google.com/document/d/1jHHJqShIyvlVwzx1C-FB9GC74Di_Rfdgmhpai1SPC0g/edit) for the list.
1. **Manager:** At-mention People Operations in the `#hiring-xxxxx-2022` channel and indicate that you would like for Fleet to make an offer to the candidate. Include the candidate's name, personal email address, the timeframe for their start date, and the country where they will be working.
2. **People Ops:** People Operations will research compensation using [Pave](https://www.pave.com), making sure to adjust for the cost of living where the candidate will do the work. _If People Ops is unsure of their findings, ask for help from the CEO._ People Ops will then document this decision in the [compensation decisions document](https://docs.google.com/document/d/1NQ-IjcOTbyFluCWqsFLMfP4SvnopoXDcX0civ-STS5c/edit) for future reference.
3. **People Ops:** After you have determined compensation, make copies of these two templates and customize them for this candidate:
- [Exit scenarios (template)](https://docs.google.com/spreadsheets/d/1k2TzsFYR0QxlD-KGPxuhuvvlJMrCvLPo2z8s8oGChT0/copy)
- [Informal offer email (template)](https://docs.google.com/document/d/1zpNN2LWzAj-dVBC8iOg9jLurNlSe7XWKU69j7ntWtbY/copy)
Change the name of the copied documents accordingly (e.g., "[candidate's name]'s a copy of exit scenarios") and link to the exit scenarios spreadsheet from the offer email.
4. **People Ops:** Next, prepare the informal offer email. Post in the `#g-people` Slack channel and at-mention the CEO for assistance with determining the number of shares. You'll then need to add the following information to the template:
- Candidate's name and email address
- Candidate's start date
- Candidate's compensation
- Candidate's manager (the person they report to)
- Equity offered to the candidate (specify the number of shares, and highlight it with a link to the candidate's exit scenarios spreadsheet)
- Benefits (determined by the candidate's location)
5. **People Ops:** Prepare the exit scenarios spreadsheet. Enter the number of shares offered to the candidate, and the spreadsheet will update to reflect this.
>**_Note:_** *Don't play with numbers in the exit scenarios spreadsheet. The revision history is visible to the candidate, and they might misunderstand.*
6. **People Ops:** Once both documents are complete, share the offer email draft, exit scenarios copy, and a link to the compensation decision with the CEO for approval by mentioning @mikermcneil in #g-people.
7. **CEO:** Confirm:
- The compensation decision has been documented sufficiently and adjusted for the cost of living.
- The equity plan and budget are up to date with the actual offer that is about to be sent.
- The Fleeties doc now reflects the actual start date from the offer email, as well as the candidate's name, LinkedIn URL, and preferred pronoun.
- It still makes business sense to make this offer by reviewing the budget and equity plan.
The CEO will then reply in `#g-people` to indicate that the offer is approved.
>**_Note:_** *When hiring an international employee, Pilot.co recommends starting the hiring process a month before the new employee's start date.*
8. **People Ops:** After obtaining CEO approval, confirm everything is correct one more time, then mention the CEO or CTO, who will send the offer email.
- The offer email is copied directly from Google Drive into Gmail before being sent to the candidate.
- When sending the offer, the CEO or CTO will edit the permissions of the exit scenarios sheet so it is accessible to the candidate.
- People Ops is cc'd on the offer email but will not participate in the email thread until after the offer is accepted.
### Steps after an offer is accepted
1. Once an applicant accepts an offer in writing, People Ops replies to the candidate.
2. People Ops creates a [hiring issue](https://github.com/fleetdm/confidential/blob/main/.github/ISSUE_TEMPLATE/hiring.md) for the new team member in the [fleetdm/confidential](https://github.com/fleetdm/confidential/issues) repo. People Ops will use this issue to keep track of the hiring tasks for the new team member.
3. People Ops reaches out to the new team member via email to get any information they will need to prepare an agreement and add them to our payroll system.
- **US team members**: People Ops will send the new team member's agreement through [DocuSign](https://www.docusign.com/).
After signing and storing an in the correct Google Drive folder, People Ops will invite the new team member to onboard in [Gusto](https://www.gusto.com/). People Ops will reach out to them if the new team member is a W-2 employee and schedule an I-9 verification meeting.
2022-06-21 04:27:52 +00:00
>*If we're hiring in a new state, we'll have to register for state taxes and unemployment. Gusto usually handles this process.*
- **For international team members:** People Ops enters the new team member's information into [Pilot](https://pilot.co/) to kick off their hiring process. Pilot creates an agreement for the new team member, and People Ops reviews it to make sure everything looks correct. After People Ops confirms the information about the new hire, Pilot invites the new team member to enter the rest of their information and informs People Ops via email when a new Fleetie signs their agreement.
4. **As soon as we have a signed agreement with a new team member:** People Ops reaches out to the new team member to provide them with a [work device](#purchasing-a-company-issued-device) and a pair of [YubiKeys](./security.md#hardware-security-keys). People Ops then requests a screenshot or link to the new Fleetie's preferred device and configuration. People Ops orders their device and Yubikeys using his Brex card and has them shipped directly to the new team member.
>*If the new team member is in the US and requests a MacBook, It will be purchased using our Apple business account. For MacBooks purchased with this account, Apple will ship pre-configured and enrolled in our MDM.*
5. **Two weeks before their first day at Fleet:** People Ops creates a [Google Workspace account](https://admin.google.com/ac/users) for the new team member and invites them to join the [FleetDM](https://github.com/fleetdm) GitHub organization.
When the new team member's work email is active, People Ops will send invitations to join Fleet's Slack and to create Fleet-managed 1Password and Zoom accounts with their Fleet email. People Ops sends the sign-in instructions to the new team member, accompanied by a brief explanation of the invitations sent.
6. **Before a new team member's first day:** People Ops creates an onboarding issue in the [fleetdm/confidential](https://github.com/fleetdm/confidential/issues) GitHub repo for the new team member. Before creating the issue, People Ops will go through it and comment on any steps that the new team member will not have to complete.
2022-05-03 16:28:56 +00:00
### CorpNet state registration process
In CorpNet, select "place an order for an existing business" well need to have Foreign Registration and Payroll Tax Registration done.
- You can have CorpNet do this by emailing the account rep "Subject: Fleet Device Management: State - Foreign Registration and Payroll Tax Registration" (this takes about two weeks).
- You can do this between you and CorpNet by selecting "Foreign Qualification," placing the order and emailing the confirmation to the rep for Payroll registration (this is a short turnaround).
- You can do this on your own by visiting the state's "Secretary of State" website and checking that the company name is available. To register online, you'll need the EIN, business address, information about the owners and their percentages, the first date of business, sales within the state, and the business type (usually get an email right away for approval ~24-48 hrs).
2022-05-03 16:28:56 +00:00
## Team member onboarding
It's important that every team member at Fleet takes the time to get fully trained and onboarded.
When a new team member joins Fleet, we create an onboarding issue for them in the [fleetdm/confidential](https://github.com/fleetdm/confidential) repo using this [issue template](https://github.com/fleetdm/confidential/blob/main/.github/ISSUE_TEMPLATE/onboarding.md).
We want to make sure that the new team member will be able to complete every task in their issue. To make sure the new team member is successful in their onboarding, we customize their issue by commenting on any tasks they won't need to complete.
We believe in taking onboarding and training seriously and that the onboarding template is an essential source of truth and good use of time for every single new hire. If managers see a step that they don't feel is necessary, they should make a pull request to the [onboarding template](https://github.com/fleetdm/confidential/blob/main/.github/ISSUE_TEMPLATE/onboarding.md) and request a review from People operations.
### Contributor experience training
During their first week at Fleet, new team members are asked to schedule a contributor experience training call with People operations. During this call, the new team member will share their screen, and People operations will
- make sure emails will get seen and responded to quickly.
- make sure Slack messages will get seen and responded to quickly.
- make sure you know where your issues are tracked, which kanban board you use, and what the columns mean.
- make sure you can succeed with submitting a PR with the GitHub web editor, modifying docs or handbook, and working with Markdown.
- talk about Google calendar.
- give you a quick tour of the Fleet Google drive folder.
### Sightseeing tour
During their onboarding at Fleet, new team members are asked to schedule a sightseeing tour call with People operations. During this call, the new team member will participate in an interactive tour that includes:
- GitHub issues: the living bloodstream of the company.
- Kanban boards: the bulletin board of quests you can get and how you update status and let folks know things are done.
- Google Calendar: the future.
- Gmail: like any mailbox, full of junk mail, plus some important things, so it is important to check carefully.
- Salesforce: the Rolodex.
- Google Docs: the archives.
- Slack:
- The "office" (#g-, #general).
- The walkie talkies (DMs).
- The watering hole (#oooh-, #random, #news, #help-).
## Onboarding a new advisor
Advisor agreements are sent through [DocuSign](https://www.docusign.com/), using the "Advisor Agreement"
template. To send a new advisor agreement, you'll need the new advisor's name and the number of shares they
are offered.
Once you send the agreement, add a new row to the [advisory board spreadsheet](https://docs.google.com/spreadsheets/d/15knBE2-PrQ1Ad-QcIk0mxCN-xFsATKK9hcifqrm0qFQ/edit#gid=1803674483) and enter the new advisor's information. Use this spreadsheet to track the advisor's progress through the onboarding process.
>**_Note:_** *Be sure to mark any columns that haven't been completed yet as "TODO"*
When you complete the agreement, make sure it is in the correct Google Drive folder, update the [advisory board spreadsheet](https://docs.google.com/spreadsheets/d/15knBE2-PrQ1Ad-QcIk0mxCN-xFsATKK9hcifqrm0qFQ/edit#gid=1803674483) to show that the agreement has been signed, and ask the new advisor to add us on [Linkedin](https://www.linkedin.com/company/71111416), [Crunchbase](https://www.crunchbase.com/organization/fleet-device-management), and [Angellist](https://angel.co/company/fleetdm).
## Onboarding a new consultant
Consultant agreements are sent through [DocuSign](https://www.docusign.com/), using the "Consulting Agreement" template. To send a new consulting agreement, you'll need the new consultant's name, the term of the service, a summary of the services provided, and the consultant's fee.
There are some defaults that we use for these agreements:
- Term: one month
- Services rendered: [use this doc](https://docs.google.com/document/d/1b5SGgYEHqDmq5QF8p29WWN3it3XJh3xRT3zG0RdXARo/edit)
- Work will commence and complete by dates: Start date and end of term date
- Fee: Get from the contractor
- Hours: Default to 10 hr/week = 40hr/week
Then hit send! After all of the signatures are there, the completed document will automatically be uploaded to the appropriate Google Drive folder, and a Slack message will appear in the `#g-people` channel.
## Updating a consultant's fee
- Direct message Charlie with rate change information.
- Charlie will post the information to `#g-people` and tag the CEO for approval.
- After CEO approval, Charlie will issue a new contractor agreement with the updated fee via DocuSign.
## Zapier and DocuSign
We use Zapier to automate how completed DocuSign envelopes are formatted and stored. This process ensures we store signed documents in the correct folder and that filenames are formatted consistently.
When the final signature is added to an envelope in DocuSign, it is marked as completed and sent to Zapier, where it goes through these steps:
1. Zapier sends the following information about the DocuSign envelope to our Hydroplane webhook:
- **`emailSubject`** - The subject of the envelope sent by DocuSign. Our DocuSign templates are configured to format the email subject as `[type of document] for [signer's name]`.
- **`emailCsv`** - A comma-separated list of signers' email addresses.
2. The Hydroplane webhook matches the document type to the correct Google Drive folder, orders the list of signers, creates a timestamp, and sends that data back to Zapier as
- **`destinationFolderID`** - The slug for the Google Drive folder where we store this type of document.
- **`emailCsv`** - A sorted list of signers' email addresses.
- **`date`** - The date the document was completed in DocuSign, formatted YYYY-MM-DD.
3. Zapier uses this information to upload the file to the matched Google Drive folder, with the filename formatted as `[date] - [emailSubject] - [emailCvs].PDF`.
4. Once the file is uploaded, Zapier uses the Slack integration to post in the #peepops channel with the message:
```
Now complete with all signatures:
[email subject]
link: drive.google.com/[destinationFolderID]
```
## Adding Salesforce licenses
We consider Salesforce to be our Rolodex for customer information. During the onboarding process, you may need to add a license for the new hire. Here are the steps we take:
1. Go to “Your account.”
2. View contracts -> pick current contract.
3. Add the number of licenses.
4. Sign DocuSign sent to the email.
5. The order will be processed in ~30m.
## PeopleOps
### OKR planning
OKRs help inform what to prioritize and communicate company goals while encouraging cross-team collaboration.
At the end of the quarter and key points throughout the quarter (every three weeks), we review the status of each OKR (depending on the KR, either 100% or ≥70% completion is considered "success")
- Review topdown and departmental OKRs as they are turned in.
- OKRs are finalized one week from when topdown OKRs were initially reviewed.
- Finalized OKRs are shared company-wide and at the "All hands" meeting and, at least to some degree, become public.
- Throughout the quarter, Mike and Zach have OKR preplanning meetings (every three weeks) to prepare OKRs for the upcoming quarter.
### 1:1 Mike:Sid document preparation
Every two weeks, our CEO Mike has a 1:1 meeting with our Investor Sid. The Digital Experience Team completes four parts while constructing the associated document.
- After the 1:1 meeting has happened, Charlie makes a copy of the original document, labels it "yyyy-mm-dd Backup copy of Mike from Fleet & Sid," and moves it to a private folder.
- Charlie will change the permissions on the new copy to share it with Mike and Zach and set Mike to be the file's owner. If there are any agenda items labeled "TODO," Charlie will comment in the backup copy to assign them to Mike.
- Charlie prepares the original document by deleting the agenda items in the "Hallway" and "Feedback" sections, leaving only the "Vision" section.
- Charlie will update the monthly "All Hands" link and grant Sid viewing access.
- Charlie will send Mike links to the new document and the backup copy in a direct message in Slack.
2022-06-29 17:35:29 +00:00
- The day before the meeting, Charlie will prepare the "Vision" section of the original document. Charlie will collect and update information related to annual recurring revenue, new members in the `#fleet` channel in the osquery Slack, the number of new customers and opportunities from Salesforce, the total number of devices using Fleet, the company's current headcount, and banking information.
### Workiversaries
We're happy you've ventured a trip around the sun with Fleet. Let's celebrate!
- Each Friday, if there are any upcoming workiversaries in the next seven days, People Operations posts about them in #g-people and tags @mikermcneil to let them know.
### Weekly updates
We like to celebrate our achievements weekly in `#general`.
- Every Thursday night, Charlie creates a thread in #help-manage requesting weekly updates, and managers will reply to the thread with their weekly updates.
- Friday afternoons, Charlie updates the KPIs in the [weekly updates spreadsheet](https://docs.google.com/spreadsheets/d/1Hso0LxqwrRVINCyW_n436bNHmoqhoLhC8bcbvLPOs9A/edit#gid=0), and Friday nights, Charlie will post the updates in #general.
Weekly update principles
- Each department's update is 20-40 words or less.
- Erring on the side of refering to items that are completely done and/or mentioning news that is potentially very exciting to folks throughout the company.
### Investor and advisor updates
We like to regularly share updates about how Fleet is growing with our investors and advisors.
- Charlie tracks the most recent updates with investors and advisors and coordinates emails, zoom calls, or the investor or advisor's preferred method of communication with @mikermcneil and preps materials as needed.
## Participating in the program
### Eligibility
TODO: document eligibility qualifications
### How to apply
1. TODO: Create a pull request to add yourself to the [rotation schedule](insert link here)TODO: create template for pull request
2. Assign your manager and ask them to approve (but not merge) the pull request.
3. TODO: Once your manager approves the pull request, assign the pull request to Charlie, link to the pull request in the #ceo-shadow channel, and @mention Charlie in the message.
### Parental participation
TODO: (parent-friendly scheduling options)
### Rotation rhythm
1. See one, you are trained by the outgoing person.
2. Teach one, you train the incoming person.
The shadow should be available for the full two weeks.
### Rotation schedule
TODO: (This is a chart: start date, end date, see one, teach one.)
### Preparing for the program
### Important things to note
1. This is not a performance evaluation.
2. Plan to observe and ask questions.
3. Don't plan to do any of your usual work.
4. Be ready to add a number of [handbook](https://fleetdm.com/handbook) updates during your shadow period.
5. Participating in the shadow program is a privilege that will expose you to confidential information.
6. Give feedback to and receive feedback from the CEO.
### What to wear
Casual
### Pre-program tasks
1. Create an onboarding issue
TODO:(onboarding and offboarding issues are created for the two-week program)
2. Consider creating goals
For inspiration, here is [an example](https://gitlab.com/nmccorrison/ceo-shadow/-/issues/1#my-goals) of a CEO Shadow who added goals to their onboarding issue.
3. Practice your introduction
See [CEO Shadow Introductions](https://about.gitlab.com/handbook/ceo/shadow/#ceo-shadow-introductions) for specifics.
4. Coffee chat with co-shadow
Try to schedule coffee chats with your co-shadow before you start the program.
5. Coffee Chat with CEO shadow alumni
Feel free to schedule a coffee chat with any of the CEO Shadow Alumni. There's a link to the alumni chart dropped here too.
6. Explore the CEO shadow project
TODO: private board
7. Review the CEO's calendar
Anticipate your week. Look ahead in the schedule and plan accordingly.
8. Review the CEO handbook (TODO: insert link here)
TODO: How to communicate and interact with the CEO.
9. Review acronyms
TODO: add resource link (KPIs, OKRs, xMAU, SpU, ARR, keep a financial dictionary handy)
### What to expect during the program
TODO: Broken down by tasks like handbooking and "for meetings."
### Tasks
1. Collecting and managing tasks
TODO: (There is a project board that is privately linked here.)
### Tweetstorm
A tweetstorm is a series of Twitter posts usually made as replies in a single thread on a topic. CEO shadows may be asked to draft the tweets related to a public live-streamed video recording or other media content.
### Meetings & events
### CEO's calendar
1. Review the CEO's calendar.
2. How to update your zoom name to show "CEO shadow."
3. How to add CEO calendar to google calendar (we already do this in onboarding).
4. Details about invites to events marked private (like interviews).
5. Meetings with those outside of GitLab may not be on Zoom. Prior to the call, check the CEO's calendar and load any other conferencing programs that may be needed. It may be necessary to dial in via phone for audio conferences.
### Types of meetings
1. Fleet Meetings
- 1:1s with reports.
- Interviews with candidates.
- Conversations with board members.
2. Social calls
3. Media Briefings
4. Candidate Interviews
5. Personal Meetings
### Removing yourself from personal CEO documents
TODO
### Responsibilities
TODO: this is a chart outlining responsibilities based on meeting types.
### Email best practices
TODO: In order to keep continuity across CEO shadow participants. Always, cc (TODO: email group) on emails as part of the program. This makes sure that even after you've left the program, the response and follow-up can be tracked.
### Considerations for other companies starting CEO shadow programs
GitLab co-founder and CEO Sid Sijbrandij [answered questions in a YouTube livestream](https://youtu.be/ExG8_bnIAMI) from Sam Altman, as the two discussed considerations for implementing a CEO Shadow program in other organizations. Key takeaways are documented below.
1. CEOs should not optimize meetings for Shadows. They learn by being in the room, either in-person or virtual, and it's OK if the Shadow doesn't fully understand everything.
2. A well-designed CEO Shadow program shouldn't burden a CEO; in fact, Shadows should actively make a CEO's day easier by assisting with notes and changing relevant portions of the company handbook upon request.
3. Non-obvious benefits for a CEO (and their organization) include CEO empathy and humanizing a CEO, such that team members are more comfortable contributing input to an executive. Shadow alumni can translate real-world examples of [assuming positive intent](https://about.gitlab.com/handbook/values/#assume-positive-intent) from their time in the program to their direct reports, further fortifying company culture.
4. Make certain that CEO Shadows do not plan to do any of their usual work. Shadows should prepare their team as if they were on vacation. Attempting to shadow the CEO while also maintaining a full workload creates undue stress for the CEO Shadow.
### Alumni
TODO: (This is a chart with info on CEO alumni) (Create a slack channel for CEO-shadow-alumni)
### Recruiting progress checkup
Weekly, Charlie looks in the [Fleeties spreadsheet](https://docs.google.com/spreadsheets/d/1OSLn-ZCbGSjPusHPiR5dwQhheH1K8-xqyZdsOe9y7qc/edit#gid=0) and reports on each open position:
- Is the position in [BreezyHR](https://app.breezy.hr/signin)?
- Is the position listed on fleetdm.com/jobs?
- What is the total # applicants?
- Total # interviews?
### Payroll
Many of these processes are automated, but it's vital check Gusto and Pilot manually for accuracy.
## BizOps
### Monthly accounting
Create a new issue for the current month and year named "Closing out YYYY-MM" using the [monthly accounting issue template](https://github.com/fleetdm/confidential/blob/main/.github/ISSUE_TEMPLATE/5-monthly-accounting.md) in GitHub and complete all of the tasks in the issue.
### Commission payroll
- Update [commission calculator](https://docs.google.com/spreadsheets/d/1vw6Q7kCC7-FdG5Fgx3ghgUdQiF2qwxk6njgK6z8_O9U/edit) with new revenue from any deals that are closed/won (have a subscription agreement signed by both parties) and have an **effective start date** within the previous month.
- Find detailed notes on this process in [Notes - Run commission payroll in Gusto](https://docs.google.com/document/d/1FQLpGxvHPW6X801HYYLPs5y8o943mmasQD3m9k_c0so/edit#).
- Contact Charlie Chance in Slack and let her know she can run the commission payroll. Use the off-cycle payroll option in Gusto. Be sure to classify the payment as "Commission" in the "other earnings" field and not the generic "Bonus."
- Once commission payroll has been run, update the [commission calculator](https://docs.google.com/spreadsheets/d/1vw6Q7kCC7-FdG5Fgx3ghgUdQiF2qwxk6njgK6z8_O9U/edit) to mark the commission as paid.
## Rituals
The following table lists the People group's rituals, frequency, and Directly Responsible Individual (DRI).
| Ritual | Frequency | Description | DRI |
|:-----------------------------|:-----------------------------|:----------------------------------------------------|-------------------|
| AP invoice monitoring | Daily | Look for new accounts payable invoices and make sure that Fleet's suppliers are paid. | Nathanael Holliday |
| Weekly update | Weekly | Updates from managers on what their departments accomplished for the week are logged in the cloud and disseminated in Slack. Update the ops KPIs in the ["🌈 Weekly updates" spreadsheet](https://docs.google.com/spreadsheets/d/1Hso0LxqwrRVINCyW_n436bNHmoqhoLhC8bcbvLPOs9A/edit#gid=0).| Charlie Chance |
| Hours update | Weekly | Screenshots of contractor hours as shown in Gusto are sent via Slack to each contractor's manager with no further action necessary if everything appears normal. | Charlie Chance |
2022-05-05 01:58:35 +00:00
| Prepare Mike and Sid's 1:1 doc | Bi-weekly | Run through the document preparation GitHub issue for Mike's call with Sid. | Nathanael Holliday |
| OKR review | Every three weeks | Review the status of each OKR. | Mike Thomas |
| Brex reconciliation | Monthly | Make sure all company-issued credit card transactions include memos. | Nathanael Holliday |
| Monthly accounting | Monthly | Use the monthly accounting template in GitHub to go through the process of validating Fleet's books. | Nathanael Holliday |
| Commission payroll | Monthly | Use the [commission calculator](https://docs.google.com/spreadsheets/d/1vw6Q7kCC7-FdG5Fgx3ghgUdQiF2qwxk6njgK6z8_O9U/edit#gid=0) to determine the commission payroll to be run in Gusto. | Nathanael Holliday |
| US contractor payroll | Monthly | Sync contractor hours to payments in Gusto and run payroll for the month. | Charlie Chance |
| OKR planning | Quarterly | Plan for the next quarter's OKRs. | Mike Thomas |
| 550C update | Annually | File California 550C. | Charlie Chance |
| Workiversaries | Weekly/PRN | People Operations posts in #g-people and tags @mikermcneil about any upcoming workiversaries | Charlie Chance |
| Investor and Advisor updates | PRN | People Operations tracks the last contact with investors and coordinates outreach with CEO | Charlie Chance |
| CEO inbox sweep | Daily unless OOO | Charlie does a morning sweep of the CEO's inbox to remove spam and grab action items | Charlie Chance |
| Recruiting progress checkup | Weekly | Charlie looks in the [Fleeties spreadsheet](https://docs.google.com/spreadsheets/d/1OSLn-ZCbGSjPusHPiR5dwQhheH1K8-xqyZdsOe9y7qc/edit#gid=0) and reports on each open position | Charlie Chance |
| Payroll | Monthly before payroll runs | Every month, Charlie audits the payroll platforms for accuracy | Charlie |
## Slack channels
Please see [Brand > Slack channels](https://fleetdm.com/handbook/brand#slack-channels).
<meta name="maintainedBy" value="charlottechance">
<meta name="title" value="🧑‍🚀 People">