Its a significant management challenge, and as a startup if you can avoid adding yet another significant management challenge by requiring your dev team to be local to the rest of the operation then you should.
Its a significant management challenge, and as a startup if you can avoid adding yet another significant management challenge by requiring your dev team to be local to the rest of the operation then you should.
I like your analogy about the cake and definitely respect your thought process there. The way I have gotten around this is that I (or another team member) always played the role of gate keeper / "integrator" to make sure the merging of branches went as smoothly as possible. Now we also had the benefit of full test suites to run, user stories to compare against, etc. but it seemed to work. The drawback is that as the "integrator" my actual development time would be cut in order to keep timelines met. However the plus was that I could question the dev's intentions maybe make some extra adjustment / cleaner code and ultimately produce a more maintainable code base. I also was never caught off guard about garbage coming in - ha.
Does anyone else use this sort of "integrator" role and seen these challenges / benefits?
Communication was a serious issue: even in English it was bad enough, and I shudder to think about what it would be like with a non-English speaking country. I guess ultimately you CAN make it work and there are SOME cost efficiencies to be gained but even in India we see large companies like IBM and Verizon who end up building out these massive facilities (regular power generation comes to mind: Delhi had these huge power outages and we eventually had to buy our team there power inverters just so they could work part of the time between 11am and 4pm) to normalize the development experience: I question if there are any cost savings left after that kind of infrastructure build out.
And yes, it completely destroys your personal productivity, but the hope is that the multiplier effect gets you more value than writing the code yourself: I'm as yet unconvinced that it really works that way, but what do I know.