Ask HN: What are your views on India based development agencies?
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?
How do we work on changing customer's perspective?
96 comments
[ 3.4 ms ] story [ 165 ms ] threadI 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.
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.
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.
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.
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.
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
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.
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.
You'll need to be clearer in what you're asking. Are you asking for opinions, or advice?
I cannot for the life of me see why this is on the front page of HN tbh
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!
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.
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.
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.
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.
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.
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.
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.
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.
FWIW I worked with an eastern bloc country team (Europe) and it was top notch.
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.
10 to 20% of times we have failed miserably to satisfy customers needs.
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.
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
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.
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.
- 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
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.
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.