I am pleased to announce the release of TeamFound’s new ebook: [ebook no longer available]
We traveled to Romania numerous times, researched 100+ companies, and interviewed 20+ Romanian software providers. The result: 8 highly recommended IT/Software providers with extensive profiles in our new 62-page ebook.
This ebook will reduce your risk and save you weeks of research and travel time to find the right Romanian technology provider for your software or IT project.
Profiles include key differentiators, sales figures, vertical focus, application focus, key customers, technical expertise, descriptions of projects developed and products owned, certifications, and awards.
The ebook also includes an extensive introduction to
Romania as an outsourcing destination (with photos)
Selecting your provider
Running your pilot project
Navigating through interviews and negotiations
Integrating quality assurance
Why this ebook? As a software manager with 4 years experience sourcing to Romanian providers, I’m impressed by the high quality of their work and their outstanding customer service. I believe many companies in North America and Western Europe who are struggling to find software resources can benefit from the skills and professionalism of Romanian developers.
As I write in the ebook, “The Romanian IT professionals we have worked with have that mix that makes projects succeed: a proactive nature, technical veracity, strong execution of software engineering processes, and excellent English skills.”
Also, I wrote this ebook because I wish that I had a guide like this 4 years ago.
I would like to thank all those who helped and supported this project (you know who you are), and the providers with whom I worked and interviewed on-site.
Romania is one of the most attractive markets in Europe for technology investment and outsourcing, with a highly skilled and diversified workforce, competitive prices, and a stimulating business environment. Romania’s IT sector has seen continuous growth over the past decade, despite political turbulence and the economic crisis, which is a good indicator of its driving force. Known for their broad technical expertise, their flexibility, enthusiasm and excellent language skills, Romania’s software service providers are a great choice for long-term collaborations in both nearshoring and offshoring businesses.
The large number of specialized Romanian software companies, which has more than tripled over the last decade to +17.000 companies with a total of over 65.000 employees, registered CAGR averaging +15% with only a short-lived setback during the economic crisis.[1] After Romania’s integration in the European Union in 2007, the country’s IT sector has expanded and attracted significant investors, establishing itself among the world’s top outsourcing markets with respect to its advantageous quality / price ratio.
In Romania, IT&C companies enjoy a number of benefits, among them a larger market, easier movement of qualified personnel, readiness for joint ventures, and the access to EU funds, including structural funds.[2] Government support has played a great role through the elimination of the salary tax for software developers, the introduction of the 16% unique taxation on profit, price liberalization, open foreign trade regime and encouragement of fair competition in the informational sectors. The Romanian Government’s vision is to develop and assure an increasing level of quality and security in the IT sector, in order to maintain its growth rate and attractiveness to investors.[3]
Romania’s main competencies in software development and offshoring services include: enterprise and customer management, production cycle management, technology based management systems, security applications and services, embedded automotive systems, product design & development tools, development services, consulting and implementation, maintenance and support.[4]
Even though other offshoring markets such as India, Russia or China have the advantage of size, Romania has a particularly well qualified management and technical workforce to keep up with and even outshine the competition in niche areas. The continuous shift in outsourcing toward Eastern European countries has allowed Romanian IT service providers to establish themselves on a respectively high position among the European competition.[5]
Romania is the 6th country in the world regarding the number of certified IT specialists per capita, ahead of UK, Germany and Canada, thanks to its educational system that favors multilingual and technical skills. Higher education in the IT area is provided by 5 top polytechnic universities, 59 domain specific universities, and 174 private colleges, which together produce over 5.000 computer science and engineering graduates per year.[6] The main academic centers beside the capital Bucharest, are Cluj, Iasi, Timisoara, Brasov, Craiova and Sibiu.
The constantly increasing level of professional training offered by the technical universities has also brought Romania more Informatics and Math Olympiad medals than any other European nation, for example the first place at the International Olympiad of Informatics in 2003 in the US, and third in the world at the International Mathematical Olympiad in Mexico in 2005.[7] The latest achievement was winning first place at the Central European Olympiad in Informatics (CEOI[8]) and the Junior Balkan Olympiad in Informatics in 2010, where Romanian students have dominated the competition through a high level of training, and have also brought home several silver and bronze medals.[9]
When it comes to a smooth collaboration with foreign companies, Romania tops the conventional outsourcing destinations as it is the 2nd most multilingual country in Europe, with an English fluency rate greater than 80% in the IT sector alongside with many other great circulation languages. Important multinational companies have made Romania their primary partner in specialized customer care services, such as Siemens, with over 2.000 in the local workforce, and Oracle, who maintains its European development and call centers in Romania, the main one in Bucharest providing support in 13 European languages.[10]
Other multinational companies have spread out over Romania, especially since the demand for qualified resources continues to grow. Examples are: HP software development center, Accenture and Genpact in Cluj; IBM in Brasov; Microsoft and Wipro in Timisoara; Ubisoft in Craiova or Continental Automotive in Iasi and Sibiu; Capgemini and Amazon in Iasi, and many more.[11]
Romania has always been known for its hospitality and open-mindedness, and increasingly for its flexibility and diversity. The Romanian professional youth is very similar in mentality to that of the US and Central European countries, adding to it the typical enthusiasm and strong competitive drive that define them. Building on a balanced blend of high-level technical proficiency in leading-edge technologies, with great communication skills, the Romanian IT specialists excel in fulfilling even the most sophisticated demands of their customers.
According to Brainbench, Romania is situated in the top 5 worldwide regarding skills in computer technical support, technical help desk, network technical support, computer electronics, telecommunications, LAN/WLAN communications, network design, ASP.NET, HTML, PHP, web development concepts and many other.[12] To name some of the Romanian software products that have gained international recognition by winning awards on the global market, one could look at BitDefender IT security and antivirus protection, SIVECO’s AeL eLearning platform, the Intuitext e-learning suite from Softwin, and Transart’s ERP and sales force automation solutions.
Offering expertise in a broad range of technical areas, the large pool of IT companies eager to build long-term relationships with foreign investors is constantly thriving to improve its competence and competitiveness. The creative approach of Romanian companies in adapting to the customer’s needs and demands of specialized skills, is one of the key strengths that set them apart from other potential partners worldwide, coupled with the ability to offer very attractive prices without cumbersome cultural or language barriers that could hamper the development of fruitful business relationships.
Romanian companies will impress by their take on new technologies, and offer unexpected skills in software development methodologies, a quick understanding of technical and business requirements, a high level of individual customization of software products, accompanied by diligent software quality assurance and adaptive management of projects. According to a survey conducted by IDC with companies from all over the world who have cooperated with various Romanian IT specialists, their experience can be safely regarded as encouraging:
“The capacity to overcome unforeseen obstacles was truly one of their strong points, as well as the ability to fit an existing general solution to very particular project requirements.”
“We truly appreciated the great collaboration and synergy between [the service provider’s’] staff and our key people, end to end.”[13]
The IDC conducted research also showed that customers value the ability of Romanian IT services companies to “deliver business-critical, technically complex projects”, and state that “delivery versus cost is excellent”.
Resilient and vivacious, the Romanian IT landscape is rapidly recovering from the setbacks of the economic crisis and will continue to thrive and increase over the following years, earning a noteworthy presence as an excellent and dependable outsourcing partner.
CEOI is a European Informatics competition initiated by Romania in 1994 and hosted every year by one of the member countries (Croatia, Hungary, Germany, Czech Republic, Slovakia, Poland, Romania) also accepting guest countries each year, such as Bulgaria, Switzerland, USA, Israel, Estonia, Spain, and many others; http://ceoi2010.ics.upjs.sk/Main/HomePage
In a staff augmentation model, developers internally and remotely are working on the same project, and usually the same code base. When the model is implemented well, communication is efficient resulting in good productivity and a healthy team relationship. However, if the model is not implemented properly, there can be significant communication overhead, resulting in loss of productivity. It often manifests as long meetings, frustrating code reviews and code merges, or worse, when the project manager or stakeholder refuses to mark the feature as “complete”.
I’d like to suggest an implementation approach to staff augmentation that is effective in not only minimizing communication overhead, but also increasing quality and productivity, and making happier teams.
Let’s say you are planning your next release with four new features (or feature enhancements) and five defect fixes. Think of each new feature as a vertical set of activities: estimations, architecture, coding, unit-testing, integration, code reviews, etc. Use the same concept for each defect, with its corresponding set of activities.
Often, project managers who are new to staff augmentation will divide the activities of a feature across teams. For example, estimations and architecture are assigned internally. Coding, unit-testing, and integration are assigned to the remote team. Then again code reviews are done internally. The result of this approach is lots of communication overhead, and it’s easy to see why. The more the baton is a passed from one team to another, the more communication is needed to assure that all the right information is relayed. This approach leaves plenty room for miscommunication and misunderstanding. It results in longer meetings, loss of productivity, and often-unnecessary frustrations.
Now consider an alternative approach: giving each team whole verticals, a full set of activities associated with one feature or defect. For example, for your development cycle, you assign two features to your internal team. The remote team can take the other two features, and some of the defects. The baton stays put. You’ve consolidated the vertical effort, and reduced communication overhead.
Consider how much more engaged the remote team would be if they were involved from the planning stages in, for example, the estimation process? Developers who code should also be the developers who estimate. How about the architecture? If your internal leads are nervous about the prospect of handing over design responsibility, consider asking the remote team to write up a design approach document that your internal architect can review, and make adjustments if needed. I call it a “Technical Perspective”. Engagement is a powerful way to increase productivity and engender happy employees.
Making people accountable is key to managing effectively. If you’re slicing up feature activities across teams, how do your employees know what they are accountable for? How will they know whether they succeeded or failed? The estimations were wrong, but they were done by one team, while the coding was done by another. The design turned out to be too simple, missing important considerations, but the remote team went ahead and coded it anyway. See the accountability problem?
If needed, add checkpoints along the way. For example, have your internal team do spot-check code reviews, after the remote team has done the obligatory full-code review. For the architecture, I’ve mentioned design approach documents. Don’t fear letting go of what you today believe must be handled internally.
If you’re running an agile development process, segmenting the whole vertical activity stack into teams is much more apparent. Completing a user story involves too many dynamic activities, making it cumbersome to divide across teams. I suggest you begin by engaging your remote team in the Iteration Planning Meetings. I will cover staff augmentation using agile in a future article.
I hope you have enough confidence in your remote team to give them more autonomy. If you’re thinking they can’t take on the full-set of activities all at once, then migrate activities slowly, one at a time. This is also a good tactic for overcoming internal team resistance.
There are, of course, certain foundations to a successful staff augmentation implementation. A mature and willing internal team, with management that is closely engaged in the process, is critical. The remote team must be very disciplined, impeccably managed, and they must possess strong development talent.
I was fortunate again this year to attend Google I/O, Google’s premier developer conference (registrations were sold out one-hour after they opened). I’ve been attending for the past 3-years, and always find it extraordinarily useful, technically inspiring and fun. There are two new technical developments that I suggest enterprising companies followup on:
Google’s NFC (Near Field Communication) API for Android. You can watch the “How to NFC” presentation.
Android Open Accessory API and Development Kit (ADK). In Android 3.1 Google has enabled support for USB input devices, as well as new APIs for applications to communicate with peripherals via USB. You can watch the Android Open Accessory API presentation.
Situated between your internal and distributed teams, whether they sit across town or across an ocean, is a narrow tunnel that is your voice, the voice of your team, documents, email, instant messages, and video conferencing. Through this tunnel, your task is to lead your teams to work productively, make smart technical decisions, recognize which tasks are more significant than others, work with forethought, take the right opportunities to refactor and improve maintainability, and, of course, meet a deadline.
If you take the time to visit your provider and attend your remote team’s meetings at their location, you will be surprised. Within 5 minutes you will marvel at how minimal the information is coming across that tunnel, and how your remote developers must make do with less than you ever imagined.
The tunnel effect is real, and it exists in nearly all distributed team scenarios. There are many important tools and methods we can discuss to mitigate the tunnel effect. You likely implement some of them: structured team meetings, scheduled overlap time between teams, manager to manager communications, periodic visits. But right now I want to focus on what I believe is the most effective means of dealing with this tunnel, and thereby significantly improve the productivity of your distributed teams.
In an article published by The Telegraph, Daniel Pink reports on research by Adam Grant at the University of Pennsylvania’s Wharton School which concluded that reminding employees about the “why” of what they’re doing doubled their performance. His experiment focused on an American university’s call center where students call alumni to raise scholarship funds. Those students who took the time to consider the significance of their work and its effect on others’ lives raised more than twice as much money, as other students who either had no insight into the impact of their work, or understood the impact in terms of the personal benefits of working at the job. Grant and his colleagues found the same results in another call center study, as well as a study of life guards.
Pink writes: “It’s often difficult to do something well if we don’t know the reasons we’re doing it to begin with. People at work are thirsting for context, yearning to know that their efforts contribute to a larger whole. And a powerful way to provide that context is to spend a little less time monitoring who, what, where, when and how – and little more time considering why.”
How much effort do you make in relaying the “why” to your teams? Do you take the time to provide context for the project before it begins? Do you remind your teams periodically how the project, and specifically their efforts, will impact the company’s business and its customers? If the project will result in a special milestone for the company, do you emphasize that?
There needs to be an explicit effort made by the manager to clearly articulate the “why” of the project before the project begins, and, as Pink suggests, the “why” needs to be kept alive once a week at staff meetings. According to Grant’s study, the effects are dramatic, even if the “why” is introduced in modest ways.
You’re the captain of the ship. It’s about to embark on a voyage. Your crew needs to know what the voyage is about. Getting on-board means understanding the “why” and deciding it’s something worthwhile doing. This is about good leadership.
You know the “why” has taken effect when members of your team show initiative, thoughtful analysis or inquiry, forethought in their activities, and clear reasoning. They’ve understood the context of the project and how their efforts can contribute to the larger whole. Remember to validate these efforts by drawing the connection between their actions and the purpose of the project. Do it publicly in the staff meeting, and, if it’s significant, privately also.
As a development manager, I sat in two or three scrums each week. I made a conscientious effort to detect when team members were forgetting the “why”, which manifested as veering off course. In such cases, I stepped in to clarify the vision. More importantly, I validated when their efforts clearly sprang from understanding the “why”.
We are pulled into various meetings and duties that seem to take precedence over being with our teams. But we must remind ourselves that leadership is our principal task, and it happens more directly when we are present with our teams.
In my experience, conveying the “why”
helps team members recognize which tasks take precedence
answers the question, “How much time is this task worth?” because they understand the big picture
raises the right testing concerns
solicits smart followup questions to your specs that would not otherwise occur to your team
promotes independent thinking and initiative, tempered with an understanding that it will take team-work to reach the goal
Pink’s article doesn’t need to make a distinction between internal and distributed teams. But if you’re thinking you need to start with your internal team before you can address the remote, you’re right. If the “why” isn’t happening nearby, how can you expect it to happen remotely.
I believe the “why” is always about people. Whatever the technological advances or business advantages, it needs to translate to its effect on people. In engineering, it’s easy to lose focus, believing the “why” to be about technology rather than people. We know developers love to work with new and innovative technologies. It’s always a treat. But don’t let the excitement of new technology seduce you or your team from the goal. New technology will do its own work in generating energy for your project. Keep the focus on the larger whole, the impact on people.
The “why” is a key element of leadership. Raising it with your team is the most powerful way of widening that narrow tunnel of communication. While the nuts and bolts, the tools and methods, are important, the “why” transcends them because it works directly with the understanding and motivation of your team.
Recently I talked with a developer who’s company hired an outsourcing provider that I had worked with. I knew about their collaboration, so I asked him how the software project was going.
He said, “Their code looks like they hire juniors and that their training program is W3Schools,” which translates to: he’s not happy with their level of work.
What was really curious about this encounter is that another client had great success with the same provider! In fact this client’s project managers were avidly moving projects there and developers who were working on projects with this firm raved about the talent level of the engineers and high quality of their work.
Two projects and two very different outcomes. Both our client and the developer’s company were working with the same provider in a similar staff-augmentation model. So what went wrong?
It is worth pointing out the obvious: a successful relationship between one client and a offshore software provider does not translate to a successful relationship with another client’s project.
Sourcing providers have their good clients and their not-so-good clients. The good ones are typically those whose managers work very closely with their team and the provider’s team to set the right patterns of activity and collaboration, to make the relationship work. This is what I refer to as “setting the course”.
Problems, such as those the developer I met was encountering, are often due to the failure of managers to take responsibility for and get involved with the initial setup of the teams: the establishment of the provider’s team, and the on going communication required on the client’s team to make the day-to-day collaboration work.
I don’t know what went wrong here but I would ask: Was the development manager or team lead involved in the provider’s interviewing of developers? Team selection is a critical factor and if you don’t hand pick your team you’re asking for trouble. Were specific technical criteria (such as level-of-experience in a technology set) given to the offshore provider? Were candidates’ skills tested by the internal manager or team lead before the project started?
The technical training and experience of a provider’s developers needs to be spelled out in writing and agreed upon well in advance. If the provider is not living up to that agreement, it’s time to work with the provider to make personnel changes. But too often, it’s a lack of client clarity from the outset that amplifies such problems.
I often say that finding the right provider is the most important step in software outsourcing. But finding the right provider does not mean your projects will succeed, it only gives you a better chance.
A significant and necessary piece of the puzzle is successful change management within your organization. Too often managers tack-on outsourcing like a kind of appendage, that has no real link to their management-style, communications, processes, attitudes, and that of their in-house staff. On the contrary, the success of your outsourcing initiative depends upon how you change these factors.
As a manager, the effort begins with you. It depends mostly on how you facilitate change. Are you willing and prepared to introduce change, to oversee it, to help your employees integrate change and empower them to offer creative solutions?
For your project to succeed a well executed change effort is needed. Development and project managers will need to adjust their management methods, working processes, and learn to collaborate with remote partners. Software analysts will need to adjust their focus and change how they communicate. Developers will need to learn to work as mentors or within a distributed team framework. These changes are deep and cross-disciplinary and therefore warrant a change management process.
If your modus operandi is to set your people and projects in motion and let them govern the outcome, you’re in for a very rough ride. Outsourcing often entails changes that are too significant to delegate. That’s the point of change management – you need to get involved.
Get into the trenches and work closely with your team. You need to know what they’re undergoing so you can provide support. There will be issues with work habits, attitudes, and miscommunication that will require your involvement to overcome. Your staff will look to you to react rapidly and approve changes to methods and procedures that are no longer effective. Frequently, you will need to work the other end, with the provider’s management team to resolve issues.
In fact, the initial setup of your provider’s team absolutely requires your involvement. The more involvement you have with their decisions, especially at the beginning, the more likely their team will be well-structured and prepared to work with your team.
Breaking out of a single-unit or in-house development operation is challenging. Whether you are sourcing across town or across an ocean, it takes a good deal of un-learning and re-learning to make it work. It’s entirely appropriate for teams to rethink their development methodologies, communications, and processes if they want to create a pattern of success.