Handle status columns during offer acceptance process (#10553)

.
This commit is contained in:
Mike McNeil 2023-03-20 23:52:55 -05:00 committed by GitHub
parent d150c5448a
commit 3cad35278e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 95 additions and 74 deletions

View File

@ -55,7 +55,7 @@ go.mod @fleetdm/go
/website/views/pages/pricing.ejs @mikermcneil
# Website redirects and URLs
/website/config/routes.js @eashaw @jarodreyes
/website/config/routes.js @mikermcneil @eashaw
# Website backend, scripts, deps
/website/api/ @mikermcneil @eashaw
@ -64,23 +64,25 @@ go.mod @fleetdm/go
/website/package.json @mikermcneil @eashaw
# GitHub brandfront
/README.md @jarodreyes @mikermcneil
/README.md @mikermcneil
# NPM brandfront (npmjs.com/package/fleetctl)
/tools/fleetctl-npm/README.md @jarodreyes
/tools/fleetctl-npm/README.md @mikermcneil
# Handbook
/handbook/company @mikermcneil
/handbook/company/* @mikermcneil
/handbook/business-operations @hollidayn
/handbook/business-operations/ceo-handbook.md @mikermcneil
/handbook/business-operations/* @hollidayn
/handbook/security @mikermcneil
/handbook/engineering @zwass
/handbook/business-operations @mikermcneil
/handbook/business-operations/* @mikermcneil
/handbook/engineering @lukeheath
/handbook/engineering/* @lukeheath
/handbook/product @zhumo
/handbook/product/* @zhumo
/handbook/customers @alexmitchelliii
/handbook/customers/* @alexmitchelliii
/handbook/marketing @jarodreyes
/handbook/README.md @mikermcneil
/handbook/marketing/* @jarodreyes
/handbook/README.md @mikermcneil # « This is the "Table of contents"
#
# For configuration that determines auto-approval + auto-unfreezing, so that contributors

View File

@ -316,8 +316,60 @@ When the final signature is added to an envelope in DocuSign, it is marked as co
## Hiring
At Fleet, we collaborate with [core team members](#creating-a-new-position), [consultants](#hiring-a-consultant), [advisors](#adding-an-advisor), and [outside contributors](https://github.com/fleetdm/fleet/graphs/contributors) from the community.
> Are you a new fleetie joining the Business Operations team? For Loom recordings demonstrating how to make offers, hire, onboard, and more please see [this classified Google Doc](https://docs.google.com/document/d/1fimxQguPOtK-2YLAVjWRNCYqs5TszAHJslhtT_23Ly0/edit).
### Hiring a consultant
In addition to [core team members](#hiring-a-new-team-member), from time to time Fleet hires consultants who may work for only a handful of hours on short projects.
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 go through training using the contributor onboarding issue.
- do NOT fill any existing [open position](#creating-a-new-position)
#### 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](#hiring-a-new-team-member).
Core team members:
- are hired for an existing [open position](#creating-a-new-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](https://fleetdm.com/handbook/company#org-chart)
- are listed in ["🧑‍🚀 Fleeties"](https://docs.google.com/spreadsheets/d/1OSLn-ZCbGSjPusHPiR5dwQhheH1K8-xqyZdsOe9y7qc/edit#gid=0)
- are paid as part of the standard payroll ritual for the place they work and their employment classification.
Consultants aren't required to do any of those things.
#### Sending a consulting agreement
Consultant agreements are sent through [DocuSign](https://www.docusign.com/), using the "Consulting Agreement" template.
> _**Note:** The Docusign template labeled "US consulting agreement" is actually used both consultants, as well as for [full team members](#hiring-a-new-team-member) classified as contractors._
To send a US 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: Default to one month unless otherwise discussed.
- Services rendered: Copy and paste from the [language in 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 consultant.
- Hours: Default to 10 hr/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 `#help-classified` channel.
### Creating a new position
Every new position being created goes through this process before interviewing, accepting applicants, or extending offers.
@ -364,8 +416,8 @@ Every job description page ends with a "call to action", including a link that c
When a candidate clicks applies for a job at Fleet, they are taken to a generic Typeform. When they submit their job application, the Typeform triggers a Zapier automation that will posts the submission to `g-business-operations` in Slack. The candidate's job application answers are then forwarded to the applicable `#hiring-xxxxx-202x` Slack channel and the hiring manager is @mentioned.
##### Candidate correspondence email templates
Fleet uses [certain email templates](https://docs.google.com/document/d/1E_gTunZBMNF4AhsOFuDVi9EnvsIGbAYrmmEzdGmnc9U) when responding to candidates as part of the recruiting, interviewing, and hiring processes. These templates help us live our value of [🔴 empathy](https://fleetdm.com/handbook/company#empathy) and meet the company's aspiration to reply to all job applications within one business day.
#### Candidate correspondence email templates
Fleet uses [certain email templates](https://docs.google.com/document/d/1E_gTunZBMNF4AhsOFuDVi9EnvsIGbAYrmmEzdGmnc9U) when responding to candidates. This helps us live our value of [🔴 empathy](https://fleetdm.com/handbook/company#empathy) and helps the company meet the aspiration of replying to all applications within one business day.
#### Hiring restrictions
@ -375,7 +427,7 @@ Fleet maintains a list of companies with whom Fleet has do-not-solicit terms tha
##### Incompatible locations
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.
#### Interviewing
### Interviewing
We're glad you're interested in joining the team!
Here are some of the things you can anticipate throughout this process:
- We will reply by email within one business day from the time when the application arrives.
@ -386,7 +438,9 @@ If you've been invited to "book with us," you'll have a Zoom meeting with the hi
### Hiring a new team member
> **_Note:_** _When hiring an international employee, Pilot.co recommends starting the hiring process a month before the new employee's start date._
This section is about hiring a new core team member, or fleetie.
> **_Note:_** _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 CEO during the process of making an offer._
Here are the steps hiring managers can follow to get an offer out to a candidate:
1. **Schedule founder interview:** Schedule 30m for the CEO to interview the candidate, if they haven't already done so.
@ -394,15 +448,16 @@ Here are the steps hiring managers can follow to get an offer out to a candidate
- No need to check with the CEO first. You can just book the meeting on his calendar.
- Schedule the meeting directly on the CEO's calendar during a time he and the candidate are both explicitly available according to that calendar. Available means whitespace.
- Either use Google Calendar directly, or offer to use the CEO's 30m Calendly link. _It is up to you, the hiring manager, to get this meeting scheduled and showing up at a time on the CEO's calendar._
- _If this is an engineering position_, before scheduling the CEO interview, please also be sure that the candidate has already been interviewed by the CTO. If not, include the CTO in this interview.
- The candidate's email address involved in this calendar event with the CEO is also where they will receive their offer or rejection email.
2. **Add to team database:** Update the [Fleeties](https://docs.google.com/spreadsheets/d/1OSLn-ZCbGSjPusHPiR5dwQhheH1K8-xqyZdsOe9y7qc/edit#gid=0) doc to accurately reflect:
- Start date _(No need to check with the candidate if you haven't already. Just guess.)_
- _If this is an engineering position_, before the CEO interview, please also be sure that the candidate has already been interviewed by the CTO. If not, include the CTO in this interview.
- The personal email the candidate uses for this calendar event is where they will receive their offer or rejection email.
2. **Add to team database:** Update the [Fleeties](https://docs.google.com/spreadsheets/d/1OSLn-ZCbGSjPusHPiR5dwQhheH1K8-xqyZdsOe9y7qc/edit#gid=0) doc to accurately reflect the candidate's:
- Start date
> _**Tip:** No need to check with the candidate if you haven't already. Just guess. First Mondays tend to make good start dates. When hiring an international employee, Pilot.co recommends starting the hiring process a month before the new employee's start date._
- First and last name
- Preferred pronoun _("them", "her", or "him")
- Country and state where they will be working _(Pattern-match from how other rows do it. Please be mindful of spreadsheet formulas.)_
- LinkedIn URL _(If the fleetie does not have a LinkedIn account, enter `N/A`)_
- GitHub handle _(Every candidate must have a GitHub account in "Fleeties" before the company makes them an offer. If the the candidate does not have a GitHub account, ask them to create one, and make sure it's tracked in "Fleeties".)_
- GitHub username _(Every candidate must have a GitHub account in "Fleeties" before the company makes them an offer. If the the candidate does not have a GitHub account, ask them to create one, and make sure it's tracked in "Fleeties".)_
> _**Tip:** A revealing live interview question can be to ask a candidate to quickly share their screen, sign up for GitHub, and then hit the "Edit" button on one of the pages in [the Fleet handbook](https://fleetdm.com/handbook) to make their first pull request. This should not take more than 5 minutes._
3. **Confirm intent to offer:** At-mention `@mikermcneil` in the `#hiring-` channel and indicate that you would like for Fleet to make an offer to the candidate. Let him know
@ -410,12 +465,13 @@ Here are the steps hiring managers can follow to get an offer out to a candidate
After meeting with the candidate for their final interview, the CEO uses the following steps to make an offer:
1. **Review decision:** The CEO reviews the data and decides whether it still makes sense to make this offer to this person in this role. If not, he lets the manager know. Otherwise, he continues with the offer.
2. **Adjust compensation:** [Re-benchmark salary](https://www.pave.com), adjusting for cost of living where the candidate will do the work.
- _Paste a screenshot_ of Pave showing the adjusted benchmark under the [heading for this position in " 💌 Compensation decisions"](https://docs.google.com/document/d/1NQ-IjcOTbyFluCWqsFLMfP4SvnopoXDcX0civ-STS5c/edit)
- _Update the [equity plan](https://docs.google.com/spreadsheets/d/1_GJlqnWWIQBiZFOoyl9YbTr72bg5qdSSp4O3kuKm1Jc/edit#gid=0)_ with the actual adjusted salary and equity offer that is about to be sent.
- _Paste a screenshot_ from Pave showing the amount of cash and equity in the offer (or write 1-2 sentences about what is being offered to this candidate and why) under the [heading for this position in " 💌 Compensation decisions"](https://docs.google.com/document/d/1NQ-IjcOTbyFluCWqsFLMfP4SvnopoXDcX0civ-STS5c/edit)
- [ ] Update the ["🥧 Equity plan"](https://docs.google.com/spreadsheets/d/1_GJlqnWWIQBiZFOoyl9YbTr72bg5qdSSp4O3kuKm1Jc/edit#gid=0) to reflect the offer offer that is about to be sent:
- Salary _(OTE actually offered)_
- Equity _(stock options actually offered)_
- "Notes" _(include base salary versus commission or bonus plan, if relevant)_
- "Offer sent?" _(set this to `TRUE`)_
- …and make sure the other status columns are set to `todo`.
3. **Prepare the "exit scenarios" spreadsheet:** [Copy the "Exit scenarios (template)"](https://docs.google.com/spreadsheets/d/1k2TzsFYR0QxlD-KGPxuhuvvlJMrCvLPo2z8s8oGChT0/copy) for the candidate, and rename the copy to e.g. "Exit scenarios for Jane Doe".
- _Edit the candidate's copy of the exit scenarios spreadsheet_ to include the number of shares they will be offered, and the spreadsheet will update automatically to reflect their approximate ownership percentage.
- _Share the candidate's copy_ of the spreadsheet with their personal email, granting **"Edit"** access.
@ -430,6 +486,7 @@ After meeting with the candidate for their final interview, the CEO uses the fol
- Subject: "Full time?"
- Body: _(The offer email is copied verbatim from Google Drive into Gmail as the body of the message, formatting and all.)_
#### Steps after an offer is accepted
Once the new team member replies and accepts their offer in writing, either the CEO or Zach Wasserman replies to the candidate. Whoever replies first is responsible for these steps:
@ -442,18 +499,18 @@ Once the new team member replies and accepts their offer in writing, either the
- salary, equity, and "Notes" _(Check that compensation information is accurate, one last time.)_
- _[Create a "Hiring" issue](https://github.com/fleetdm/confidential/issues/new/choose)_ for the new team member. (This is what will inform the Business Operations team to get involved. The company will use this issue to keep track of the hiring tasks for the new team member.)
- _Send a reply_ welcoming the team member to Fleet and letting them know to expect a separate email with next steps for getting the team member's laptop, Yubikeys, and agreement going ASAP so they can start on time. For example:
>\o/ It's official!
>
>Be on the lookout for an email in a separate thread with next steps for quickly signing the paperwork and getting your company laptop and hardware 2FA keys (Yubikeys), which we recommend setting up ASAP.
>
>Thanks, and welcome to the team!
>-Mike
2. **Ask hiring manager to help:** Post to the `hiring-xxxxx-yyyy` Slack channel to let folks know the offer was accepted, and at-mention the _hiring manager_ to ask them to communicate with [all other interviewees](https://fleetdm.com/handbook/company#empathy) who are still in the running and [let them know that we chose a different person](https://fleetdm.com/handbook/business-operations#candidate-correspondence-email-templates).
>\o/ It's official!
>
>Be on the lookout for an email in a separate thread with next steps for quickly signing the paperwork and getting your company laptop and hardware 2FA keys (Yubikeys), which we recommend setting up ASAP.
>
>Thanks, and welcome to the team!
>-Mike
2. **Ask hiring manager to send rejections quickly:** Post to the `hiring-xxxxx-yyyy` Slack channel to let folks know the offer was accepted, and at-mention the _hiring manager_ to ask them to communicate with [all other interviewees](https://fleetdm.com/handbook/company#empathy) who are still in the running and [let them know that we chose a different person](https://fleetdm.com/handbook/business-operations#candidate-correspondence-email-templates).
>_**Note:** Send rejection emails quickly, within 1 business day. It only gets harder if you wait._
3. **Close Slack channel:** Then archive and close the channel.
Now what happens? Business Operations will then follow the steps in the "Hiring" issue, which includes reaching out to the new team member within 1 business day from a separate email thread to get additional information as needed, prepare their agreement, add them to the company's payroll system, and get their new laptop and hardware security keys ordered so that everything is ready for them to start on their first day.
> **_Note:_** _Some Fleet team members are contractors and others are employees. The distinction between "contractor" and "employee" varies in different geographies, and the appropriate contract for any given team member and the place where they work is determined during the hiring process._
#### Purchasing a company-issued device
@ -483,47 +540,6 @@ When you receive your new their computer, complete the entry by adding a descrip
### Hiring a new consultant
In addition to [core team members](#hiring-a-new-team-member), from time to time Fleet hires consultants who may work for only a handful of hours on short projects.
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, and do NOT go through training using the contributor onboarding issue.
#### 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](#hiring-a-new-team-member).
Core team members:
- are hired using Fleet's "Hiring" issue template, including receiving a company-issued laptop and Yubikeys
- 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](https://fleetdm.com/handbook/company#org-chart)
- are listed in ["🧑‍🚀 Fleeties"](https://docs.google.com/spreadsheets/d/1OSLn-ZCbGSjPusHPiR5dwQhheH1K8-xqyZdsOe9y7qc/edit#gid=0)
- are paid as part of the standard payroll ritual for the place they work and their employment classification.
Consultants aren't required to do any of those things.
#### Sending a consulting agreement
Consultant agreements are sent through [DocuSign](https://www.docusign.com/), using the "Consulting Agreement" template.
> _**Note:** The Docusign template labeled "US consulting agreement" is actually used both consultants, as well as for [full team members](#hiring-a-new-team-member) classified as contractors._
To send a US 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: Default to one month unless otherwise discussed.
- Services rendered: Copy and paste from the [language in 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 consultant.
- Hours: Default to 10 hr/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 `#help-classified` channel.
## Recurring expenses
Recurring monthly or annual expenses are tracked as recurring, non-personnel expenses in ["🧮 The Numbers"](https://docs.google.com/spreadsheets/d/1X-brkmUK7_Rgp7aq42drNcUg8ZipzEiS153uKZSabWc/edit#gid=2112277278) _(classified Google Sheet)_, along with their payment source.
@ -585,13 +601,16 @@ Although it's sad to see you go, Fleet understands that not everything is meant
## Onboarding a new advisor
## Adding an 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.
template.
- Send the advisor agreement. 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, locate an existing empty row and available ID in ["Advisors"](https://docs.google.com/spreadsheets/d/15knBE2-PrQ1Ad-QcIk0mxCN-xFsATKK9hcifqrm0qFQ/edit#gid=1803674483) and enter the new advisor's information.
>**_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).
### Finalizing a new advisor
- Update the ["Advisors"](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).
- Update "Equity plan" to reflect updated status and equity grant for this advisor, and to ensure the advisor's equity is queued up for the next quarterly equity grant ritual.