How to Write a Great Job Post πŸ“‹

Lessons learned from reviewing 100+ jobs on the Refactoring board, and from 10+ years of engineering hiring.

In July this year I launched Refactoring Jobs to provide an effective way for readers to find high quality, remote engineering jobs.

Since then, I reviewed hundreds of positions. I talked with tens of companies to understand what they were looking for, and to help them write a better job post.

I saw which performed better or worse, got feedback from readers, and drew some conclusions. I have also hired engineers for 10+ years myself, wrote very bad job posts, and made all mistakes imaginable.

In my experience, the very best jobs are clear and exhaustive about these areas:

  1. 🏒 Company

    • Vision & Mission

    • Where we are

    • Culture

  2. 🎽 Team & Position

    • About the team

    • Responsibilities

    • Tech stack

    • Salary range

  3. πŸ”’ Application Process

Let's see them one by one πŸ‘‡

🏒 Company

This is where people should fall in love with your company. You should cover what you do, how you do it and why.

You don't need to write everything in the post itself β€” for each section you can embed the key points and then reference material from other blog posts and company pages.

Vision and Mission

You should state what your mission is as a company, and how it is fuelled by your particular view of the world. Good vision / mission statements are usually something along these lines:

We believe X matters / will happen, so we are building Y to help with it.

Great people are driven by purpose, they want to do work that matters.

Where we are

Once you have aligned people on your vision & mission, build momentum telling them what you are doing right now.

  • What challenges are you facing?

  • What are you going to build this year?

  • How many customers do you have?

  • Did you get a new funding round? Nice! What is it for?

  • Is the team going to grow? How?

If possible, link external resources to back these up. Have you been in the press? Have you written anything in your blog about it? Put external links to make people dig deeper if they want, just like Notion does.

In this section you are saying: not only we have a great mission β€” we are doing these amazing things now and we need your help. You should make the candidate's mind race about what you can do together.

Culture

Culture is what it feels like to work in your company. This section answers the question: "Would I enjoy working here every day?"

Culture sections are fluffy sometimes, and engineers can spot this immediately. Good culture is specific, it provides guidelines on how you should behave and make decisions.

So list your values / principles, and show how you use them in practice.

A few examples:

  • ✍️ Asynchronous communication β€” by GitLab. GitLab explains their async culture in every single job post, and links to their legendary handbook to let the candidate learn more.

  • πŸ₯£ Be a Cereal Entrepreneur β€” by Airbnb. This directly ties in with the company beginnings and what founders did to make the company survive. It is memorable, and its history makes it credible.

Perks

Perks are not mandatory! I’ll say this right off the bat, as many believe they have to add them at all costs. Many great companies do not include perks in their positions β€” see Shopify and Stripe.

You should add a perk when it checks at least one of these boxes:

  • It is relevant for your culture β€” it should be aligned with one of your values, encouraging it substantially. This way the candidate feels you are putting the money where your mouth is. For example, if you are promoting a healthy remote culture, it makes sense to provide a generous budget for a home workstation.

  • It is a big perk β€” you are providing something really valuable. Famously, Whole Foods gives between 20% and 30% in-store discount to all their employees.

If your perk is neither of those, you can go without it. Cheap or arbitrary perks make candidates suspect you are using them to compensate for a position that is not interesting enough, or well-paid enough.

🎽 Team & Position

This is where people should fall in love with their actual work. It is the heart of the job post πŸ‘‡

About the Team

If you are a mid-size+ company, chances are the candidate is joining a specific team. Tell them more about it:

  • 🎯 Goals β€” what are the team responsibilities? Why are you hiring?

  • πŸ”¨ Projects β€” provide some examples of what the team is working on.

  • πŸ”„ Processes β€” explain how you work together, talk of your processes. Is it a remote position? Elaborate on how collaboration works.

In this job post by GitLab, there is a full section about the Code Review team, with links to projects they delivered in the past.

Responsibilities

What the candidate's responsibilities will be, and what she will do in her daily work. Try to be specific and imagine how life will be working with her.

This section is crucial. A few tips to get it right:

  • Imagine her future accomplishments β€” and describe them as responsibilities.

  • Align with other stakeholders β€” what are the expectations by future teammates? And by her manager?

  • Create a page for the team / area β€” this is very helpful to explain those points that are middle ground between responsibilities and culture. See Shopify's Engineering page.

Tech Stack / Requirements

When it comes to the tech section, you have two goals: describe your tech stack, and communicate requirements for the job.

About the tech, do not just name-drop the various frameworks. Explain your challenges, talk about architecture, and if possible link separate articles to let the candidate learn more about it. The candidate should see your competence and feel she can grow professionally in your team.

About requirements, here's the secret: if you described the stack and responsibilities well, you don't need to add much about requirements.

I believe requirements in most job posts today are too prescriptive. Keep it loose, for two reasons:

  • Brilliant people in tech come from various backgrounds you can't really anticipate.

  • Brilliant people learn what they don't know faster than most people realize.

So keep requirements small, invest more words on describing your tech, and make people apply even if they don't match everything you write.

Here is an example of tech requirements for a backend position in Stripe πŸ‘‡

Think about systems and services and write high quality code. We work mostly in Ruby, with some Scala and Go.

However, languages can be learned: we care much more about your general engineering skill than - knowledge of a particular language or framework

It’s not expected that any single candidate would have expertise across all of these areas.

Salary range

I believe including a salary range makes any job post more effective. It improves your matches, gives a better impression to the candidate, and reduces negotiation. All of this makes the hiring cycle shorter.

It also provides other benefits down the line, such as reinforcing a culture of transparency and avoiding pay gap based on gender and ethnicities.

Most companies, though, do not include it. For two main reasons:

  • βš”οΈ Negotiation β€” many believe that the less you disclose, the better you are able to negotiate. I don't think this is true. The more you disclose, the more alignment you create upfront and the less negotiation is needed. And if you want to stay flexible, you can put a wide range. It is way better than nothing.

  • πŸ” Transparency β€” including salaries in job posts brings internal transparency as well. Many companies are not ready for this as their salary brackets are totally messed up. It's not rare, especially in engineering, to find people who earn more than their managers, or peers with incredible pay gaps. If your company is in this situation, you should work to sort it out first.

Companies with transparent salaries include Basecamp and Buffer.

πŸ”’ Process

Finally, describe your hiring process as much as you can. This is crucial β€” detailing the process upfront makes the candidates prepare and commit to it. The more the candidate is committed, the more she will be keen to join your company in the end.

A few tips:

  • Make it short β€” no more than 3-4 steps. You don't need more, and speed always wins deals.

  • Include times β€” provide an expectation of how long each step will take, from replying to the application to the final hire.

  • Write a guide β€” let candidates know what to expect from interviews. Give them the chance to prepare as if they were studying for a test. Make them feel invested in the process. Here is the Notion's guide to interviewing for the Head of Platform Engineering position.

πŸ“š Resources

  • πŸ“‘ Guides to Interviewing at Notion β€” Notion has written a full guide dedicated to how interviews work. It is organized into separate tracks, each with specific details. There are dedicated pages for each position, and they are linked to the respective job posts.

  • πŸ“‘ How to Write Restaurant Job Descriptions Around Values β€” Yes, restaurants. It is refreshing sometimes to take inspiration from other domains. This article deep dives into a successful job post and comments why each section is effective and well written.

  • πŸ“‘ Buffer Salary Calculator β€” Buffer has a strong reputation of transparency. This calculator tells what salary you can expect based on the position and your cost of living. They use these salaries in their job posts.

⭐ Weekly Featured Jobs

Here are the remote engineering jobs I recommend this week.

I personally review all of them and have a call with these companies to get more context and better understand the opportunity.

Flick β€” Full Stack Typescript Engineer

Flick is an analytics tool for Instagram creators. I talked with their founder Andreas about their hiring process and needs β€” their tech stack is cutting edge and they wrote one of the best job posts I have ever seen.

Makelog β€” Senior Full Stack Engineer

Makelog helps companies to keep customers engaged via product updates. It is a brilliant tool that automatically integrates with your engineering process, such as commits and pull requests. Their founder, JJ is insightful and driven by a compelling vision.

πŸ“£ CTO Craft Con 3.0

I am really happy to promote the upcoming CTO Craft conference, just like I did last year.

CTO Craft is one of the truly great conferences for engineering leaders out there, I always attend it and it always delivers.

This time it lasts four days, from Nov 8th to 11th, and it gathers great tech leaders to share stories, case studies and best practices around four topics: Hiring, Learning & Development, Strategy, plus Burnout and Stress.

It includes CTOs from incredible companies such as Slack, LikedIn, CircleCI, Firefox, and more.

You can use the code REFACTORING-guests to get $20 off the full conference pass.

Check below for more info πŸ‘‡

Learn more


Hey, I am Luca πŸ‘‹ thank you for reading this far!

Every week I read tens of articles and draw from my own experience to create a 10-minutes advice about some engineering leadership topic.

Subscribe below to receive a new essay every Thursday and put your own growth on autopilot!