` elements aren't given a child `` tag unless there are multiple paragraphs in the list item. That means I have to worry about styling that annoying situation too.
106 |
107 | - **For example, here's another nested list.**
108 |
109 | But this time with a second paragraph.
110 |
111 | - These list items won't have `
` tags
112 | - Because they are only one line each
113 |
114 | - **But in this second top-level list item, they will.**
115 |
116 | This is especially annoying because of the spacing on this paragraph.
117 |
118 | - As you can see here, because I've added a second line, this list item now has a `
` tag.
119 |
120 | This is the second line I'm talking about by the way.
121 |
122 | - Finally here's another list item so it's more like a list.
123 |
124 | - A closing list item, but with no nested list, because why not?
125 |
126 | And finally a sentence to close off this section.
127 |
128 | ## There are other elements we need to style
129 |
130 | I almost forgot to mention links, like [this link to the Tailwind CSS website](https://tailwindcss.com). We almost made them blue but that's so yesterday, so we went with dark gray, feels edgier.
131 |
132 | We even included table styles, check it out:
133 |
134 | | Wrestler | Origin | Finisher |
135 | | ----------------------- | ------------ | ------------------ |
136 | | Bret "The Hitman" Hart | Calgary, AB | Sharpshooter |
137 | | Stone Cold Steve Austin | Austin, TX | Stone Cold Stunner |
138 | | Randy Savage | Sarasota, FL | Elbow Drop |
139 | | Vader | Boulder, CO | Vader Bomb |
140 | | Razor Ramon | Chuluota, FL | Razor's Edge |
141 |
142 | We also need to make sure inline code looks good, like if I wanted to talk about `` elements or tell you the good news about `@tailwindcss/typography`.
143 |
144 | ### Sometimes I even use `code` in headings
145 |
146 | Even though it's probably a bad idea, and historically I've had a hard time making it look good. This _"wrap the code blocks in backticks"_ trick works pretty well though really.
147 |
148 | Another thing I've done in the past is put a `code` tag inside of a link, like if I wanted to tell you about the [`tailwindcss/docs`](https://github.com/tailwindcss/docs) repository. I don't love that there is an underline below the backticks but it is absolutely not worth the madness it would require to avoid it.
149 |
150 | #### We haven't used an `h4` yet
151 |
152 | But now we have. Please don't use `h5` or `h6` in your content, Medium only supports two heading levels for a reason, you animals. I honestly considered using a `before` pseudo-element to scream at you if you use an `h5` or `h6`.
153 |
154 | We don't style them at all out of the box because `h4` elements are already so small that they are the same size as the body copy. What are we supposed to do with an `h5`, make it _smaller_ than the body copy? No thanks.
155 |
156 | ### We still need to think about stacked headings though.
157 |
158 | #### Let's make sure we don't screw that up with `h4` elements, either.
159 |
160 | Phew, with any luck we have styled the headings above this text and they look pretty good.
161 |
162 | Let's add a closing paragraph here so things end with a decently sized block of text. I can't explain why I want things to end that way but I have to assume it's because I think things will look weird or unbalanced if there is a heading too close to the end of the document.
163 |
164 | What I've written here is probably long enough, but adding this final sentence can't hurt.
165 |
166 | [^1]: This is a footnote.
167 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Gatsby Starter: Minimal Blog
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 | Typography driven, feature-rich blogging theme with minimal aesthetics. Includes tags/categories support and extensive features for code blocks such as live preview, line numbers, and line highlighting. Using the Gatsby Theme [`@lekoarts/gatsby-theme-minimal-blog`](https://github.com/LekoArts/gatsby-themes/tree/main/themes/gatsby-theme-minimal-blog).
26 |
27 | [**Demo Website**](https://minimal-blog.lekoarts.de)
28 |
29 | Also be sure to check out other [Free & Open Source Gatsby Themes](https://themes.lekoarts.de) and my [Personal Website](https://www.lekoarts.de?utm_source=minimal-blog&utm_medium=Starter).
30 |
31 | ## ✨ Features
32 |
33 | - MDX
34 | - Fully customizable through the usage of Gatsby Themes (and Theme UI)
35 | - Light Mode / Dark Mode
36 | - Typography driven, minimal style
37 | - Tags/Categories support
38 | - Code highlighting with [prism-react-renderer](https://github.com/FormidableLabs/prism-react-renderer). Also allows adding line numbers, line highlighting, language tabs, and file titles.
39 | - RSS Feed for blog posts
40 | - SEO (Sitemap, OpenGraph tags, Twitter tags)
41 | - WebApp Manifest
42 |
43 | ## ⏱️ Quick Start
44 |
45 | Deploy this starter with one click on [Netlify](https://app.netlify.com/signup):
46 |
47 | [
](https://app.netlify.com/start/deploy?repository=https://github.com/LekoArts/gatsby-starter-minimal-blog)
48 |
49 | ## 🚀 Getting Started
50 |
51 | ### 1. **Create a Gatsby site.**
52 |
53 | Use the Gatsby CLI to clone the site and install dependencies:
54 |
55 | ```sh
56 | npx gatsby new gatsby-starter-minimal-blog https://github.com/LekoArts/gatsby-starter-minimal-blog
57 | ```
58 |
59 | ### 2. **Navigate to your new project.**
60 |
61 | ```sh
62 | cd gatsby-starter-minimal-blog
63 | ```
64 |
65 | ### 3. **Open the code and start customizing!**
66 |
67 | Start the site by running `npm run develop`.
68 |
69 | Your site is now running at `http://localhost:8000`!
70 |
71 | If you want to learn more about how you can use a Gatsby starter that is configured with a Gatsby theme, you can check out this [shorter](https://www.gatsbyjs.com/docs/how-to/plugins-and-themes/using-a-gatsby-theme/) or [longer](https://www.gatsbyjs.com/tutorial/using-a-theme/) tutorial. The tutorials don't exactly apply to this starter however the concepts are the same.
72 |
73 | ## 📝 Using and modifying this starter
74 |
75 | **Important Note:** Please read the guide [Shadowing in Gatsby Themes](https://www.gatsbyjs.com/docs/how-to/plugins-and-themes/shadowing/) to understand how to customize the underlying theme!
76 |
77 | This starter creates a new Gatsby site that installs and configures the theme [`@lekoarts/gatsby-theme-minimal-blog`](https://github.com/LekoArts/gatsby-themes/tree/main/themes/gatsby-theme-minimal-blog).
78 |
79 | Have a look at the theme's README and files to see what options are available and how you can shadow the various components including Theme UI. Generally speaking you will want to place your files into `src/@lekoarts/gatsby-theme-minimal-blog/` to shadow/override files. The Theme UI config can be configured by shadowing its files in `src/gatsby-plugin-theme-ui/`.
80 |
81 | ### Code Highlighting
82 |
83 | Since the underlying theme ships with [prism-react-renderer](https://github.com/FormidableLabs/prism-react-renderer) certain additional features were added to code blocks. You can find an overview / usage example in the [example repository](https://github.com/LekoArts/gatsby-themes/tree/main/examples/minimal-blog/content/posts/fantastic-beasts-and-where-to-find-them/index.mdx)! If you want to change certain code styles or add additional language tabs, you need to shadow the file `src/@lekoarts/gatsby-theme-minimal-blog/styles/code.js`.
84 |
85 | **Language tabs:**
86 |
87 | When you add a language (such as e.g. `js` or `javascript`) to the code block, a little tab will appear at the top left corner.
88 |
89 | ````
90 | ```js
91 | // code goes here
92 | ```
93 | ````
94 |
95 | **Code titles:**
96 |
97 | You can display a title (e.g. the file path) above the code block.
98 |
99 | ````
100 | ```jsx title=your-title
101 | // code goes here
102 | ```
103 | ````
104 |
105 | Or without a specific language:
106 |
107 | ````
108 | ```none title=your-title
109 | // code goes here
110 | ```
111 | ````
112 |
113 | **Line highlighting:**
114 |
115 | You can highlight single or multiple (or both) lines in a code block. You need to add a language.
116 |
117 | ````
118 | ```js highlight=2,4-5
119 | const test = 3
120 | const foo = 'bar'
121 | const harry = 'potter'
122 | const hermione = 'granger'
123 | const ron = 'weasley'
124 | ```
125 | ````
126 |
127 | **Show line numbers:**
128 |
129 | If you want to show line numbers you can either globally enable them (see theme options) or on a block-by-block basis. You can also combine that with the other attributes.
130 |
131 | ````
132 | ```js withLineNumbers
133 | // code goes here
134 | ```
135 | ````
136 |
137 | ### Adding content
138 |
139 | #### Adding a new blog post
140 |
141 | New blog posts will be shown on the index page (the three most recent ones) of this theme and on the blog overview page. They can be added by creating MDX files inside `content/posts`. General setup:
142 |
143 | 1. Create a new folder inside `content/posts`
144 | 1. Create a new `index.mdx` file, and add the frontmatter
145 | 1. Add images to the created folder (from step 1) you want to reference in your blog post
146 | 1. Reference an image as your `banner` in the frontmatter
147 | 1. Write your content below the frontmatter
148 | 1. Add a `slug` to the frontmatter to use a custom slug, e.g. `slug: "/my-slug"` (Optional)
149 | 1. Use `defer` to opt-in into Deferred Static Generation (DSG) (optional)
150 |
151 | **Frontmatter reference:**
152 |
153 | ```md
154 | ---
155 | title: Introduction to "Defence against the Dark Arts"
156 | date: 2019-11-07
157 | description: Defence Against the Dark Arts (abbreviated as DADA) is a subject taught at Hogwarts School of Witchcraft and Wizardry and Ilvermorny School of Witchcraft and Wizardry.
158 | defer: false
159 | tags:
160 | - Tutorial
161 | - Dark Arts
162 | banner: ./defence-against-the-dark-arts.jpg
163 | canonicalUrl: https://random-blog-about-curses.com/curses-counter-curses-and-more
164 | ---
165 | ```
166 |
167 | **The fields `description`, `banner`, `defer` and `canonicalUrl` are optional!** If no description is provided, an excerpt of the blog post will be used. If no banner is provided, the default `siteImage` (from `siteMetadata`) is used. If no `canonicalUrl` is provided, it will not be included in the header.
168 |
169 | The `date` field has to be written in the format `YYYY-MM-DD`!
170 |
171 | #### Adding a new page
172 |
173 | Additional pages can be created by placing MDX files inside `contents/pages`, e.g. an "About" or "Contact" page. You'll manually need to link to those pages, for example by adding them to the navigation (in `siteMetadata`). General instructions:
174 |
175 | 1. Create a new folder inside `content/pages`
176 | 1. Create a new `index.mdx` file, and add the frontmatter
177 | 1. Write your content below the frontmatter
178 | 1. Optionally add files/images to the folder you want to reference from the page
179 | 1. Use `defer` to opt-in into Deferred Static Generation (DSG) (optional)
180 |
181 | **Frontmatter reference:**
182 |
183 | ```md
184 | ---
185 | title: About
186 | slug: "/about"
187 | defer: false
188 | ---
189 | ```
190 |
191 | ### Changing the "Hero" text
192 |
193 | To edit the hero text ("Hi, I'm Lupin...), create a file at `src/@lekoarts/gatsby-theme-minimal-blog/texts/hero.mdx` to edit the text.
194 |
195 | ### Changing the "Projects" part
196 |
197 | To edit the projects part below "Latest posts", create a file at `src/@lekoarts/gatsby-theme-minimal-blog/texts/bottom.mdx` to edit the contents.
198 |
199 | ### Extending the footer of the post
200 |
201 | Inside the [`` component](https://github.com/LekoArts/gatsby-themes/blob/main/themes/gatsby-theme-minimal-blog/src/components/post.tsx) there's also a `` component that you can shadow to display elements between the end of the post and the global footer. By default it returns `null`. Create a file at `src/@lekoarts/gatsby-theme-minimal-blog/components/post-footer.jsx` to edit this section. The `` component receives the complete `post` prop that `` also receives.
202 |
203 | ### Change your `static` folder
204 |
205 | The `static` folder contains the icons, social media images and `robots.txt`. Don't forget to change these files, too! You can use [Real Favicon Generator](https://realfavicongenerator.net/) to generate the image files inside `static`.
206 |
207 | ## 🤔 Questions or problems?
208 |
209 | If you have general questions or need help with Gatsby, please go to one of the [support platforms](https://www.gatsbyjs.com/contributing/community/#where-to-get-support) mentioned in Gatsby's documentation. If you have a specific question about this project, you can head to the [GitHub Discussions](https://github.com/LekoArts/gatsby-themes/discussions) of the repository.
210 |
211 | ## 🎓 Learning Gatsby
212 |
213 | Looking for more guidance? Full documentation for Gatsby lives [on Gatsby's website](https://www.gatsbyjs.com/).
214 |
215 | ### Themes
216 |
217 | To learn more about Gatsby themes specifically, I recommend checking out the [theme docs](https://www.gatsbyjs.com/docs/themes/).
218 |
219 | ### General
220 |
221 | - **For most developers, I recommend starting with the [in-depth tutorial for creating a site with Gatsby](https://www.gatsbyjs.com/docs/tutorial/).** It starts with zero assumptions about your level of ability and walks through every step of the process.
222 |
223 | - **To dive straight into code samples, head [to Gatsby's documentation](https://www.gatsbyjs.com/docs/).** In particular, check out the _How-to Guides_ and _Reference_ items in the primary navigation.
224 |
225 | ## 🌟 Supporting me
226 |
227 | Thanks for using this project! I'm always interested in seeing what people do with my projects, so don't hesitate to tag me on [Twitter](https://twitter.com/lekoarts_de) and share the project with me.
228 |
229 | Please star this project, share it on Social Media or consider supporting me on [GitHub Sponsors](https://github.com/sponsors/LekoArts)!
230 |
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | # Change Log
2 |
3 | ## 1.3.16
4 |
5 | ### Patch Changes
6 |
7 | - [`409bba45`](https://github.com/LekoArts/gatsby-themes/commit/409bba451d8637d04de2efc8199fa662a2595c68) Thanks [@LekoArts](https://github.com/LekoArts)! - Remove link to my Patreon page. To simplify things I disabled my Patreon. If you want to support my OSS work, please consider using GitHub sponsors or Ko-fi. Thanks!
8 |
9 | - Updated dependencies [[`409bba45`](https://github.com/LekoArts/gatsby-themes/commit/409bba451d8637d04de2efc8199fa662a2595c68)]:
10 | - @lekoarts/gatsby-theme-minimal-blog@6.2.1
11 |
12 | ## 1.3.15
13 |
14 | ### Patch Changes
15 |
16 | - [#1116](https://github.com/LekoArts/gatsby-themes/pull/1116) [`cf7d5122`](https://github.com/LekoArts/gatsby-themes/commit/cf7d51223a73387f12cac490e2a42f068b0ded26) Thanks [@LekoArts](https://github.com/LekoArts)! - chore(deps): Various dependency updates
17 |
18 | - Updated dependencies [[`cf7d5122`](https://github.com/LekoArts/gatsby-themes/commit/cf7d51223a73387f12cac490e2a42f068b0ded26)]:
19 | - @lekoarts/gatsby-theme-minimal-blog@6.0.5
20 |
21 | ## 1.3.14
22 |
23 | ### Patch Changes
24 |
25 | - Updated dependencies [[`02872400`](https://github.com/LekoArts/gatsby-themes/commit/0287240022c308a7d1fcc8af348ee7d21bca0dd5)]:
26 | - @lekoarts/gatsby-theme-minimal-blog@6.0.0
27 |
28 | ## 1.3.13
29 |
30 | ### Patch Changes
31 |
32 | - Updated dependencies [[`ee969f3`](https://github.com/LekoArts/gatsby-themes/commit/ee969f30037fa99232292014431854773735d0a0)]:
33 | - @lekoarts/gatsby-theme-minimal-blog@5.0.0
34 |
35 | ## 1.3.12
36 |
37 | ### Patch Changes
38 |
39 | - Updated dependencies [[`1598dd6`](https://github.com/LekoArts/gatsby-themes/commit/1598dd660e3ba795b50c4aeb11550806e0b7b6ba)]:
40 | - @lekoarts/gatsby-theme-minimal-blog@4.0.0
41 |
42 | ## 1.3.11
43 |
44 | ### Patch Changes
45 |
46 | - Updated dependencies [[`1785dcf`](https://github.com/LekoArts/gatsby-themes/commit/1785dcfad131ab9270c401e6a3bb450f7cb01288)]:
47 | - @lekoarts/gatsby-theme-minimal-blog@3.0.0
48 |
49 | ## 1.3.10
50 |
51 | ### Patch Changes
52 |
53 | - [`716fde2`](https://github.com/LekoArts/gatsby-themes/commit/716fde287d20e80e834d451825b55af249e0168a) [#579](https://github.com/LekoArts/gatsby-themes/pull/579) Thanks [@LekoArts](https://github.com/LekoArts)! - chore: Add gatsby-plugin-gatsby-cloud to starters
54 |
55 | All notable changes to this project will be documented in this file.
56 | See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
57 |
58 | ## [1.3.9](https://github.com/LekoArts/gatsby-themes/compare/minimal-blog@1.3.8...minimal-blog@1.3.9) (2020-11-11)
59 |
60 | **Note:** Version bump only for package minimal-blog
61 |
62 | ## [1.3.8](https://github.com/LekoArts/gatsby-themes/compare/minimal-blog@1.3.7...minimal-blog@1.3.8) (2020-11-04)
63 |
64 | **Note:** Version bump only for package minimal-blog
65 |
66 | ## [1.3.7](https://github.com/LekoArts/gatsby-themes/compare/minimal-blog@1.3.6...minimal-blog@1.3.7) (2020-11-02)
67 |
68 | **Note:** Version bump only for package minimal-blog
69 |
70 | ## [1.3.6](https://github.com/LekoArts/gatsby-themes/compare/minimal-blog@1.3.5...minimal-blog@1.3.6) (2020-11-01)
71 |
72 | **Note:** Version bump only for package minimal-blog
73 |
74 | ## [1.3.5](https://github.com/LekoArts/gatsby-themes/compare/minimal-blog@1.3.4...minimal-blog@1.3.5) (2020-10-25)
75 |
76 | **Note:** Version bump only for package minimal-blog
77 |
78 | ## [1.3.4](https://github.com/LekoArts/gatsby-themes/compare/minimal-blog@1.3.3...minimal-blog@1.3.4) (2020-10-25)
79 |
80 | **Note:** Version bump only for package minimal-blog
81 |
82 | ## [1.3.3](https://github.com/LekoArts/gatsby-themes/compare/minimal-blog@1.3.2...minimal-blog@1.3.3) (2020-10-25)
83 |
84 | **Note:** Version bump only for package minimal-blog
85 |
86 | ## [1.3.2](https://github.com/LekoArts/gatsby-themes/compare/minimal-blog@1.3.1...minimal-blog@1.3.2) (2020-10-10)
87 |
88 | **Note:** Version bump only for package minimal-blog
89 |
90 | ## [1.3.1](https://github.com/LekoArts/gatsby-themes/compare/minimal-blog@1.3.0...minimal-blog@1.3.1) (2020-09-25)
91 |
92 | **Note:** Version bump only for package minimal-blog
93 |
94 | # [1.3.0](https://github.com/LekoArts/gatsby-themes/compare/minimal-blog@1.2.7...minimal-blog@1.3.0) (2020-09-25)
95 |
96 | ### Features
97 |
98 | - **minimal-blog:** Add Canonical URL support ([#494](https://github.com/LekoArts/gatsby-themes/issues/494)) ([0e9d7ac](https://github.com/LekoArts/gatsby-themes/commit/0e9d7ac04fdf9a7d30cca8c7ccf7565d3955502f))
99 |
100 | ## [1.2.7](https://github.com/LekoArts/gatsby-themes/compare/minimal-blog@1.2.6...minimal-blog@1.2.7) (2020-09-25)
101 |
102 | **Note:** Version bump only for package minimal-blog
103 |
104 | ## [1.2.6](https://github.com/LekoArts/gatsby-themes/compare/minimal-blog@1.2.5...minimal-blog@1.2.6) (2020-09-16)
105 |
106 | **Note:** Version bump only for package minimal-blog
107 |
108 | ## [1.2.5](https://github.com/LekoArts/gatsby-themes/compare/minimal-blog@1.2.4...minimal-blog@1.2.5) (2020-09-10)
109 |
110 | **Note:** Version bump only for package minimal-blog
111 |
112 | ## [1.2.4](https://github.com/LekoArts/gatsby-themes/compare/minimal-blog@1.2.3...minimal-blog@1.2.4) (2020-08-28)
113 |
114 | **Note:** Version bump only for package minimal-blog
115 |
116 | ## [1.2.3](https://github.com/LekoArts/gatsby-themes/compare/minimal-blog@1.2.2...minimal-blog@1.2.3) (2020-08-27)
117 |
118 | **Note:** Version bump only for package minimal-blog
119 |
120 | ## [1.2.2](https://github.com/LekoArts/gatsby-themes/compare/minimal-blog@1.2.1...minimal-blog@1.2.2) (2020-08-27)
121 |
122 | **Note:** Version bump only for package minimal-blog
123 |
124 | ## [1.2.1](https://github.com/LekoArts/gatsby-themes/compare/minimal-blog@1.2.0...minimal-blog@1.2.1) (2020-08-27)
125 |
126 | **Note:** Version bump only for package minimal-blog
127 |
128 | # [1.2.0](https://github.com/LekoArts/gatsby-themes/compare/minimal-blog@1.1.13...minimal-blog@1.2.0) (2020-07-09)
129 |
130 | ### Bug Fixes
131 |
132 | - **minimal-blog:** Use function for SpotifyPlayer example component ([bd2c343](https://github.com/LekoArts/gatsby-themes/commit/bd2c343580c041383a98822de2c622a7d944d93d))
133 |
134 | ### Features
135 |
136 | - Add bundle-analyzer and lazy-load react-live ([#450](https://github.com/LekoArts/gatsby-themes/issues/450)) ([667fd33](https://github.com/LekoArts/gatsby-themes/commit/667fd33ce6af546cf2250af1e22395a26f45d6a2))
137 |
138 | ## [1.1.13](https://github.com/LekoArts/gatsby-themes/compare/minimal-blog@1.1.12...minimal-blog@1.1.13) (2020-07-09)
139 |
140 | **Note:** Version bump only for package minimal-blog
141 |
142 | ## [1.1.12](https://github.com/LekoArts/gatsby-themes/compare/minimal-blog@1.1.11...minimal-blog@1.1.12) (2020-07-04)
143 |
144 | **Note:** Version bump only for package minimal-blog
145 |
146 | ## [1.1.11](https://github.com/LekoArts/gatsby-themes/compare/minimal-blog@1.1.10...minimal-blog@1.1.11) (2020-07-03)
147 |
148 | **Note:** Version bump only for package minimal-blog
149 |
150 | ## [1.1.10](https://github.com/LekoArts/gatsby-themes/compare/minimal-blog@1.1.9...minimal-blog@1.1.10) (2020-07-02)
151 |
152 | **Note:** Version bump only for package minimal-blog
153 |
154 | ## [1.1.9](https://github.com/LekoArts/gatsby-themes/compare/minimal-blog@1.1.8...minimal-blog@1.1.9) (2020-06-11)
155 |
156 | ### Bug Fixes
157 |
158 | - Normalize CSS in themes & examples ([#422](https://github.com/LekoArts/gatsby-themes/issues/422)) ([9a2600c](https://github.com/LekoArts/gatsby-themes/commit/9a2600cc45d0f6729799183116f1b87d3c943749))
159 |
160 | ## [1.1.8](https://github.com/LekoArts/gatsby-themes/compare/minimal-blog@1.1.7...minimal-blog@1.1.8) (2020-06-11)
161 |
162 | ### Bug Fixes
163 |
164 | - **gatsby-theme-minimal-blog:** font-size on mobile iOS ([#421](https://github.com/LekoArts/gatsby-themes/issues/421)) ([ab65ecc](https://github.com/LekoArts/gatsby-themes/commit/ab65ecceaabefc0f2f77c6f9602280a7214c34d1))
165 |
166 | ## [1.1.7](https://github.com/LekoArts/gatsby-themes/compare/minimal-blog@1.1.6...minimal-blog@1.1.7) (2020-06-08)
167 |
168 | **Note:** Version bump only for package minimal-blog
169 |
170 | ## [1.1.6](https://github.com/LekoArts/gatsby-themes/compare/minimal-blog@1.1.5...minimal-blog@1.1.6) (2020-05-29)
171 |
172 | **Note:** Version bump only for package minimal-blog
173 |
174 | ## [1.1.5](https://github.com/LekoArts/gatsby-themes/compare/minimal-blog@1.1.4...minimal-blog@1.1.5) (2020-05-12)
175 |
176 | **Note:** Version bump only for package minimal-blog
177 |
178 | ## [1.1.4](https://github.com/LekoArts/gatsby-themes/compare/minimal-blog@1.1.3...minimal-blog@1.1.4) (2020-05-04)
179 |
180 | **Note:** Version bump only for package minimal-blog
181 |
182 | ## [1.1.3](https://github.com/LekoArts/gatsby-themes/compare/minimal-blog@1.1.2...minimal-blog@1.1.3) (2020-05-02)
183 |
184 | **Note:** Version bump only for package minimal-blog
185 |
186 | ## [1.1.2](https://github.com/LekoArts/gatsby-themes/compare/minimal-blog@1.1.1...minimal-blog@1.1.2) (2020-05-02)
187 |
188 | **Note:** Version bump only for package minimal-blog
189 |
190 | ## [1.1.1](https://github.com/LekoArts/gatsby-themes/compare/minimal-blog@1.1.0...minimal-blog@1.1.1) (2020-04-28)
191 |
192 | **Note:** Version bump only for package minimal-blog
193 |
194 | # [1.1.0](https://github.com/LekoArts/gatsby-themes/compare/minimal-blog@1.0.17...minimal-blog@1.1.0) (2020-04-27)
195 |
196 | ### Features
197 |
198 | - Update theme-ui to v0.3.x ([#371](https://github.com/LekoArts/gatsby-themes/issues/371)) ([67a05ac](https://github.com/LekoArts/gatsby-themes/commit/67a05ac3e1deaddfe38591739e7f50f56d49d109)), closes [/theme-ui.com/migrating#v03](https://github.com//theme-ui.com/migrating/issues/v03) [#262](https://github.com/LekoArts/gatsby-themes/issues/262)
199 |
200 | ## [1.0.17](https://github.com/LekoArts/gatsby-themes/compare/minimal-blog@1.0.16...minimal-blog@1.0.17) (2020-04-24)
201 |
202 | **Note:** Version bump only for package minimal-blog
203 |
204 | ## [1.0.16](https://github.com/LekoArts/gatsby-themes/compare/minimal-blog@1.0.15...minimal-blog@1.0.16) (2020-04-24)
205 |
206 | **Note:** Version bump only for package minimal-blog
207 |
208 | ## [1.0.15](https://github.com/LekoArts/gatsby-themes/compare/minimal-blog@1.0.14...minimal-blog@1.0.15) (2020-04-13)
209 |
210 | **Note:** Version bump only for package minimal-blog
211 |
212 | ## [1.0.14](https://github.com/LekoArts/gatsby-themes/compare/minimal-blog@1.0.13...minimal-blog@1.0.14) (2020-04-13)
213 |
214 | **Note:** Version bump only for package minimal-blog
215 |
216 | ## [1.0.13](https://github.com/LekoArts/gatsby-themes/compare/minimal-blog@1.0.12...minimal-blog@1.0.13) (2020-04-12)
217 |
218 | **Note:** Version bump only for package minimal-blog
219 |
220 | ## [1.0.12](https://github.com/LekoArts/gatsby-themes/compare/minimal-blog@1.0.11...minimal-blog@1.0.12) (2020-04-12)
221 |
222 | **Note:** Version bump only for package minimal-blog
223 |
224 | ## [1.0.11](https://github.com/LekoArts/gatsby-themes/compare/minimal-blog@1.0.10...minimal-blog@1.0.11) (2020-04-12)
225 |
226 | **Note:** Version bump only for package minimal-blog
227 |
228 | ## [1.0.10](https://github.com/LekoArts/gatsby-themes/compare/minimal-blog@1.0.9...minimal-blog@1.0.10) (2020-04-01)
229 |
230 | **Note:** Version bump only for package minimal-blog
231 |
232 | ## [1.0.9](https://github.com/LekoArts/gatsby-themes/compare/minimal-blog@1.0.8...minimal-blog@1.0.9) (2020-03-31)
233 |
234 | **Note:** Version bump only for package minimal-blog
235 |
236 | ## [1.0.8](https://github.com/LekoArts/gatsby-themes/compare/minimal-blog@1.0.7...minimal-blog@1.0.8) (2020-03-04)
237 |
238 | **Note:** Version bump only for package minimal-blog
239 |
240 | ## [1.0.7](https://github.com/LekoArts/gatsby-themes/compare/minimal-blog@1.0.6...minimal-blog@1.0.7) (2020-03-04)
241 |
242 | **Note:** Version bump only for package minimal-blog
243 |
244 | ## [1.0.6](https://github.com/LekoArts/gatsby-themes/compare/minimal-blog@1.0.5...minimal-blog@1.0.6) (2020-02-29)
245 |
246 | **Note:** Version bump only for package minimal-blog
247 |
248 | ## [1.0.5](https://github.com/LekoArts/gatsby-themes/compare/minimal-blog@1.0.4...minimal-blog@1.0.5) (2020-02-29)
249 |
250 | ### Bug Fixes
251 |
252 | - Add table styles to minimal-blog ([6e3d750](https://github.com/LekoArts/gatsby-themes/commit/6e3d750b01d0398fc2dd5b3d043754389a0f46ff))
253 |
254 | ## [1.0.4](https://github.com/LekoArts/gatsby-themes/compare/minimal-blog@1.0.3...minimal-blog@1.0.4) (2020-02-27)
255 |
256 | **Note:** Version bump only for package minimal-blog
257 |
258 | ## [1.0.3](https://github.com/LekoArts/gatsby-themes/compare/minimal-blog@1.0.2...minimal-blog@1.0.3) (2020-02-27)
259 |
260 | **Note:** Version bump only for package minimal-blog
261 |
262 | ## [1.0.2](https://github.com/LekoArts/gatsby-themes/compare/minimal-blog@1.0.1...minimal-blog@1.0.2) (2020-02-16)
263 |
264 | **Note:** Version bump only for package minimal-blog
265 |
266 | ## [1.0.1](https://github.com/LekoArts/gatsby-themes/compare/minimal-blog@1.0.0...minimal-blog@1.0.1) (2020-01-23)
267 |
268 | **Note:** Version bump only for package minimal-blog
269 |
270 | # [1.0.0](https://github.com/LekoArts/gatsby-themes/compare/minimal-blog@0.2.1...minimal-blog@1.0.0) (2020-01-23)
271 |
272 | ### Features
273 |
274 | - Change config format on minimal-blog theme ([#234](https://github.com/LekoArts/gatsby-themes/issues/234)) ([bdeb670](https://github.com/LekoArts/gatsby-themes/commit/bdeb670797da5faa2d4084c3c128f0e38dbbf582))
275 |
276 | ### BREAKING CHANGES
277 |
278 | - The navigation and externalLinks options are no longer on the siteMetadata but now in the theme options itself.
279 |
280 | ## [0.2.1](https://github.com/LekoArts/gatsby-themes/compare/minimal-blog@0.2.0...minimal-blog@0.2.1) (2020-01-17)
281 |
282 | **Note:** Version bump only for package minimal-blog
283 |
284 | # [0.2.0](https://github.com/LekoArts/gatsby-themes/compare/minimal-blog@0.1.8...minimal-blog@0.2.0) (2020-01-07)
285 |
286 | ### Features
287 |
288 | - **gatsby-theme-minimal-blog-core:** Custom slug for blog posts via frontmatter ([05cff1e](https://github.com/LekoArts/gatsby-themes/commit/05cff1ec0bcd2ba2fb3b7cfbb8a55f626ab9abd8)), closes [#217](https://github.com/LekoArts/gatsby-themes/issues/217)
289 |
290 | ## [0.1.8](https://github.com/LekoArts/gatsby-themes/compare/minimal-blog@0.1.7...minimal-blog@0.1.8) (2020-01-06)
291 |
292 | ### Bug Fixes
293 |
294 | - **gatsby-theme-minimal-blog:** Styling fixes ([240571e](https://github.com/LekoArts/gatsby-themes/commit/240571e39a4b12d6b6585c89062579dd2dc03a0f))
295 |
296 | ## [0.1.7](https://github.com/LekoArts/gatsby-themes/compare/minimal-blog@0.1.6...minimal-blog@0.1.7) (2020-01-04)
297 |
298 | **Note:** Version bump only for package minimal-blog
299 |
300 | ## [0.1.6](https://github.com/LekoArts/gatsby-themes/compare/minimal-blog@0.1.5...minimal-blog@0.1.6) (2020-01-03)
301 |
302 | **Note:** Version bump only for package minimal-blog
303 |
304 | ## [0.1.5](https://github.com/LekoArts/gatsby-themes/compare/minimal-blog@0.1.4...minimal-blog@0.1.5) (2019-12-31)
305 |
306 | **Note:** Version bump only for package minimal-blog
307 |
308 | ## [0.1.4](https://github.com/LekoArts/gatsby-themes/compare/minimal-blog@0.1.3...minimal-blog@0.1.4) (2019-12-03)
309 |
310 | **Note:** Version bump only for package minimal-blog
311 |
312 | ## [0.1.3](https://github.com/LekoArts/gatsby-themes/compare/minimal-blog@0.1.2...minimal-blog@0.1.3) (2019-12-01)
313 |
314 | **Note:** Version bump only for package minimal-blog
315 |
316 | ## [0.1.2](https://github.com/LekoArts/gatsby-themes/compare/minimal-blog@0.1.1...minimal-blog@0.1.2) (2019-11-27)
317 |
318 | **Note:** Version bump only for package minimal-blog
319 |
320 | ## [0.1.1](https://github.com/LekoArts/gatsby-themes/compare/minimal-blog@0.1.0...minimal-blog@0.1.1) (2019-11-26)
321 |
322 | **Note:** Version bump only for package minimal-blog
323 |
324 | # [0.1.0](https://github.com/LekoArts/gatsby-themes/compare/minimal-blog@0.0.4...minimal-blog@0.1.0) (2019-11-25)
325 |
326 | ### Features
327 |
328 | - **gatsby-theme-minimal-blog:** Lazy load code component ([#167](https://github.com/LekoArts/gatsby-themes/issues/167)) ([fbfedee](https://github.com/LekoArts/gatsby-themes/commit/fbfedee5988636d2e4a3a2ea817e8bdf8628d4f5)), closes [#161](https://github.com/LekoArts/gatsby-themes/issues/161) [#163](https://github.com/LekoArts/gatsby-themes/issues/163) [#164](https://github.com/LekoArts/gatsby-themes/issues/164) [#165](https://github.com/LekoArts/gatsby-themes/issues/165) [#166](https://github.com/LekoArts/gatsby-themes/issues/166)
329 |
330 | ## [0.0.4](https://github.com/LekoArts/gatsby-themes/compare/minimal-blog@0.0.3...minimal-blog@0.0.4) (2019-11-16)
331 |
332 | **Note:** Version bump only for package minimal-blog
333 |
334 | ## [0.0.3](https://github.com/LekoArts/gatsby-themes/compare/minimal-blog@0.0.2...minimal-blog@0.0.3) (2019-11-16)
335 |
336 | **Note:** Version bump only for package minimal-blog
337 |
338 | ## 0.0.2 (2019-11-16)
339 |
340 | ### Features
341 |
342 | - Add gatsby-theme-minimal-blog ([#151](https://github.com/LekoArts/gatsby-themes/issues/151)) ([344a52c](https://github.com/LekoArts/gatsby-themes/commit/344a52c))
343 |
--------------------------------------------------------------------------------
/content/posts/hiring/Hiring at startups.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: A delightfully unstructured guide to hiring
3 | date: 2019-11-07
4 | description: A winding thought dump on hiring at startups. More of a repository than anything.
5 | defer: false
6 | tags:
7 | - Hiring
8 | - Scaleups
9 | canonicalUrl: https://xx
10 | ---
11 |
12 | Hiring at scale ups is a unique beast. You never have enough money to offer people. You never know truly if you should be hiring. The advice is conflicting - don't hire too early! Hire people who have done it before! Hire generalists! Hire specialists! Don't go for big companies!
13 |
14 | My over-arching principles, having fucked up enough times
15 | - Hire later than you think. Always have an org chart with vacancies that you challenge often
16 | - Everyone you hire should be 50% better than the people you have
17 | - Optimise for agency & outcome
18 | - Sell sell sell - find the way of getting the top 10% of talent, this will not be easy
19 |
20 | This is a bit of a thought dump, that will continue to evolve. Feel free to send feedback directly to me. I'll continue to fractal the doc out, with more detailed guides or thought dumps
21 |
22 | ## Hiring new peeps
23 | Smart and Street define an A player as “a candidate who has at least a 90 percent chance of achieving a set of outcomes that only the top 10 percent of possible candidates could achieve. We only want A-Players most of the time.
24 |
25 | “Every person hired should be better than 50 percent of those currently in similar roles.” - Amazon
26 |
27 | My version of the interview process to find A-Players looks a bit like this
28 |
29 | 
30 | Roughly
31 | 1. Define the JD and competencies with surgical precision, sell the need internally
32 | 2. Find the candidates, work out your unfair advantage to fill top of the funnel
33 | 3. Run 4 interviews + references to select. One extra technical interview with best-in-class, use a contractor if needed
34 | 4. Close the buggers
35 | 5. Onboard smoothly, get them stoked
36 |
37 | If it's a technical role you haven't hired before, then find someone you trust to do a final stage.
38 |
39 | Clearbit say:
40 |
41 | One hire should require approximately 20 - 50 phone screens and approximately 50 hours of investment from Clearbit. This does not include sourcing candidates! For each stage of the screening process, excluding sourcing:
42 |
43 | 35 candidates * 0.5 hours = 18 hours
44 | 5.5 candidates * 2 hours = 11 hours
45 | 2.5 candidates * 3 hours = 8 hours
46 | 2 candidates * 4 hours = 8 hours
47 | 1.5 candidates * 5 hours = 7.5 hours
48 |
49 |
50 | I'm going to go through each stage, based on entirely how I do this. Remember, finding and persuading people to join your dream is as important as anything you’ll do- if you can’t persuade people you’ll pay it’s gonna be a long road persuading people to pay you…
51 |
52 | ## Writing the JD and internal proposal
53 |
54 | Don't rush this y'all. If this is a two page monstrosity copied off monster.com you will get shit applicants. Do you know exactly what the role is? Don't worry if there's uncertainty - you at least need to be clear about the uncertainty if that's the case. It's rare you won't know what they need to do in the first six months - focus on that.
55 |
56 | My version of this is:
57 | - The impact you will have and what success looks like in the first 6+ months.
58 | - The skills you need to be great at this job and will be evaluated on.
59 | - This is what we value.
60 |
61 | Try to avoid a dry list of all the day to day stuff. If you feel comfortable sharing actual KPIs and where they should be, do it.
62 |
63 | How do we do this?
64 | - Collect similar JDs from competitors as inspiration
65 | - Brainstorming 10-12 competencies that would make someone shine in that particular role — like analytical skills, relationship-building stakeholder management skills and proactivity. Narrow that list down to five competencies, which will be included in the job description and will serve as the basis of their hiring process. These should line up with evaluating performance.
66 |
67 | The job description is your first pitch to potential hires. Think about tone of voice, sincerity etc. Don't sound like a corporate drone
68 |
69 | _what are the strongest predictors of future job performance?_
70 |
71 | Useful links
72 | - https://www.notion.so/templates/job-description-repository?ref=review.firstround.com
73 | - https://hbr.org/2020/03/write-a-job-description-that-attracts-the-right-candidate
74 |
75 | ## Finding the talent
76 |
77 | 1. Referrals from Your Professional and Personal Networks. Create a list of the ten most talented people you know and commit to speaking with at least one of them per week for the next ten weeks. At the end of each conversation, ask, “Who are the most talented people you know?” Continue to build your list and continue to talk with at least one person per week.
78 |
79 | 2. Referrals from Your Employees. Add sourcing as an outcome on every scorecard for your team. For example, “Source five A Players per year who pass our phone screen.” Encourage your employees to ask people in their networks, “Who are the most talented people you know whom we should hire?” Offer a referral bonus. Can also go further and do it for second order contacts, or even add it to the JD. Needs to be punchy enough - I've used £100 for passing phone screen, and £1,000 if they make it through probation. Be careful about unintended consequences here - ie pressurising hiring managers.
80 |
81 | 3. Hiring Recruiters. Use the method described in this book to identity and hire A Player recruiters. Build a scorecard for your recruiting needs, and hold the recruiters you hire accountable for the items on that scorecard. Invest time to ensure the recruiters understand your business and culture.
82 |
83 | 4. Networks - try to get people posting in communities e.g. Operations Nation, Brand Hackers
84 |
85 | 5. Cold outreach - just get yourself out there. Linkedin messaging. Make sure you've shared the post on Linkedin, get people to repost it and also get the brand to repost it. Leverage senior people too - a message from the GM or CEO will probaby get a response...
86 |
87 | There's a great [Presentation](https://drive.google.com/file/d/13QyEIy3iidWxRNIFUd94W7cqz-8E0BTS/view) by Aline Lerner that I'll summarise in a separate post - but cold outreach is hard, but important.
88 |
89 | **Linked in Recruiter**
90 | Pay for Linkedin Recruiter. Ideally give hiring managers access, as much better coming from them than talent team. Have a quick session on how to use it effectively, leverage account managers. Look at competitors, and think about typical archetypes for where success has come from.
91 |
92 | E.g. for growth managers, I noticed that a lot of managers came from social agency side, so I created a list of all London based agencies, and used as filter words.
93 |
94 | **For outbound candidates:** When you contact prospective candidates, think of it like a cold outreach sales email. Why should they care? A great person will be getting all sorts of emails like this. Start with why you care about them, and the benefit for them. Try to tie it into something they've written, or done. The more senior the person writing the email the better.
95 |
96 | Keep it short. The longer it is, the more desperate you can look, and the more power you give up. Aim to keep your message shorter than 150 words. Copy wise - use you or your. Better say - your skills are perfect for doing xx. Don;t bother with a long intro for you, unless it's to highlight some overlap/ connection. Don't be generic on compliments ("I'm impressed").
97 |
98 | **For inbound candidates:** “When you get resumes or emails about jobs, you should have a 100% response rate. You really should. There's no excuse when somebody takes the time to reach out to your company for not taking the time to respond,” Feng says. Your messages can be very simple, just a couple of lines even. But if recruiting is sales, then your response rates should be as consistent as your sales reps.’
99 |
100 | **Other tips and tricks**
101 | I've found that actually keeping a top of funnel healthy for key positions can reap dividends. Finding essays to send, keeping Linkedin messages or doing coffees regularly can make it easier down the road when you need to grow fast. This does get hard though at scale :)
102 |
103 | You can also be quite cheeky when you're a startup and heavily flatter people. Asking slightly more senior people for feedback on the JD and the org can either unlock them as a candidate, or they may start recommending people they know. Either way is a win!
104 |
105 | **Employee Branding**
106 | This warrants an entire other post, as Getir did not do this well. The approach also differs massively between different types of roles. E.g. engineers love a good technical blog, or presence at events. Glassdoor can be important. Employee engagement is key here. It's a huge topic, and very hard to fix if it's broken. You can still hire well if this is fucked, but by god it's hard & you'll have to often over-pay.
107 |
108 | Remember the classic Steve Jobs quote "A players hire A players, but B players hire C players and C players hire D players. It doesn’t take long to get to Z players. The trickle-down effect causes bozo explosions in companies." Quality compounds.
109 |
110 | On a more pragmatic note, make sure your Linkedin page is updated and there are regular posts. Think about events, conferences, videos. Be VISIBLE
111 |
112 | One way of thinking about this is - what is our unfair advantage that allows us to get better talent for less money? There are two:
113 | - I value different things to the market
114 | - Some small subset of the market values me more than competitors
115 |
116 | On the first one (which sounds a bit weird), there's a great (TW very technical) piece by [Erik B](https://erikbern.com/2020/01/13/how-to-hire-smarter-than-the-market-a-toy-model.html) which boils down very simply to the idea that "if companies are systematically putting a premium on something, then bet against them!... I'm not saying you should think of it as a bad thing that someone is coming from a fancy school. Everything else equals, it's typically a good thing! What I'm saying is that if you're hiring, then you will be _more successful going after candidates that the market undervalues._"
117 |
118 | ![[Pasted image 20240403144051.png]]
119 |
120 | This can be focussing on people that didn't go to fancy schools, need a visa, are under-represented, post family breaks etc.
121 |
122 | On the second point, you should treat it like your customer brand. Much like a startup in its early days needs to find a wedge and focus on a key customer persona, there is value in doing the same with employees. Whether it's creating a cult-like atmosphere that attracts certain types, a mission that people buy in to, an equity process that promises wealth, an unusual application process - ideally you don't just be meh. Sometimes it can just be a super-personable founder selling.
123 |
124 | [TO be written - ATS setup, Linkedin jobs, boosting roles, referral schemes]
125 |
126 | Right, so you have the top-of-the funnel sorted
127 |
128 | Now you need to filter.
129 |
130 | If this is a new role for you to hire for, or are relatively new to hiring, then the first thing you need to do is a) speak to as many applicants as you can and b) speak to the best people in the industry. This is a relatively unique problem for startups and scale ups and not one I’ve seen addressed honestly much.
131 |
132 | A) you need to dial in to who’s in the market and get your eye in. You don’t want to be hiring the first alright person you meet. You also don’t want to be slow, so tee up the first 20 people quickly and put the time aside. This will be hard. Don’t skip it. Just chat to everyone as the first interviewer with a relatively open mind. Take copious notes. Stop after 20 and test if your standards/ competencies/ JD is correct
133 |
134 | B)do you know what good looks like? If you’re in a startup and not hiring a job you’ve done before, probably not. URGENTLY use your network to find the best 5 people in industry you have access to and have coffee. Calibrate yourself. If you can get them to help with a 15 min chat on a candidate, or to do an interview for you and with you on the call that’s great
135 |
136 | # 2 The Interview
137 | ## 2a Screening Interviews
138 |
139 | Short, phone-based interview designed to clear out B and C Players from your roster of candidates as quickly as possible. Typical questions:
140 | - What are your career goals?
141 | - What are you really good at professionally?
142 | - What are you not good at or interested in doing professionally?
143 | - Who were your last five bosses, and how will they each rate your performance on a 1–10 scale when we talk to them?
144 | - Check availability and RTW?
145 | - Why do you want to join Getir?
146 | - What do yo know about Getir? (Wouldn’t expect them to have tried, but some research important)
147 | - Ask 2-3 hygiene competency questions according to scorecard and check if min standard/ has experience
148 |
149 | Review the scorecard before the call to refresh your memory. Then begin the call by setting expectations, saying something like this: “I am really looking forward to our time together. Here’s what I’d like to do. I’d like to spend the first twenty minutes of our call getting to know you. After that, I am happy to answer any questions you have so you can get to know us. Sound good?” Make sure to leave at least 10 min at the end.
150 |
151 | If it's a talent manager then mostly about suitability. If a hiring manager, I like to try and push to see how intellectually curious they are - if I can push them and have a fun convo on something then that's a good sign.
152 |
153 | Go through and immediately reject any absolute no-gos. It's easier that way, and keep your pipeline clean. Rather oddly, I like to have a physical line in my notebook with no on the left and rockstar on the right. I put an x at the beginning, and then scribble arrows on the axis through the chat with garbled notes on why it moves. Quite often I start on the left and then have huge jumps through the discussion.
154 |
155 | Take detailed notes here, and think about how to feed them through. Take care not to miss people here who don't fit your perfect profile but shine through, or even might be suitable for another role. It's best to prime talent team to also pass on anyone that just seems awesome, or spiky in some dimension, even if it doesn't fit the bill.
156 |
157 | ## Why Structured Interviews?
158 |
159 | What are the strongest predictors of future job performance? Lots of reviews to say interviews are pretty crap at this!
160 |
161 | We should try to pick interviews that are proxies that have _little correlation with each other to reduce the aggregate error. The main remedy is to have a structured interview process that ask different things (or test the same things in different ways)
162 |
163 | Best way is three interviews
164 |
165 | - ‘Who’ interviews - run through of CV, digging deep
166 | - ‘Focus’ (competency interview)
167 | - Technical case study interview (prepared and in-session)
168 |
169 | The pre-thinking on the questions, the scorecard, the outcomes, means you ask the right questions at the right time, and reduce the noise in your approach
170 |
171 | I loved this from [Erik at Modal again](https://erikbern.com/2018/05/02/interviewing-is-a-noisy-prediction-problem) that posits interviewing as a noisy prediction problem. "_knowing who's going to be good at their job_ is an _extremely hard problem._ The correlation between who _did really well in the interview process_ and who _performs really well at work_ is really weak... I've started thinking about this process as inherent noise reduction problem. Interviewing should be thought of as information gathering."
172 |
173 | 1. Intelligence tests seem to be the strongest predictors of job performance (although possibly offensive, and probably [illegal in the US](https://en.wikipedia.org/wiki/Griggs_v._Duke_Power_Co.))
174 | 2. … followed by structured interviews
175 | 3. … followed by unstructured interviews (which have very little predictive power).
176 |
177 | The second big suggestion Erik has, is to make your interviews have little correlation with each other, to decrease your aggregate error. Given how hard it is to work out what type of interview or task predicts future job behaviour, you should try and cover a lot.
178 |
179 | Third interesting point (which should really go in a separate section) is that Google can hire for the Expected value, so can be more risky, whereas a startup - where a bad hire can be much worse, needs to cover more topics and be more cautious
180 |
181 | He also references that structured interviews help avoid confirmation bias - there's a tendency to go easier on people you get on with. I think this is very true. Especially if you are bulk interviewing you often enter a fugue-like state, and it's easy to get lazy.
182 |
183 | BCG was the extreme version of this approach. It was essentially a huge sausage machine of an interview process, and significant effort put into checking data on who did best, even down to who's scores were most predictive. I was bang in the middle, in case you're wondering. Disappointing really.
184 |
185 | ## The Who Interview
186 |
187 | Unveil patterns in a candidate’s career history. It is the most reliable predictor of performance that consists in a chronological walkthrough of a person’s career.
188 |
189 | Typical questions
190 |
191 | 1. What were you hired to do?
192 | 2. What accomplishments are you most proud of?
193 | 3. What were some low points during that job?
194 | 4. Who were the people you worked with?
195 | 5. Why did you leave that job?
196 | 6. How would you rate the team you inherited on an A, B, C scale? What changes did you make? Did you hire anybody? Fire anybody? How would you rate the team when you left it on an A, B, C scale?
197 | 7. What are your biggest accomplishments in this area (choose a competency) during your career?
198 | 8. What are your insights into your biggest mistakes and lessons learned in this area?
199 | 9. Why did you move from x to y? What was your mindset at that point?
200 |
201 | Interrupting — You have to interrupt the candidate. DON’T say, “Wait, wait, wait. Let me stop you there. Can we get back on track?” DO smile broadly, match their enthusiasm level, and use reflective listening to get them to stop talking without demoralising them.
202 |
203 | The Three P’s — The three P’s are questions you can use to clarify how valuable an accomplishment was in any context. The questions are: (1) How did your performance compare to the previous year’s performance? (2) How did your performance compare to the plan? (3) How did your performance compare to that of peers?
204 |
205 | Push Versus Pull — People who perform well are generally pulled to greater opportunities. People who perform poorly are often pushed out of their jobs. Do not hire anybody who has been pushed out of 20 percent or more of their jobs. Push: “It was mutual.” “It was time for me to leave.” “My role shrank.” Etc. Pull: “My biggest client hired me.” “My old boss recruited me to a bigger job.” “The CEO asked me to take a double promotion.” Etc.
206 |
207 | ## The Focussed Interview
208 |
209 | 3 . The focused interview is meant to gather additional specific information about the candidate. It focuses on one (or several) of the outcomes and competencies on the scorecard:
210 |
211 | - What were your biggest accomplishments in this area?
212 | - What are your insights into your biggest mistakes and lessons learned in this area?
213 | - 1. The purpose of this interview is to talk about ______ (Fill in the blank with a specific outcome or competency such as the person’s experience selling to new customers, building and leading a team, creating strategic plans, acting aggressively and persistently, etc.)
214 |
215 | After each answer, the interviewer should get curious and ask What? How? Tell me more!
216 |
217 | - I find questions like “what are your weaknesses” or “what is your superpower” to be silly. A good answer just means the candidate is verbal and can ramble on the spot. It favors verbal extroverted people without reflecting on their actual skills.
218 |
219 | Best Practice says 3 45min interviews here. I think this is overkill. Ideally 1 45 min interview, and then 15 minutes at the end of the other two technical sessions.
220 |
221 | Personally I like to focus on AGENCY, SMARTS & TEAMWORK as the main lot
222 |
223 | **[https://erikbern.com/2018/05/02/interviewing-is-a-noisy-prediction-problem](https://erikbern.com/2018/05/02/interviewing-is-a-noisy-prediction-problem)**
224 |
225 | I would say you could do 1 and cover 2-3 competencies
226 |
227 | ****
228 |
229 | ## Technical Interviews/ Case studies
230 |
231 | For roles requiring technical speciality, important to check specific skills and proven experience. At Getir, we do this through a case study, linked to the scoreboard.
232 |
233 | For most roles, this will require
234 |
235 | - Structuring (problem solving)
236 | - Analysis - mostly in Excel, or SQL/Python if more technical
237 | - Presenting back
238 |
239 | The homework should take 2-3 hours maximum to complete. You only have 45 min to chat, so keep it short.
240 |
241 | In the session, you should throw in one curve ball to test adaptability and double check it wasn’t someone else helping them ;)
242 |
243 | [Let’s build up a repository]
244 |
245 | If you’re trying to find someone technical and you’re not, you need to find a way of testing that. You might bring someone in, or lean heavily on references or referrals.
246 |
247 | **
248 | Consider this framing for designing a practical exercise: What type of skill do you not want to teach to a person you hire for this job?
249 |
250 | ## Making the decision
251 | **
252 |
253 | - Ideally interview everyone, input scores separately, then sit down in a group & discuss
254 | - Try and plot people on a Skill- Will graph - are they capable of doing the job according to the scorecard, and do they bring the right competencies?
255 | - When you believe there is a 90 percent or better chance the candidate can achieve an outcome based on the data you gathered during the interview, rate him or her an A for that outcome. B 70%, C 50%.
256 | - Next do the same for the competencies
257 |
258 | "https://twitter.com/sama/status/792823320441786368?lang=en"
259 | ![[Pasted image 20240403095336.png]]
260 |
261 | You are looking for an attitude and perspective that will improve your team. Someone that will add something this is missing from your current team. you should never hire to fill the role. A lot of weak hires are from when a candidate doesn’t have any obvious issues. They seem pleasant enough, and people don’t see any reason why they shouldn’t hire them. But they didn’t wow anyone. Reject non A-Players
262 |
263 |
264 | Red flags from candidates
265 | - Basic facts change between interviews
266 | - When the candidate does not mention past failures
267 | - When the candidate speaks badly of previous bosses
268 | - When the candidate cannot explain his / her job moves
269 | - When the candidate blames others for his / her lack of success in something
270 | - Candidate never used your product, or looked at website( more and more important as the process contjnues)
271 | - Candidate exaggerates his or her answers.
272 | - Candidate takes credit for the work of others
273 | - For managerial hires, candidate has never had to hire or fire anybody.
274 | - Candidate seems more interested in compensation and benefits than in the job itself.
275 | - Candidate tries too hard to look like an expert
276 | - Candidate is self-absorbed.
277 |
278 | ## Typical mistakes
279 |
280 | Typical errors that happen by an interviewer
281 |
282 | - Are unclear about what’s needed in a job, or dishonest about the fluidity
283 | - Have a weak flow of candidates; complaining about quality without thinking abour top of funnel
284 | - Do not trust their ability to pick out the right candidate from a group of similar-looking candidates;
285 | - Lose candidates they really want to join their team.
286 | - Hiring the B/C player because of speed/ need
287 | - Not going quick enough - either to start hiring, to make decisions, or to close them out- linked is just not being organised or on top of people
288 | -
289 |
290 |
291 |
292 | ## Typical screw ups with interviewing
293 |
294 | 1. The Art Critic — Hiring people based on gut instinct
295 | 2. The Sponge — A common approach among busy managers is to let everybody interview a candidate, with the risk of interviewers asking candidates exactly the same questions.
296 | 3. The Prosecutor — Many managers act like the prosecutors they see on TV and aggressively question candidates, attempting to trip them up with trick questions and logic problems.
297 | 4. The Suitor — Rather than rigorously interviewing a candidate, some managers spend all of their energy selling the applicant on the opportunity. Suitors are more concerned with impressing than assessing their capabilities.
298 | 5. The Trickster — Then there are the interviewers who use gimmicks to test for certain behaviours. They might throw a wad of paper on the floor, for example, to see if a candidate is willing to clean it up.
299 | 6. The Animal Lover — Many managers hold on stubbornly to their favourite pet questions — questions they think will reveal something uniquely important about a candidate.
300 | 7. The Chatterbox — This technique has a lot in common with the “la-di-da” interview. The conversation usually goes something like this: “How about them Yankees! Man, the weather is rough this time of year. You grew up in California? So did I!”
301 | 8. The Psychological and Personality Tester — Asking a candidate a series of bubble-test questions like “Do you tease small animals?” or “Would you rather be at a cocktail part or the library on a Friday night?” is not useful (although both are actual questions on popular psychology tests), and it’s certainly not predictive of success on the job.
302 | 9. The Aptitude Tester — Tests can help managers determine whether has the right aptitude for a specific role, such as persistence for a business development position, bit they should never become the sole determinant in a hiring decision.
303 | 10. The Fortune-Teller — Just like a fortune-teller looking in a crystal ball to predict the future, some interviewers like into the future regarding the job at hand by asking hypothetical questions: “What would you do? How would you do it? Could you do it?”
304 |
305 | ## Selling through the process
306 |
307 | - Fit ties together the company’s vision, needs, and culture with the candidate’s goals, strengths, and values. “Here is where we are going as a company. Here is how you fit in?”
308 | - Family takes into account the broader trauma of changing jobs. “What can we do to make this change as easy as possible for your family?”
309 | - Freedom is the autonomy the candidate will have to make his or her own decisions. “I will give you ample freedom to make decisions, and I will not micromanage you.”
310 | - Fortune reflects the stability of your company and the overall financial upside. “If you accomplish your objectives, you will likely make [compensation amount] over the next five years.”
311 | - Fun describes the work environment and personal relationships the candidate will make. “We like to have a lot of fun around here. I think you will find this is a culture you will really enjoy.”
312 |
313 | Or Lenny's version https://www.lennysnewsletter.com/p/hiring-your-early-team-b2b
314 | 1. **Captivating vision**—Make it easy for candidates to visualize what you are building toward and to feel like their work will be meaningful.
315 | 2. **A++ early team**—The best talent attracts the best talent.
316 | 3. **Put in the time—**Be prepared to commit 50 to 100 hours for each hire you make.
317 | 4. **Grow your network**—It’ll be an easier sell if they know you (or know someone who knows you).
318 | 5. **Love bomb—**Go the extra mile when trying to close a candidate:
319 |
320 | Clearbit version
321 | The five 'fs'#
322 | - Fit (talents and strengths match to opportunity and role)
323 | - Family support for joining company
324 | - Freedom to make decisions
325 | - Fortune and glory
326 | - Fun
327 |
328 |
329 | - Keep notes for potential A players about what might interest them and how to frame the offer
330 | - Think about the whole process from offer to to 100th day as a funnel. It’s your job to minimise drop off by prepping and going fasssst once you’ve made the decision
331 | - If senior hires, set up a chat with an investor, or a recent leaver
332 |
333 | - Go fast with an offer, and follow up on offers to get to signature. A delay is often what it seems
334 | - Try and push for quick start - ride the momentum. If not, check in every couple of weeks, send essays, books etc
335 | - Create a strong onboarding process and over-invest in the first month
336 |
337 | If they say no - don’t let up. Ask to keep in touch, send them contact, ask them if they’d be interested in the future. Keep them in a gsheet and send them stuff every couple of months, e.g. interesting articles.
338 |
339 | https://www.ashbyhq.com/blog/recruiting/2023-trends-report-offer-acceptance-rates
340 |
341 | 75% a good acceptance rate- best in class 90%.
342 |
343 | ## Reference Interviews
344 | **
345 |
346 | Employers only legally obliged to tell you employment length and title.
347 |
348 | 1. In what context did you work with the person?
349 | 2. What were the person’s biggest strengths?
350 | 3. What were the person’s biggest areas for improvement back then?
351 | 4. How would you rate his/her overall performance in that job on a 1–10 scale? What about his or her performance causes you to give that rating?
352 | 5. The person mentioned that he/she struggled with x in that job. Can you tell me more about that?
353 |
354 | `if junior - get 1 ref, or take a risk. If Senior, try to get 1-2 named references and one other not referenced (blind message/ 2nd order connection)
355 |
356 | Most people will try to be beige/neutral about the person. Try and push to see if they’re an A-Player/ any red flags. With references, the absence of enthusiasm is a terrible sign.
357 |
358 | At least seven different references should always be interviewed: 3 bosses, 2 peers or customers and 2 subordinates: - Street and Smart. That’s a lot! I think less is okay.
359 |
360 | ##
361 |
362 | ## Other tips and tricks
363 |
364 | Think of it like a startup - what’s your niche and who do you appeal to? Don’t just go bland. Understand and be honest about your issues. Work out how to counter them - pay more? Development? Take bets on people? There’s always a way - think like a challenger
365 |
366 | Better to try and find under-priced parameters, e.g. non A schools, people on Visas. Or just pay more :) even if you think some quality is desirable, if you think the market overvalues that quality, you should look at the other side of the spectrum.
367 |
368 | The correlation between who did really well in the interview process and who performs really well at work is really weak. Interviewing should be thought of as information gathering. You should consciously design the process to be the most predictive of future job performance. Unstructured interviews are terrible for this and also bring in confirmation bias
369 |
370 | What would I have to see in order for me to change my mind about this candidate? If I start out super excited about a candidate, and they nail three questions in a row about system design, then I try to bring out devil's advocate: maybe this person lacks something else? And I switch to some completely different topic, like regular expressions or UNIX commands. Conversely if someone doesn't do well, think of a hypothetical question where they might win you back. Always try to poke holes in your own judgement.
371 |
372 | **
373 |
374 |
375 |
376 | ## Contentious - GMA Tests
377 |
378 | Schmidt - Because of its special status, GMA can be considered the primary personnel measure for hiring decisions, and we can consider the remaining 30 personnel measures as supplements to GMA measures.
379 |
380 | https://home.ubalt.edu/tmitch/645/session%204/Schmidt%20&%20Oh%20validity%20and%20util%20100%20yrs%20of%20research%20Wk%20PPR%202016.pdf
381 |
382 |
383 |
384 | **Paul Graham**
385 |
386 | What do I mean by good people? One of the best tricks I learned during [our](https://www.paulgraham.com/road.html) startup was a rule for deciding who to hire. Could you describe the person as an animal? It might be hard to translate that into another language, but I think everyone in the US knows what it means. It means someone who takes their work a little too seriously; someone who does what they do so well that they pass right through professional and cross over into obsessive.
387 |
388 | What it means specifically depends on the job: a salesperson who just won't take no for an answer; a hacker who will stay up till 4:00 AM rather than go to bed leaving code with a bug in it; a PR person who will cold-call _New York Times_ reporters on their cell phones; a graphic designer who feels physical pain when something is two millimeters out of place.
389 |
390 | Almost everyone who worked for us was an animal at what they did. The woman in charge of sales was so tenacious that I used to feel sorry for potential customers on the phone with her. You could sense them squirming on the hook, but you knew there would be no rest for them till they'd signed up.
391 |
392 | If you think about people you know, you'll find the animal test is easy to apply. Call the person's image to mind and imagine the sentence "so-and-so is an animal." If you laugh, they're not. You don't need or perhaps even want this quality in big companies, but you need it in a startup.
393 |
394 | For programmers we had three additional tests. Was the person genuinely smart? If so, could they actually get things done? And finally, since a few good hackers have unbearable personalities, could we stand to have them around?
395 |
396 | That last test filters out surprisingly few people. We could bear any amount of nerdiness if someone was truly smart. What we couldn't stand were people with a lot of attitude. But most of those weren't truly smart, so our third test was largely a restatement of the first.
397 |
398 | When nerds are unbearable it's usually because they're trying too hard to seem smart. But the smarter they are, the less pressure they feel to act smart. So as a rule you can recognize genuinely smart people by their ability to say things like "I don't know," "Maybe you're right," and "I don't understand x well enough."
399 |
400 | https://www.paulgraham.com/start.html
401 |
402 |
403 |
404 | ## When to hire
405 |
406 | ![[Pasted image 20240403101316.png]]
407 | - Are you on fire?
408 | - Have you done the role?
409 | - Can you reshuffle the work?
410 | - Can the company afford it? Would you be better off with x in another department
411 | - Is the bottleneck to company success your team?
412 | - Have you tried automating
413 | Is your team shit and they should be able to cope with current workload
414 | Is the new work permanent?
415 | Is there a speciality missing?
416 |
417 | If all the above is covered then think about hiring. Don’t underestimate the overhead of adding people. Sometimes it’s better to get a freelancer in for a bit to see if it’s needed. That’s a whole other post.
418 |
419 | On the otherrrrr hand. It will generally take someone a month to fully get into things, and probably three months before being amazinf
420 |
421 | ### **Use the job description to start making your pitch to candidates.**
422 |
423 | MASTERING the Hire - Chaka Booker
424 |
425 |
426 | https://www.notion.so/templates/job-description-repository?ref=review.firstround.com
427 |
428 | https://hbr.org/2020/03/write-a-job-description-that-attracts-the-right-candidate
429 |
430 | https://www.linkedin.com/pulse/ive-hired-hundreds-people-facebook-here-how-i-do-julie-zhuo/?ref=review.firstround.com
431 |
432 |
433 | https://review.firstround.com/why-nows-the-perfect-time-to-retool-your-hiring-process-and-get-creative/
434 |
435 | https://review.firstround.com/the-best-interview-questions-weve-ever-published/
436 |
437 | https://www.lennysnewsletter.com/p/hiring-your-early-team-b2b
438 |
439 | https://themanagershandbook.com/hiring-and-onboarding/hiring-101
440 |
441 | Generally expect 25% of interview stage - so 4 people per hire?
442 | - Use as a calibration
443 |
444 | **[https://erikbern.com/2020/01/13/how-to-hire-smarter-than-the-market-a-toy-model.html](https://erikbern.com/2020/01/13/how-to-hire-smarter-than-the-market-a-toy-model.html)**
445 | **[https://erikbern.com/2018/05/02/interviewing-is-a-noisy-prediction-problem](https://erikbern.com/2018/05/02/interviewing-is-a-noisy-prediction-problem)**
--------------------------------------------------------------------------------