Author Archives: admin

SDE vs SDET

SDE vs SDET

SDE’s vs SDET’s – not essentially a battle but there’s a lot of myth surrounding the idea of SDET’s, switching roles, etc. I am pleased to invite Philip who has managed both SDETs, SDEs, and PMs at Microsoft, (probably about 150 over the years) and has quite a few valid points to share.

Switching roles:

The best time to make the switch is early in your career SDE-1 or when you become a Principal engineer. Early in careers, SDEs and SDETs share many of the same expectations: learn quickly, code well, etc. But in SDE-II’s, the expectations diverge a bit. This makes it pretty hard to switch from, say, an SDET-II to an SDE-II.

If you decide to switch professions, switch within the same team / project. You know the current team well, the business logic, the codebase, etc.., it’s hard to switch a lot of variables at the same time: new team, new codebase, new manager. So the ideal switch that’s recommended, is an SDET-I into an SDE-I on the same team working with the same features.

Reputation:

Here I’ll say something unpopular: SDETs have weaker reputations at companies because, as a generalization, they are weaker. This statement isn’t possibly be true of all people. I’ve never personally managed or mentored any SDEs who wanted to become SDETs, but I’ve talked to many, many SDETs who have wanted to switch into other professions.

Regardless of causality (i.e. whether you believe they want to switch because they are less respected, or because they are less respected because the ones that can switch have switched), there’s a selection bias that happens whenever one field primarily has people leaving it without the same number of people joining it. This is an unpopular thing to say, and I’ll no doubt get flamed by SDETs who feel that I’ve personally judged them, but I’ll say once again: generalizations do not apply to specific individuals the way they apply to groups in aggregate. I’ve known many excellent SDETs. I’ve managed SDET teams. I am not an SDET hater. Just want to explain, though, that the weak reputation of SDET comes partly from a selection bias that happens when people in that profession keep leaving it

Pic src: Creative Commons on Flickr

Hiring Programmers 1-liner

So what does it really take to get that dream job of a developer? Google for “Developer Job” and we find millions of sites giving out profound advise on how to go about practising, how to prepare a code-strong-resume,how to participate in coding contests and the list goes on…

It is said that a good developer can easily recognise another of his kind and this is the key companies use to filter out candidates who could be their future employees. Interviewers easily sense it when you are merely reproducing an already known best solution to a given problem no matter how well you go about the act of bringing-out-the-solution-on-spot.

The key here being , candidates who genuinely spend time and take intrest in solving the problem definitely have an edge in the interview.

We asked for a quick 1-liner from CTO’s of some of the top startups that developers love to work in. Here’s what they had to say..

Dharmesh ShahI look for evidence that the individual really enjoys writing code and releasing products. That means they’ve done it before, both professionally and as a hobby” – Dharmesh Shah, Hubspot

David HeinemeierWe never really care for resumes. We look for programmers who write great code with a great attitude” – David Heinemeier, 37signals

Pallav NadhaniAbility and integrity. Ability to look at and define the problem from various perspectives and integrity not to take shortcuts to provide the best known solution to the problem” – Pallav Nadhani, Fusion Charts

Hiten ShahSelf-motivated, dynamic individuals” – Hiten Shah, KissMetrics

Where are the good programmers?

Geek

Geek

Heads-up: The post is pertinent to freshers (college grads).
This is a standard question asked by a lot of companies. While they do manage to find the talent from “top-tier” institutes, the count is still not enough.

“I can’t go on a campus rampage it’s going to consume a LOT of my resources (time & money)” – says a hiring manager from a hot startup

We can’t agree more! While lateral hiring follows a different route (consultants / popular job portals, etc.), recruiting freshers and college grads is still traditional – we decided to change! We decided to introduce…

CodeJam

Although it’s usage has become very common to indicate a programming contest, the credit goes to Google for introducing it.

One of the ways of identifying talent across the country is by hosting a CodeJam! There can be different variations, but it typically consists of 3-4 programming problems (pretty tough) to be solved within a specific time frame.

Why would you do this?

  • Students across colleges can participate
  • One of the best ways to test programming skills
  • Identify colleges which perform well in the contest, you could visit them for campus placements
  • If you conduct 2-3 rounds of codejams, you could even offer a job straightaway to the winner!
  • Exclusivity and completely white-labeled solution (that’s a small pitch ;) )

And most importantly, we do all the setup for you :) . There’s absolutely no extra time you would spend. We successfully conducted a Code Jam for One97 last week and doing one for Inautix soon!

If you are interested, send us a note to: team@interviewstreet.com and the CodeJam can be up & running in < 12 hrs! We leave you with another interesting way of recruiting engineers :)

Interviewstreet with Startup weekend

Hackathons are something we cherish and almost happens on a daily basis at Interviewstreet :) . It’s wonderful that such events are happening in India, organized by startupweekend happening in Bangalore & Delhi

Startup weekend

Yes, you guessed it right! We are one of the sponsors to the event. Eagerly waiting to see the startups coming up and importantly the winner ;)

Trends in recruitment tools

Changing trends

Recruitment and hiring is becoming a hot space with a lot of players (new) coming in. I think companies are realizing that the traditional methods of posting on job boards / outsourcing to recruiters / phone interviews, etc. are not only time consuming but also costly.

I am listing a few startups classified into 4 categories.

  • Application Tracking system (ATS)
  • There are a lot of ATS tools out there, but Jobvite and The Resumator are really simple to use and can be seamlessly embedded onto your careers page.

  • Social networking for jobs
  • Startups like branchout and hireplug have started leveraging social network and people connections to get jobs.

  • Automate Video / Phone interviews
  • Phone interviews are definitely time consuming and from our stats it’s easy to say that 7/10 candidates are rejected in the phone screen level. Here are startups like ovia, hiring simplified which helps helps in automating the process – the company needn’t spend any time.

    There’s a new speed dating service hirelite (am a big fan of their blog) which helps you to quickly check if the person is the right fit for your company.

    Interestingly a YC-backed startup hirehive was also doing something similar on this lines but has switched tracks now.

  • Online Tests – Programming tests / aptitude tests, etc
  • This is the 4th category where you test the real skills of the candidates by customized tests. Testing the programming skills of a candidate is done by codility, codeanthem and of course interviewstreet :)

There’s definitely a sign of change (for the good) in the way recruiting is done . Exciting times ahead!

Faster Inter-Process Communication

Fast codechecker
A situation arised where we needed to exchange signals between a python process and a c++ one . Whenever a http request is fired to our server , a python thread handles the request . The python thread inserts the data in our MySQL table , with the column ‘processed ‘ = ‘false’ AND waits for the c++ daemon to process the data . The C++ daemon after processing the data writes to the MySQL db and also sets processed = true . The python processes takes this data and serves the request . This is how it happens .

[python highlight="7,8,9,14"]
sql="INSERT into tablename(data,processed)"
sql+="values(‘dataToBeProcessed’,'false’)"
cursor.execute(sql); #insert into db with processed = false
conn.commit()
processed = False
insertid = cursor.lastrowid #ID of the column we inserted

while not processed :
#loops untill the data is processed by the C++ daemon
sql= "SELECT * FROM tablename"
sql+=" where `id`=insertid and processed=`True`"
# sql to get the data once its processed
cursor.execute(sql )
row = cursor.fetchone() # executes the sql
if row != None and len(row[0]) > 0:
# TRUE if the data has been processed
request.write("dataToBeServed")
processed = True
#to prevent overload on mysql server
time.sleep(1)
[/python]

And in the background the c++ daemon does this
[cpp hightlight="9"]
while(1)
{
//get any data waiting to be processed
sql="SELECT id,data from tablename where processed =`false`";
id,data = mysql(sql) ;

if(data)
data=process(data);
mysql(insert into tablename(data)values(data) where `id`=id);
}
[/cpp]
We had a performance hit ,and while profiling we realised that mysql was getting hit very badly and the python thread was sleeping for most of the time . if we remove the time.sleep(1) in the python code , mysql was getting hit even more badly . Clearly we needed a better IPC mechanism . Yup 3rd year college linux course !! .. After some googling we landed up using named pipes and this is how we implemented it .
[python highlight="6,7,8"]
sql="Insert into tablename(data,processed)"
sql+="values(‘dataToBeProcessed’,'false’)"
cursor.execute(sql);
conn.commit()
processed = False
insertid = cursor.lastrowid
os.mkfifo(insertid) #making a pipe with the name insert id
#opening the pipe for reading
#the process waits at this line for the pipe to receive some
pipe = open(insertid, "r") data
data = pipe.readlines()[0]

#after receiving the data from
request.write(data)
[/python]
meanwhile in the background
[cpp hightlight="9,12"]
WHILE(1)
{
sql="SELECT id,data from tablename where processed =`false`";
id,data = mysql(sql) ;
//get any data waiting to be processed
if(data){
data=process(data);
sql=insert into tablename(processed)values("True") where`id`=id
mysql(sql);
//set processed as true
pipe = fopen(id, "w");
/*open the pipe for writing
notice we open the same pipe(whose name is the insertID)
on which the python process is listening for data . */
fprintf(‘pipe’,data); //write the processed data to the pipe

/*as soon as the daemon writes to the pipe
the python process knows that
the c++ daemon has processed the information*/
}
}
[/cpp]
This way we saved our MySQL db and also made sure that our app doesnt waste time sleeping (time.sleep(1)) when a request is waiting to be served .

Take a look at how it improved our performance . Before implementing named pipes , it took around 4.2 seconds to compile and test a simple hello world program .

After implementing named pipes , we were able to bring it down to a mere 1.2 seconds :-)

How we interviewed engineers

Looks like a recursion – Interviewstreet using interviewstreet to screen candidates at the 1st level. While that’s a good check to get an idea of his algorithm skill ( his motivation level too ) and filter candidates, we were contemplating on how the further rounds of interviews should be.
We got tired of asking complex hash / Trie problems, etc. when he isn’t most likely going to encounter those. We decided to ask the challenges we really face!

  • DDoS attack: Two of our articles have been in the home page of HN, we got 10K+ hits to our blog and of course a DDos attack with it! While the right way to deal with this seemed to take quite a lot of engineering effort which we couldn’t afford at that time, we managed a workaround. Nevertheless, this served as a good interview question :) – ‘How do you prevent DDoS attacks?’ – think logical, wild and come up with a solution
  • Secure codechecker: Anything on the web is bound to be hacked, ethical / unethical doesn’t really matter! In our case, the user actually submits a code! People have submitted a lot of hacky code – system(rm -rf *); while ( 1 ) { fork(); } and even a kernel hack! – our codechecker stood strong! The interview question dealt with the type of precautions one must take to secure the filesystem from such malicious code snippets.
  • Scaling up..: Simple techniques to reduce load on server and faster retrieval of data – memcache, cdn’s, etc.

This helped us understand the how feasible are the solutions to the problems we encounter. Finally, we hired a rockstar and a hacker in the right sense – Anand Narayan. He even wrote a minimal version of the codechecker during the interview! Excited to have him. It’s just been 3 days and we can already sense his huge value add to the team. You can follow him on twitter here

Boost your resume for programming jobs

Programmer Profile

Programmer Profile

Resumes are slowly beginning to lose it’s value amongst tech companies, esp. startups. In fact one of our customers remarked – ‘I have stopped looking at resumes! I am only interested in their coding scores‘. While that definitely lies on the other end of the spectrum, you should genuinely show interest in programming in your resume to get noticed.

  • Github profile Post your coding work and modules at github. Recruiters get an idea of your coding skills and can gauge your interest in programming
  • Blog If you had been programming a lot, you should have discovered a lot of things in the journey – from bug-fixes in an open-source software to writing optimal code to perform an operation. Share your experiences on your personal blog
  • Programming Contests A strong indicator of how well versed you are when it comes to algorithms and code implementation. There are a number of places ( topcoder, spoj, acm ) to practice and win!
  • Open-source contributions, GSoc A lot of open source projects are available, the most glamorous probably is contributing to Ubuntu. Get on IRC, some of the top hackers are in there!

Good luck with your interviews!

5 Interesting facts you didn’t know about Jeff Bezos

  • Before starting off Amazon, Jeff Bezos served as the Senior Vice President at D.E.Shaw. While that’s a commonly known fact, did you know he actually reported to D.E.Shaw himself?!
  • GPA: We all fight hard to score high and even a 3.5 GPA is celebrated. When Jeff Bezos graduated from Princeton, he had a GPA of 4.3 / 4 :)
  • Bell Story: Companies starting out in a garage is a common story, Amazon also belonged to that group. In the initial days of Amazon, Jeff had a bell which would ring every time an order was placed. After a point of time, it kept ringing continuously disturbing him and he threw the bell out – a sign of Amazon’s growth!
  • EC2 instance story: If JeffB still had the bell at Amazon during the Christmas season, it would have made half the world deaf – the orders peak at 73 per second! The extra hardware added during this season remained unused (almost) during the remaining months which led to the idea of giving it away to developers for a small fee and now EC2 in itself is a big business!
  • Startup: Do you know Jeff Bezos runs a startup, Blue Origin – an aerospace company :)
  • Bonus: He is also an investor in 37signals!

Microsoft Research Interview process – an overview

Welcoming Prashanth Mohan, currently a Phd student at UC, Berkeley who has earlier worked at Microsoft Research (MSR). This interview would cover some of the things to keep in mind to crack Microsoft Research interview process.

Hello Prashanth, could you tell us a little bit about yourself

I graduated from College of Engineering Guindy, Chennai with a B.E. in Computer Science. I went on to work for a couple of years at Microsoft Research (MSR) and then moved on to Amazon for a brief period. I am currently pursuing my PhD at University of California, Berkeley on how to improve energy in data centers, buildings using IT.

What’s the recruitment process of MSR

The recruiting style of MSR is a little different compared to other companies. They do their head-hunting mostly by word-of-mouth (or) referrals. Generally MSR employees refer other people.
If you are a student, you have an excellent internship program – one of the best in the country! You can head over to MSR’s site and directly apply to the group he/she is interested in. They generally won’t advertise a lot and the onus is on you. You can know more details here

Is it a mandatory thing to have a poster/publication to get into MSR? How important is CGPA?

I don’t think it’s essential to have a publication before you apply, however having one definitely helps. When I was in college, I did not use the opportunity to contact my professors for interesting projects. I strongly urge the students to work with their professors on solving big problems. It definitely helps!
They generally don’t focus much on your CGPA, however having a healthy CGPA is always good!

I heard the interview process is very different from normal set of interviews conducted by other top tier companies. Could you give us an overview?

Yes, the interview process is pretty unconventional. You will be asked to talk about your project for an hour and people would then question you on that. Everyone in the group you apply to, no matter how senior/junior they are would interview you. There would be typically 8-10 interviews before you get into the company.

Great! What would the interview questions be like?

The questions would mostly be open-ended ones. For eg; what are the problems associated when 2 servers communicate with each other? There is typically nothing like a wrong answer to a question, even a sub-optimal answer would work fine. But, the important thing to concentrate is on how well you can articulate and provide a robust design to the problem.

Design questions involve mostly drawing architecture diagrams. Was there a coding round also?

Yes! There will be software developers who will focus on Data Structures, Algorithms. There will be typically 1-2 interviews focusing on these areas. It’s a must that you possess good coding skills since once you get in, you would be required to frame a prototype of what you have done.

Since the questions are open-ended, could you give some tips on how to proceed to solve the problem?

  • Essentially start off with a large pictures
  • Through the course of the interview, interviewer gives inputs over a specific scenario, much more easier for you to solve the problem

What kind of preparation can one do to get into MSR?

I would suggest to go through the recent papers/publications in the area in which he/she is applying to. Brush up your basics about the group and have a good night sleep before the interview.
During the interview, try to start off with a large picture and grab the hints given by the interviewer and keep narrowing the scope down and nail the problem! Most importantly, it is important you tell the interviewer that you don’t know the answer to a particular question if you really don’t know – you would be interacting with Phd’s from top universities!

Hows the work environment at MSR?

The work environment is quite different compared to what you would see in other MNC’s. You would generally read a lot of publications, identifying the problems in it (or) find ways of making it better. The work load increases multi-fold before the publication deadline.

The work is very exciting as you get an opportunity to come up with a technology that can change the world and make people’s life better. However, the atmosphere as such is pretty informal inspite of a lot of geeks around!.You get to refer everyone by their first name including the director!

Thank you so much Prashanth for taking time for this interview. I am sure a lot of candidates would benefit with the information!