By Gaurav Singh
If you’re reading this blog, you’ve likely heard about Gojek (and hopefully fancy working with us on the cool features we roll out to users of our SuperApp.
Working at Gojek is challenging and fun. We run into interesting problems, and there’s a constant supply of technical testing challenges to solve at scale on all layers of the stack — be it mobile apps (iOS/Android), Web or multiple backends in a distributed microservices architecture.
We are also growing like crazy, and looking for smart passionate engineers who get things done… just like you. 🙌
If you are still reading this, you’re probably sold on the idea that Gojek could be the next home for you.
Cool. So, what’s next?
We know you’re awesome, but it’s still important that we understand you better and find out if we would be a good fit for your career/work aspirations. This involves going through our interview and hiring process.
This blog aims to give you a definitive guide on how we go about our interview process for SET and how you can avoid some of the common mistakes.
Note: At Gojek, an SET (Software Engineer in Test) is a hybrid role between a full-fledged exploratory tester and an automation engineer. We look for people with T-shaped personalities who love taking on challenges and championing the quality culture of teams in a fast-paced environment.
The Interview Process
Take-home coding problem
At Gojek, the very first step of the interview process is a take-home problem. This is for us to see your coding and design skills, and how well you use them to build a scalable test automation framework, for either a web/mobile app or an API testing related problem statement.
You get to choose the problem statement you want to solve based on your experience and skillset.
You’ll have our help with understanding explicit guidelines about the requirements to solve the problem and expectations from the panel. You get a reasonable time frame to submit this back to us.
Tip: Read the problem statement and the mandatory requirements carefully — Try to reflect these in your solution. Always think of it this way: would the code you’re planning to submit make it to an actual project you work on, and is that your best work?
Once you are confident of the solution, zip your entire solution project along with the local git repository folder, upload it on Google Drive/Dropbox and then send the link to the recruiter coordinating with you.
The assignment is reviewed by an SET within Gojek to provide feedback. This is the first step of filtration and assignments that simply do not meet our minimum criteria do not make it to the next round. 🙇♂️
But, hey! We’re here to help!
Common mistakes and how to avoid them in your submission
If you’ve been following our blogs and other social media channels, you’d know we don’t shy away from talking about our failures. We know minute mistakes cost a lot sometimes, and it would be sad to see your solution not get accepted because of easily avoidable errors or omissions.
To ensure that your submission gets in, do yourself a favour and take care of the following aspects:
- Firstly (and most importantly) your code should achieve its objectives. These are tests that are well written, understandable, and out of the box — with a simple command from the terminal. You should take care to make your code platform-agnostic and expect it to run on Mac/Linux machines.
- This might be obvious, but read the rules of the game very carefully and ensure they are represented well enough in the solution that you submit. Any requirement which is mentioned as mandatory is a must-have and a failure to implement that in the solution greatly increases the chances of it being rejected.
- We want to see how you approached the problem and how your solution evolved. The only way for us to see that is through well-crafted commits in your local Git repo. This also helps us weed out plagiarism attempts. Small commits with a good description make it a pleasure to understand your thought patterns and workflow while solving the problem.
- You would have probably spent a lot of time perfecting your submission. Hence, please DO NOT make this solution public on GitHub/GitLab or any other hosted platform, as that would just cause your submission to be instantly rejected.
- While most of the testers at Gojek are smart, we cannot read minds. A well-documented Readme file where you explain the stack used, your approach and how to set up dependencies and run the tests, goes a long way in increasing your chances. In general, humour us and treat us like a layman and make the solution so friendly that anyone can run it with minimal effort with a single command on the terminal.
- Follow the idioms of the programming language you chose to solve the problem in and make use of build tools like Gradle, Maven for JVM or requirements.txt/pipenv for Python and so on. This ensures we do not spend most of our time trying to get your project to compile and run with the dependencies.
- In the end, this round is about HOW you solve the problem rather than IF you can solve it. So go ahead and send us your best work. Treat this submission as if you are starting a new framework for high scale production use. Make the code so obvious and readable that anyone reading it instantly gets what you want to convey with sensible abstractions.
We favour clean and readable code, so ensure there are no obvious code smells (redundant imports, commented code, duplication, Long methods and well, unnecessary comments explaining each line. You have functions/methods for that 😉).
Tech 1: Code pairing
Once the code review is done and the panel within Gojek likes your solution, you are called in for a few rounds of F2F interviews. (This might be preceded by a remote video chat round in case you are an outstation or remote candidate.)
The first round is a code pairing round. Here you meet with a couple of interviewers who might all be testers within Gojek, or a combination of a developer/product manager with a tester.
This round intends to give you a chance to explain your thought process while solving the problem, and any caveats with your approach.
The panel would engage in a discussion to understand these in detail. Most importantly, this round is a chance for us to see if you can code freely using the IDE/editor of your choice, your workflow, working style and what it would be like if you come in and start working with us.
Tip: Do bring your laptop along with the project submission already set up in the IDE environment of your choice.
The panel may give you a few extensions of the problem or ask you to optimise your solution and ask you to hand-code this solution in front of them on the IDE.
We understand no one can remember each and every syntax of the framework/language used to implement the solution off the top of your head… Unless you are a 10X engineer. 😉
You can use Google or Stack Overflow to fill in these syntactical gaps.
We also understand that interviews are stressful and sometimes it’s difficult to understand the requirements of the problem under time constraints. In such circumstances, we highly encourage candidates to ask clarifying questions to remove any ambiguities.
If this round also goes well, then you proceed for the next round of interviews.
Tech 2: Technical discussion
Having proved that you can indeed code well, we’d want to understand more about how you think like an exploratory tester and also about your current project and the awesome work that you do there.
This round is more about seeing your exploratory testing skills live in action, wherein the interview panel would give you a problem statement/case study among the many hard problems that we have or are solving at Gojek. This is to see if you can think about all the angles to formulate a test strategy with automation and come up with test cases to break the system.
This is a collaborative exercise and we want to see aspects of systems thinking and what your mental models while approaching any testing problem are.
We also want to see how you play the role of the user advocate in your current project and your experience in bringing quality engineering practices and leadership into your day-to-day work.
The interview panel might also ask about the role you already play in your current org and how well you have understood and solved testing and automation challenges there.
Doing well here already gives us a strong positive sign that you are up for the numerous challenges Gojek has and would be a good fit here.
Now for the home stretch!
If you have reached this stage, then it’s a hint to you that the test engineering team already sees you as a good fit and are excited for you to join us. 🖖
However, there is a final hurdle to cross and it’s time to take things up a notch.
You would meet or talk with one of the members of our leadership team and this conversation is mostly to understand if you would indeed be a great fit for Gojek and what unique qualities or perspective you bring to the table.
Don’t be surprised if this round ends up being quite technical in terms of expectations as well. Remember, everyone at Gojek, including the leaders, code. 👩💻👨💻
If you make a good impression, we agree that you would be a worthy companion to join us in our journey to become the dominant #SuperApp in Southeast Asia, and the recruitment team will reach out to you with offer details.
If you do not make it through during any of these rounds, please do not fret or get disheartened. It might just mean that we could not find the relevant skill match for the role that we are looking for at this moment.
Please take the given feedback constructively and work on your skills and re-apply at a later point in time.
Hopefully, this post enlightens you about what we are looking for in candidates and helps in easing some nerves around the interview process for an SET role at Gojek!
So, what are you waiting for? We are hiring! Head to our careers page and apply. We’ll hopefully run into each other in a future interview or team and share our testing journey at Gojek.
All the best! 🖖