Ask HN: What are your views on India based development agencies?

66 points by desaiguddu ↗ HN
We are a mobile development agency based in India I understand there are plenty of us on various platforms.

How do we work on changing customer's perspective?

96 comments

[ 3.4 ms ] story [ 165 ms ] thread
(comment deleted)
Number one thing: highlight the people in your team. Problem with working with Indian agencies is that the programmers are hidden behind the project managers. That is not effective way of working in iterative work.
India is a big place. To me that is like saying, "what are your views on development agencies based in the world?"
To a lot of other people it is a clearly defined region, it might be a big country. But most customers have a very clear idea when you say "Agencies from India".
That is true. However, there are cultural differences in different parts of the world. These differences affect in interaction between groups of people that are not from the same part of the world.

I see this question asking about what it's like working with India-based dev agencies, taking into consideration cultural differences.

It would be just as valid if asked about other parts of the world.

Criticizing questions is not useful.
But you can answer that, by giving an opinion on development agencies in general.

It's only a problem if agencies in India are highly variable. If there is little deviation from the norm, it's not a problem. As such, the potential that this kind of question might be hard to answer is conditional itself.

My view is that its hard to form a generalised opinion on a entire sector. Especially when that sector is in a country with 1.3 billion people.
I have experienced working with two different Indian development teams and both of my experiences were characterized the same:

1) Over-communication to a fault

2) Low code quality

I don't know how can you change my perspective, but I would suggest not trying to change the perspective of Indian agencies as a whole - but rather why you are different than the stereotypical Indian agency.

What do you mean by over communication? Do you mean that essential communication is repeated without additional effect? Or that unnecessary details are relayed?
Yeah, it's a little hard to explain. Unnecessary details are relayed, very detailed descriptions of even minor things that were accomplished, etc.
To expand on this:

detailed descriptions of even minor things; to distract from the fact of very little being achieved.

Unnecessary details are relayed; implying little comprehension of task meaning and/or importance.

That moment when you realize that that question was asked to buy 8 to 20 hours of time delay due to timezone differences. Or to make enough volume of text that no one knows all the promises, or so that someone somewhere cancels enough orders accidentally that anything can be delivered.
I'm afraid I have to agree; the ones I've worked with have all been characterised by terrible code quality.

Perhaps the key thing is a tighter attitude to specialisation: most Indian (and, for that matter, far east Asian) development teams tend to have a "we can do everything across a billion platforms and techs" approach, where it might be better off concentrating your offering down to a few key techs, and really doubling down on the quality of those.

IMHO it's more like - "let's not lose this contract".
Or "We're developing a website for them, maybe we can upsell them an associated Android/iOS app as well".
Thanks, Jason.

1) To address the over-communication we have stopped working on fixed price projects, and rather worked with customers as their extended team

2) We as a group of individuals are trying hard to change this perspective. Our Computer Science education needs to be blamed as well

3)I have created a very interesting slide on our deck https://goo.gl/5jvN6R

Cheers

2. As a someone who is from the land and had the same CS education I would beg to differ.

Once you are a developer you must not blame the education you received till now. It all depends upon how you work and learn after college/uni. Also, the quality of CS education depends a lot on what college/uni a particular person went to. Some places impart really good fundamentals and I am not talking about just the IITs.

But it's always the student (while in college) or developer (after college) who chooses and works towards the standard they set for themselves for how good they want to be.

3. As an engineer (who has worked in India almost all these 6-7 yrs after college and some outside exposure) I would advise adding one thing to your internal deck - work-life balance. I have seen many such startups/groups that begin with much enthusiasm and aplomb but often compromise on one very important thing - work culture and work-life balance.

Hell, a lot of them actually celebrate a bad work-life balance and I find that really depressing. Attended an interview recently with such a firm and when I turned down the offer citing work culture, after they pestered me for a reason, their retort was "Oh, we are anyway looking for 'highly motivated' engineers only".

So maybe add that. Because a bad culture does two things:

- You might never get best or even better talent to work for you or with you.

- It's affects your output and productivity. It's never more hour, more/better work.

Thank you for your comments.

2. I still believe the CS Education needs to be improved like anything.

Some Unis are picking up good practices but at large the fundamentals of programming needs to be taught in a better way.

3. 100% agree with you on work-life balance. We are doing our best to keep the workplace healthy, interactive & fun.

As a small team, our emphasis is never about more work but better work. We have always encouraged team members to speak at developer events, contribute to open source etc.

Which customers? What perspective? What platforms?

You'll need to be clearer in what you're asking. Are you asking for opinions, or advice?

1. For the most part terrible code. 2. Only interested in payment, never project 3. Never listen when you tell them you don't want their services.

I cannot for the life of me see why this is on the front page of HN tbh

You need to compete and market based on quality and knowledge, by just price.

I have a competitor of yours trying to get a meeting with me. Their pitch is that I can have 10 programmers at $20/hr each, a 75% savings based on US programmers!

The problem is I want solutions, not man-hours!

What you said reminds me of that old comment: "If one woman takes 9 months to have a child, how long is it for 9 women?"
Also, if you look at the margins with which these organizations operate, the 10 programmers would be getting paid a mere $3/hr each for every $20/hr the organization charges.
I think the problem is is fundamental as the Indian educational system. Having worked in this technology business for 20 years as an engineer, I have a terrible opinion of Indian engineers. They talk a good game, and make it seem like they know what they're doing but then the end result is terrible cold quality and the opinion that the Indian engineers are lazy.

So, you can certainly try to put lipstick on your pig, but we all have 20 years experience with that pig And we know that it's a pig, even if you dress it up.

Have tried a lot of times ( 8 times to be exact), the only one that worked is now doing his own projects and launches a SAAS. The CEO was involved in every project. Every project took a very long time though and deadlines were not met.

Other experience, estimates are wrong, filling in more hours than actually worked and they always say yes. But what they mean is we can't or don't understand what your mean and we will stall the project.

"they always say yes." OMG this is by FAR the most annoying thing with them. But I think It's a cultural thing.. They say yes, not because they know how to actually do it, but rather that they understood what you said (English is a second language for them so I think they just mean "yes, I understood that part").
Me: Can you blah blah blah?

Them: Yes

Me: Ok, and would you be able to blah blah blah?

Them: Yes

Me: Great, and do you think that will be ready by blah blah?

Them: Yes

Me: Fantastic. What approach do you intend to use?

Them: Yes

Me: mutes phone, curses, unmutes phone, goes back to start

I've occasionally worked with some excellent individuals, but the aggregate has been poor.

My most recent experience with a team of this type repeatedly involved requests for documentation at a level of detail where automating the task would be less effort.

The biggest problems are cultural, but the perception is going to be hard to overcome.

This has come up on HN and other places. If you want to avoid this issue, phrase your questions differently (e.g. as non-binary agree/disagree questions).

I'll let one of our Indian colleagues suggest the best alternative here, as I'm sure they know more about the relevant Indian cultural points than I.

But even something like "Tell me how you will accomplish X?" or "Do you have any worries about doing Y?" tend to produce better India-US communication.

I completely agree and these days I follow exactly that strategy, to good effect. However I think it's still, in general, damaging to general perception.

Another factor is that most of my encounters with such groups has been while working for organisations looking for a cheap option. I strongly suspect that this is common and results in hiring low quality groups with mediocre people - again tainting popular perception.

You are right. I will try this approach next time for a small project, just to see if it results in something more constructive.
If I recall correctly, saying "no" in Indian culture is frowned down upon. So one way to say "no" is by saying "yes", another is by phrasing or implying "no" in a roundabout/indirect way.
As far as I know it has nothing to do with them not understanding the difference between 'yes' and 'I hear you', but rather a cultural avoidance of the word 'no'.
I think that's where the loose neck comes into play, it's another alternative to avoid saying No. You learn fast when teaching in India, you become almost ruthless, once bitten by the loose neck you do everything to avoid it. It's no fun going through basic regex and onwards then after 4hrs morning of the workshop realizing that everyone was lost after 2 minutes, after that you no longer accept non-verbal communication. You still get a lot of bullshit in verbal though, this was ten years ago, but I recently reminded when contracting someone on upwork and getting a 'i can do' to everything when reality they probably just took a khan academy class the day before, and thus totally useless, we still paid him and wished him well and ended contract another lesson learnt.
Being an Indian myself, I'd clarify, that this might be the case with the Chinese (Long ago watched some Not-real Venice creator's experience on NatGeo), but not with Indians.

Usually the consultants/people-who-pitch at such dollar-hungry Indian firms won't tell you 'NO' because they fear they might lose you. People in-charge of saying 'YES' aren't often aware of the abilities of their team.

And, surprisingly, sometimes, the 'YES' comes out of plain politeness. In some occasions, they don't want to disappoint the clients who've exhibited a lot of trust on these folks.

So, when an Indian says 'YES', they correctly understand the liabilities & responsibilities that are implied, but they might not have what it takes to deliver on the commitments they made.

Exactly, my two peeves having worked with companies like Tata and InfoSys were:

1. Saying yes to everything. Questions, estimates, analysis: everything was answered in the positive even when the facts were negative. I makes project control very hard. 2. Deferring to management every 10 minutes. On every call, meeting etc. Engineers were very much not able to make decisions by themselves.

Having said that, all men and women I worked with from these companies we're really friendly and certainly tried their best.

Issues with offshoring giants like Tata & Infosys is - Engineers are often discouraged to exhibit autonomy & make decisions on their own.

It's rather an untold rule across the industry to channel all decisions & difficulties via their manager.

I'll give an example - We once asked our offshore-engineer (contractor) to share their personal email ID for a github invite for we knew that he had one readily at his disposal. Using gmail for work is a big deal for IT offshoring companies. The guy, instead of sharing his concerns about his directives & security guidelines directly with us, called his manager who replied to our email asking us to stick to Enterprise email IDs.

I've used large (Wipro/TCS) and small firms, and poor code quality is common amongst them all. What's more apparent is their lack of ability to innovate or think on their feet. If I give them a "familiar" problem to solve, they're generally okay, but anything that requires them to think outside of the box, they tend to overcomplicate and the result is often terrible. Also, I no longer find them to be cost effective, especially when they charge by the day, and can't get things right even on the fourth attempt...
I've seen the same thing. If I didn't know better, I would say they have 1 or two guys in a large group that are talented and helps the tens of hundreds of people who are unqualified. That works ok for a while, but doesn't scale well, and you end up getting code written by unqualified people and the 1 or 2 good people don't have the time to check everyone's code and a lot of stuff falls through the cracks.

FWIW I worked with an eastern bloc country team (Europe) and it was top notch.

Yes, I tried Ukraine and the quality of back-end code was much higher. Front end UI was not great, but it worked.
You couldn't summarize it better. I'll second every point you have made. Experienced the same attitude, same code quality and have the same opinion about cost effectiveness.
Is there a connection between native speaking language and code quality? Since computer languages are logically constructed, do people who speak more logically constructed languages fare better?

I see a lot of over complication in the code that our Indian developers produce. Lots of copy and pasting code around instead of wrapping in a common function and calling that. They setup weird data structures when simple arrays would suffice. Lots of redundant logic. They don't negate if statements, they use the else block and leave the if blank. It's just weird. It's not even laziness, there's way lazier solutions to the ones they provide. I'm tempted to think that Indian languages beget a certain style of thinking that produces this kind of code.

Wow! That's a big generalization. Silicon Valley is full of top notch developers with Indian origin. Similarly, you can find plenty of mediocre non-Indian developers everywhere. If I've to blame anything, I'd blame lack of systems, than entire language family.
Also, if it was because of "logically constructed" languages, how'd many fundamental concepts of mathematics would develop in India, including concept of zero?
How can you show someone you are good mobile developers? I would focus on communicating how have done amazing work for previous customers, and try to earn referral business. Also, do amazing work!
That's exactly we have done so far. 80% of our business is either referral customer or repeat customer.

10 to 20% of times we have failed miserably to satisfy customers needs.

Maybe I'm wrong, but a 10% to 20% failure rate could be pretty good. A lot of projects were never going to be successful no matter who tried to implement them. If you please everyone, you're probably doing easy work.
Focus on something in demand and sell yourself as experts in it. The problem of many agencies is that they offer to do everything and anything and because of that appear desperate and not serious. When you're one of the best in a specific area it's much easier to sell your services, and also easier to expand your focus later when you're established and recognised.
it's a little different but when I look at my experience with developers from Xteam or TopTal (very positive experiences) vs other agencies (some in India) that I've worked with I see a set of clear differences. One is quality in code. I'm very rarely having to correct work, whereas other agencies we will receive a project and it often way off base. The work might meet the spec but not of quality and certainly can't be built upon. In another post, you mention team augmentation and I think that is a great idea. I would also echo concerns about autonomy and ability to innovate. Again with X-teamers/TopTal devs they usually want to help drive technology decisions and want to help to own a project. They then build trust by executing successfully on those ideas. I think if you differentiate on quality, augmenting teams, and autonomy, you will be able to rise above stereotypes that have been built up. That likely means charging more and spending more time screening potential hires. Smart companies will recognize that it's worth paying more so they don't have to pay several times over to fix what was done by a lower quality team.
Low quality, mediocre delivery to spec, frustrating communication, but cheap.
>> How do we work on changing customer's perspective?

What perspective are you trying to change here? This question is broad.

Rather if you are more specific and give one or two broad examples of what exactly happened vs what was expected by your clients and how to address them etc., you might get more useful answers.

Remember Indian IT companies vary from small boutique shops to mid-size to giants like Tatas. Company culture/ operating practices vary based on size and skill base.

The industry is quite mature and you may want to provide a little bit more information about your size/ context /problems faced, to get specific answers or recommendations.

From the US the time difference is a major problem. You can never discuss anything during normal work hours and any issue will have a one day turnaround. Or you stay up late all the time and then it takes over your personal life. We have some devs now in Costa Rica which is much easier to manage because you can discuss things on the phone during the day.
I agree with most of the comments. Clients & development teams can manage the time difference diligently -

a.) Picking good Project management tools (We use BaseCamp + Wunderlist, Asana + Skype, Slack + Trello, Jira + Skype)

b.) Most of the time we required Standup calls with project owner to discuss status & work ahead

c.) Proper documentation & project planning reduces time spent on phone calls & constant bugging

d.) Slack is considered to be distraction to your productive hours

This is fine and good but you are creating a lot of process to work around a fundamental problem. Direct face to face communication during working hours is hard to beat.
I would like to second this. If you are in the US or Europe there is no way to meet via conference call/video with Indian developers and make the meeting be in office hours for both India and you. This makes the communication much less agile and/or generates a really poor work-life balance for the people that is forced to work at night, and this impacts directly on the quality of the development. For US and Europe it would be much better to hire from Latinamerica instead.
I kind of get what you're saying. I live and work in Germany where there is the stereotype of a very high standard that we carry around on all our products i.e. there are companies that would not do business with us if they did not get the "Made in Germany" stamp from our exported goods/services. This is an image - whether correct or not - that was acquired over a long period of time where many companies (BMW, Bosch, Siemens, BASF, Bayer, etc) provided high quality goods/services and built up an international image.

Anyway, this is a positive perspective customers have, and I admittedly benefit from it when doing business. In a lot of ways, the opposite can be said in terms of stereotypes for India, and so that's tough and I suppose what your question is about.

The thing is, even if perhaps I get an initial project in part due to a positive stereotype, that customer will not recommend me or use me again if I don't perform excellently for him i.e. making him better off through the interaction.

So that's what I focus on. And if you do that, in my experience, stereotypes won't matter at all. You won't be an "Indian Agency" but "Insert your company name" who does great work.

Some things I do to keep/maintain customers are: having very high standards of quality i.e. if a customer uses me I want them to remember me as the best contractor they ever used, they should be impressed at how clean/well-executed/designed/on-time the software delivery was. I also keep things professional, succinct and timely, and goal oriented and expect the same from the get go. Also if anything is not clear to me I make sure we clarify it and get on the same page immediately. Clients and you both hate wasted time/effort.

Finally, on the personal side I try to constantly self-improve and hone my areas of expertise so I can get things done more efficiently and be quicker on my feet and more creative/innovative with my solutions for customers. This is actually really big. Most (good) clients really really want someone who can think for themselves, is creative, and takes a problem and brings back an amazing solution. This can be difficult, I know, since a lot of clients won't give you enough information or even attempt to think their own problems through, etc. But with some you can help (being upfront, asking well-formed precise questions), and with the worser ones you can usually recognize them very quickly even in the initial project discussion and my advice is always walk away.

If you do these things, you will have absolutely no problems finding customers who love you and recommend you to everyone regardless of where you come from (at least IMH experience).

Best of luck.

This is by far the best advice I have received. Thank you.
The core problem is that companies from US or Europe contracting Indian agencies do it because of price. It's always more convenient to contract a local agency, in the same timezone.

For that reason, most Indian companies focus on getting the cheapest price and do so at the price of quality.

If you want to do quality work, you'll have to hire more expensive developers and you'll be more expensive. You need to figure out a good positioning because you'll be more expensive that your local competitor, and less convenient than firms closer to your clients. Add to that the low quality image that won't go away until all your competitors start going for high quality development.

I agree with you 100%. I think it is difficult to change the image.
I worked with only one, the one my partner foolishly chosen before I've joined him. Issues we faced:

- Developers were almost completely illiterate when it came to basic things, like http vs https, using git, encryption vs encoding. That's just something I wasn't ready for

- Using old technologies, i.e. Eclipse for Android development when almost everyone is on Android Studio, having libraries which haven't been maintained since 2010 as dependencies

- Communication was horrible, I had to write 10-20 emails before I could get any answer

I was working as a remote developer on frontend. I literally had to explain what is difference between get and post requests in REST apis to the android guy. When I checked his profile, he had mentioned he was working from three years as Android developer. :/
I taught a dozen or so as part of our outsourcing years ago at <omit> Consultancy in Vashi Mumbai, all except one turned out to be useless (this one guy was awesome though, I always wonder what happened to him against useless peers), and these were apparently the cream of the crop. All stereotypes turned out to be true, shit code, slow progress, no straight answers, record high hours recorded, frustration with the loose neck and yes man responses,in end outsourcing was canned. Hospitality was great though, nice people, musuems, awesome food, kingfishers, trips to Goa, Id do again if against a more generous expense package.
Stay away from it, other then tax advantages you should stay away from it. Nothing but horrible experiences.
I agree, but how to improve it? What issues did you face with them? It would be interesting to read your experience.
First communication, the mean no but say yes. All meetings has to be done in English, not a big deal but for a dutch company a lot of extra effort is needed. Their lack of skills, they say they are senior, you find out they are on learning level, hidden behind two better programmers. Time difference always bites you in the back. If you just wanna hire 10 or 15, hire 5 good people in your own country. If you need more then a hundred hands and can afford to place some people over there, give it a try.
I'm convinced there are schools over there that print Masters degrees in computer science with only 6 weeks of training. I'm only half joking.
Having worked with Indian companies and for Indian companies the last 20 years here is my advice.

1) Learn to say 'no' or 'we need to understand this better before we can give you a quote or a deadline — too often, way-way too often Indian outsourcing companies oversell their capabilities. Learn to say, 'this can be done, this can't be done' within the timeframe/budget etc.

2) Increase your prices, get more senior developers (increase their salaries). For most western companies even a 100 increase in price is still many times cheaper than what they can get and if you get better developers because you can pay more you will be able to better meet your deadlines.

3) Invest heavily in proper frontend people. Give them extra training if needed so they know how to write optimized code. There is a world of difference between solving the problem and solving it elegantly. All too often what you get back works but is useless because it's too slow.

4) Hire western project managers. Don't get me wrong I have worked with some really great Indian managers but understanding the western culture and expectations and being able to understand western expectations would remove 90% of the confusion that happens today.

5) Did I say, increase your prices and your salaries?

6) Be better at writing PRD's and set expectations, make sure you can meet those expectations and don't be afraid to push back on what's possible to deliver early on. The sooner a client knows there will be delays or the sooner they know their timeline expectations can't be met in time the better. That allows them to plan accordingly.

7) Did I say, Learn to say 'no' or 'we will have to look some more into this'

Ping me if you want more concrete advice, it's an area I care about a lot because I worked with Indian companies a lot.

Solving the quality, expectations and honest feedback would increase any Indian development house directly into a top-tier partner for me.

Basically, in my experience, and the experience of others I've spoken to, you need to do almost exactly the opposite of everything the India dev agency industry does. The sector as a whole it completely trashed and discredited in the UK, from what I can see, and if I interview somewhere and they have an Indian agency on-board somewhere, it's a major red flag that something very, very bad is probably happening somewhere.

That's because every single Indian dev agency experience I've had, has resulted in a net negative outcome, sometimes so bad we've thrown away _everything_ they've touched and started again.

A couple of ideas that might make everything "nicer":

1. Increase code quality. Commit to it. Understand technical debt and commit to reducing it. Refactor. Code reviews. Cite and apply industry standard texts like _Clean Code_ or language-specific texts (e.g. _POODR_ for Ruby). Test coverage, great documentation, highly readable code: they're not optional any more.

2. Go agile and lean. Don't expect BUFD. Realise the client is learning as they go too.

3. Don't take specs from a client and develop code that meets them. Develop the spec _with the customer_. Use BDD properly.

4. Realise there are many things that go outside the spec. Pre-empt. Don't wait to be told. Realise that functional requirements are less than 20% of what is needed to successfully ship a product. There are many things I would "just expect" a developer to do, but every time I've worked with an Indian dev agency I got exactly what I asked for, no more, no less, no common sense applied. Do I really need to tell you the "password" field should be encrypted at rest, and which crypto scheme to use? No, you should do that because it's basic common sense, and tell me what crypto you chose, and why...

5. Say "no" more. Say "I don't know" more. Say "we made a mistake" early when it's obvious you made a mistake. Don't pretend you/your colleagues are an "expert" in something if you've read one or two books or developed a couple of projects: you're still novices until you have 3-5 years experience of doing that thing. Embrace that, be honest about it, it's OK. Price yourself accordingly.

6. The sector tries to compete on price. Try and compete on speed or quality instead.