How do I better function with my offshore developers?
February 3, 2023 10:20 AM   Subscribe

Piggybacking on my previous question I'm having a really hard time integrating with my offshore team who doesn't really seem to want to work with me. There's a lot of language and cultural things here and I'm wondering how I might better integrate with them. This is software development if that matters.

I'm definitely looking for a new job but in the interim I'm having a really hard time getting the team to integrate.

- Standups last literally 3+ hours and everyone talks in circles. I feel as if we rehash the same thing over and over. I keep getting, "this is how we do it on previous projects" and if it isn't available to copy and paste it seems to confuse the team.

- The team overengineers and comes up with the most complex scenarios for things. For example we have a component that has alternating image sizes of big and small in basically an image carousel. I brought up just having it done in CSS and the client agreed. Instead they went and made it so that every image has to be sized and uploaded. They were on these calls but said it was due to "performance issues" and made their jobs harder.

- We're months behind and have something like 300+ bugs per component. I setup CI/CD but it isn't being used because they're used to manually upload broken code and letting QA come back and flag it. There's no basic quality checks, as in they don't even test if their build works. So instead of fixing the build they just go around the checks and push out bad builds so they can call it "done."

- Again, months behind with poor quality and I started developing which I'm not really setup to do. The team took this as a personal afront and deleted all my (working, tested) code. I've never had that happen before and this was discussed in sprint planning and standup. There seems to be a complete lack of motivation to get the project done in time and it is incredibly frustrating.

- I've spent my entire career learning to not micromanage but I find that unless I write pseudo-code and am incredibly descriptive the work doesn't get done. For example we have a video player and if you click play I'd expect the play button overlay to go away but it doesn't. This is an example of what I'd consider pretty common behavior that doesn't have to be explicitly defined.

I can tell the team is frustrated and they're not the top developers. I've accepted that and want to make it as easy for all of us, however they really want to also control the project so I feel as if I'm a bit stuck. On paper (and I don't care about hierarchy) I'm in charge. We've had several meetings about that and they ignore me and do whatever they want: pass around source control in emails, etc. I'm not even trying to be perfect I'm literally wanting to see some level of engagement and being self-driven. There are some Indian developers on-shore who are amazing, and I get they're not making a lot overseas but I feel as if there's a lot of language and cultural barriers I'm not used to.

The "us vs them" mentality is highly toxic to the team and I'm trying to figure out the best way to solve it. If I ask them directly what else I can do to help them, such as changing my hours, provide more documentation, more 1:1s I get nothing but silence.

I'm not asking for perfection, but I'd like to see some ownership. I'm tired of every day having another basic issue that could be solved easily by checking in code, or deploying.
posted by geoff. to Computers & Internet (15 answers total) 4 users marked this as a favorite
 
do you not have authority to fire some of these folks? At least the person who deleted your tested code?
posted by fingersandtoes at 10:25 AM on February 3, 2023 [16 favorites]


This all sounds just awful. We do all our development in-house, but a client we worked with had an offshore development team (also in India) that we had to interface with in order to import data to our app from theirs. The client had a project manager who was of Indian descent (but lived in North America) and who seemed to be sort of an intermediary between their in-house people and the offshore team. There were definitely issues similar to what you're describing, and it seemed like the project manager was more able to get them to follow guidelines and coding standards, etc.

Overall, though, it sounds like a case of "you get what you pay for". Sure they may be cheaper per hour, but it sounds like it's not getting your project toward where it needs to be.
posted by number9dream at 10:32 AM on February 3, 2023 [3 favorites]


Document all of this. Go back through emails and chats if possible. Create a case study on the team in general as well as specific individuals. File a performance improvement plan with HR. If they are unable to meet the terms of the plan within the specified time frame, you (or whoever has the authority) is going to have to fire some people. If firing doesn't happen, at least you have solid documentation as to why the project is behind or failing.

Once this becomes a pain point for the project stakeholders, things will shift.
posted by ananci at 10:40 AM on February 3, 2023 [1 favorite]


Response by poster: I cannot fire them even as a project lead and I realize very well it is "get what you pay for," but I'm having to deal with it. There seems to be no accountability and the company is just focused on what is I'm sure incredibly high margins. Two onshore developers could have got the project done in half the time but I was told that's just not how things work. Instead we have 15+ offshore developers. It seems kind of a racket to just bill the client as much as possible.

I'm down to doing the bare minimum: showing up for client calls and important meetings and keeping my hands off. That kind of has bit me a bit as they're asking why I haven't been more assertive. I'm basically trying to keep my job until I find a new one, but if I could make life easier for the rest of the team that'd be good. I hate having to basically admonish the team everyday but literally everyday with broken builds, work not getting done and some just basic code hygiene is beyond frustrating and I think it is beginning to show.

We have two (!) offshore PMs and that helps liaison but they seem to only care about bug counts and whether or not things are said to be done and not actually done. I took that stance before but it leads to a very frustrated client and I'm basically yelled at because I'm the native English speaker. I also found the devs don't speak up on client calls and will completely shirk away from responsibility. I'm hoping I can do anything to help make this not horrible every day but I'm wondering if that's just not possible and I'm just a punching bag.
posted by geoff. at 10:48 AM on February 3, 2023


There should be someone at your company responsible for this relationship who will want to know all this.

Some of this is normal. In my experience working with outsourced groups in India, especially at the beginning of the relationship they want to be told exactly what to do in order to succeed. Weaning them off this can be difficult if your outsourcing vendor is not willing to cooperate. We usually aggressively cycle people off if they require minute details in how to do their job. We aggressively cycle people off if they code review poorly (either can't actually do their job or have a bad attitude). Eventually we end up with a team who wants to work how we want them to work. This can take 6 months to a year. Generally if you treat people well, the good people won't get spooked by the cycling because they know as well as you do that the other person isn't great. We've even gotten to used to one of our vendors that they cycle people out for us at times and will often bring on non-billables to see if they fit before they even bring them on billable in the first place.

For standups lasting forever, make them have their own meetings on their time and don't force everyone to sit through them. Cultivate leads on their side who can manage that rathole of a meeting and you stay away. They can manage how to make that meeting better themselves.

For CI/CD, there should be a team commitment to that and they need to get on board. No choices here.

If the team actively destroys your work, get them off your project. Don't put up with that behavior. They don't get to have bad attitudes about what you're doing.

I know it may seem callous, but cycling low performers is a benefit off outsourcing. Don't let your vendor hide their garbage on your team. Assert yourself and your position on the team. If you're in charge, you're in charge.

Generally my experience with teams in India is they know who is in charge and it is pretty clear by their behavior who it is. The person is charge is going to get greeted every single meeting the leader is in. Answers are going to be presented to the person in charge even if they were not the one who asked the question. If that isn't you, they don't think you are in charge.
posted by cmm at 10:55 AM on February 3, 2023 [14 favorites]


Focus on easy requirements to get some wins.

Split the team, some percent designing new code and some percent doing nothing but fixing bugs.

Let them over-engineer, it seems like they are all brand new developers.

Use off the shelf components if possible (ie: an HTML5 video player instead of rolling your own) so that better developers have already covered basic design considerations.

Focus on requirements, and do pseduo-code if you need to.
posted by The_Vegetables at 11:01 AM on February 3, 2023


You have a lot of things that need to change. I've found that it's best to tackle these things one at a time (rather than instituting sweeping changes across the board) and to use standard change management techniques to make the changes happen.

The first thing I'd focus on is getting the stand-ups under control. Stand-ups are a time to share progress and identify blockers, not a time to hash out all the details. Each person should speak for 30 seconds to a minute, briefly answering the stand-up questions.

If you don't like the ordinary stand-up questions, here are some other variants.

Change management for this: 1) tell them you want to streamline the stand-ups. Let them know what changes you have in mind. Invite them to discuss the proposed changes with you privately. Give them a timeline for step 2. 2) Share the plan with them, telling them why you chose the options you did. Invite them to discuss issues privately again. Give them a timeline for step 3. 3) Go over the ground rules and implement the plan. 4) Enforce the plan until it becomes habit.

The whole CI/CD thing needs to change in all sorts of ways. Pick one issue at a time to focus on: using the system, test plans, requiring code review for each change submitted, regression tests for code submission, etc.

Some of my devs screamed bloody murder when I started requiring code reviews for each PR, but it's second nature for them now.

It also sounds like you need to do a lot of work on the requirements phase, and that requirements need to be broken down a lot more. Devs need to know what to work on and how you want it done, and their tasks need to be small enough that there's not a lot of room for interpretation.

Good luck.
posted by katmai at 11:22 AM on February 3, 2023 [3 favorites]


Here are some ideas:

- Ask questions first -- you've probably tried some variation of this already, but perhaps double down or bring in someone who knows their specific culture (their subculture within India, I mean) or an expert on cultural awareness to find out more about these people and their leadership. There are two goals here: establish more of a personal connection and trust, so that they actually will tell you what their problems are, and so that you both seem like sensitive human beings to each other; and start to ferret out what obstacles they're facing to following your process.

- Talk to some of the developers individually, with a translator if necessary. Make personal contact.

- Get a person higher up than you -- possibly someone with hiring/firing authority -- to speak to them, with you (you need to know what's said), and tell them that [thing] is non-negotiable and important enough for them to change their process.

- Spend more time communicating with their lead person so that you can almost be with them as these decisions are made.
posted by amtho at 12:14 PM on February 3, 2023


You are either in charge or you are not. Your managers can’t make you responsible without giving you authority.

I’ve found it helpful to ask them to reset their way of working to the American way (if you aren’t American, change that). Then it isn’t them performing properly; it is just the American standards are x, y, z. That helps them save face and make it not about their performance.
posted by Monday at 2:09 PM on February 3, 2023 [2 favorites]


I'm guessing these dev's are paid by the hour?

I mean, it all sounds rotten from your side-- but from the dev's point of view, it's awesome. They can just put a movie on, sit in on a client meeting and say nothing and... nothing will happen. They can avoid doing anything you ask and... nothing will happen. In fact, the worse they do-- the more money they'll make overall as the project deadlines keep pushing out into the future.

You can't really expect people to take responsibilities seriously if there's no downside to not doing them. If you can't make anyone accountable, then you're kinda screwed-- the only other option is to reward those that produce good work with extra hours.

Or heck-- go to the client and snipe the project and save them a bunch o' cash.
posted by Static Vagabond at 2:37 PM on February 3, 2023 [1 favorite]


Response by poster: Yeah I work for a WITCH type company and this is all good advice by I’m beginning to see I’m the boss in name only. My job is to talk to the client and serve as a backstop for work the developers can or won’t do. It is taboo to hold the offshore team accountable for some reason and I guess asking my question out loud let me see that. They don’t see the advantages of some basic SOLID principles and normal standups. They miss demos and dates and give outrageous estimates for any tasks they haven’t previously done. I guess if I had no accountability and no one was angry if I wholesale missed dates and came with bad quality I’d probably do the bare minimum too.

I’ll continue to work with the team but I’m used to developers who want to improve and these developers frankly don’t. Everytime a date is missed upper management throws more and more developers on and doesn’t want to solve core issues.
posted by geoff. at 4:29 PM on February 3, 2023 [1 favorite]


I'm basically trying to keep my job until I find a new one, but if I could make life easier for the rest of the team that'd be good.

This really stuck out to me, because… it sounds like the thing that would make their life easier would be to stop trying to get them to improve and just let them do whatever the hell they want. This is doubtless not what the company wants, but they are apparently aware of the situation and unwilling to do anything about it. So the actual question you should ask is what would make YOUR life easier - which is not a synonym for “what would make the product get finished faster,” and in these circumstances might be the exact opposite of that thing.

I hope you find something soon, this sounds so incredibly frustrating.
posted by showbiz_liz at 6:09 PM on February 3, 2023 [2 favorites]


Very typical of offshore teams. Some good suggestions above, but if they are not held accountable, nothing will change.
posted by matildaben at 6:27 PM on February 3, 2023 [1 favorite]


Holy moly, this is terrible and completely unprofessional behavior. My one suggestion is to strictly and bluntly enforce the meeting's scheduled end time, because that's within your power. Or even shorten the meeting. Block out your calendar so you can say you have another call (I may have done this). And may a new gig come your way soon!
posted by weirdly airport at 4:45 PM on February 4, 2023 [1 favorite]


I would like to add some sort of constructive or helpful comment - but, I am in essentially the same situation myself. Endless requirements and design meetings between DEV + QA that go nowhere (talking in circles is the perfect description), live troubleshooting and deployment activities during meetings that were supposed to be standups or status updates. Non-stop communications breakdowns. Over engineering the simplest things. Of course, our corporate policies, project manglement styles, security assessments/audits and reviews are also extremely onerous and endless...

About 1-2% of the DEV and QA team members have the skills, experience and communication skills to drive things forward. The rest? Not sure what they do. Myself, I do what I can, but am unhappy, unfufilled and dissastisfied.
posted by rozcakj at 12:27 PM on February 7, 2023 [1 favorite]


« Older How Do I Record a Voice Mail off an I-phone   |   Seeking Sight and Sound Magazine Newer »
This thread is closed to new comments.