The product: A sophisticated query engine
We are building a sophisticated OLAP/SQL query engine for advanced analytics, accessing data from many different data sources (RDBMS’s, Hive, Impala, Druid, Elasticsearch and others). The query engine is written in Scala and builds on Apache Calcite. We are planning to open-source it during the course of this year with the goal of making it an Apache project eventually.
The stack
Scala, Java, Apache Calcite, Spark
The challenge
The project involves working with many interesting concepts related to data processing and querying such as query parsing and validation, relational algebra, creation of logical and physical plans and adapters to different database and execution engines. Your work will also involve participation in the communities of and development of contributions to Calcite and other open-source libraries we use.
Your profile
- Fluency in Scala and Java is a must
- Database domain expertise with knowledge of Druid, Drill, Hive or Calcite
We highly appreciate experience in:
- Open source projects, especially those by the Apache foundation
- SQL & OLAP-type query planning & optimisation
- Relational algebra as a foundation for relational databases
- Database adapters (both sql & no-sql)
How we work
- We strongly believe in the importance of uninterrupted time to get stuff done and quality over quantity when it comes to working hours. We prefer to keep our schedule meeting-light and work in a library-like atmosphere during the core hours.
- We believe the ability to give and get constructive feedback and express divergent ideas is crucial to make innovation come to life. We live a very open discussion culture and prefer the evaluation of ideas based on merit over top-down decision making.
- We strongly believe in ownership of one’s features, from spec to implementation to operation. We also understand that ownership comes with a sense of responsibility towards others that depend on the results of our work.
- We believe that everybody should be able to find meaning in their work. We match assignments based on both ability and individual interests and discuss your progress and individual needs every 3 months.
- We don’t see people as “resources” and genuinely care about each other. We also understand that there’s more than fancy perks and cool events to people’s satisfaction and engagement. We continuously work towards an environment providing a lot of autonomy, transparency and development opportunities and rely on everybody’s feedback to hold us accountable for maintaining our high standards.
About the interview process
How we get to know each other
- We like to start out with a brief 20-30min session for a mutual introduction. We tell you about our company, product and culture and are happy to answer any questions you might have. From your side, we’re mostly interested in understanding what kind of challenges you’re looking for, what technologies you’d like to work with and what role you’d like to be in.
- If both sides agree that this could be a good fit, we move on to a more technical session. We ask you to walk us through one of your past projects as if we were new colleagues joining you on the job. The ability to communicate effectively and concisely about complex systems and trade-offs between different approaches is key.
- In a second technical session, we discuss some of the technologies and concepts you have used. We also give you a walk-through of our product and solutions, discuss our architecture and components. Finally we try to scope your initial role and focus — should you be joining us.
- In the last session, we discuss the remaining details, logistics and plan your relocation.
We see the interview process as a mutual opportunity to get to know each other — at eye level. That’s why we always strive for responding within hours, not weeks.
Link: https://www.contiamo.com/careers/