The People & The Problem

 

9 years since I’ve decided to start on my own. Looking back, not a bad decision after all.

Looking ahead, excited only about two things. People I’m working with and the problem I’m solving. More and more interesting people to work with. The scope of the problem to be solved is getting bigger and bigger.

#excited!

Photo by rawpixel on Unsplash

#define startup

There are a lot of ways to define a startup. Paul Graham defines a startup as growth.

This is how I would define it.

A startup is an interesting & brutal game. The reason why it is both interesting & brutal is that the rules of the game keep on changing. Every 2 or 3 years, almost the entire rule set will be replaced. It is even crazy to imagine playing cricket for the first 1 hour, soccer for the next 2 hours and basketball for the remaining 1 hour.

With the above definition, one can assume that playing by the same rules is a sure way to lose the game. Since no one knows when the rules of the game change, one can understand the rules only by observing the results of each round.

#meta – The above definition of a startup also changes every few years.

Who built Interviewstreet?

The answer for the above question was always “Vivek & Hari”, but not anymore.

To give an idea on from when to when we built things and now who is “actually” building the company.

From June 2009 – December 2011 

hari vivek

From Jan 2012 – Today. 

akshay shiv

 

There were many other smart programmers we hired, fired/quit. They did help us grow forward, but these two guys were there with us for around 2 years now.

Couple of things I’ve learnt from them.

1. Hire people who are ready to learn and work. It doesn’t matter if they are freshers and not from IIT/NIT.

2. Once point 1 is taken care, you will be shocked that they surprise you with their work regularly. After a point you start getting used to the surprises and just start trusting them.

3. It takes at least 2 years to make a big impact in a startup. If you want build the startup and grow along with the startup, make sure you spend at least 2 years.

4. Weird that we have titles like CEO, CFO, CTO and Founders/Co-Founders, but these real “builders” don’t have a proper title. The title should clearly mention that these guys are more powerful than the founders.

Proud

A few days ago, a website (hmm, not just any website though) happened to mention my name in one of their posts.

A lot of people congratulated (for what) and some even said “You should be so proud now”. Well, to tell you the truth I wasn’t. In fact, for that matter, I don’t think I’ve ever been proud of anything except one.

I am insanely proud of the team I’ve built in Interviewstreet. I’m proud to have a fun/great working environment. I’ll say it again. I’m proud of my team here. Rest of the stuff I achieved is by luck or by the hard work of this great team.

So, if you ever want to congratulate me for anything, please do drop a mail to team at interviewstreet.com. It will reach the people it belongs to.

739853_560495380630607_1729439681_o 483062_10151296993500665_1030003298_n

10 commandments for excellent customer support

f you are serious about customer support, then you will wake up in the middle of the night, search for you mobile phone and your heart should skip a beat when you don’t find it next to you. When you finally find it next to your laptop on your table, with no missed calls from your customers (thank god), you take your phone and hug and take it to your bed.

1. Answer. The person handling the customer support should have a good idea of the picture. Helps if the same support person talks to the a particular customer every single time.

2. Don’t Escape : When a customer explains a problem, it works for me is never a solution. (web startups/browser issues)

3. Listen to the customer totally before offering a solution. You might have had many customers face the same issue, but don’t jump into a conclusion and throw a solution at him before he finishes.

4. Apologize. Even if it wasn’t your fault, but if your customer is facing a issue, it is YOUR fault. Don’t ever thing that the customer is stupid making silly mistakes. Your application should be customer friendly.

5. Act. Act immediately after apologizing. Customer doesn’t need your apology. No one is going to “forgive” you just coz you apologize to them. Act fast. Super fast.

6. Explain. Explain what’s going on to your customer. They understand. Trust me. If things are gonna get delayed, explaining things to customers gives them heads up and they will be prepared.

7. Don’t expect customers to care whether it is your weekend/holiday or how many hours you sleep per day. In short, you human voice should replace the IVRS. Every single time, after 2 rings, they should get a hello, no matter when and where they are calling from?

8. SLA. You should not worry about the digits in your SLA, but you should try to optimize the units. If you take days to answer a customer query, you will be out of business.. If you take hours, try to make that reply in minutes. If you answer within minutes, try to answer within a few seconds. Nothing makes a customer happy than seeing a reply to his mail even before he could signout.

9. Care. Suggest things for customers which might really benefit them. Not because it involves less work for you. Think from their point of view and suggest a solution by which they save the maximum time and money. You business is not to make money. It is save customers time and money, for which he is ready to pay you money. So, value of time saved + money saved >> money he pays you.

10. Worship : Jeff Bezos

My TODO Notebook.

When I used to work from bangalore, I had this 300 pages notebook. I used to carry it everywhere and write my TODOs. I stopped using it after I moved to chennai. I happened to get a look at this notebook after a long long time and boy, how much I’ve scribbled.

Note : Most of the notes is about interviewstreet and IBM work. You might not understand what it is all about. Even I don’t 🙂 Just posting some random pages from the book.


Feedback 

  • Candidate Name : ___________
  • Interview Date/Time : ____________
  • Competencies Tested : ___________
  • Technical Skills : ____________
  • Communication Skills : ____________
  • Areas of Improvement : -> Textarea
  • Update button -> Triggers mails

13th ->

  • Bucketization
  • Feedback
  • Confirm/Forgot Password -> let’s mail them
  • Profiles (interviewer/interviewee)
  • Robin (details about partnership)

14th ->

    • Profiles backlog
    • Indus call to discuss stuff
    • Blog + Forum
    • Post a Request
    • Banner + Poster

15th ->

    • Search (Lucene Overview)
    • Google Analytics
    • Visiting Cards/Posters/Banners

16th ->

    • Development env fix.
    • Open questions
    • Change password in profile

Viv 

      1. Autocomplete + HTML change for viewer region
      2. Edit Profile -> Bucket Display
      3. Handle -> Opens a facebok
      4. Displayable profile -> Page 4 details

Hari

      1. Forgot password
      2. Sabsebolo config
      3. Archive

      1. CC Avenue
        • Edit Bank details? – Call ccavenue
        • Bank regn
          • Pay reachtax
          • $ conversion?
      2. Bucketization
        • Concept ready
        • Discuss implmentation & finalize
      3. Feedback
        • Discuss wireframes + implement
        • No payment before feedback
      4. Google Analytics
      5. Forums + Blog
      6. Code cleaning + nice to haves
      7. Search
      8. Testing for critical area (Selenium/Manual)
      9. Home page topic!!
      10. Password – confirm/forgot
      11. Sabsebolo config
      12. Interviewee profile.
      13. Archive

Bugs to fix

Register.php

      • CSS in IE6
      • Facebox loading should come in center.
      • Facebox size in IE6
      • Background color of openbox ok?

      • Register domain. edubeam or careersabove dot com
      • Landing page campaign finish
      • Finish home page
      • interviewer/viewee page
      • profile page
      • header — nav links
      • home page ->
      • register, login page
      • tooltips
      • Analytics for site
      • Latest news (Backend + UI)

Swaroopch 

      • Change the method not the core model after listening to others.
      • Three phases of action
      • Idea -> Execution -> Result
      • If the result is negative, check if execution is correct. If the execution is perfect, then go to idea.
      • Selling is all psychology. Try to put the pitch in the right angle.
      • Get 10 interviewers

Naveen

      • Nothing much
      • I am not sure we are gonna work with him now.

Prateek & Nithya 

      • Concentrate on SEO
      • No offline is needed for them
      • Sit for a day and think how do I make my page rank better.
      • SEO is something you do everyday.
      • The results take a month to come back.

Sarah

      • She is cute 🙂
      • No particular gyaan. Mostly about techcrunch.

Interviewstreet Workflow

      1. Local git to server
      2. update_alpha.sh
      3. mail to nandini for content
      4. test scrips on browser of IE, FF & Chrome
      5. Optimize JS + CSS
      6. Test round 2
      7. Prod Push

Topics to ponder

      1. Feedback Mechanism -> for viewer and viewee
      2. Post a request + matching interviewers
      3. Payment interviewee
      4. Git Cleanup

There must be close to 50 TODO list in that book. SCARY.. 🙂

Remove all your friends from Facebook.

Very rarely, you will want to delete all friends from Facebook and start a “fresh” facebook account.

Now, it’s hard to do this manually. Thanks to phpunit + selenium + a few lines of code, this can be done now.

The following script removes all your friends from facebook 🙂 Replace and with your username and password respectively.


<?php
require_once 'PHPUnit/Extensions/SeleniumTestCase.php';
class Example extends PHPUnit_Extensions_SeleniumTestCase
{
  protected function setUp()
  {
    $this->setBrowser("*chrome");
    $this->setBrowserUrl("http://www.facebook.com/");
  }
  public function testMyTestCase()
  {
    $this->open("/");
    $this->type("email", "<username>");
    $this->type("pass", "<password>");
    $this->click("//input[@value='Login']");
    $this->waitForPageToLoad("90000");
    for($i=0; $i<1000; $i++) {         $this->click("link=Profile");
        $this->waitForPageToLoad("90000");
        $this->click("//a[@href='http://www.facebook.com/sp2hari?sk=friends&v=friends']");
        $this->waitForPageToLoad("90000");
        $this->click("//div[@class='fbProfileLargePortrait']/a/");
        $this->waitForPageToLoad("90000");
        $this->click("link=Unfriend");
        sleep(5);
        $this->click("remove-friend");
        $this->waitForPageToLoad("90000");
    }
  }
}
?>

Note:
1. The script will stop in between with timeout error. You probably should run this script in an infinite loop.
2. Once you’ve reached 0 friends, facebook blocks you from adding friends in bulk for 2 days. So, you probably have to wait till facebook trusts you as human and not a bot. 🙂

Happy hacking 🙂

Git reflog and git force push

Git reflog saves you from all screw-ups you do while using git.

Here is a sample output of git reflog.

hari@hari-desktop:/var/www/recruit$ git reflog
e458f54 HEAD@{0}: checkout: moving from test1 to e458f54fe99202c82c2690be4fa2fe2d7aa7be32^0
a3281d1 HEAD@{1}: checkout: moving from master to test1
f265802 HEAD@{2}: checkout: moving from test1 to master
ef08492 HEAD@{3}: ORIG_HEAD: updating HEAD
e458f54 HEAD@{4}: commit: Implement phpunit testcase.
1ecf2c3 HEAD@{5}: commit: Bug#1 : MCQ Choices displayed in questions.
f265802 HEAD@{6}: checkout: moving from test1 to f265802d1d65a9ac92bf9f6414d8f468444cce66^0
ec280c6 HEAD@{7}: checkout: moving from release to test1
f265802 HEAD@{8}: merge master: Fast-forward
ccec6c4 HEAD@{9}: checkout: moving from master to release

All your commits, checkouts, pull, merges are logged in here. To, reset the git to any point in there, we use the following command.

git reset --hard <commit-id>

But if you push this to the git, you will find that the commit is rejected now. To forcefully push your new HEAD to server, we use the following command.

git push origin +<branch_name>

+ before the branch name forcefully pushes the branch (even if your current branch is behind the origin).
NOTE: Please be careful when you use the command above. You might lose all the changes made by others (temporarily) if you use it. Of course, using reflog + reset, you can get back the changes.