Software Engineer Intern (Compiler)

HCMC, Vietnam

We’re the team behind projects like BI tool Holistics, database diagram tool dbdiagram.io, and open-source project dbml.org. We're looking for a software engineer to join our compiler team and help build our innovative analytics language and tooling.

This is a position based in Ho Chi Minh City with flexible, hybrid WFH/WFO setup.

Our application’s architecture

Holistics is a data platform that allows analysts to deliver powerful analysis insights to end users. Our product has helped improved data productivities of technology companies across multiple regions (German, US, Singapore, Vietnam, Indonesia, Thailand, Malaysia, etc). Companies like Grab, Traveloka are our proud unicorn customers among other well funded start-ups such as Tech In Asia, 99.co, ShopBack, KFIT, Aviasales, etc.

At the heart of our platform lies AMQL (Analytics Modeling and Querying Language) - our analytics language that serves as the foundation for our as-code layer, mapping all Holistics objects to code. AMQL consists of AML (Analytics Modeling Language) for defining semantic models declaratively, and AQL (Analytics Querying Language) for querying data at a higher abstraction level.

The AMQL compiler is a sophisticated TypeScript-based system that parses, type-checks, validates, and compiles AMQL code into executable analytics logic. Our compiler features incremental compilation that processes only relevant code changes, enabling real-time feedback during development. The system includes a parser, type checker, interpreter, incremental engine with serializable cache, sourcemap system for UI-code synchronization, and a complete language service providing IDE features like auto-completion and refactoring.

Job Scope

You'll be working on core components of our AMQL compiler and language tooling, contributing to the development of our analytics language infrastructure:

  • Participate in language design discussions and contribute to implementing new syntax and features for AMQL
  • Add new features to IDE integrations including enhanced auto-completion, advanced error diagnostics, refactoring tools, and semantic highlighting for better developer experience
  • Work on the incremental engine to improve change detection algorithms, enhance caching strategies, and reduce compilation times
  • Profile and optimize compiler performance across different scales of AMQL codebases, focusing on memory usage and compilation speed
  • Create development and debugging tools to improve the compiler development workflow, troubleshooting process, and compiler testing infrastructure

The way we work

We follow Spotify squad model. Our team is split into 4 squads, each (5-7 members) consists of engineers, product managers & designers working closely together.

How we work on a new feature:

  • Product & Design Team spends time research the problem, talk to customers and prepare Product Discovery Doc (PDD) and Product Requirement Doc (PRD).
  • Engineering Team then performs a Technical Research. When we have a fairly good picture of the complexity and impact, we’ll start with the implementation.

We avoid being a feature factory. We’re aware more features do not equal better product.

We do not compromise product and code quality for artificial deadline. We refactor and think about code optimization regularly. We understand the good and bad of technical debt and use them to our advantages.

We employ “pair programming” practices regularly where two team members work on a task together in one workstation. This brings a great deal of benefits, among which are faster knowledge transfer, reduced bus factor, better team cohesion and improved code quality.

We have a strong writing culture: Almost everything is communicated through written documents. Just as our developers write reusable codes, we write evergreen notes.

We maintain a problem-solving culture. Everyone is strongly encouraged to have rigorous understanding of a problem, separating Problem Space vs Solution Space as well as using Eigenquestions to find the most important dimensions of a problem. Solutions are deliberated over with trade-offs explicitly listed in discussion documentation. Watch this talk about problem-solving for engineers that our cofounder gave (in Vietnamese)

Our culture stimulates continuous learning:

  • We let team members rotate every 3-6 months. This allows them to try new things and learn different aspects of the business.
  • We have a weekly TED talk program where team members present topics they are interested in.
  • Engineering Team organizes weekly technical talks as well as monthly technical workshops.
  • Product Team has regular AMA events with external product experts

Requirements

  • Strong problem solving (most important)
  • Currently pursuing Computer Science or related fields in Universities in Vietnam/overseas
  • Proficiency in TypeScript and Node.js
  • Good English communication skills (writing and reading)

Nice to have:

  • Interest and knowledge in programming language design and compiler theory
  • Experience with software development and performance optimization
  • Experience with high-performance programming languages: C/C++, Rust, Go, etc.

What We Look For In You

  • Problem Solving: You don’t just write code based on requirements, you debate the requirements with us.
  • Coding: You write good code, you’ve written code that handles a lot of loads, and you enjoy optimizing and refactoring your code to make it faster
  • Culture & Mindset: You’re a team player; you understand how it’s like working for a startup – doing anything and everything needed (from writing blog posts, to help customers with their data problem)
  • Tech Stack: we use Ruby, PostgreSQL, Redis, Vue.js, ES6 and a lot of SQLs. It’s great if you know these, but it’s not a big deal. We’re confident you’ll pick these up quickly on the job.

Basically you will not just implement features based on a task list. We need your original ideas, creativity, and critical thinking skills to help us build a great data platform.

Interview Process

  • Round 1: Technical interview with the Engineering team
  • Round 2: Do take-home assignment (offline - deadline 3days, will be sent after Round 2)
  • Round 3: Culture & Behavior Interview

Why You'll Love Working

👨🏼‍💼 Training & career developments

  • Weekly TED talks to expand skills and knowledge.

💕 Awesome company policies

  • A flexible work culture, Remote policy.
  • Weekly happy hours andcompany-organized events.

🏢 Workstations provided for maximum productivity

  • Mechanical Keyboard + Razer Mouse
  • Big-screen monitor(s)

🌐 Working time: From Monday – Friday, from 9.00 a.m. to 6.00 p.m.

🌐 Work Location: 457 Nguyen Dinh Chieu, District 3, Ho Chi Minh City