Hacker News new | past | comments | ask | show | jobs | submit login
Why Indian Startups need to get off their asses and learn to program (indianstartupgyaan.wordpress.com)
116 points by rohitarondekar on Jan 14, 2011 | hide | past | favorite | 85 comments



I don't think this is limited to India, we have had plenty of offers of "partnerships" etc from people with ideas. Our response has been to quote a minimum viable product cost and tell them to go find funding.

Some have come back to us with a budget and things have been built. But without a dedicated tech team studying the product they have a really tough time.

The reason we don't partner is non technical people always underestimate the work required to build, maintain and grow a product. The equity share on offer is simply not worth the risk but the people with the idea don't see it like that.

We've had some great ideas pitched to us too, it has been sad to see the ideas attached to people we didn't want to work with.


Its the age old ideas are easy, execution is hard because there are just so many faucets to the process.


spoken like a true plumber


oh my, thats amazing I didn't even notice the mistake.


I like your mistake better than the original intention (and I thought it was a deliberate and witty pun). I think it captures the spirit of problem nicely :-)


You're not a true plumber until mushrooms make you grow to twice normal size and shoot fireballs


Come on guys, keep this stuff on Reddit.


Actually it's the flowers that make you shoot fireballs.


Please don't forget that certain type of leaves will give you raccoon-like tail and ears and, somehow, the ability to fly.


I'm floored by the irony of Indian startups outsourcing their software development.


Good. Cheap. Pick one.

In a previous life we outsourced to Indian companies because it saved a lot of money (on paper)[1]. The good ones seemed competent, but they weren't cheap so we didn't use them. The cheap ones we did use (disclaimer: limited experience and observations) were staffed by young, inexperienced engineers. The code I worked with, I would put at second year CompSci level.

Incidentally, coding standards are quite limited in their ability to raise the competence level of software.

One example was the coding standard requirement that the number of global variables was to be minimized. In this particular application, there was only one global variable. Minimized pretty well... until I saw it was a typedefed struct, the struct was huge and had several nested structs in it. Abort Retry [FAIL].

Another example in the same application, there were several (not one, not two, but several) funny looking loops that called a function, passing a bunch of parameters. After puzzling through the code, I realized that the code had failed the McCabe complexity measurement, so they had simply cut out the guts of the loop and made it a called function. That wasn't the worst of it... the icing was that they passed the loop counter as a pointer and side-effect modified it in the called function. Owwwwwwwwww!

[1] My gross observation was that it took 3x longer to get a job done, but we paid the outsource company 1/2 as much as the internal engineers. The way accountants run numbers, the longer it took an outsource company to get the job done, the more they thought the company saved.


Isn't it:

    Quality, price, speed pick any two.


For the love of Knuth, stop using Quality as one of your project axes!

Quality is non-negotiable - as soon as quality slips, everything else slips, too. Better options are Cost, Scope and Schedule (or Features, Price, Speed): http://en.wikipedia.org/wiki/Project_triangle


Yes! That is it. Software must be one of the few things in life where going for the higher quality actually makes it cheaper and faster to develop.


You only have to get over a certain bar. Improving code after that point isn't a good ROI


Not necessarily. Having code that is easier to modify or has fewer errors is a competitive advantage. Given that all your competitors are trying to improve their codebases, you should be trying to improve yours as well.


I don't think you understood my point. I agree with you up to a point. No programmer I have ever met has felt that any significant codebase they are working on is perfect. At some point you have to say that it's good enough and move onto new features or new projects.


I'd love to see that, but all too often it's the opposite - stuck on bugfixing antique, crappy code because somebody did a dodgy hack and figured it was "good enough". Taking the time to do it properly means that you ultimately go faster, not slower.


going faster doesn't matter if you're out of business. There is a point at which you have to say it's good enough. You can always make it better, unless you're arguing that all code you write is perfect. If not, then you agree with me, but want to repeat a talking point for some reason.

I agree that often people don't surpass the bar of "good enough". This is usually a result of bad programmers or bad employees, not a result of a company wanting to go too fast.

Going back to my original point, let me give you a real world example. I once worked at a startup doing a web app where there was an elaborate ajax heavy content entry process/forms. The javascript code for this page was an ugly hack, but it worked and was bug free as far as we could tell. The code could have been refactored but we decided not to because no other code on the site depended on this javascript code and it was highly unlikely that we'd need to change that page in the next year. We left it as it was and moved onto adding new features and that was the right choice. We never changed that code, and never needed to, but it wasn't great code. If we'd spent a week refactoring it then we'd have been late with some important feature that wasn't late because we decided to leave the js code as it was.


You're the one missing the point. Don't write the ugly hack in the first place, and you'll find that that code can be written faster, debugged much faster, and won't be an albatross in the long term. I also find that the crappier the code, the buggier it is and the more support requests are generated (the Pareto principle definitely applies here) - which sucks developer time away from more important things and compounds your problems.

This is something that I've seen several times, and in every case the people involved severely underestimated the time suck of crappy code. "It's not that bad" often means that the developer is spending 50% or more of their time working around deficiencies.


ugly hacks, assuming decent programmers, is usually a result of not knowing exactly what you are writing when you first start. This is common, and often it's not worth refactoring it as in the example I gave.

You ignored all the points in my last comment. Let me be more explicit. Bad code is only an albatross if you have to work with it again. What I'm arguing is that it's usually wiser to leave it as it is until the next time you have to work on it, then fix it. It's only an albatross if you don't fix it, and you only save time by fixing it if you actually have to touch the code again. So wait until you're certain that you're going to have to touch the code again, and fix it when you touch the code again, and not before that.


How often have you written a piece of code and known ahead of time that you'd never have to touch it again? Even throw-away code, like data migrations, often gets revisited several times while you're writing it.

So why is your supposedly decent programmer writing crappy code and assuming that they'll never have to touch it again?

Which is my original point. Traditionally the expectation is crappy-fast-and-cheap vs. perfect-slow-and-expensive, but that rarely holds. Instead it's usually the crappy code that ends up being slow to write and expensive, stuck in endless code and bugfix cycles trying to get it right.


I don't think quality and cheap are compatible. I can't envision a scenario whereby a project taking a long time will allow it to be done cheaply and well.


Find a good freelancer, offer him/her some interesting work with a deadline of "when you get around to it", and negotiate on price? I don't think this is impossible. (Of course, you'll need to find a freelancer who can do a good job but can't fill 100% of the hours (s)he wants to work. That may not be trivial, but it's possible.)


Breed monkeys, give them keyboards, wait a million years.


Even then, you'd still only get Perl.


Doing it yourself over a long period of time as a personal project. That way you could do it as time permits, which is pretty much free, and then the code would also be up to your own standards because you did it yourself.


In this case, speed wasn't a variable. I intentionally left it off. (Thanks for being my straight man ;-).


Very true.


India is no longer the place of cheap software development. The Philippines and parts of of the old Soviet Eastern Bloc are where the cheap labor now lies.


If outsourced software in India is well known for being awful, I can't imagine what the quality must be like in the new frontier of cost savings.


Actually, ex-Soviet nations have a huge emphasis on mathematics and similar scientific disciplines. You may get quite a few "Your requirement is stupid", but the code quality will probably be not that bad (assuming the code you need is heavy on algorithms).


Actually that would be quite a breath of fresh air, because one of the biggest problems I remember in my experience with outsourcing to an Indian agency in '04/'05 was the complete lack of feedback or collaboration. They basically expected us to give exact details specs, and provided no evaluation of the product as they went. The code was alright, but it was as if they were doing a school programming assignment, seemingly without consciousness of the fact they were building a product that required people to interact with it. I can understand this as a strategy to maximize billable hours, but it doesn't do shit for building repeat business.


Hmm, having handled some of these assignments, I would say it's not done to increase billing hours. People keep their traps shut for two reasons: deeply hierarchical Indian org structures that don't tolerate opinion, and wanting to reduce friction as much as possible. The times we have pushed back we have been faced with "well, what do you know?" When that happens, the first guy to get slammed is the guy who asked questions. Rinse and repeat over a couple of projects and you get teams that will unquestioningly build you a handcart with a rocket engine.

Wanted to add, for every dollar an Indian firm makes, the average developer gets probably around 8-10 cents or less. When you are at a subsistence level like that, it's difficult to ask questions. You focus on the insecurity instead.


Hm yes, I recall an article about how there's a distinct cultural dichotomy where different countries tend to fall on one side or the other and the implications for management. How an Indian boss, for instance, knows that clues of things going awry are more subtle, and he must draw them out through questioning, whereas for an American boss that might be considered micro-management that would rub the employees the wrong way.


For every dollar a good Indian firm makes, the average developer gets anywhere between 50 and 80 cents. Good devs are equally expensive anywhere, but oddly enough in India the salaries don't grow linearly when compared with first world salaries. A dev with a year of experience will cost 1/5 what he/she would cost in the first world. A (good) dev with 15 years of experience would cost 1/2 what he/she would cost in the US.

This was something we covered in some detail in our talk at Rubyconf last year. Here's the link FWIW: http://speakerrate.com/talks/5120-india-ruby


This is my ignorance showing, but are there actually Indian devs with 15 years experience? I was under the impression that the culture forced devs into management roles before they reached that point.


I'm an example. But the reason in my case is lack of an engineering degree which has luckily helped stay away from management.


Eastern bloc is awful communication wise - I don't know about India but I know about eastern Europe.

When people are told for a couple of generations that they should shut their mouths and look down if they don't want their families hurt. They tend to obey.


As someone who worked in an outsourcing company of former USSR, I don't think that's the case really, most developers are pretty young. If anything, they are unnecessarily opinionated.


How about their managers? To me its the other side of the coin - like depressive people have manic phases.

My experience was that I was development lead of a project that had development outsourced to a former Yugoslav republic. We had clear agreement (on all levels) that we shall use direct communication on appropriate levels. But what happened in reality was that every memo or inquiry I did - the local development lead would not respond to me directly in a timely fashion. Instead the information would be passed up to the CEO of the company who would then proceed to send this information to my Executive Director who would then send it to me (in an understandably untimely fashion). Needles to say we had to break the effort and search for local developers.

And further east you go more of this effect you see - people refuse to convey information that is clearly in their jurisdiction, because their boss might not agree with everything.

A fucking nightmare.


Oh yes, the management :)

I actually began writing about it, but then decided I shouldn't generalize about all of Eastern Europe from just my experience.

Management tends to be poor to atrocious, effective management is seriously lacking through all industries there. Add to that resource constraints and competitive pressure you have in outsourcing shops, and it multiplies many-fold.


That sounds very much like my experience with outsourcing to Romania. The core library and algorithms where very solid, the actual UI and whole application experience was somewhat less so.


Good devs are expensive everywhere (especially when GazProm used to pay 300 euros an hour for SAP support person) and some jobs are outsourced to neighbours.


I've had some decent code written by people in the Bloc countries for a pittance. Was for pretty simple stuff, though, no idea how they would have fared on more challenging things.


The trick is to find the right people in India to outsource it too.


The right people in India to outsource to have all already moved to Silicon Valley.


Not true. There are good software companies in India to whom you can outsource your work and be somewhat confident that it's done in a reasonable manner.

Many people won't go to them because they are not cheap.


Part of the problem is also the relationship between the managers and the outsourced programming team.

If you spend time in terms of vetting the team for people you are comfortable with, take the time to be as clear and detailed as possible with the requirements, have a good continuous build system so that you can see the software being developed daily, and have direct, continuous communication channels to the coders, one would have a far better experience.


Untrue. They represent only a part of the talented people. I know, we constantly hear about the quirkiness of people at the freelance sites and forums. Perhaps, that's not the best place to look.

If you're not looking for an overtly complicated project, try hiring undergraduate students. Not from any university though. Try the students IIT's and BITS Pilani. These are the foremost technical institute in the country. So, how do get in contact with them? Visit their Computer Science Association websites, contact their student president to help you out. More often than not, you will find brilliant programming talent this way. Some of them will value a letter of recommendation (that may help in their MS or PhD) very highly.

If not that way, always insist on seeing the portfolio/previous work of the guy you'll be outsourcing too. Else chances are you might end up outsourcing, say a e-commerce implementation, to someone just learnt how to echo in php.


I do know why this was downvoted, but it was a sincere advcie.


I have been predicting this to friends for a couple of years now - there's absolutely no depth. Infosys, for instance makes only ~15% of their revenue through app development, per their latest quarterly report. When the IT boom started, it was mostly all s/w dev and maintenance. Slowly it has been replaced by non s/w dev activity to the point that s/w dev is only a minor activity (revenue wise).


India was never known for outsourcing "startup-quality" products. Most of the times it is either an enterprise software or a website.


see the comment about the Indian company outsourcing their IT to America?


I feel problem in India(not sure about other regions) is that more people get into Software/IT for money than for the love of technology. We will be better off leaving technology to people who get it or love doing it. Convincing/asking people to learn to program will hardly produce stellar startups.

Then, I think there is no harm for non tech people who see technology more as an enabler than end goal seeking technical expertise outside.


This is very true. In India IT is seen as a good career - it's something parents encourage their kids to go in to. There are very very few people who do it because they love technology. It's not common for grade school/high school kids to go about hacking. If it were, you would see more viruses originating from India - but they never do.


ordinarily, I wouldnt reply to this - but this potentially affects my business, so here goes:

You dont need to be a good programmer to build a great software business. There are innumerable instances of non-programmers building great business. And especially while churning out your MVP, you could do much worse than outsourcing your product and instead, driving sales. There is a bloated sense of elitism in writing your own code - while I certainly subscribe to "once a geek, always a geek" personality, the insistence that the CEO/CFO/CXO should be a coder is not entirely healthy.

I run an outsourcing business and our first few (and currently one) customer are Silicon Valley startups, some of which got acquired in the course of time. And we are not expensive - the lowest we have gone is 1/3rd the silicon valley salary rate for a 10 year experienced engineer (this was when the project was large enough).

As far as India is concerned, I have had an interesting discussion with @plinkplonk over here - India has orders of magnitude more people and engineers than most other countries. So yes, there is a high signal-to-noise ratio to finding people... not unusual in any large economy. When comparing skill levels to countries like Eastern Europe, I will admit you have a better chance of finding good engineers there, just because you need to be very good to be able to make money like that. [[ Read what I just wrote AGAIN - I didnt say europeans are better than indians in general. I said YOU would have a better chance at finding them in a smaller place.]]

I wouldnt presume to go and tell you how to go and find your employees/outsourcing partners, but remember this: At the end of the day, India has a huge talent pool - in this day of an overheated Silicon Valley/NY job market, how do you go about leveraging this talent pool ? Use the fact that a good Indian salary is a fraction of American salary - these are the same people who migrate to silicon valley and pull a Vinod Khosla or Ram Shriram. There is no real truth to the fact that cheap==poor when exchange rates play to your advantage.


Just to clarify, the article didn't indicate that the CEO/CFO/COO needs to learn programming to get off the ground. The non-technical founder can at the least onboard a technical co-founder or build an internal tech. team. If a non-tech. person outsources the product, how will he/she be able to figure out if the outsourcing firm is bluffing or creating bad products?


good question - and the answer to that is the way we got our first customers. We used to do two weeks of work free and if they still wanted to work with us, the 2 weeks get retroactively billed. These days, we have a sufficiently low walk-away penalty for the initial weeks.

We never lost a customer.. and we did work with non-technical, although smart, people.


A two week trial is fine, but that still doesn't let non-technical people discover flaws in design/architecture/code.


But there cases of those startups that primarily revolve around a tech idea, outsourcing the coding. If the crux of the idea revolves around sound programming, wouldn't it be better to have a tech team onboard than outsource it?

The irony : I am coding for a startup that found me somewhere on the internet.


Humans love things that are attractive and shiny

Offline, some people do, online - it's hard to say. I used to perfect the look and feel of everything, paying designers and wasting hours adjusting color schemes. What I learned hard way is people do not care about the design much. I don't have statistics and numbers, but I am sure the majority of people online do not care much about many fancy things designers like to implement. The ideal solution is the one that looks and feels STANDARD to anyone who knows how to use ms office or excel. That's not good news for someone (like me) who likes to put in crazy hours changing fonts, sizes and colors. However, it looks like that's what it is. Attractive and shiny goes to the intranet. Of course, there is a niche for them (hardcore/online games), but not in mainstream products.


You're absolutely right. People don't care how something looks. They care how it works... but a designer's job isn't to make something pretty; it's to make something useful and easy. Being pretty should be derived by osmosis -- a designer or team of designers working hard to improve accessibility, usability and the experience will usually (but not always) result in something that is pretty. Or at least appreciably elegant.

Too often designers are relegated to gussying up an already finished product. That's unfortunate and can be jarring to the user: The designer should help design the product, and then define how people use it.


Most startups in India worth the moniker of "tech-startup" do know how to program. I have visited (as a potential employee) or talked to many founders (as a potential partner) most major revenue earning tech startups in India and I'd say everyone of them had strong programming founders.

Yes many startups-founders are clueless and have a world changing the-next-facebook-idea but that happens everywhere, not just in India.

I was part of a non-tech startup once and web was just marketing tool for us, we did not want to do the website and its UX ourselves, that would be a waste of our precious time (although we ended up doing it too cos' we were techies at heart). I think we did a mistake by doing it ourselves.

So no, all Indian startups do not need to learn how to program and most tech-startups do know how to program.


Am i the only one here who finds this post a bit immature?

Any fairly serious startup needs a good business culture for it to grow and mature, and not just a reliance on technology alone. There have been a lot of tech organizations which crash and burn not because they don't have a good tech team, but because of their lack of business acumen. A look at the US DotCom Bubble should help in this regard.

1. When the author starts off with "Indian Startups need to get off their asses and learn to program" he indirectly implies that they don't - without providing any real evidence to back up his assertion.

2. The author of the post just bases his generalizations on getting a lot of emails from potential entrepreneurs. Hell, he should just check out craigslist to find a lot of folks with get-rich quick schemes with little to no technical background. The phenomenon of get-rich-quick entrepreneurs in not unique to any one culture.

If the author and his team does not want to be shocked by such emails, they should investigate something called a spam filter. It might reduce their shock reactions.

3. He draws conclusions like "these folks have no tech capability whatsoever and feel that technology is trivial and can be outsourced."

Maybe they do, maybe they don't. One cannot generalize an entire country's tech culture based on a few half-assed emails. I don't consider every nigerian i meet as a scammer.

4. If he has just resorted to gross exaggerations, that would be OK. It's his opinion, and he has every right to it. When he starts by condescendingly suggesting that potential entrepreneurs learn programming and being lazy and wondering why such folks get VC-funding, he seems to come across arrogantly.

5. Outsourcing is a part of the global IT landscape, and India, more than any other nation, has benefited enormously from it. Every major IT vendor, from Microsoft to Oracle to Sun to Google has opened indian operations and has hired programmers by the thousands. Does the author imply that these organizations lack a tech culture, since they take advantage of indian outsourcing in a big way? His suggestions seem to suggest that the article's focus is on internet startups, but he does not mention that. He also seems to lump product development with internet-based services.

The irony is that the few valid points he makes regarding usability, Simplicity and performance is completely masked by his condescending tone.


Is it just me or you also think that the fact that he mentioned and linked to his company 3-4 times in the article shows that the article was written to advertise his infinite beta shop?


"his infinite beta shop"

give the guy a break. He is drawing on his experience in building products at Infinitely Beta. Blogs from other product company founders often mention the work they do and sometimes (horror) their company names.

They don't do outsourcing/services. They aren't a "shop" any more than any other product company (funded by YC say) is.

If he were trying to use the blog for marketing he should have linked to his product (paisa.com) a few times.

(I have no affiliation with IB, fwiw)


You should have read the comments over there before 50% of the comments were deleted from his blog.


Marketing, for lack of a better word, is good. Marketing is right. Marketing works. Marketing clarifies, cuts through, and captures, the essence of the evolutionary spirit. Marketing, in all of its forms; marketing of oneself, of your business, of your community, has marked the upward surge of mankind and marketing, you mark my words, will not only save Hacker News, but that other malfunctioning corporation called the U.S.A.


Somehow 'marketing' instead of 'greed' takes away all the Michael Douglas punch.


Marketing marketing marketing, is what I say. Marketing.


Marketing! Marketing, Marketing, Marketing, Marketing, Marketing. I even love saying the word 'Marketing'. You probably think this is a picture of my family? No! It's a picture of The Marketing-Team. Bodie, Doyle, Tiger, the Jewellery Man.

[answers phone] Hello? What? Well if you can't work as a Marketing you're all fired. That's it, you heard me, fired! Get your things and go.

[redials phone] Hello, security? Everyone on floor 4 is fired. Escort them from the premises. And do it as a Marketing team. Remember, you're a Marketing team and if you can't act as a Marketing team, you're fired too.


Yeah - this post doesn't actually contain any insight into whether or why Indian startups don't have programming talent, and why they specifically need to acquire it. It's just typical fundamentals of startup logic with a linkbait title.


Well, since Infinitely Beta is _not_ an outsourcing shop, I don't think how a little bit of linking will affect its bottom-line :)


"written to advertise his infinite beta shop?"

Don't you think the point of this article was to be say out loud that they are now a "shop" ?!

Besides these days, it would be a fool who would not use such marketing techniques to keep the buzz up, it helps in many ways, one - attracting good developers and everyone does it these days.


What's wrong with that?


There is really no blanket rule that will tell you whether it is good to code it all up by yourself or get it outsourced. Depends really on what is your shortest route to market at a reasonable cost. Trying to second-guess it from the outside is a good, but pointless, exercise.

Try the flip side of the question - how many Indian start-ups would have failed or succeeded if they all built and deployed their stacks on their own?


Hey shyam - while there are no blanket rules about anything in life other than the prevailing law in any country there is always examples that people can draw from and people always draw from the best examples. Can you give me a few examples of great companies that outsource their development???


Companies that outsource development. Indiatimes and Zimbra? NDTV and Tekriti?

But, I had asked a question in the parent comment - can it be shown that any of the start ups who failed or the ones who have done well can do even better if they did the stack internally?


Zimbra was a packaged product that they bought - so this example does not work. NDTV and Tekriti - oh well! Great Online company???? Do they even qualify?? There is enough empirical evidence from startups that have done well that they are all built by great technologists and have not outsourced that core capability. As for failed startups, you will never know as a lot of those stories just die with the companies.


Abinash,

What will qualify as a great company? Is the deciding factor that it does decent revenue or that it uses a pretty nifty technology stack or is it that it does decent revenue in which the technology stack is an enabler?

Zimbra - Well, the point is that Indiatimes did outsource it. Guess I gave you an example that you asked for there. Same is the case with NDTV and Tekriti. They may not be to your liking, nor am I sitting in judgement whether they are 'great' or not, but the fact is that you can build good companies and businesses either way - build or buy/lease.

Coming to what you have said, " As for failed startups, you will never know as a lot of those stories just die with the companies," this is precisely what I am trying to address. That, you just don't know what their reasons are. Just like I would not be able to tell you what is best for Infinitely Beta.


I find it really strange that the comments made here by Abinash, and those which he deleted from his blog, have a very different tone. You should have read the arrogant and immature comments that he made on his blog post. He just can't delete comments here..

I agree with a poster above, that the blog linked here is written by an immature person.


What is wrong with "outsourcing" things that don't fall into your area of expertise? As far as I'm concerned, a biz savvy guy "outsourcing" his tech job for a fee is not very different from buying toothpaste from the market because I don't know how to make a good one myself ... or like consulting a dentist to figure out which toothpaste is good for me.


It's fine as long as what you're outsourcing is not core to your business model.

If you're running a software company (and the startups referred to in the article are software startups I believe) then outsourcing the core product you want to make money off of is a poor strategy.

If you're doing a restaurant startup, then by all means, outsource the software that runs your place.


Startups can't program.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: