Why Indian Startups need to get off their asses and learn to program
indianstartupgyaan.wordpress.com
indianstartupgyaan.wordpress.com
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.
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.
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
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.
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.
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.
Many people won't go to them because they are not cheap.
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.
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.
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.
Quality, price, speed pick any two.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
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.
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.
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.
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.
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.
We never lost a customer.. and we did work with non-technical, although smart, people.
The irony : I am coding for a startup that found me somewhere on the internet.
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.
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.
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.
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.
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.
[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.
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.
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)
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?
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?
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 agree with a poster above, that the blog linked here is written by an immature person.
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.