You can do a startup, you can't tell a girl?

One fine morning - on way to our office, with winter approaching, morning breeze getting cooler and the usual pleasant weather in Bangalore, I was having random discussion with my friend about work, life and things in general. The usual stuffs! But then he said immaculately, which stuck in for few minutes - You can do a startup, you can't tell a girl?

I will first talk about the former here - how all it happened :)

Back in 2011, I had just returned from intern and I thought this was a good time to start working on a project of own which really interests me and in which I can learn new stuffs. My experience with Amazon was not very good, and I was somewhat dissatisfied with how people in big organization work. It's not much better in Google India either. I knew right then that I would most probably join a good startup with small team and the way I have been working in IMG with a closely knit group made this decision easier.

After completing the GSoC project in August 2011, I started writing a backend server which could transmit files between two open webpages without storing the data on server. I was using node.js, memcached and C++ for this, and this was the first time I was using the former two. But writing code while learning was far more better in deep understanding of how node.js works. After writing over 3000 lines of code in a month and getting a skeleton server ready which could transmit text files from one webpage to other, I realized many similar stuffs exist and this problem is not much worth working on right now. And that's how I abandoned it.

In the start of December 2011, I had a chat with Sachin & Gurbinder who were making a platform for preparation of technical interview. I had something similar in mind - a place for programmers to write code online. It sounded a like a good idea to work together and we all thought let's see where it goes. Since start of January 2012, we had started working together and very soon we gelled together well. We worked day & night, in between the classes, in the holidays, during the exams and launched the first version on February 15, 2012. In just over 45 days, we couldn't believe we had done so much and were all excited.

The part that we used right tools, languages and technologies helped us a lot in building a lot of things in such a short time. We were primarily coding in Python/Django in the backend, used a lot of javascript & jquery in the frontend and used Git from day zero to manage the source code. The second important part was that we were working together in a single room, that dorm room was our office with walls converted into whiteboard. We didn't need to use a project management system or a meeting then, any issue that came up was resolved then and there. All these helped us in iterating very fast and writing a lot of code. By the end of January 2012, we had already written over 25,000 lines of code.

After we launched in February, we ludicrously dreamt that the website will go viral. We dreamt that tomorrow when we will wake up, there will be thousands of users registered. This is the dream of every techie out there, and we were no different.

But the best thing about doing a startup or even actively pursuing that is that you soon come to your senses. You realize the challenges involved, the thorny path, the reality of the world and how difficult it is make a world class product and business around it. The story that techcrunch feeds to the virgin childish brain of a college kid is that everything big out there is a overnight success. What those stories don't tell is that there is at least 5 years of hard work behind that overnight success!

Nevertheless despite everything, we had continued working and wrote lots of code keeping the vision in our mind. From the start, we want to build a place where programmers hang out, solve interesting problems, discuss questions, and learn programming. And we are still working towards accomplishing this. We have committed some mistakes and have learnt from them too.

It was June 2012 now, and I had stayed in college after rejecting internship opportunities from Bay area. The goal was to continue refining the product and plan what to do next. We also had an offer from an accelerator program and it was time to make some hard decisions. After considering everything, we decided that we will reject the offer, move to Bangalore in October and give it a shot! But again, we continued working and were able to do a lot of things in month of June. Part of that was writing a newsfeed system from scratch which accounts for all activities happening anywhere in the site. It's so well written that any new action can be plugged into it without writing much code. But we still have to work a helluva lot on the frontend. That again required me to leave the GSoC 2012 project in the middle.

By now, I had mostly understood the difficulties in starting up but didn't have a solid plan yet. But we knew we were going to do it anyway, and we never stopped working. In August & September 2012, we used to have atleast 20 to 30 commits daily in the release branch. Most of them were on making the backend more robust, cleaning up the code, refactoring those parts which were becoming bottlenecks in terms of performance and modularity. We used memcached, node.js and jquery throughout the site. We also wrote lots of python and shell scripts to automate the deployment & build process, and to simplify other day-to-day developer work. During the same time, I wrote the code-checker engine in C and the code-checker server in C++ using Apache Thrift. I knew that this would be distributed in nature with multiple code-checker servers running to handle the code submission and the corresponding engine will evaluate the code. This insight allowed me to design the architecture in a distributed way since the start, where python client will do a RPC (Remote Procedural Call) to the code-checker server running on different machines to judge the code. This has also helped us now in scaling brilliantly on Amazon Web Services. By the end of September 2012, we had written over 80,000 lines of code.

Moreover, the best thing was awaiting us. It was the GSF accelerator program in which we were accepted despite having little hope. In a week, Sachin left his job at Google, I moved to Bangalore from college and we both started working full time. And we were able to leave behind the comfort, security and so much more, because we believed in ourself and the passion to build technology. But GSF has been an eye opener for us. We learnt that this is a marathon where if we believe in ourself, we will cross the finish line one day. And that there are high highs and low lows in a startup. Idea evolves, product evolves and patience & persistence is the key to success. We are still in early stage, building some amazing product, writing lots of code and are working towards our vision.

As of today, HackerEarth has three product - hackerearth.com, prepare.hackerearth.com, and code.hackerearth.com. We are aligning them into one, making the whole product simpler, faster and easier to use and engaging programmers more smartly. We have already processed over half a million lines of code, have got 100,000 unique visitors and around 9,000 registered programmers on our platform. The growth has been completely organic till now, but we have plans to capitalize on this and accelerate it significantly.

And that's how I have ended up doing my own startup! As you might acknowledge, this is not like you wake up one day and think let's do a startup. It's a continuously evolving day-to-day life which is different from the usual one, where you work on tangible element in which you deeply believe in and have the passion for that, where you remind yourself that you are going to do this come what may, and you work pertinaciously towards making a dent in this universe!