This is the home for CloudPilot AI take-home interview assignment. Each subfolder contains an individual assignment. During our interview process, we will give candidate these assignments and let her/him work on it for a week offline. Our followup technical interview will discuss the various aspects about the solution the candidate built.
Generally, we evaluate candidates based on the following skills:
- Learning ability.
- Depth of thinking on single-point issues.
- Depth of thinking on comprehensive architecture.
- Hands-on ability.
- Imagination and the ability to integrate online resources with your own thinking to design new things.
We have conducted hundreds of technical interviews in our career, mostly in the form of whiteboard live coding. While we acknowledge the merits of live coding interview (we do find some candidates with principal eng title from BigCo can't pass trivial coding test), it has huge limitation. In particular, the skill the live coding evaluates is distantly far from the skill required in the daily work.
Whiteboard live coding requires to solve a very specific problem in a very constrained timeframe without external resources. It looks for very specific coding problem solving skill under intensive pressure..
One would argue that's the trait separating the best from the good. Probably true for drafting people for coding competitions, not so much for assembling a team to build a product. Think about how we build a feature normally, we research the domain from the open web, learn our competitors, discuss with our peers, design the UX and interaction, write code, release and refine. Coding is just part of the process, and most likely we would never encounter any coding question in our work (have you ever written dynamic programming algorithm besides interview?). Even encountered, those arcane coding questions are just one stackoverflow away.
Daily work requires solving a semi-specific problem in a semi-constrained timeframe with abundant external resources. It looks for general product/engineering problem solving skill under an open-ended environment.
Most problems do have a defined domain, but there remains many uncertainties, and some of those revealation may totally change the scope. We do have a deadline, but at least it's in days instead of in minutes. And more importantly, we are solving together with the open web, the people around us.
In whiteboard live coding, both the problem and solution are already pre-determinted. While in take-home assignment, we only define a broad scope and some requirements, it's up to the candidate to craft the solution. That's what we expect for peers at CloudPilot AI, to de/refine the problem, own the solution, deliver enlightenment.
- The main CloudPilot AI codebase is also open source. We believe in building in the public.
- Design good take-home assignments is no easy task. Open sourcing our assignments gives more chance for improvements.
- It's convenient for our candidate to checkout the problem.
Q: Are you worrying about candidate preparing the problem in advance to gain an edge?
A: Not at all. One can only prepare for couple weeks, but we are evaluating candidate's years of accumulation.
Q: I have new ideas, suggestions.
A: Opening new issue, creating PR. We will respond in a timely fashion. Thanks in advance.
Q: I want to apply.
A: Email us at hr@cloudpilot.ai with your resume/portfolio/blog etc... (anything you feel proud)
Credits to Bytebase Interview Process