Amit Kumar : Life Is Learning!

An Year at Zomato 💼


Hi! there, It’s been over a month since my last day at Zomato, I have planned this post for a while now. Probably now is the right time to pen down my thoughts on the last 1 year at Zomato. I had a great time there and I wish them success. It all started on 3rd October 2016, my first day at Zomato. I have been a fan of Zomato well before I joined them, mainly due to their amazing social media humor. I was very excited to start my first job there. The first day started with the induction programme (An induction programme is an important process for bringing staff into an organisation.). Along with me there were 8-10 more of them and two of them joined in the tech team (Suhaib and Anu). I was an off-campus and off-season hire so there weren’t a lot of tech people joining, except the three of us. The induction introduced us to various teams and their job. In the evening after the induction, the HR took me to introduce me to my team. I was told that I would be working with the ML team (though the team was mainly known as Reviews Team).

Team

It was a team of 4 including Shubham Chaudhary, Amit Kushwaha and Paras Arora (our manager). In July’17 Anirudh was the latest addition to the team. I must say that was probably the best team I could have worked with. If I am asked one person from whom I learnt the most, It would probably be impossible to answer, as all of them contributed into different aspects. Paras was one of the finest and smartest manager that I have worked with. Probably I got to understand the job of a Product Manager only after working with him. Amit and Shubham were excellent team members. I learnt a lot about Machine Learning and Natural Language Processing from these guys. They recently wrote a paper on review highlights, will share the link as soon as its published. Shubham was one of the benchmarks in terms of best development practices. He maintains a high quality of work no matter how fast he has to deliver.

Work

My first job was to create a dashboard to have the ability to easily create the collections on Zomato. A Collection is a set of restaurants based on various themes like Biryani, Desserts, etc. The dashboard was supposed to be based on the Review Highlights (it extracts tags from the reviews based on 3 aspects of a restaurant such as food, service and ambience), which Amit and Shubham were working on for a while. The creation of that dashboard was quite a challenging task for me as I had no prior experience with frontend, but thanks to Shubham who explained me some basics such as what is an ajax call to help me getting started and Amit who introduced me to the design of review highlights to understand the data I need to use for the dashboard. Apart from the technical aspects my biggest learning was that the estimation of a project requires thorough understanding & planning of each and every aspect of the product, this came through the fact that I estimated its completion time as 2 days, which took over two weeks.

Throughout my time at Zomato, I primarily worked in the backend and also got the opportunity to work on the image quality prediction pipeline. My last major project was cuisine predictor (predicting the cuisine of a restaurant based on the dishes they serve).

Most of the people I worked with were really good and eventually I made some amazing friends. I mostly enjoyed my work. It was fun going to work, but as they say all good things comes to an end. In september I realized that, It’s the right time to move on, nevertheless it was a tough decision.

Takeaway

Below are some of the takeaways from my learnings during the last one year, in no particular order (some of them might seem obvious):

  • Time estimation is one of the toughest job in software engineering, the key is to try to break the job into independent units and try estimating the time for each unit.

  • What can go wrong will definitely go wrong i.e. things will definitely break in production, test rigorously before pushing, even if it is an as trivial change as 2 + 2 = 4.

  • Writing tests is a very good idea and writing tests is NEVER a wastage of time, it will definitely make your life easier & will prevent your code from ignorant developers.

  • Lets push it now and will improve it later doesn’t works. You’ll never comeback to improve an old code, just because you promised your past self.

  • Decisions from discussions should not be based on mere opinions, explore all the possible options for solving a problem write pros and cons and see where difference of pros and cons is the greatest.

  • The best way to ship complex products is to first ship a simpler version of it and see how far it goes and then incremently build upon it as it better to ship a simpler version in one month than to wait for an year for a full fledged product.

  • Always ask why? Don’t just do a job for the sake of doing it, first ask why you need to do what you have been asked to do and ask another why if you’re not satisfied with the reasoning.

  • Always have the answer to What, Why and How of the project you’re working on. Try explaining it to yourself, if you’re able to satisfy yourself, then you’re good to go.

  • Don’t just ask question just because you’re too lazy to try hard to google the solution. Remember it’s science, not magic! There is always a reason why its not working.

  • If you’re building an API, never trust the guy who would be using it, handle the case for when he tells his 6 year old daughter to use it.

  • Security is one of the critical things which is often ignored a lot by a Software Engineer. Remember that you are responsible for every bit of your code, think from the perspective of a hacker.

  • User is always an idiot, he would never use the product the way you want him to.

  • Don’t use heavy words to explain things that can be explained in layman terms to a non-technical person.

  • Request and anticipate code reviews, if you don’t then you can never be a good Software Engineer.