Thoughts about Outsourcing in Romania
Before starting to outsource to a company in Romania, there are a lot of questions that should be answered about the possible partner company: if there is enough resource, knowledge and reliability; if the foreign company's organization is compatible; how the communication will flow; how the structure of the project will be set up; how the financial and legal aspects will be clarified and so on.
I have 5 years experience in outsourcing in developer, architect, team leader and project manager positions. There are no generic answers to those questions but I can emphasize some interesting things and present some conclusions based on real-life experiences.
All the things presented here are solely based on my experiences in the company I'm working for or on comments that I have heard from people working in other companies. They may apply or not to different Romanian outsourcing contexts.
What is similar
Generally, developers and architects I know are well-prepared. There are also some outstanding 'geeks' having the knowledge required to lead the architect, design and develop the system components defined in the architecture of an enterprise system. New technologies are assimilated, learned and used as they appear; in my company there are 4 main technological trends: .Net, Java, DB and scripting with all the related technologies.
Development methodologies as RUP, SCRUM or XP are known. Still, the same problems appear like everywhere else: rolling out the know-how about development processes; sticking to some practices even if there is pressure on the project team; 'religious wars' when different practices, activities, artifacts are analyzed.
Knowledge about software development disciplines like development, analysis and design, configuration management, project management, requirements management, testing and deployment are good and based on experience.
Engineering practices like continuous build, test driven development, code reviews are known and applied when possible.
What is different
The motivation of a developer is higher first of all due the simple fact that the salaries in the Romanian IT industry are few times bigger then the average Romanian salary is. There are other attractive aspects, like going to customers for gathering requirements, for developing on site or for any other reasons that mean traveling in another western European country or in North America, meeting other people from different cultures. For me visiting the London and Paris was really a fantastic experience. Visiting different countries is expensive for an average Romanian citizen.
Romanian culture is different. The gap is not big, and the differences usually open interesting discussions. Having cultural diversity is fun.
We have to be more flexible. This means a lot of things like: adapting ourselves to existing development methodologies, building up relationships with customers, staffing new teams in relatively short time and learning quickly new technologies.
The good
We are cheap and from 2007 we will be in the EU too. Romania is so close to the western European countries that in few hours we can be at the customer's site. We are very motivated and flexible.
IT professionals are traveling constantly to customers from Western Europe and US. They usually speak good English. Part of them also speak German and/or French. Some of them speak Hungarian and Russian too. Many times we are working on site in teams with developers from the partner company.
My company has a full-time English teacher and a part-time German teacher working there. Soft skills like communication, customer care, team work are constantly improved with trainings and conscious appliance of the assimilated knowledge.
Many times we are working on site for different periods of time in teams with developers from the partner company. The integration goes usually good.
The bad
Due to the remote location the project setups are much more complicated. The presence of the root of all evils, the unclear communication is significant. Because of lack of appropriate communication, time and money are wasted. Late answers to mails, inconsistent specifications, wrong questions/answers and so on. This is a thing on which both sides should constantly work.
All customers have their own approach. Setting up a common one between the customer and the Romanian company is important and costly. I would suggest flexibility from both sides when artifact, activities, guidelines etc. are set up. KISS.
The ugly
Don't think about a sweatshop; it is important for us to be treated as if we were the customer company's employee. Our creativity, experience, know-how and motivation should be used accordingly.
Resistance in the circle of the employee of the contractor company is understandable. But this can gain stronger forms than just simple discussions. Before starting to outsource, this part of the problem should be clarified inside the contractor company.
Don't set unrealistic expectations. Outsourcing is no silver bullet. It requires a lot of additional collaborative effort to set up the communication mechanisms, infrastructure, staffing (sometimes mixed teams), to agree on the development practices, reporting, risk management and so on.
Outsourcing can trigger political fights inside the contractor company. Usually there are pros and cons. If the customer company is a bigger one and has involved in the outsourced project more than one department, then quite sure that there will be at least additional discussions.
How the whole thing happens
The nature of outsourcing projects can be different from project to project. You can hire hands to implement an already designed project or to run a testing project on an already existing product. You can hire brains to analyze and/or architect and/or design and implement a product from scratch or to extend an already existing one. Requirements management can be on any site. You can buy a team to have it for onsite development.
Think about: on boarding, traveling and accommodation costs. And communication, communication, communication. In my opinion, the unclear communication is this the biggest risk of an outsourcing project. Not the knowledge or experience.
Usually a test project is done before thinking about bigger jobs. An appropriate test project can give a hint about development practices, capability, know-how, communication efficiency, on time delivery.
The frame contract and specific contracts should also be developed before going into development.
A part of the communication is feedback. Early feedback means risk mitigation. This means the avoidance of losing time and money. The feedback forms should be defined between the two companies asap.
A common technique is to have a person from us as proxy at the customer site. This person changes every couple of weeks; her/his job is to facilitate communication.
There are a lot of other issues as well. The ones I have written about are the ones that have come to my mind for now. Feel free to comment.