Freshly Brewed Zoman :D đŸș

Abhinav Bhardwaj
codealchemist
Published in
7 min readAug 3, 2019

So, after trying to find time to pen down my thoughts on how the first few weeks were for me here at Zomato, I finally got the time to write this article. I joined on 3rd June, the very first batch of fresh hires that would be joining Zomato in the upcoming months. They aptly named us — “Tech Newborns”.

From COLLEGE SENIORS to NEWBORNS 😂😂

It was a rather tough decision for me owing to the fact that I had multiple equally lucrative job offers in my hand. Nevertheless, I decided to join Zomato due to the following reasons:-

  1. I had discussions with many of my college seniors working for Zomato and people who had previously worked at Zomato and all of them equivocally said that it is one of the best places for a fresher to start his career.
  2. I always wanted to touch peoples lives with my work and had been closely following the way Zomato had grown over the past few years. Working here, I soon realized that my decisions, my code will have a significant impact on the lives of millions of users across the globe and I definitely feel proud about it.
  3. “The more you sweat in peace, the less you bleed in war.” — I guess “work-life balance” is something which one should aspire for after 30s. In your formative years, it is better to work in a fast paced environment where you get to work on a hell lot of stuff in a short amount of time and I believed Zomato would provide me with the same. Well, I am glad to say i was not at all disappointed :D.

Most of my friends pointed out that I was being too eager to kick-start my career, since my college ended on 31st May and I joined just after 2 days (Even went on my first ever trip in college life between these 2 days too). I could have used a break but I guess its just not in my nature. In accordance with the persona of a “Hustler”— an idea we embrace here at Zomato — “Good things come to those who Hustle”, I started my career with 7 other guys — Lovedeep Singh (from NSIT), Ritesh Ranjan (from NIT-K), Satyam Chauhan and Navneet Kumar (both from IIT-R), Aayush Gupta, Dhruv Rathi and Sushant Jain (from DTU).

The first day was all about induction and some necessary paperwork. Various teams, from Neutrality to Content, explained to us the journey from Foodiebay to Zomato, their future expansion plans and a whole lot of other stuff.

The next two weeks were all about exposing us to their tech stack so that we get a hands-on experience of everything, from designing apps using Figma to Frontend Development to Backend Development to Data Platform Engineering
 We came out as what they called — “Mini Full Stack Developers”.

Just to give you an overview, we had the following sessions :-

  1. Product Management
  2. App design using Figma
  3. Docker, Git and Jenkins
  4. Mysql, Redis, Logging and Memcache
  5. Backend
  6. Frontend (HTML and ReactJS)
  7. Android
  8. iOS
  9. Zomato Architecture Overview
  10. Deployment of PHP and services
  11. Monitoring + Profiling
  12. Security
  13. Data Platform
  14. Code Best Practices + Design Patterns + Code Review

A special shout-out to Ritika Vats, one of the many HRs that worked hard to ensure that our transition was super-smooth.

Well as of now, all of us have landed into our respective teams and I am now a part of the ML/Search team at Zomato. I was introduced to my teammates Anirudh Gupta, Shivam Agarwal and Rahul Kumar. These guys have been a phenomenal help, ready to answer any query, explain any piece of code which I found incomprehensible. Freshers have been put on a “Bug Fixing Mode”. I believe the most efficient way to do anything
 whether learning a new language or to familiarize yourself with a large codebase, is to get your hands dirty. Fixing bugs allows one not only to understand the language constructs, but also why things have been designed the way they are and the intricacies of a system. I had heard people here telling us many a times — “What other companies do in 3 months, we do it here in 2 weeks.” I realized this soon enough when I went on a bug fixing spree making PRs after PRs on github.

Although the learning curve is quite steep during the first few months of this transition because one realizes that tools and technologies taught in college are quite different from what are being used in the industry now. I am not talking about major upheavals in academia in a short time, but yeah
teaching Arduino and Raspberry Pi instead of the ancient and obsolete Micro-controller 8085 or say, teaching Git, one of the many indispensable tools in Software Development could be easily incorporated into the curriculum.

This slope ain’t that steep 😏

Nevertheless, I am constantly growing, becoming a better professional, day by day. Below are some of the takeaways from my learnings during the first few days here at Zomato.

  1. Murphy’s Law is so damn true — “Anything that can go wrong will go wrong”. Suppose you plan to tokenize a text and loop over each token
Now all is well as long as you have a valid text. But what happens when the string is null?? Your iterator, which was supposed to process each token FAILS. Imagine a situation where you wrote a script (which was supposed to run for 5 days) to process 25 million reviews on Zomato and your script fails on 3rd day. So, always assume that things will definitely break in production, test rigorously before pushing, even if it is as trivial a change as 3 + 3 = 6 or print("Size of array is " + size_of_array). Your code needs to cover each and every possible edge case.
  2. Learn from those code reviews on your PRs. Learning to write good quality code which meets high standards, even if you need to meet tight deadlines needs to be inculcated to become a great SDE. Naming functions in a way that explains what that piece of code does, grouping together parts of code that perform a single task into functions etc., the list is endless and such practises need to be adopted for easy maintainability of codebase.
  3. Always ask why? when you are being given a task. Don’t just do your job because you are being paid to do so. Ask why you need to do what you are being told to do, what purpose will it serve and ask another why if you are not satisfied with the reasoning.
  4. Have an in-depth knowledge of the project you are working on. Always have the answer to Why, What and How of the project you are working on, and if you are able to satisfy yourself, then you are good to go.
  5. There is always a reason why things aren’t working. Remember its Science not Magic! Look at the error, the recent changes in the codebase which led to that error. Google that error and see what others have to say and how they solved it
which brings me to my next point.
  6. Learn the art of googling, you will have to eventually master it in the long run. You will have to face all sorts of error on a daily basis which you haven’t seen before and have no idea of. Hence, seeking help from fellow programmers on the internet (or stackoverflow, to be precise :D ) will go a long way.
  7. Decisions from discussions should not be based on mere opinions, explore all the possible options for solving a problem, write pros and cons and act according to the current priorities.
  8. Pushing the code now and improving it later sound good, doesn’t work. You’ll never comeback to improve an old code, just because you promised your past self.
  9. Don’t use heavy words to explain things that can be explained in layman terms to a non-technical person.
  10. User is always an idiot, he would never use the product the way you want him to. As I said earlier, try to cover each and every edge case.
  11. Writing tests is a very good idea and never a wastage of time, it will definitely make your life easier & will prevent your code from ignorant developers.

Edit: I recently came across a snippet on Twitter by Julia Evans and it somewhat accurately depicts the transformation I have been through.

The one at Zomato Farmhouse
Because ending a story without a memory is criminal 😆

If you liked this article, click the 👏 sign and follow me for more articles. If you have any feedback, reach out to me on Twitter, LinkedIn or Quora.

--

--

Abhinav Bhardwaj
codealchemist

Engineering @Uber | Ex-Zomato | DCEian | Software Developer | Open Source Enthusiast | Food Hogger | Student Forever