Things are rapidly growing here at dapulse, which means we’re always looking for amazing people to join our team. We have especially ambitious goals to expand our R&D team (with lots of available positions!) and have worked hard over the past few months to refine our recruitment process.
We thought we’d outline our steps and philosophy in a bit more detail here. That way if you’re ever interested in coming in for a technical interview, you’ll know what to expect.
The interview process
Creating an amazing product is the most important thing we do. Since each engineer on our team makes a real and tangible impact on our product on a daily basis, it’s essential to find people who are the right fit, both professionally and culturally. That’s why our recruitment process is quite selective. We’re willing to err on the side of “no” rather than “yes” and sometimes, we turn away people who actually would be a great fit.
If you don’t receive an offer, it doesn’t necessarily reflect anything about you and your skillset; it could be that we just erred, and unfortunately, this does happen. But it’s a price we’re willing to pay to build the best team possible. Also, a “no” isn’t a “no” forever, and we’re very happy to reconsider an applicant again at a later time.
1. Phone interview: This initial chat will cover your work experience, goals, and a brief overview of the role we’re looking to fill. The goal of this is to make sure we’re both aligned on general expectations and the scope of the role before we ask you to invest your time and energy on an assignment.
2. At-home technical test: We’ll then ask you to complete an at-home assignment that covers the basics of CS: algorithms, data structures, sorting problems, etc. This will help us get a better feel for your baseline coding skills. Our goal is to focus on the best and most promising candidates before asking you to invest your time and energy on an in-person interview.
3. In-person interview: The next step is to come in and meet with one or two of our engineers. We’ll take a few minutes to get acquainted, and then we’ll present you with some technical challenges. After that we’ll take the time to get to know you better, hear what you’re looking for, and tell you more about us and the position.
For the technical section, we’ll present real-world problems that we could encounter (and probably already have encountered) in our daily work. We believe that asking questions about real-world problems is the most reliable and valid predictor for how you’ll do on the job. Based on our past experience, we don’t believe that theoretical brain teasers are reliable in predicting success within our team, so don’t expect any. 🙂
How you can prepare for the technical interview:
In order to best prepare for this part of the hiring process, we recommend brushing up on several core CS concepts:
- Coding algorithms
- Data structures (binary trees, linked-lists, etc..)
- Time/space complexities
- System design
(Tip: You can practice applying some of these concepts on sites like https://leetcode.com/)
Also, it’s important to note that we’re more interested in your thought process than the actual solution you propose. We’re eager to see if you can:
- Break down a big problem into smaller and simpler steps
- Understand deeply what happens behind the scenes, not just make sure it works
- Weigh the tradeoffs of any decision you make; there’s never one perfect solution
- Know how to analyze the performance and effectiveness of you work
- Adjust your solution and work to constantly changing circumstances
- Communicate all of the above in a clear, straightforward way
We always strive to hire people who are better than we are, and try to follow Mark Zuckerberg’s simple test: we’ll only hire people we’d want to work for ourselves.
We know that interviewing can be stressful, but our goal is to make things feel as real and down-to-earth as possible. For us, the best interviews have been the ones where it feels like a casual conversation between two engineers.
Second round of in-person interviews: The next step would be to call you in again for another technical interview. The structure of this interview is very similar to the first one, the goal being to introduce you to as many people on our engineering team as possible. You’ll also likely meet one of our engineering managers. This is a good opportunity for you to ask any questions or share any thoughts based on your experience during the first in-person interview.
HR interview: After you’ve passed the professional interviews, the next step is to meet with a member of our HR team and get more personally acquainted. Our goal here is to check the compatibility between the direction of our team and culture with your long-term goals. We want to make sure it’s a good match for both sides. We strive to hire people who are highly motivated and strongly believe in our product, our culture, and the way we do things at dapulse.
Who we are and what it’s like to work here
Total ownership over your work:
This is a genuinely fun environment to work in as an engineer, because our responsibilities extend far beyond code. We’re all product people and are committed to creating an amazing user experience and product. Of course, you can’t be a good developer without deep technical expertise, but that’s just one aspect of our work. We propose new features and develop them end to end, taking them from ideation to post-deployment analysis. We do our own QA, communicate directly with our customers to hear their feedback, and truly care about making an impact.
Fast-paced and hard working:
We develop in production and deploy code multiple times a day. This makes it possible for us to do faster and higher-quality code reviews, and quickly identify any bugs. We all have a lot on our plate but it’s a very exciting, fast-paced environment where we all play an integral role in the conception and execution of the product roadmap.
Transparent and data-driven:
We’re obsessed with making all information accessible to everyone on our team as well as measuring the impact of every change we make. Deploying snippets of code several times a day allows us to A/B test the effectiveness of everything we build, and we track all the results in our internal BI tool BigBrain.
No ego or politics:
We try to keep our organization “flat,” meaning there’s very little bureaucracy, hierarchy, or chain of approval. Have a cool idea? Great! Go make it happen and let us know how it performed. When everything is out in the open, there is no hierarchy of those who know and those who don’t.
Hopefully you found this information helpful. We’re always looking for ways to improve our process, so please let us know what you think!