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!!!
What is the right project to start with, is a hard question to answer - how do you transfer knowledge half a world away? We write medical software, so the problem is compounded. We have to transfer domain knowledge, the American health care system is totally unfamiliar to the offshore team, and we have to transfer knowledge about our code base and our development processes.
I decided to start with an existing product. It submits clinical measure data to government agencies every quarter. The government agencies update the specifications every 3 months where they might change measure specifications, or add new measures. The advantage of starting here were
The team and the project now chosen, we are ready to start work. But how will teams who don’t know each other, don’t trust each other and don’t work the same hours communicate and collaborate?
The Hiring Process
I picked a company in India that I was comfortable working with. I won’t go into details about this, but it had to be not too big (why would they be interested in us) and not too small (we didn’t want them to fold). We took into consideration their location in India, met their sales and technical staff, and got references. I didn’t pick the cheapest, rather picked the one where I was most comfortable with their CEO – he seemed to understand my requirements and needs, he had, as a young engineer worked in the US after he graduated from school.
Now to find the engineers, we were given the option of picking from the engineers they had on the bench or they would recruit for us. I didn’t mind either option, the only thing I was sure of was I was going to interview every engineer who worked for us. If I had stringent standards for hiring local engineers, why would I compromise my standards on offshore resources? It took some time for the Indian company to understand that I didn’t care about how “well qualified” the candidates was or how well they spoke English. I wanted engineers who were passionate about software and knew how to code. They weren’t going to client meetings; their interaction was going to be only with the local engineering team.
We followed exactly the same method of hiring offshore as we do here. We have a series of tests, where we ask a candidate to write code on 3-5 different areas highlighted in their resume. The candidate, who passes our test, gets the job. The success rate is low in both countries. It always surprises me when an engineer with a stellar resume, a few degrees, and a few more certifications is unable to write code to check if a string is a palindrome. I stopped looking for degrees and certifications years ago.
There are additional challenges conducting tests with employees in distant lands. The time difference – I would conduct interviews at 8am EST which is 6.30pm for India. I didn’t believe it was fair to conduct interviews later (most people don’t interview well at midnight), but that meant I could only schedule 1 interview a day. There are communication problems. Sometimes it has to do with accents, sometimes static over Skype and sometimes they don’t know what a palindrome is. I remind myself, we are looking for engineers not English majors.
Six weeks and twenty interviews later, I had my team. Three Engineers in a faraway land, who I had never met. The offshore team worked the “2nd shift” (1.30pm to 10pm IST) which was 4am to 12.00pm(EST). This was this was suggested by the offshore company we worked with, and something I communicated to every potential team member we interviewed. “This project requires you to work 1pm to 10pm – is this something you are comfortable with?”
Off to the next challenge – finding the right project to start this adventure.
Software development is a team sport – one where 1 + 1 doesn’t equal 2, but maybe be 1.5 or 2.5 depending on how members of a team relate to each other. I’ve never been comfortable with remote teams - so, the idea of an offshore development team half the world away was an anathema. However, with an increased development load, and the unavailability of good engineers locally, (rant on lack of engineers being produced in the US will be the subject of another post), reluctantly with a great deal of trepidation, we decided to try to get resources offshore. Just for a trial 6 month period. I don’t like failing, and this effort seemed to have a higher risk of failure than I like to take.
My first decision, where to get my offshore resources? This for me was a relatively easy decision; I am Indian by birth as are a few of my local resources. Communication and Team building should be easier with an Indian offshore team. India however presents a huge challenge because of the ten and a half hour time difference, and might not have been my ultimate choice if so many members of the local team were not Indian.
Having made the decision to get offshore resources, and to go to India for them – the next challenge, how do I find my offshore team?
Looking through the OdeToCode weblogs for the past week, I noticed that we have been getting referrals to some articles from a site called SSWUG (SQL Server Wordwide Users Group). This is something I consider a good thing - we write articles for the developer community and feel good when other sites, blogs, newsgroups link to them. Out of curiosity however I browsed over to the SSWUG site to check them out and see in what context they were linking to our articles - http://www.sswug.com/see/19274 or http://www.sswug.org/see/19275
To lift an article from another website, without informing us, let alone asking, put up a teaser abstract, but to ‘Read this article…’, I need to register and pay a membership!!!!!! In this case Scott and I wrote these articles, and we choose to share them with the developer community – FREE. It’s our way of giving back, to this community.
It makes me wonder, how many o the 16556 Articles/Summary or 470 Scripts on this site have been “stolen“? How many other ‘reputable’ websites do this sort of thing? What is the difference between theft and what SSWUG is doing?
Email : poonam@OdeToCode.com
Over 15 years of varied experience ranging from mainframes to PC’s, from web application development to database administration to network administration. Experienced in full system development life cycle from analysis to design and architecture to development and finally testing and training.
03/2002 – present A heath care ISV in Columbia, MD
We., provides web based solutions for the health care industry. As Sr. Software Engineer I was recruited to develop their Business analysis solution, targeting both financial and clinical data for hospitals. I was responsible for the design and architecture of their web application, using C#, Asp.Net ADO.Net, SQL Server and Analysis Server. My responsibilities include :
§ Interfacing with the business specialists and clients to solidify requirements and scope the development effort
§ Provide Time and Cost Estimates for additional feature development as well as custom work required by our clients
§ Design our Data warehouse, development and implementation of the data extracts from existing OLTP systems into the warehouse.
§ Monitor database efficiency and query performance so as to ensure that queries run in the web time frame. Currently the size of the warehouse at client sites range from 10GB to 40GB.
§ Develop and implement database maintenance scripts
§ Develop a web based application in C# to query the Data warehouse
01/2001 – 01/2002 Ultraprise Loan Technologies, Frederick, MD
As a Sr. Software Engineer, my responsibilities include :
· Development and maintenance of VB COM objects.
· Development of stored procedures using T-SQL for SQL Server 2000.
· Re-configuring the IIS setup
· Ensuring that the ‘look & feel’ of the product was style sheet driven
· Ensuring that Company branding was database driven
· Making sure that the ASP pages were modularized, based on database parameters
· Ensuring cross-browser compatibility (Netscape 4 and above IE 4 and above)
07/1996 – 12/2000 Compuware Corporation,
Compuware Proffessional Services Division
As Technical lead determined project requirements, developed and implemented Compuware’s internal applications. These included :
· A Contact Management System for the Baltimore Washington Branch Sales team using MS-SQL-7 and VB components and ASP. This was hosted on NT4.0 and IIS4.0. This system was used by the account executives for establishing the match between consultant’s skills and the client’s requirements.
· A web based skills inventory system hosted on an internal Windows NT4.0 Server with IIS 4.0. This system was used by the account executives for establishing the match between consultant’s skills and the client’s requirements. The system was written using ASP and a SQL 6 database
· Designed and developed an intranet website including a document management system for the Baltimore & Washington Branch office using HTML, ASP, and VBScript and ACCESS databases.
Responsible for Y2K remediation, programming and testing of COBOL, DB2 and Eztrieve programs for multiple business applications. Converted existing Legacy COBOL programs to COBOL II by building File-Aid and Clist utilities to automate the conversion process.
As a Systems Analyst, I was responsible for evaluating the existing system and making the modifications required to incorporate the needs of the new organizations acquired during PHH’s merger with HFS Corporation. This included the conversion from DATACOM/DB to DB2 on the IBM 390.
Worked as part of the development team of this consultancy, providing IT solutions for multiple clients including Carriers India, Bank of India and Precision Fasteners a subsidiary of Unbrako
07/1982 – 09/1984 Hinditron Computer Systems Ltd.,
As part of a development group, provided business solutions for clients of DEC (Digital Equipment Corp.) as well as for an in-house DP center with PDP-11/34, PDP-11/23 and VAX 11/780 systems that functioned as the complete computer support resource for many smaller companies and larger organizations.
Internet Architecture & Website Development 09/1998
Active Server Pages 10/1998
MCSE (TCP/IP and IIS 4.0) – Dec 1999
CIW - Application Developer – May 2000
MCP - Visual InterDev – May 2000