Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: What are your views on India based development agencies?
66 points by desaiguddu on Oct 13, 2017 | hide | past | favorite | 87 comments
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?

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?

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'm in the project which is currently being transited to the team in Pune, India. Means I hand over all my stuff to them and quit. They will take care for the project. Thus my view might be a bit biased (I hope it's not).

I'm just back from 3 weeks trip to their office. Here are my impressions:

* just a few of them (new team is about 40 people) are skilled enough to do the project work

* most of them never heard that people can google errors and check for solutions in the internet (I mean really, how can even a junior come with questions like "I've got an error X. please help me, I don't know what to do")

* they do not dig around. they were told to do X, they will do their best to do X. if it turns out that it obviously will break Y (and it can be seen from the beginning, or something similar might happen) they don't care. They have to do X.

* code quality is not high at all. sometimes they try to fit multiple workarounds to fix some consequences instead of digging around and fixing the root cause

* they stick to their hierarchical structure and rules. if manager told to do X, they will not doubt it for a second, even if it's something I would argue about (however I saw some rare exceptions)

* not all speak good English. some need quite a while to find the right word. * if they will not change something in their workflow, I'm pretty sure they will completely screw the project quite soon after we quit.

This is my experience with new team. In the same time I would like to mention, that there are some good engineers over there and I had a good talks with them when I visited there another company for a day there, but not many of them. I can really feel the lack of qualified people.

PS. I enjoyed the trip a lot (even the kitchen sometimes). Most people in India are really kind and helpful. I managed to visit some interesting places and now have some nice pictures :)

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.

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


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.

What do you mean by over communication? Do you mean that essential communication is repeated without additional effect? Or that unnecessary details are relayed?

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.

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.

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. :/

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.

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.

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.

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.

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.

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.

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.

I had a positive experience a few years back with a small agency located in Bhubaneswar in Odisha.

Our company started working with them because we needed a mass-production job done quickly: we needed a whole mess of paper health-care forms converted to Acrobat (pdf) forms.

We quickly discovered that this particular agency assigned a staff member who worked to really understand the forms and imagine the workflow of the people using them. The forms (PDF forms really are programs) we got back were excellent. They actually made the work of filling them out faster than the old paper forms.

So we inquired whether they could do other development work for us. That turned into a good relationship.

We went into the relationship not thinking "how do we get the cheapest possible programming labor?" but rather "how do we add to our company's capacity to get all these @##*% forms converted?". We started assigning low-risk tasks. And, after three years or so they were great colleagues.

We gave them good references and they got other work partly as a result.

We did daily "scrum" calls, early in the morning US time and at the end of their workday India time. Somebody went to visit them once a year. In other words, we treated them like colleagues. It's all about people and relationships.

I believe classic cost-driven "outsourcing" contract deals -- the kind of stuff that's driven by finance executives -- have contributed to India-based agencies' struggles with reputation. Would you hire a kid fresh out of Carnegie Mellon and tell him "you have your job because you're cheaper than our other developers?" No. So why would you say that to a kid fresh out of an excellent Indian university?

I believe the Odisha location was helpful, because turnover was lower than it might have been in Bengaluru or Mumbai.

Plus, Odisha is a really cool place to visit.

That's one story.

Being originally from Odisha I am curious to know the name of the company.

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.

I see a lot of comments here about increasing code quality, work with your customer on the spec, don't play the lower price game, etc. These are all symptoms of a larger systemic, cultural issue. I'm not referring to the different cultures between regions, I'm talking about the developer culture.

Successful agencies in the west pride themselves on being engineering focused and treating developers right. Treating them right means they are the cherished role in the organization, probably amongst the highest paid in the organization and roles are sought after by junior developers.

A common trend I suspect is cultural in India is that developer roles and most importantly senior developer roles are not prestigious enough. Titles seem to matter more and I witnessed many times competent developers are motivated to 'move up' into PM or manager roles either because of prestige or money.

Address this by creating a culture that attracts developers that want to be senior and grow within the role instead of simply a stopping point on their way (in their minds) to a CxO position that has the prestige.

If you can create a culture in your company where developers are cherished and highly paid, you will likely have higher quality as an output. Sure your price will have to be higher but maybe after a while you can beat your regional competitors on time too. Make sure this culture is actually in place and working before adding it to marketing materials.

Wow, this is so accurate. I used to do a lot tech interviews in my previous organisation and 90% of the time, would wind up with a person whose near future goal is to be a manager or who would boast of having managed x number of people, apparently that profile being of a more prestige value than someone who purely codes. In due of course of that experience, I could also derive that this attitude kind of stems from difference in our approach to getting in computer science itself.. most folks who get into a particular engineering stream (computer science/ electronics/ IT etc.) in India don't do it out of an interest in that particular stream but rather out of the prestige that the stream has because people with higher grades in the engineering entrance exams are "supposed to" join these streams rather than mechanical or chemical streams, in which they might have more interest. This is again associated with the employment opportunities and social standing offered by that employment in a developing economy like India.

As a developer from India I can confirm this. There is a general attitude that if you are still writing code after 5 years after starting career, then you are a stupid.

Another aspect is payscale, you have to get promoted to non coding management roles to get a decent pay, So the priority will be getting to that level, not improving code quality and being a better developer

I guess most comments in this thread already show you the general perception you'll have to deal with. Here's my take at the three key issues as someone with deep roots in India:

First of all, excel at communications with potential and existing clients. Have at least one person on the team to speak English on a native level. In your description, there are already quite a few mistakes and when freelancers and agencies apply to my gigs, I filter the initial messages out brutally. I don't even look at applications that feature spelling and grammatical mistakes and miss details I specifically asked for. Also, have a person on the team who has been exposed to the culture(s) of the region you want to sell to the most, in order to be able to e.g. say "no" more often and to also admit when you messed up.

Second, never approach a client with an opening line like: "Trust me Sir we are best developers we will do best work and give you cheapest price." You have no idea how many of these I get on a daily basis. You simply don't get the best people at the cheapest price. Define your target group and either sell yourself as a cheap, low-quality sweatshop or continuously invest in great people and training and sell yourself as one of the few exceptional agencies in India that actually delivers great quality.

Third, stop chasing short term profits. This is the worst aspect of doing business in India - most freelancers and agencies rather deliver bad work and get some money, then really putting hard work into in and building great relationships that will create lasting value.

Happy to give you more feedback, just ping me via the e-mail in my profile.

I am from India, there is no doubt that devs/IT professionals generally are highly talented but

- The whole education system is totally messed up here, Things are changing slowly. the professors/lectures have no idea what is going on from rest of the world. the students are preparing for exams only in the last day. the exams are purely memory based. I did "Rote learning" during my school days.

- The interview process is highly questionable in most IT shops. Even Bill Gates can't get job here. (hint: its memory based interview process, it can be easily cleared by students who are well on it)

- There are lot of politics going on any IT firm (thats the worst thing)

- Most of the CEO do not listen. you have to follow their instructions.

- It was 2002, I applied my first job, friends who referred me for the job told me to change my resume to fit the requirement, instead of including my real skill set.

- It was 2005, my first interview in US, An interviewer who called me "how much US experience you have?" I told her "I do not have any US experience", I got lot of anger, what is going here?, I am doing coding for few years, now it has no value? latter I realized the purpose of the question.

- 90% of the students who are coming to IT industry are from poor/middle class families, they have lot of focus to improving their family, standards of life, unfortunately their skills/focus are not properly unleashed.

- Most IT people in India spending more time on traffic rather than coding.

- the list goes on. I do not see any use of listing/discussing these here.

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.

>> 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.

I've done a lot of work with Indian development teams and agencies as a client in both the US and the UK.

I've had varied levels of success but the most consistently successful model has been a leverage model. By this I mean that there is one person in the agency whose primary (often sole) job is to manage the communication with the client. This person is representing the customer to the development team. The key skill that this person needs is that they are familiar with and can navigate the culture of the client as well as the culture of the development agency.

For Indian teams this usually has been someone Indian who has worked for a number of years in the US, the UK or Aus but it doesn't have to be. Note, I have generally worked for US or UK companies so YMMV.

Ideally, the go between is physically located with the client. This really helps in the US as the timezone headaches become an internal agency issue to deal with. If they're not co-located with the client then this can still work but the go between has to be really, really good.

I've worked with two companies Blue Star Infotech and Hubspire (some of team in the USA including CEO).

My experience is that given clear instruction they deliver against those. We just had call this morning on commenting among other things. In any case, Hubspire has been a valuable resource. Don't believe there are tremendous cost savings though -- more about not finding resource in NYC.

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.

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 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 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've worked on two projects this year originally developed by developers from India.

These projects have been an ongoing effort to upgrade, resolve bugs and add new features.

The 'legacy' code just causes ongoing problems.

The main issue is everything is overly complex. They use 10x the amount of code that is needed for everything.

They also attack problems in really complex ways.

And they like to create really complex functions that are multi-use instead of clean functions that meet a specific purpose. It's not even really code-reuse or modular as they will pass a value to a function and then run it through a myriad of if statements to figure out what model it is and what should be done with it.

They also don't include much if any error checking, checking for objects before using them, etc so if anything unexpected happens a fatal error occurs.

I have contacted the original development shop, and contracted out some revisions to them. They do have one top notch guy, but he hands off work to other developers that aren't as talented, that's were the trouble creeps in.

To change perspective I would focus on writing cleaner code that is more bulletproof.

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.

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.

I can only speak from my own individual experience with one such company (Readybytes). It was, and still is - great. I believe it all sums up to the personality and leadership of the CEO, which in this case assumes total responsibility and demands high dedication from his employees, which he personally picks one by one. My projects are for PHP web applications and we continue to develop it together. By "together" I don't mean it's a partnership, but that the ideas come many times from the developers themselves. I find it enriching. I would also suggest anyone who wants to work with an agency abroad on a large scale project to simply go there, meet the people, sit and work with them in the same room, dine together, participate in social events etc. Not only does it create bonds, but it improves the communication at all levels for the benefit of all sides

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.

I am working in a Startup, we have outsourced some jobs to third party team. I can’t tell you how horrible Code they write. Just to give a context they will store values in JSON inside the DB, just to lower the effort of converting them later

I totally agree that the quality of work is way to low. I think that it’s up to the developer how well they write the code and develop themselves nothing to do with what majors they had in School. It’s all about handling the minutest details well and this is what differentiates a good Dev. It’s like carefully selecting the proper screws while building a drawer even though the screws might not be visible to the user.

I am not sure about your context, but even the relational databases like postgresql support json as the first class citizen because sometimes you have to store non relational data into your db

Your concern may be right. But what is wrong with storing JSON in DB? Many databases have primitive support for storing JSONs.

If I were you, I'd work on setting a good image of my own self, or of my agency, instead of attempting to change image of an entire country.

I'd work hard to sharpen my skills. I'd find some way so let the world know about my skills. It could be through blogging, or through contributing in open source software, or any other way. When looking for clients, I'd find good clients who appreciate quality work (not every client cares about quality and not price). I'd work hard to build good work relationships with those clients. One good relationship goes a long way.

In my last company we were burned by these "IT firms".

It is basically impossible to get any meaningful work done unless you have a person on site with the dev team.

You also need to write very very very detailed design docs and feature requirements.

If you absolutely must use services of these companies, try to get them work on peripheral features, instead of core application logic. You'll be minimizing long term technical debt damage risk to the project that way.

Nobody gives a damn about wipro/tcs/infosys. India's best developers and designers are in a company called Directi. They compete w/ likes of google to get the best talent, pay them huge and groom talent. Most of their ex employees either land in Google or Facebook. Look it up for yourself.

They are not a service based company, so this is not a cheap plug promoting them.

India is a big place. To me that is like saying, "what are your views on development agencies based in the world?"

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.

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".

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.

Criticizing questions is not useful.

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.

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.

I've worked with 4 different ones now (in Bangalore and New Delhi).

You want fixed price, fixed DETAILED spec, fixed timelines and assume that you don't want to maintain the product afterwards. That's worked well when we've had quant calculators that just need to done one thing. Expect there to be a high management cost on your side.

Outside that, my experience has been pretty terrible and it comes down to a cultural desire to be positive all the time. Saying Yes all the time is a disaster, especially when dealing with non-technical business people. I'll give a couple of examples:

1. I've tech-Lead a large group (40+ but I interviewed more) of offshorers, the manager on the Bangalore side helped the devs through their coding interviews by recording my questions, working out the answers and handing them round. When I realised what was happening, I invented easy questions off the cuff and found the interviewees (on the other end of the phone) would pause and then give an answer they couldn't explain. I could even hear one guy typing in the question as I asked it. When we approached the Bangalore manager to sit in on the interviews, he said that he didn't see a problem, claiming over and over that he'd chosen the very best developers.

The CEO still went with the agency and I found that the few good developers that agency had moved on because they were offered more elsewhere, leaving with the knowledge I'd trained them with.

2. We expanded our team by bringing in an offshore team. The Indian provider sent 6 to 8 (can't remember) "senior c# .NET developers" over for us to train on the system. One of the developers didn't know how to open a solution in Visual Studio and asked me where the "Run" button was. When I showed him the CV that had been sent over for him, he agreed that it was his and confirmed that he had 6 years .NET experience. How you can code in any framework for 6 years and not know how to press F5 is staggering (this was back in the day when VS was your only choice).

None of the companies or managers I've worked with before would ever go offshore (outside of Europe) again.

> How do we work on changing customer's perspective?

A lot of this is cultural. What appears to be of acceptable quality to an Indian agency isn't OK where I am in the UK. Also, there needs to be balance between being positive while at the same time realistic. "Bending the truth" is part of the back-and-forth of Indian business but in Europe (and especially in software development), that's a disaster.

The best you can do is act more like a Western business and how their perspective changes of your single company.

Which customers? What perspective? What platforms?

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

hello and thank you for your comments from the America but our code top made cheap prices super communicate.

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.

Does your agency have any public GIT repository? To be more specific.

yes, we do have public git repo.

We also organize a monthly developer conference and emphasis on development practices + development tools on iOS.

Low quality, mediocre delivery to spec, frustrating communication, but cheap.

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