By Niranjan Paranjape
There is a reason the fizz buzz problem exists.
The hard truth is most people in the job market who claim to be programmers, aren’t. As Reg Braithwaite and Joel Spolsky attest — we’re talking about people who can’t write a simple program. I tend to blame this one on traditional educational approaches that kill the joy of coding, but that’s neither here nor there.
At GOJEK, we’re looking for programmers who code for the challenge and sheer pleasure of it. This means we’re only targeting about 0.5% of the programmers in the job market. Operationally, when we have thousands of applicants per quarter, zeroing in on this 0.5% becomes hard. Extremely hard.
This is precisely why we sift through an average of 3,000 resumes to hire a single developer. It’s also why our 250-strong engineering team has scaled 18+ products to over a 100 million monthly orders sustainably. Lean Engineering is something we take very seriously.
Asking applicants to solve a simple programming problem is a logical step in the filtration process. Our take home problem is, quite literally, at the complexity of a high school CLI programming exercise. We don’t require any frameworks or libraries to be used outside of unit testing. We expect standard Open Source conventions including git, file and dir naming, dir structure, code cleanliness and appropriate build automation. A horribly hacky solution would take an hour, max. A clean one, depending on your definition of clean, 2 to 8 hours.
This is important to us, because EVERYONE at GOJEK codes. Seniority does not preclude you from the basics of the job. Because we believe, “Leaders who code are better judges of technical skill in people.” Check out our Engineering Principles for more.
To illustrate how simple this is, here’s what our guidelines look like:
- You have two full days to implement a solution.
- We are really, really interested in your object-oriented or functional design skills, so please craft the most beautiful code you can.
- Please ensure the coding conventions, directory structure and build approach of the project follow the conventions set by popular Open Source projects in the language you’re using.
- You have to solve the problem in Ruby, Clojure, Java, Go or any other language without using any external libraries except for a testing library for Test-Driven Development (TDD) — a simple console-based solution is all we expect.
- Your solution must build+run on Linux.
- Please use Git for version control. Frequent commits are a huge plus.
- Use standard build automation and dependency systems like ant/maven/rake.
- Please write comprehensive unit tests/specs. Additionally, it’s a huge plus if you test drive your code.
All in all, asking for a simple coding solution helps us filter applicants incredibly quickly and effectively. Only ~20% make it through to the next round. ~50% simply don’t submit a solution, and among those that do, about ~20% miss basics like using git.
Most drop out not because we think their code is bad, but because they fail fizz buzz. In fact, it’s so effective, from the very next round — our ‘code pairing round’ — we’re done with filtration and shift over to the selection stages of our process. If you want a quick reckoner on how we go about our recruitment, check this post.
We have no dearth of technical problems at GOJEK, and are looking for hackers with strong, hands-on engineering skills to join our team. The same team that has helped GOJEK become a Super App with an ecosystem aided by 2 million driver partners and 400,000 merchant partners. But why GOJEK? My colleague explains. Visit superapp.is and help us move Southeast Asia.