Welcome, Entry Level!
Welcome! This repo hosts a basic set of guidelines for Indonesian students and fresh graduates to land their first tech job at Zero One Group!
This document is a constant work in progress. If you spot any mistakes, have any feedback or even disagree with some of the points made in this document, please feel free to open an issue and tag @rubiagatra and/or @anthony-khong!
Contents
- Background
- Zero One Group Career Ladder
- How to Get Quality Courses for Free or at Little Cost
- Prerequisites
- Getting Started
- Paths and Specialisations
- How to Apply
- Interviewing at Zero One
- What Can I Do to Improve My Chances of Getting Accepted?
Background
What is Zero One Group?
We provide an ecosystem of cutting-edge technological solutions to challenging business problems. We work with Indonesia's household enterprises such as HokBen and well-established international institutions such as Bloomberg Philantropies. Apart from being deeply involved in the JS ecosystem with Node and React, we also routinely use Flutter and Terraform as part of our tech stack.
A Remote-First Engineering Team
We are a 'remote-first' engineering team. It means that our default means of communications is asynchronous, which does not require the engineering team to be in the same place at the same time. An important implication of this is that engineers that are not based in Jakarta, where our main office is located, still get a first-class experience with Zero One Group. They never feel left out from important team discussions, and they don't miss out on unintentionally decisive water cooler conversations.
Currently, our remote engineering team consists of developers based in Greater Jakarta, Purbalingga, Kulon Progo, Surabaya, Malang and Makassar.
If you want to learn more about how to work on a remote-first engineering team.
- How to Embrace Remote Work - Ultimate Guide by Trello
- Asynchronous Communication by Sourcegraph
- The Anywhere Operating System
- Gitlab Remote Playbook
Investing In Our Engineers
One of our co-founders, Didit, used to always say that he would like "to build a company for engineers by engineers". Indeed, we often claim that we are an engineering-first company, but what does it mean? At a high level, we want to optimise for engineers' comfort, productivity and growth. We would like to create a working environment where engineers can do their best work, make a real difference through software and be proud of their accomplishments. And all the while, they must also have the opportunity to explore new technologies and develop technically. We constantly invest in learning curriculums, career ladders, handbooks, mentoring schemes and other support systems so that we can be better at providing that working environment.
An unusual fact about Zero One Technology is that every founding member is or has been an engineer! We fully understand what it feels like to walk in the shoes of an engineer. We view the profession as a form craftsmanship - something that takes a lifetime to master. Thus, we respect the engineer as both a professional and an artist.
Our Support for Open Source and Local Tech Ecosystems
Every engineer in Zero One Group is expected to contribute to open-source software at some point in their tenure. Here are some of the projects that we have initiated or actively contributed to:
- Geni: A Clojure dataframe library that runs on Spark
- fxl: Ζ fxl.js is a data-oriented JavaScript spreadsheet library
- fastify: Fast and low overhead web framework, for Node.js
- Metabase: The simplest, fastest way to get business intelligence and analytics to everyone in your company π
- Prisma: Next-generation ORM for Node.js & TypeScript | PostgreSQL, MySQL, MariaDB, SQL Server, SQLite & MongoDB (Preview)
- Turborepo: The High-performance Build System for JavaScript & TypeScript Codebases
- Node Addon Api: Module for using Node-API from C++
- Undici: An HTTP/1.1 client, written from scratch for Node.js
We also encourage our engineers to share what they've learned publicly and give back to the community:
- Understanding Node.JS Performance using OpenTelemetry | Kubernetes Community Days ID 2021
- fxl: a composable data-oriented spreadsheet library for Clojure | Scicloj 2021
- Geni: a Clojure dataframe library on Spark | Scicloj 2021
- Prinsip Dasar dalam Membuat Web Visualisasi Data Interaktif | WWW ID 2020
- Functional 101 with Python | PyCon Indonesia 2019
- Functional Programming in Python - Lessons from Haskell and Clojure | PyCon Thailand 2019
At times, we also write about the challenges and thinking that go into particular tech problems that we encounter:
- Ionic, React Native, and Flutter in One Nx Monorepo
- Customer Segmentation: Taking a Page out of the Computer Vision Book
- Having Fun with Clojurescript on Google Cloud Function
A significant portion of our engineers actively participate in local and international tech communities. If you have the chance to join one of the events by the communities below, you may bump into someone from Zero One Group. Please come and say hello - we would love to hear from you!
- Surabaya.js
- Surabaya.py
- GDG Jogjakarta
- GDG Surabaya
- GDG Cloud Surabaya
- Lamongan Dev
- Ngalam Backend
- Data Science Indonesia
- Scicloj
Zero One Group Career Ladder
graph TD
A[Product Engineer 1] --> B[Product Engineer 2]
B[Product Engineer 2] --> C[Product Engineer 3]
C[Product Engineer 3] --> D[Senior Product Engineer]
D[Senior Product Engineer] --> E[Lead Product Engineer]
E[Lead Product Engineer] --> F[Engineering Manager]
F[Engineering Manager] --> G[Head of Engineering]
Based on Zero One Group Career Ladder, what you aiming for as an entry level are PE 1 or PE 2. PE 1 and PE 2 experiences ranging from 0 - 2 years experiences of work.
How to Get Quality Courses for Free or at Little Cost
As a student, you will get benefit from multiple learning platforms as long as you have your university email [email protected]
. We provide a list of free or inexpensive learning materials below.
Github Student Pack
GitHub Student Pack is a really good bet for a free learning platform and software tools! At the time of writing, these are the learning materials you can get if you apply GitHub Student Pack:
- FrontendMasters - Advance your skills with in-depth JavaScript, Node.js & front-end engineering courses
- OneMonth - Learn HTML, CSS, JavaScript and Python in just 30 days!
- GoRails - Tutorials for web developers learning Ruby, Rails, Javascript, Turbolinks, Stimulus.js, Vue.js, and more
- Thinkful - Learn Fundamentals of Web Development to launch your career as a developer
- Educative - Level up on trending coding skills at your own pace with interactive, text-based courses
- DataCamp - DataCamp helps companies and individuals make better use of data. Our users build data fluency while learning from the worldβs top data scientists
Free Courses
- FreeCodeCamp - Learn to code β for free. Build projects. Earn certifications.
- Coursera (Audit Course) - Build Skills with Online Courses from Top Institutions
- edX - Free Online Courses by Harvard, MIT, & more
- Codecademy: Learn to Code - for Free
Affordable Courses
- Udemy - Online Courses - Learn Anything, On Your Schedule
- Codepolitan - Website Belajar Coding Bahasa Indonesia
- Dicoding - Bangun Karirmu Sebagai Developer Profesional
Prerequisites
An understanding of the concept of programming in the web is a prerequisite for an engineering role at Zero One Technology. If you are starting from zero, you can follow this bootcamp:
or
Getting Started
If you finish the following learning materials, you will be in a great position to apply for a Product Engineer 1 position:
Fundamentals
- FrontendMasters - JS Fundamentals Functionals
- FrontendMasters - CSS Grids and Flexbox
- FrontendMasters - Full Stack for Front End
- FrontendMasters - Intro all Databases
Developer Tools
- FrontendMasters - Complete Intro for Linux and Command Line
- FrontendMasters - Complete Intro to Containers
- FrontendMasters - Learn Git in Depth
- FrontendMasters - Introduction to DevTools
Node.js and TypeScript Foundation
- FrontendMasters - Introduction to Node JS
- FrontendMasters - Api Design in Node JS
- Udemy - Complete NodeJS Developer
- FrontendMasters - TypeScript Fundamentals
Web using React Foundation
Data Structures, Algorithm and Preparing for Interview
- FrontendMasters - Complete Intro Computer Science
- FrontendMasters - Tree and Graph Data Structures
- FrontendMasters - Introduction to Data Structures for Interviews
Paths and Specialisations
Backend
More information about backend path - https://roadmap.sh/backend
- FrontendMasters - Functional JavaScript First Steps
- FrontendMasters - Intermediate TypeScript
- Udemy - SQL and PostgreSQL
- Udemy - Docker for Node.js Projects From a Docker Captain
- Udemy - GitLab CI: Pipelines, CI/CD and DevOps for Beginners
- Udemy - Introduction to Database Engineering
- Udemy - gRPC Node.js MasterClass: Build Modern API & Microservices
- FrontendMasters - Complete Intro to Real-Time
- Udemy - Pragmatic System Design
- UML and Object-Oriented Design Foundations
- Master Fullstack - React, Fastify Node.js, Postgresql & TDD
Frontend Path
More information about frontend path - https://roadmap.sh/frontend
- FrontendMasters - Functional JavaScript First Steps
- FrontendMasters - Intermediate TypeScript
- FrontendMasters - React and TypeScript
- FrontendMasters - Build a Fullstack App from Scratch (feat Next.js)
- FrontendMasters - Web Performance
- Udemy - GitLab CI: Pipelines, CI/CD and DevOps for Beginners
- Udemy - Testing React with Jest and Testing Library
- FrontendMasters - Testing Web Apps with Cypress
- FrontendMasters - AWS For Front-End Engineers, v2
- Udemy - Master Fullstack - React, Fastify Node.js, Postgresql & TDD
Mobile Path
- Udemy - Flutter & Dart - The Complete Guide 2022 Edition
- Youtube - Testing Fundamentals of Flutter Course
- Udemy - The Complete Dart Language Guide for Beginners and Beyond
- Udemy - Flutter & Firebase: Build a Complete App for iOS & Android
- Udemy - Flutter REST API Crash Course: Build a Coronavirus App
- Youtube - Flutter Way Speed Code - UI Practices
DevOps Path
More information about backend path - https://roadmap.sh/devops
- Udemy - Master Linux Administration
- FrontendMasters - VIM Fundamentals
- Udemy - GitLab CI: Pipelines, CI/CD and DevOps for Beginners
- Udemy - Ultimate AWS Certified Cloud Practitioner - 2022
- Udemy - GCP for Beginners - Become a Google Cloud Digital Leader
- Udemy - Introduction to NGINX
- Udemy - Amazon ECS & Fargate Master Class - Docker on AWS
- Udemy - Learn DevOps: Infrastructure Automation With Terraform
- Udemy - Terraform Beginner to Advanced - Using Google Cloud Platform
- Udemy - Ansible for the Absolute Beginner - Hands-On - DevOps
How to Apply
Please send your CV and/or portofolio to [email protected] and cc [email protected]. Typically, the interview process consists of a technical interview, a general interview and a skill test.
Interviewing at Zero One
Interview Format
In a typical case, we require a skill test and two interview rounds - general and technical. The two interviews do not have a fixed order, but the skill test is typically sandwiched between the two interviews.
You should not need to prepare for the general interview round, as it should resemble a friendly chat about your life, hobbies, motivation, career goals, technical interests and past experiences. It is a way for us to get to know you better, and assess whether you would fit in well to the team we are hiring for. You should, however, prepare for the technical interview, as you will be tested not only on the depth, but also on the breadth of your knowledge. For that reason, be prepared to answer questions outside the area of your expertise!
Our skill test consists of a simple task in an area of expertise that you can choose, namely backend, web frontend, mobile or devops. Typically, the deadline of the skill test is set 72 hours after the test is sent to you. You may choose the day and time to start the test to fit your schedule!
Tips and Advice
- Accept the calendar invitation, and turn up on time. We take punctuality and commitment very seriously.
- We also take deadlines very seriously. If you think you're not going to meet the skill test deadline, reach out to us early, and explain your situation. There is not much we can do if you tell us a few hours before the deadline!
- Speak freely and openly about your opinions and experience. We love genuine (though perhaps unusual) candidates!
- Be relaxed! Treat the interview as a casual conversation. There is no need to use formal languages such as 'Pak', 'Bu' or 'sebelumnya terima kasih, perkenalkan nama saya ...'. We are not that kind of company π
- If you don't know the answer to a question, it's better to say so, instead of guessing the answer. And do look it up after the interview - we may ask you the same question again!
- Read and learn widely. You are not expected to know everything about software development, but you should know a little bit about backend, web frontend, mobile and devops.
- We love personal projects, open-source contributions and online courses. If you are not asked about it in your interview, do proactively tell us about it!
What Can I Do to Improve My Chances of Getting Accepted
- Complete related online courses.
- Contribute to open-source software.
- Work on your side projects or software portofolio.
- Participate in your local tech communities.
- Dive deep into TypeScript or static typing in general.
- Practice and get comfortable with automated testing.
- Design and experiment with your own CI/CD pipelines.
- Impressing us with your (Neo)Vim setup! haha we're just joking π (or are we? π€)