Getting to know each other
I wanted to be in India at the start of this project - I think it would have helped for me to get to know the new members of my team, and it would have helped them understand my expectations of them. As it so happens because of commitments here, I wasn’t able to go.
I introduced myself and our chief architect to the Indian team over Skype. They had already “met” us before, since we interviewed / tested them, and we spent half a day describing the product and its architecture to them. We ftp’d the databases over, gave them access to the source control server, and documentation on how to build the system on their development servers. We asked them download the code, build the project, point it to their local database and have it functional on their local computers by the time we logged on the next day.
Unintended consequence #1 - We found out the next day – our install documentation was incomplete and outdated and they were unable to complete this task. So Day 2, we helped them build the system, and made sure that our documentation was updated. For the remainder of the week, we brought in one local engineer on the team each day to meet them over Skype and explain a different area of the product to them. By the end of the week they had met the 3 engineers who worked on this product as well as the chief architect and me.
Version upgrades locally take a single iteration with 3 engineers working on it. Our normal process involves a planning poker session - there are some standard tasks which need to be implemented with each iteration (and by now we know exactly how long these take by now – we are on our 7th version upgrade). We also know how long a measure takes to port over to the next version with no changes, the only time unknown is where the specifications have changed and/or new measures have been added. I hand over the new specifications to the local team and ask them to estimate how long it will take and enter each task in team server. For this iteration I opt to hand tasks to the off shore team, with a time estimate of how long we think it should take (adding a % for the inevitable learning curve). The local team is also working on the project, implementing some of the more complicated measures that I wasn’t sure I wanted to hand over till I got a sense of how the off shore team performed. We handed over our version upgrade documentation, had a question and answer session, shifted our daily standup to 9.30am so as to be convenient to both teams.
The problems started as soon as the project did!!!