As developers of an open-source project, we have collaboration at our core. Building community is important to us on every level, from the forum conversations we facilitate to the ecosystem we culture to the people we bring in to the core development team. We invest significant resources in helping all team members, including interns, realize their potential, and that begins with the interview process.
We understand that interviewing requires candidates to invest their valuable time and energy. What’s unique about interviewing with the Cesium team is that we strive to provide value back to the interview candidate, regardless of whether or not we move forward after the interview. Additionally, we also aim to create an environment where candidates can emphasize their unique strengths and demonstrate their passions and abilities.
We don’t do whiteboard coding or ask candidates to solve obscure academic coding exercises that do not apply to our work. At Cesium we use the whiteboard only as it’s intended: for brainstorming and design.
Instead, we do something different. We ask candidates to show off their capabilities through a presentation and a collaborative coding project. The presentation allows the candidates to show their passion and communication skills by presenting a project they’re particularly proud of. For the collaborate coding project, we’ll work together with the candidate on a project of their choosing, doing anything from designing a new feature to optimizing a critical code path to fixing bugs.
Over the course of the project, we’re on the lookout for not just technical abilities, but other traits we emphasize, including communication, creativity, and prioritization.
The Interview Process
The first step before a candidate visits the office will be a phone screen, about 45 minutes long, that includes an overview of AGI and Cesium, both technical and non-technical questions, and time for the candidate to ask questions. If we and the candidate agree that the position is a good fit, we set up an on-site interview.
Besides a tour of Analytical Graphics Inc (AGI) headquarters and lunch with the Cesium team, the main content of the interview consists of the presentation, the collaborative project session, and a few face-to-face meetings.
For the first segment of the on-site interview, we ask candidates to put together an informal 15-minute presentation and demo of a project. This presentation portion is inspired by interviews in academia where potential faculty give talks as part of the interview process. We value communication and collaboration and we do a lot of outreach, so the presentation allows us to see candidates’ communication skills as well as their technical expertise.
Presentations can cover candidates are proud of and that demonstrates their technical abilities. We’ve seen games made by small teams for university projects, apps designed for an academic research lab, and a rendering engine constructed in one developer’s spare time.
Each presentation should include and demonstrate
- the tech stack used
- software architecture
- technical depth in at least one area
- key algorithms or short code snippets
- the scope of the project
In our daily work we emphasize clear, concise communication and limited, effective meetings, so we encourage these presentations to be likewise clear and concise. Visuals are necessary, like screenshots or videos, but we encourage live demos and are, of course, tolerant of unexpected issues. We’ve been there!
The entire team is invited to a presentation and many usually attend. As our team size grows, it quickly becomes impractical for each team member to interview each candidate. The presentation gives everyone an opportunity to meet each candidate and vice versa. Our developers typically ask a few questions after the presentation.
Collaborative Coding Project
What candidates have produced in the past is important, but we also really want to see them in action. And we want them to get concrete value back from interviewing with us. So we ask that they bring with them a personal project in any stage of development to work on for around 90 minutes. Sometimes the project is built on Cesium, but often it is not, and either works well. The only requirement for the project is that it should be something the candidate is passionate about and something we can help with.
We ask the candidate to send us the following in advance:
- the specific goal that we’ll work together to complete—this could be to craft a new feature, brainstorm algorithms or architectures, create unit tests, debug a problem, or improve performance,
- the language and tech,
- the domain area, and
- a link to the GitHub, if there is one.
We’ll then select one or two members of the Cesium team with a related interest or background to work on the project. In the past, we’ve talked through algorithms attempting to solve the game Tiny Rails, worked on Cesium apps integrated with Last.fm, and have prototyped a new game idea.
The collaborative coding project gives us a holistic view of the candidate’s work style, interests, and communication skills. And working side-by-side with us gives the candidate a good picture of what it’s like to work with the Cesium team, as well as some useful contribution to the project.
We’re working hard to make sure our interview process is smooth, engaging, and productive for all those involved. If you have feedback, we’d love to hear it. Contact Patrick to give any suggestions for improvement.
If this unique interview experience has piqued your interested, perhaps you’d also be interested in a unique job experience as well! Check out our job openings for more information about applying.