Programmer productivity vs Salary

Disclaimer: Persons/organisations mentioned in this story are based on real-life. Any resemblance to persons/organizations living/dead is intentional.

Imagine you run a startup called Super Duper Software Inc and you have a decent dev team. You now need to hire programmers and you see two fresh off the college programmers applying.

First programmer (fake named Aakash) who knows nothing more than a “hello world” program that he wrote in C in the second year of his college. He can’t even write or understand basic for loops or if statements. Any algorithm or data structure he learnt is forgotten the instant he steps out of the exam hall. Unfortunately because of an inefficient interview process you hire him.

The second programmer (fake named Ashok) is also fresh out of college, but is slightly above average programmer for his age, can think logically and who has already worked on other personal/open source projects or has interned with other startups and has done his final year project on his own instead of buying it off the shelf. You hire him too.

You pay both the same salary, say Rs. 25,000 per month. They are under probation for 3 months and would get a raise based on their performance after probation.

Probation Period

Let’s assume they both go through some basic training and they start working on projects. You assign a mentor (fake named: Suresh) to both who has slightly more experience.

Its not tough to guess that Ashok requires very little hand-holding and is productive from Day 1. He churns out code which works, even if inefficient at first and is eager to correct & improve it.

But Aakash is a tough nut to crack and for every problem Suresh has to sit with him and explain how to use basic data structures like arrays or maps and how to iterate through the input data and how to store it so that he can get the output he wants.

Even then he isn’t able to apply whatever he has learned during the training to solve a generic problem. He takes a few hours to solve a very simple problem (say print the Fibonacci series till N) and if the problem is slightly changed to return the sum of all Fibonacci series till N, he is flummoxed. And he takes an equal amount of time to write a program for that.

And don’t even get me started on code reusability, debugability or proper formatting. In other words, he has no clue on what he is doing.

On an average, whatever Ashok finishes in say 15 minutes, he finishes in 8 hours (also wasting 2 hours of Suresh’ time). Assuming they both work for 8 hours daily (without counting any break), it is easy to see that Ashok is 32 times more productive than Aakash. Or in other words, the Return on Investment on Ashok is 3200% more compared to Aakash.

Note here that I didn’t even factor in the salary you spend for Suresh’s time wasted, which he could instead work on some other productive task.

Performance Review

Now when it comes to the performance review after probation, it isn’t too difficult to decide who gets the higher raise. Lets say you decide that Aakash gets a raise of Rs.5000 (making his salary to Rs.30,000) then would you give Ashok 32× more than Aakash’s raise? Rs.5000×32 = Rs.1,60,000 (making his salary Rs. 1,85,000)?

Wow Ashok! Congratulations on living in the ideal world!

But in real life, Ashok would also get about the same amount of raise (don’t be surprised if its even lower). Now what would Ashok do? If he was really as intelligent as I described him, he would quit on the spot and go find a better job.

If this process is repeated for all hires, “Super Duper Software Inc” become this barren waste land of below average employees.

Solution 1

Now what could be done to prevent this? Yes, the answer is easy.

Give Ashok a much better raise.

Not 32×, but at least twice as much as you give Aakash. Bonus points if you could find creative ways to encourage him – like review every 6 months, stock options, bean bags, video games, better computers, etc.

What happens to Suresh? He would be super bored because all he sees are people who are sucking his time & brain and soon he would just quit and maybe start his own startup (learning from all your mistakes).

Solution 2

So the ideal solution is to not hire Aakash in the first place and instead use his budgeted salary to hire another Ashok.

Now this isn’t something new that I am saying here. Some one much intelligent than me has already said it years before. And for many startup founders he is almost a God.

A-players like to work with other A-players and don’t want to work with B and C players.

— Steve Jobs

https://www.youtube.com/watch?v=7yh7ikSQwKg

TL;DR: Stop hiring B and C players and hire only A-players. If you can’t afford A-players today, at least don’t go for the C-players.

PS: Damn you interviewer Prakash. Just because you couldn’t say No, you just made Suresh’ life miserable.

Leave a Reply