Recurse Center

Join the Recurse Center and build useful software

We’re hiring a Product Engineer to help us build useful tools for RC’s operations and community. This is an opportunity to have a meaningful impact on a small number of people.

Read on to learn more about RC, the software we write, the good and bad parts of this job, and our interview process.

About the Recurse Center

RC is a radically self-directed educational retreat integrated with a recruiting agency. The primary educational value of RC comes from Recursers themselves: RC is peer-to-peer, which is why it gets better as the community becomes larger and more diverse. RC is self-directed because we believe that education is “the product of the activity of the learner” (to quote John Holt), and that people learn most effectively when they are in control of and have responsibility for their own education.

Experienced and new programmers come to RC from around the world to spend six or twelve weeks in New York focused on getting better at programming. Afterwards, alumni remain highly involved in the community, both offline and online.

RC is funded through recruiting fees paid by partner companies when they hire alumni we refer to them. This allows us to keep RC free for everyone, and to fund need-based living expense grants for people from groups traditionally underrepresented in technology. There is no expectation or requirement that people who attend the retreat want or take a new job.

About this job

This is a full-time job based in New York City. It is a “full-stack” role, by which we mean it involves writing backend code (primarily with Ruby and Rails), using and designing data models (primarily in Postgres), writing lots of JavaScript (primarily using ES6, React, and Redux), and writing HTML and CSS (primarily using Sass and following BEM). In addition to writing software, this job also involves helping to figure out how it should work and if we should even build it in the first place.

From looking at our public website, it might not seem like we write or have much need for software. In fact, software is essential to many aspects of RC. Here are the three biggest areas to give you a sense of the type of software we write.

Software for our community

We have an internal directory where Recursers can browse and search for other members of the community, a collaborative calendar where anyone can organize or join events, and an open source web forum and mailing list (the latter has not seen much attention recently). We’ve also built a simple proxy so our community can easily create subdomains. We use Zulip, the open source chat system, extensively, though RC employees have not yet contributed to it significantly (one thing we’d love to do is integrate with Zulip for single sign-on and shared user profiles).

Advertising and admissions software

We’ve built a simple “ad network” called RC Scout, which lets Recursers put a JavaScript snippet on their blogs and personal websites to advertise RC to potential applicants. (You can see a live example at the bottom of this blog post.)

We have a team of RC alumni who work as contractors and conduct all our admissions interviews. We have custom software for every part of this process, including interview scheduling, payment tracking, and application management (commenting, grading, and updating the status of an application). Software also lets us form our initial impressions during application review based off pseudonyms instead of real names which reveal demographic information (e.g., “Dolphin Storm” instead of “Kimberly Lin”).

(Our applicant-facing admissions software is sorely lacking. The take-home project mentioned below will be about this.)

Software for our business

The most extensive tools we’ve built so far have been for our recruiting business. Our core product for this is called Jobs Chat, a dashboard where people considering new jobs can organize their interview process and chat confidentially with RC faculty. It’s threaded by company and lets job seekers and faculty collaboratively schedule interviews, update where folks are in the process, and organize companies into groups. The admin interface for Jobs Chat lets RC help dozens of Recursers navigate their job searches simultaneously. This would be impossible without our software. Jobs Chat integrates with Asana (for task management) and Gmail, with an indispensable email composer and linter.

Pros and cons

Every job has downsides, and this one is no exception. People usually learn about these things after they join a company, but we think it’s important to highlight them in advance:

  • The pay is likely much less than you could get as a programmer at many tech companies.
  • We have few users and small data, and we don’t expect this to change dramatically. If you want to build products that millions of people use, or grapple with how to manage large amounts of data, this job is not what you want.
  • While several of us write code and help build products for RC, you will be the only one on the team focused solely on software.
  • We do very little automated testing (we’re not morally opposed to it, but we’ve found pair programming and careful code review to be more effective strategies for us given our priorities so far). If you’re looking to join a company with great code coverage you’ll be disappointed and possibly horrified.

Thankfully, we think this job has many more good things going for it:

  • Meaningful work, with a huge effect on people’s lives. To brag briefly: We’ve lost track of the number of alumni who have told us we changed their lives, or that RC was one of the best things they’ve ever done.
  • Easy access to and quick feedback from our users. The software we write is either for our coworkers and ourselves to use (~8 people) or for the RC community to use (~1,000 people, currently growing about 200 people/year). In either case, we have close, in-person relationships with the people who use and care about our software.
  • We pair program regularly, care about code quality, and try to continually improve how we write software.
  • A friendly and intellectual atmosphere, and a tight-knit and supportive team of coworkers.
  • A warm and welcoming office (we’re currently in SoHo near Broadway and Grand).
  • A great health insurance plan, plus dental and vision insurance.
  • 15 days of vacation (we effectively have unlimited vacation, but we have a number to make sure people actually take it), a 10-day winter holiday (Dec 23 to Jan 1), and seven additional holidays. We also have five days for personal development, which you can use for anything that supports your personal and professional goals and growth.
  • Complete organizational transparency: If we give you an offer, we will share all salaries, how much cash we have, projected revenue, and the many risks we face. We will answer any questions you have about our company and prospects honestly and directly.
  • Speaking of transparency, the salary for this role is $100-125k, depending on past experience. We will also give you stock options, with the caveat that you should treat them as a particularly unlikely lottery ticket. We will share the percent of the company the options currently represent, their strike price, our current valuation and cap table, and any other relevant information you’d like.

Who we’re looking for

  • You are a good programmer. By this we mean that you can write and reason clearly about code, debug systematically, make good technical and product tradeoffs, and balance pragmatism and shipping with code and overall quality. You also need to be comfortable with or willing to learn multiple languages and systems (we mostly use Ruby and JavaScript, but we also have bits of ClojureScript and Python).
  • You have good product and design senses. This includes being able to empathize with users and make good tradeoffs. You don’t need to be a trained designer (though it’s cool if you are!) but we do hope that you have some sense of aesthetics.
  • You’re comfortable directing your own time and working independently. This doesn’t mean working in isolation — we collaborate closely and frequently! It does mean you need to be comfortable taking a large task or problem, breaking it down into manageable chunks, and asking for support from others when you need it.
  • You have excellent communication skills both online and in person.
  • You are secure with your self, and are comfortable giving and receiving candid feedback.
  • You have good judgment and are a reliable coworker and employee.

Lastly, it’s important that you share our core beliefs about education. Dissent and skepticism are great, but if we don’t all agree on enough of the big things we’ll never get anything done.

Things that are not important to us

  • Whether or not you have a CS degree (or any degree).
  • Whether or not you’ve previously worked at a “name-brand” company.
  • Whether or not you have a GitHub profile or long list of open source contributions (they’re great but in no way expected; we know everyone has full lives and different priorities).
  • Whether or not you cold-email us or have a connection already (we welcome and hope to have many applicants from the RC community, but we’ll evaluate everyone who applies equally and through the same process).
  • Whether or not you can implement merge sort or anything else from memory while standing at a whiteboard.

We know the things above aren’t required to hire great people. RC’s current Product Engineer does not have a degree (he dropped out of a political science program), applied to RC with no previous connections, and did not have professional experience when we hired him. He is the most productive and enjoyable programmer we’ve ever worked with. He’s moving on to new things later this summer after working at RC for five years, and he has contributed to our company in more ways than we could possibly list.

How to apply and what to expect

  • Please send us an email with a paragraph or two about yourself and why you’re interested in this job, along with a link to a publicly-viewable LinkedIn profile or resume. Please use thoughtful, conversational English and proof-read your message. Additionally, please briefly describe one or two projects or products you’ve worked on recently for work, fun, or any other reason. Include the capacity you worked on the project and challenges you faced. (Links to code or live versions are great, but we understand if that’s not possible.)
  • If we choose to move forward we’ll invite you to a 30-60 minute phone screen so you can learn more about RC and this role and we can learn more about you. About half of this call will be dedicated to your questions for us, so you can begin to evaluate if this job might be a good fit for you and if you want to invest more time in this process.
  • If that goes well, we’ll invite you to another 30-60 minute phone screen to evaluate your product sense. We’ll ask you to choose a web or mobile app you use regularly and discuss what you think is good and bad about it. (If you’re part of the RC community, we’ll ask you to do this for a piece of RC’s internal software.)
  • If that goes well, we’ll ask you to do a four-hour “take home” project, which will focus on rethinking and improving part of our applicant-facing admissions software, using whatever language and tools you choose. If you make it to this stage, we will pay you $200 for doing the project, regardless of if you proceed to the subsequent round.
  • A day of in-person interviews. These will mostly build upon the project you began in the previous step. We will pair program and work together to expand on both the code and design of your project. You will have an opportunity to meet and work with every person in our company, and will have ample time to ask us all questions.

After each stage we’ll let you know whether or not we’d like to continue as quickly as possible (our goal is within one or two business days). If you’re advancing to the next stage, we may also give you feedback about what we thought you did well and what you could improve on for the next round.

A few extra things to know

  • Most of the company gets in around 10am and leaves around 6:30pm, but some of us come in early and/or stay later.
  • We’re personally and institutionally committed to combating sexism and racism.
  • If you’re considering applying, you should spend a few minutes reading our blog, about page, and User’s Manual to get a sense of our company and your potential coworkers.
  • We are happy to sponsor visas when possible. We cannot sponsor H-1Bs, since the soonest someone could start work on a new H-1B is October 2018, which is unfeasible for us (we can probably transfer existing H-1Bs).
  • This is a full-time role, and you need to be able to work on-site at our office in NYC. (While the current person in this role is remote, he only shifted to remote after working with us for 4.5 years. We don’t think we’re set up or well positioned to onboard someone remotely from the start.)