Gojek Engineering — Guiding Principles 101
By Ajey Gore
Working at Gojek means working with the best and brightest on the most cutting-edge technologies. While it is extremely rewarding, it is also challenging. This is because we often work on tough problems with no clear solution — which involves taking risks and learning things on the fly.
All this, while competing with the best in the industry.
That’s why our guiding principles serve as a great reference point to deal with situations that arise every day. Here are some that we abide by:
Everyone writes code — At Gojek, we believe that Software Principals/Architects/Engineers can only do the right thing when they work on code themselves. It’s the only way to decide what’s working and what’s not. We don’t believe that software requires a 50,000 foot overview with people exclusively working on the blueprint. At Gojek, writing software is not a low-level task; it’s at the very core of what we do.
Leaders who code are better judges of technical skill.
Everyone needs to ‘walk the talk’ — We respect people who get down in the trenches and take a hands-on approach to problem solving. Based on our experience, standing at a distance and issuing commandments has many a time been inefficient and error prone, and hence we avoid this.
Leaders are grown and not made — We believe in acquired respect and leadership, not leadership by position. At Gojek, you earn your leadership mettle. We believe in helping our people grow into leadership roles by giving them chances, risk appetite and freedom. We trust our people and support them to do the right thing at any given moment. In my own career, I’ve been privileged enough to have found some amazing mentors, and I am glad to be able to continue the legacy at Gojek.
Every decision is correct at the time it is made — Swift decision-making is extremely important in a fast paced environment like ours. Once a decision is made, we don’t constantly agonise over it or second guess. We trust that whenever someone makes a decision, it is the right one, given the information available to them at that time. Only the passage of time can tell us whether a particular decision was right or wrong. It’s OK to change decisions, and we encourage people to not be afraid to make a decision.
Every person has some strengths, even if we don’t always see them — A great team is built with a group of people who have complementary skill sets. A combination of different strengths make teams that can tackle all kinds of situations. At Gojek, we believe each one of us is unique and has unique strengths. It’s just a matter of finding the right role to match the skills. Teams become super strong when they appreciate each other’s strengths.
Working in tech means learning all the time — Learning is important in every field. In the technology industry, it is a matter of life and death. Technology is changing all the time, what worked a decade ago may be completely obsolete now. For example, practices that worked in Waterfall don’t work in Agile, and user experiences on mobile apps were unimaginable a few years back. So, we constantly look for and admire people who are curious and willing to learn.
The best part? Such people will always hire people they can learn from!
Pair Programming and Test-Driven Development (TDD) work — If they didn’t, our teams wouldn’t exist. Wherever we have followed this, we found our team’s job on supporting software is more around features than bugs! We have experienced over decades that this helps us build features faster, and mature teams organically. The bottom line is : to write beautiful code, we believe there is no better way than rigorous pair programming and practising TDD.