It was early 2008; the company executive team was working on the vision for the next decade. Our competitors were eating into our revenue and a causal analysis had shown that our legacy ERP systems couldn’t compete against the latest technologies and Service-Oriented Architecture (SOA) based rich internet applications that our competitors were offering. We had to move quickly and we had to retain and increase our existing share of 40% which was diminishing fast. What came out of the executive leadership to the delivery leadership was crystal clear. Rewrite existing legacy applications in the latest and greatest technologies currently in the market and address three main objectives
- “Good” of the legacy system is retained.
- “Bad” in the legacy system is not incorporated
- “Missing” parts in the legacy system is addressed
There were strict deadlines to rewrite the legacy system and we had to have a new product ready soon to ensure we have ample market share.
The marketing team was tasked with identifying a platform to brand this new product. A usability company was contracted to ensure that the new product would meet international usability standards. Meetings were held with partner companies, OEM providers and select customers to further the vision. Indications on what was in store in the near future were communicated in user conferences and user groups. It was also ensured that existing customers were part of the feature documentation and product backlog creation process. A detailed product map was created which listed the milestones and phases across three years when the whole ERP application would be rewritten in the new technologies.
With the affront knowledge that data migration, implementation, training and setup for an existing client would take anywhere near 3-6 months, a staggered release of application modules was planned in a way that every six months there would be a release of new application module. This way incrementally the clients could add on continuously without a feeling that the product took so long to be delivered. The technology panel selected Microsoft.Net, WWF, WPF, client server with SOA architecture as the model to move forward. Microsoft MVP’s were used to design the core framework on which the new product would be built. Enough care was taken to ensure that most of the things which would be used across application modules of the ERP product would be generic. Hence batch processing, workflow management, message center, dashboards etc were kept separate.
As the application needed to be ready soon, we decided to follow Agile methodology so that we iteratively build a system and we have something of business value coming out on a month to month basis. To ensure development is achieved 24/7 and faster turnaround of features, identified based on the objectives of our company we wanted to use a distributed development team where teams would be formed with people from both US and India. This would give us the time-zone advantage and work would continuously be accomplished and we would also be able to leverage some cost arbitrage. Agile was abuzz when we started on this product development. We had not tried Agile development in our company and from the industry we had come to know that Agile is what is being embraced in most of the product companies. Our leadership felt Agile was the perfect match to what we wanted to achieve. It was the right framework for us to embrace for the application rewrite. At least this framework emphasized on the need for involvement of the product management and the development teams on a regular basis and promised a tangible deliverable which can be assessed at the end of every sprint.
We came up with a resource plan which started initially on the presumption that we would have two developers from US and three developers from India in every virtual team. We had a phased six months ramp up schedule wherein this team would eventually grow into 16 developers in the US and 24 developers in India. This way we would be able to run eight parallel teams and churn out features at a very fast pace. We faced multiple issues when we went about setting up a virtual team for our development. These were basically across people, technology and process.
People: Ability to work in Agile teams
Our developers were used to working in the standard water flow methodology. They expected clearly defined requirements and would completely design the overall product and then get into construction, validation, verification and deployment of the new product. Agile was something new and uncharted waters for the whole team. All that we developers could conjure was surprise at how the whole activity which we used to span over three to six months can be condensed to every sprint of a month’s duration. There was confusion everywhere as to what is the Agile way and there was more confusion than understanding of the Agile methodology.
Reward and Recognition
With the advent of virtual teams and strongly skilled people working in teams, we faced the problem of motivation. After a few months, the work started getting monotonous for everyone. Initially there was the aura of new technology and the challenge to learn new things and put new frameworks in place. But after a while it was only about developing maintenance screens. Both teams alike felt that their counterpart in the other geographical area was getting the best things to develop and implement. It was difficult to appease both the worlds. We had to come up with small teams within teams where members were from both US and India and give them specific technically challenging things to keep both the sides motivated.
Aspirations and Career Progression
Aspirations of people in US and India were totally different. People in teams in India after a while felt that career wise they were hardly progressing. They believed that though they had the same experience as other managers in the company they were just scrum masters of a small team. They were unable to see any progression or promotion to any new role. Agile as a methodology which was being followed in this project did not provide them with any scope to play any role higher than that of a scrum master.
When we started on the technology stack identified by our technology team we realized that we were working on the latest version of the software. It was a big challenge to work with the newer versions of the software and information or assistance on these products was very less. The support groups were very few and there were innumerable delays to iron out insignificant of issues which came in the way of our feature development. We had to define a training plan for people who would join our team, it became very necessary to have a skill up gradation plan as we would for sure never get people on these latest versions and we had to revisit our plans based on the learning curve of the developers.
Our company had a decent connectivity with our US office. Once we started development on the new product line we realized that our network was choked with the amount of traffic coming in. We had the servers situated in US. To ensure all development happened out of the same source code and that we have versioning of the source code maintained on our servers developers would connect to our central source database. We had never envisaged a situation that network bandwidth could cause productivity drop. We had to plan a proxy server at our India location to ensure the developers here would access the source code from a local instance rather than US.
We also had to increase our budget for internet bandwidth so that we could support better connectivity between the two offices. This way we would at least ensure technology is not a roadblock for the success of the project.
Most of our teams in India never realized the significance of the work we were trying to deliver. They never understood what we were trying to develop. On detailed verification of the instances we realized that the process of how things got done were different in the US visa a vie India. We realized the team in India totally lacked the domain expertise on the subject and hence there were problems galore. To address this we had to bank on in-house knowledge banks. A few of the Indian colleagues had worked on testing the existing ERP application. We turned to them to work with the documentation team and come up with quick help and explanations on the domain. We had to arrange for help available from the current application and schedule small quiz to test the understanding of domain within our teams.
Once we started on the virtual teams which had a time zone difference, we came to realize that we had lot of confusion gaining ground when we discussed features over the phone. From a root cause analysis we realized that if we did any discussion within a room full of people, everyone would be engaged and we would be able to successfully deliver the feature. With the virtual team, intra team communication itself was suffering due to the distance. We invested in headphones and cameras for each individual in the team and enabled video calls over our office communicator. This way we started to have daily stand-ups over video calls, which helped us overcome a lot of confusion over our daily work and helped increase productivity. Once we started ramping up the teams we realized that two conference lines were never going to be able to support all the eight teams. Usually whenever the teams dialed in to discuss on a developmental feature, they would be surprised to see that they were intervening or we had to go back and procure more conference lines to support all the eight teams.
Due to the time zone difference, our teams both in US and India had to stretch to work around to ensure they had daily standup calls. Especially during the monthly planning and scrum closure meetings, one of the teams usually had to either come early or stay late.
We had to formalize a time zone specific team meeting to ensure everyone in the team across the time zones attended the team meetings and that everyone is informed of the progress on the project. We had to bring in an outlook calendar item for every conference line we had to ensure that people blocked the calendar for a particular conference line and then no one else would barge into their call.
With the Agile process when we took the help of a process consultant he pointed out to us the need for all scrum masters to meet on a weekly basis to identify and correct course. We setup a weekly call wherein we would discuss across the board on the different processes we have setup and how we can go ahead and improve them. This helped us overcome a lot of challenges in the project. We were able to discuss the challenges and setup a process to overcome the same.
When it came to testing the application we realized that domain knowledge was scarce and we had to ensure that the QA is part of the team and is embedded into the scrum team so that we take advantage of the fact that we continuously test as we build. It was a challenge to test deliverables across geographical teams and we had to come up with a detailed QA process to ensure when the QA can start testing on a deliverable and how the handshake between developer and QA would take place. We had to procure a sophisticated defect management system and set it up to help the QA of our product. When we realized that sprint QA would not suffice in our product testing we introduced a testing phase at the end of application module. This would ensure that we would be able to catch any defect which would have gone unnoticed during the sprint QA.
During the course of our project, we realized that there were multiple instances where we could sense a communication breakdown. People on either side were not able to communicate effectively. Either the Indian team mates were talking quickly or they were not able to understand the American accent. Though we were comfortable interacting with each other, when we ramped up the team completely we had people from every nook and corner of India. There were people who had immaculate communication skills, but we also had a mix of people who had a strong mother tongue influence. They also came from different backgrounds and had a specific choice of words based on their vocabulary. We had to invest in training them on accent neutralization and communication effectiveness. This helped us overcome a lot of barriers in both written and verbal communication within the virtual teams.
What we realized from day one was the need for the teams to have face time with each other. Until or unless we ensured teams spent time with each other the trust factor would be sorely lacking. To achieve this on a budget that would be affordable we introduced a process wherein every quarter 2-3 people from both US and India team would visit the other country for a period of two weeks. This way they would collaborate better and build a relationship which is far better than working as aliens across the world. This truly benefitted the project. After a few quarters we saw that teams would pull up their socks better to meet deadlines, the teams from either side would still work towards the sprint goal even if one of the team members was not available etc. This helped when we wanted the product owner to travel to India and spend time explaining the product roadmap, the overall domain etc.
Our team is of the opinion that people, technology and processes have to work in tandem for the success of any virtual team. Whenever we are part of a virtual team we are bound to have problems thanks to the time zone difference and the cultural differences. Whenever we introduce a radical change like introduction of new technology or new way of doing things we need to factor in some time for the change.
We also have to work with an open mind that there is no silver bullet which will solve all the problems we face. We will have to prioritize and address each and every issue as it crops up. Though virtual teams offer a lot of challenges when the machine starts working it are simply a beautiful experience to be part of such a team. All the hard work and effort is meaningful and successful virtual teams offer a definitive competitive advantage.
People: Ability to work in Agile teams:
The company has to realize that it is not easy for people who are accustomed to certain ways of doing things to actually learn something new. Such a sudden change of direction has to be followed with ample support and training. Anything dramatic such as moving to a different methodology has to involve training the leaders first in Agile methodology and follow up with a directive that the leaders train the new people who join this team. The training has to be same across both the geographical locations so that understanding and implementation is so much smoother. We hired an internationally acclaimed scrum coach to train and certify our people across the geographical locations. It cost a lot for the company to get most of the scrum masters certified by the scrum alliance. We also had to invest heavily in the culture training. We realized some months into the project that we were having people issues across the teams. Very few people could realize this had got to do more with the way the different culture’s reacted to situations. When we met a trainer who used to train multinational corporations on getting onto a third culture, where everyone in both the geographically separated teams were made to realize how the culture views things, the productivity got better and everyone had fewer people issues, we realized that’s what we had to invest for making this team a success.
We also believe that technology plays a strong role in today’s workplace. We have to identify and implement the right technology to take advantage of the benefits it offers. It is imperative in today’s competitive world that we have to adopt and utilize technology for our competitive advantage.
What has been a differentiator in our success has been the fact that we have been able to identify the right process which becomes our recipe for repeating success. It is essential that we learn from our mistakes and put in the right processes to address them. It is not very easy to setup a virtual team. Any team either in house or virtual needs a lot of patience to build. The amount of effort needed to build and sustain a virtual team is immense. There are many problems which are caused by various factors when we work as a virtual team. The management has to be receptive to these challenges and needs to work with patience and with a long term strategy to make virtual teams a success. The investments in a virtual team will pay off in the long run and line managers from both the geographical areas need to communicate and resolve all the differences that crop up and identify means and methods to correct them as they go.