Redrawing the map
The word outsourcing may not seem as fresh and interesting as it did a few years ago. But while we think we already know everything about the case, the map of outsourcing regions, as well as the very nature of outsourcing itself, is constantly changing – especially in terms of software development. Let us check the newest trends and try to answer one of the most important questions: where exactly should you invest your money?
When talking about software development outsourcing, we usually think of well-known outsourcing regions like the Republic of India. A lot has been already said about the economic growth of this country in the 20th and 21st century – according to some, India has skipped the industrialisation phase, transforming its agriculture-based economy straight to one based on services. Almost overnight, the country became one of the biggest outsourcing centres in the world, the IT industry itself employing circa 10 million people. There is at least one reason for this spectacular success – labour costs. As stated by AT Kearney principal Johan Gott, companies outsourcing software to India can save up to 75 percent. For many enterprises around the world, the opportunity was too good to miss.
However, over the last few years, the situation on the IT outsourcing market has changed considerably. As Paul Walentynowicz concludes, “The BPOs in India are being threatened left and right. The IT sector is threatened by automation, thanks to technological advances; the health care sector is threatened by data privacy issues; and even Infosys CEO Vishal Sikka talks about the end of India’s ‘IT Miracle’. What is more, Western companies begin to notice that labour costs are not the only important factor to consider and tend to “focus more on cost effectiveness and proximity, rather than just low cost”. But what exact destination do they choose instead of traditional outsourcing countries?
It seems that the next big thing is nearshoring. Instead of looking for software developers on the other side of the globe, more and more companies decide to outsource to neighbouring countries, hence the term nearshoring – in opposition to traditional offshoring. And there is one particular region which seems to challenge India’s outsourcing supremacy: Central and Eastern Europe. Why? What are the perks of going nearshore?
One may presume that only technical aspects matter when thinking of software development outsourcing. They are of course of major importance but it is good to start with presenting other traits – less obvious, nevertheless still crucial. Software developers sometimes resemble coding machines but they are people and if you want the cooperation to be smooth, you need to make sure that there is no cultural gap or language barrier.
Due to historical processes and because of globalisation, most American, European and Middle Eastern countries share many of the same cultural values. This is why the emerging outsourcing region of Central and Eastern Europe became so competitive. According to Walentynowicz, “the level of misunderstandings that clients and managers experience when working with Eastern European BPOs is much lower. Clients know what to expect, and only small adjustments are needed.”
To effectively communicate with the development team, you need to make sure they fully understand your guidelines. English language, as the modern lingua franca, is taught globally and finding a team with a project manager that is a fluent English speaker is not a problem anymore. However, it is better to have a possibility of talking not only with PM but with other team members also – especially when you represent a software company or an IT department and discussing technical details is crucial for you.
The ultimate way of testing someone’s language abilities is to have a conversation. But you obviously do not have time to interview every software house you consider hiring. Luckily, there is some research you can rely on. The 6th edition of English Proficiency Index lists 88 countries from all over the world and while not every Eastern European nation made it to the top spots, some of them performed superbly. Romania, Hungary and Czech Republic were placed among the 20 most fluent English-speaking countries and Poland surpassed them all by taking the 13th place, thus “beating”, among others, Switzerland – a country considered to be the land of foreign languages experts.
There is yet another important factor worth considering when talking about effective communication: time zone differences. All Central and Eastern European countries belong either to UTC+1 or UTC+2 time zones (the only exception being Belarus, which belongs to UTC+3). It means that working with Eastern European developers is not a problem for Western Europe, Scandinavia, the Middle East and even the United States – if your company is based in New York there is six-hour time difference between you and Poland, so you can arrange a call without having to amend your whole schedule.
We have argued before that historical background made it possible for American and European countries to share the same cultural values. But historical processes have also shaped the quality of IT services in Central and Eastern Europe. As explained by Kathleen Hall of Computer Weekly, “The legacy of the former Soviet Union country's engineering-based education system has fuelled a rapid increase in the number of companies providing IT outsourcing and software development services in the region.”
You have probably already heard about the success of Eastern European game developers. CD Projekt Red from Poland released a series of critically-acclaimed Witcher games and Belarussian Wargaming became famous after developing the super popular World of Tanks online game. But Central and Eastern European professionals are not limited only to developing games. In fact, they are regularly topping various rankings of “the best programmers” and “best developers”. In one of the recent summaries by Hacker Rank, titled Which Country Would Win in the Programming Olympics?, Poland was ranked 3rd, Hungary 5th, Czech Republic 9th and Ukraine 11th – all of them beating such tech giants as the United States (ranked 28th) and South Korea (22nd), as well as traditional outsourcing regions like India (31st).
To fully understand the success of Eastern European software developers, we must get a broader picture. Economy of this region is getting more and more innovative in general. In the latest issue of Bloomberg’s list of The World’s Most Innovative Economies, Poland climbed to the 22nd place, with Hungary and Czech Republic staying pretty close (28th and 29th respectively). Local governments observe this trend and are aware of the importance of new technologies. For example, not only do Polish authorities support existing software companies but they also think about the future – to ensure that the market will not be lacking in skilled developers in a few years, coding classes were introduced and even children in elementary schools are now taught how to think using algorithms.
Last but not least, one should consider the delicate matter of data protection in software development. We have already said that India is experiencing some problems with data privacy. It is true that not every Eastern European country is free from similar issues either. However, the states which are part of the European Union are the ones which you can trust, as they have adopted the EU’s Data Protection Directive (1995) and the General Data Protection Regulation (2016), thus applying very rigorous standards of private data processing. It makes them – as Hall concludes – “a good choice for work”.
We must state one very important fact: outsourcing software development is neither a miracle cure for every company nor a perfect solution for every problem. However, there is still a number of situations when software outsourcing can be highly profitable – we have prepared a few real-life scenarios to help you check whether your company can benefit from building the software abroad.
If one had to pinpoint the most burning issue in the present software development world, it would definitely be the lack of experienced developers on the market. The demand for such professionals is very high and universities (both with other education centres) still fall behind with providing the workforce. While almost every software company would prefer to hire new developers on site, they very often are simply not able to do that. Especially when thinking of the most experienced programmers, as they are usually lured by the leading players in the industry – tempting them with good PR, very attractive projects and extremely high earnings. Therefore, medium and small software companies usually decide to outsource some of their work. But must the outsourcing always be an unpleasant necessity or may it also turn out to be a perfect solution for your business?
The problem with the lack of experienced developers becomes increasingly evident when unexpected but very lucrative business opportunities occur. While all of your developers are engaged in an on-going development or maintenance and the new, profitable project needs to be done in a short period of time, recruiting new employees may not be the best solution. Firstly, it is very unlikely that you will find a new developer quickly and he or she will, in fact, turn out to be a top-notch specialist. Secondly, hiring full-time employees is useless in the face of a short-time-commitment project. This is a situation when you should seriously consider outsourcing as it is a chance to augment your team with experienced people (how to check if they are really experienced will be discussed in the next chapter) and if you want to scale down later, it usually means nothing more than making a phone call to a competent person nearshore. Therefore, it is usually the best solution for such short-term projects.
A similar situation arises when you need to develop a project using technologies which are beyond your in-house competence. If your company specialises in providing web solutions but after a while one of your clients decides that a mobile app is also necessary, outsourcing this work to a team of mobile developers is almost always a better decision than starting to organise a whole mobile department from scratch. The same goes for specific technologies – nowadays the digital world is extremely diverse and you cannot simply divide it to web and mobile or frontend and backend. Most software companies use only certain programming languages and frameworks and if you suddenly need to develop an application using technology which is unknown to your developers, outsourcing this part of the project may turn out to be the best solution. It is even more likely when speaking of new and still niche technologies, e.g. face recognition, virtual reality and internet of things. Finding a software house which focuses solely on providing such specific products almost always means working with first-class experts.
As we have already mentioned, the outsourcing of software development nowadays is somewhat different from the one which we have observed for the last twenty-or-so years. One of the most important changes can be observed when it comes to the very nature of the work which can be done by a remote team. The traditional outsourcing usually meant (and sometimes still means, especially when speaking of offshoring) straightforward body leasing ¬– you hired so called code monkeys, i.e. people who only took care of writing the code. Sometimes such help is sufficient, especially when you run a software company and the work which you want to outsource is time-consuming yet quite uncomplicated.
However, if your company’s technical expertise is limited, meaning it is not a software company, hiring only remote developers is not enough – you need a comprehensive solution, with know-how included. Fortunately, modern software houses offer outsourcing which is way beyond code writing. They can assemble complete teams consisting of not only developers but also analysts, testers, graphic designers and project managers. You only need to present your business goals or describe the problem which you are encountering and they take care of everything else – from technical analysis to developing a complete product and (if needed) carrying out further maintenance.
On the other hand, sometimes you are not wishing for a complete and comprehensive product, but rather want to build a prototype application. This is a scenario common among fresh startups which need to develop an MVP (minimal viable product) to validate their initial idea but also for established companies which want to carry out pilot studies and test a new business opportunity without overspending their budget. Remembering our conclusion from the previous chapter, we know that the nearshoring revolution introduced attractive price-performance ratios, therefore hiring an experienced outsourcing team is very often a good way of checking if the business idea is viable without the risk of throwing all your money down the drain.
But if your budget is very limited, there is an even cheaper way of having your prototype application developed – hiring freelancers. Nowadays, the whole procedure is a lot easier because of the flourishing business of online freelance marketplaces like Upwork and Guru. You must, however, keep in mind that hiring a freelance developer does not equal hiring a complete outsourcing team, especially in terms of receiving a comprehensive solution with business analysis, know-how etc. And if you want to build a whole team of freelancers, get ready to train your project management skills.
CEO of Mobee Dick and an author of jestem.mobi blog
When your company is located in one of the Western countries – whether it be in Europe or in the United States – there is a good chance that local software houses can provide you with everything mentioned above. So, is there a reason to outsource the development abroad? Yes, and the reason is quite simple: money. As we have noticed before, the top-notch software houses from Central and Eastern Europe are more expensive than those from traditional outsourcing regions like India but they are still significantly cheaper than those from Western countries.
Many people are still worried about working with developers from other countries but, nowadays, all the risks and inconveniences of software development outsourcing are reduced almost to zero. Modern internet bandwidths guarantee effective communication, flight tickets are getting cheaper and keeping control of remote teams is easier thanks to dedicated tools and agile software development principles. Therefore, nearshoring seems to be the best choice for skill-intensive development (rather than repetitive and large-scale tasks known from traditional software outsourcing). However, you must make sure that the abilities of the remote team which you are going to choose are tailored to the needs of your business project. We shall explain how to properly evaluate each software house in the following chapter.
Addressing your needs
When you start looking for a software house to develop your product, you will quickly realise that many of them claim they can craft almost anything. The truth, however, is that the world of software development is extremely diverse and you need to perform in-depth research to find a company which is able to build an application tailored to your very needs. Let us then draw up a checklist which you can run through during your quest for the five star software development outsourcing.
The most essential information about a software house can be usually found very easily on the internet. Besides checking the obvious sources, like their website, you should also take a look at independent portals reviewing software companies, e.g. Clutch.co, where you can find opinions and reviews by their previous clients. If some important info is missing, do not hesitate to call them or send an e-mail. If it is difficult to contact them or you do not receive a response for a long time, you have just come to the first important conclusion – working with this company is not the best idea, as breakdowns in communication may occur (and you definitely do not want them when outsourcing).
One of the most crucial things to check during the initial research is whether the company which you are X-raying has previous experience in the line of your business and can quickly understand processes which are essential for your trade. By the way, you can also find out if they have worked with companies from your country or world region. In the globalisation era, it is not as crucial as it was before but may be an additional benefit. One more important thing to find out is if the company in question is working on some long-term projects and if it is a technological partner for one (or more) of its clients. Last but not least, do not refrain from asking for contact details to some of their previous clients ¬– in order to get a first-hand insight into the character of cooperation with the software house.
If you run a software company yourself, it is probably very important for you to know what technologies the outsourcing team is familiar with. Check if they are experienced in working with the frameworks that you want to use in the project. Keep in mind that companies which claim to be able to develop software in almost every technology are usually employing hundreds of people and it is harder for them to maintain the quality which you expect. You better find a software house which specialises only in one or a few programming languages, therefore seems to be highly competent in them. However, do not forget to ask for some software projects in their portfolio, or even for a talk with the developers themselves, to prove this assumption.
On the other hand, if you have no technological experience and no software department in your company, you may think that choosing the technology is not very important. It is not true, as the technology you choose in the beginning will most probably stay with you for the whole project, even after changing the developer. Which one should you choose then? As you will soon realise, every developer believes that the language and the framework he or she uses is the best. And the truth is that they are somehow right. From the technological point of view, most of the projects can be built using almost any popular language (you can find out which are the most popular ones by checking which programming languages and frameworks used to build the leading websites). It is not the technology but the people who make great software, so you should rather focus on looking for a company which has the best specialists – developers who have considerable experience in a specific technology, not the ones who have been using some language for a few months just because it is currently trendy.
How can you check if the software house is really a leader in this or that technology? Let us now focus on more specific data regarding developers working in the company which you are inspecting. Some software houses publish information about their recrutation process on their websites but in most cases, it will be necessary for you to call the company and ask for the details personally. Begin with the basics: find out how many people work in the company, are they employed full-time and do they work in the same office – it makes teamwork a lot smoother. You may also ask for a turnover rate because if workers tend to leave the company often, it is usually not a good omen for your project-to-be.
Do not attach too much importance to titles like senior developer and junior developer, as they are somehow arbitrary, but rather simply ask how many years of experience the developers in question have. Find out if they attend seminars and conferences and if the company itself organises meetups, webinars or runs a blog – the world of IT is evolving on a daily basis and those who do not invest in self development and do not share the knowledge stay behind. Finally, find out about the factor mentioned in the previous chapter: is there a possibility of flexible upscaling and downscaling of the team working on your product.
It is extremely important to learn about the development process. In the traditional outsourcing, where you deal with repetitive and large-scale tasks, the waterfall model is still very popular but it is not the best choice when thinking about the scenarios presented in the previous chapter, i.e. the ones requiring skill-intensive development. If the project which you have on your mind calls for such a creative approach and innovative thinking, you should rather go for a company which implements the principles of agile software development, Scrum and Kanban being arguably the most popular agile frameworks/methodologies.
Development teams which implement Scrum are self-organising, meaning that team members choose tasks on their own, basing on their experience and preferences. It usually results in the team being more devoted and more creative. The whole process is divided into so-called sprints, each lasting two to four weeks, and probably the most important thing for you is that after every sprint a new version of your software product is presented to you, so you can test it and evaluate the progress. Teams are controlled by Scrum Masters (somehow similar to project managers) who ensure that the whole process is going smooth which is crucial when talking about outsourced work. Last but not least, if you run a software company and want the remote team to collaborate with your own on-site software department, remember to ask if the company which you are X-raying has previous experience in such cooperation.
Keep in mind that, depending on the nature of your project, you may need more than software developers to craft your product. Most software projects, except for those which are solely backend, need graphic design and a well-thought user interface. If you do not have a graphic artist in your company, look for a software house which employs such a professional. You can, of course, hire a freelancer for that part of work but there is a risk that his or her collaboration with the development team will be problematic. It is also desirable that the outsourcing software house provides Quality Assurance specialists, i.e. testers who make sure that your new software product will work in all conditions – especially if you do not have people experienced in performing tests (both manual and automated) employed in your company.
As we have already mentioned, software development outsourcing is quite rapidly changing and nowadays software houses offer more than just the development itself. Some of these additional services may be useful in your situation, therefore remember to ask if the company in question is offering such solutions. If you have no technological experience, you should think about software consulting, during which the outsourcing team performs a thorough analysis of your internal processes and currently used software. Some software houses offer such consulting for free (at least the first phase of it).
If you, in turn, run a software company, you might ask for a test drive (a trial), usually lasting a week or two, during which the outsourcing team writes code which then you (or your software department) can check to evaluate its quality and decide whether to continue the collaboration. Finally, regardless of the nature of your company, you may be interested in a scoping session (project workshops) during which you can confront your ideas with the experience of the software house, find out if they have already solved problems similar to yours and create first mockups – sometimes even clickable ones, so you can feel the flow of your application to be before the actual development process.
By contrast, not every project ends when the development phase is finished. Sometimes you need further maintenance and support – to prepare dedicated versions of the product for new end-users (your clients), to ensure that it is compatible with new APIs (application programming interfaces) and works on new operating systems (especially important when speaking of mobile apps). Many software houses do not offer such support, usually because they do not employ enough people, so they do not mention it of their own free will. Therefore, if there is a reasonable possibility that you might need the maintenance, it is crucial that you ask about it in the very beginning.
Finally, you need to decide which engagement model you want to adapt. There are two basic types of contracts: fixed-price contract (where both sides agree on a single price in advance, regardless of resources the software house has to finally use) and time and materials contract (where the client agrees to pay the software house based upon the time spent during the development). As the fixed-price model seems to be more budget-friendly, many companies in the beginning of their outsourcing journey believe it is the best choice. However, fixed-price contracts are based on the assumption that both sides already have the full knowledge of the planned product in the very beginning of the collaboration and that the vision will not change during the development. It is rarely a case. If the said product is a small piece of software, e.g. an MVP, it can indeed be developed in the fixed-price model. In other situations, it is highly advisable to choose the time and materials model – it works best with the agile methodology and with big, skill-intensive projects.
But how much exactly do you have to pay for outsourcing the software development? You probably know the answer: it depends. The general rule of thumb is that you should expect to pay anywhere from $30 to $60 per hour (less if you are interested in the simple “body shop” model but we have already stated that it is not the right type of outsourcing for the kind of development which this e-book covers). However, such pricing is not self-explanatory, as some prices include the design and Quality Assurance and some do not, some cover the project management and some do not, etc. Therefore, in the end, the solution is simple: contact the software house which seems to be the best fit for you, explain your business idea and ask them to prepare the proposal.
All in all, it is good to think prospectively when planning the outsourcing of software development. However, at the same time, you should not worry too much – if you manage to go through the whole checklist described in this chapter and then test the software house during free consultations or test drive coding, there is a strong chance that you will find the team which will make the collaboration smooth and effective.
While we have already covered all the basics of the software development outsourcing in the previous chapters, there is still one particular subject which deserves special inquiry – mobile apps development. The mobile industry is huge and keeps growing on a daily basis, therefore, it is no wonder that many business ventures are eager to get a slice of this mobile cake. If you also plan to invest in developing a mobile application, we have prepared a list of things which you should pay attention to when looking for the outsourcing force.
Some mobile applications are merely copies of web versions but many other have achieved special status, as nowadays, a whole business idea can be based on an original, innovative mobile app. Almost everybody can name examples of such successful applications – Instagram, Uber, Snapchat and Tinder, just to mention a few. Some of these brands even do not provide web ports of their apps (or develop very simplified versions), as mobile devices offer functionalities which are not to be found on desktops. Therefore, if you plan to outsource mobile app development, you need to take care of a few things which we did not cover in the previous chapter (when talking about software development in general).
Those who have been watching the mobile market closely for the last few years can probably mention several operating systems, like Windows Phone, Symbian or BlackBerry OS, but the truth is that nowadays these systems are largely obsolete and the only ones which still matter are Android by Google and iOS by Apple – both accounting for more than 99% of new smartphone sales (respectively 81,7% and 17,9%). Such a situation is very important from the business point of view, as you have to make a very important choice when defining target audience for your app. If you want to develop an app for only one of these mobile OSs, the situation is quite simple: you have to find a software house which specialises in the Android or the iOS development. But if you think of covering 99% of the mobile market, there are more decisions to make.
If you want your mobile app to work on both main systems, there are two ways of achieving the goal – you can either develop a hybrid app or two native apps. Both alternatives have their pros and cons and there is no universal recommendation; everything depends on your business vision, the character of the projected app and your budget. A hybrid app is basically a web application wrapped in two native costumes (one for Android, one for iOS). Its development is usually cheaper and faster, therefore building a hybrid may be a good choice when thinking of a simple application, for example, an MVP (minimal viable product).
Native apps, on the other hand, are tailored for specific operating systems and developed using technologies and tools provided respectively by Google and Apple. A native app can guarantee better stability, smooth user experience, design compatible with the newest guidelines (i.e. Google’s Material Design and Apple’s Human Interface) and full hardware support (e.g. GPS, camera, gyroscope, accelerometer, fingerprint sensor). Therefore, if you want a comprehensive yet stable product that covers 99% of the market, you should opt for developing two native apps for two operating systems. It may seem like an expensive solution, but if you manage to find one software house with separate teams – one experienced in Android development and one crazy about Apple technologies – you can still get a good price without having to get rid of useful functionalities at the same time.
There is, however, yet another scenario. What if your idea is pretty complex but your budget is limited? The usual answer for such questions is “lower your expectations” but with the mobile apps the situation is somehow different. You can still go for an all-inclusive product and not overspend at the same time if you decide to develop a native app for one operating system only. If your business idea turns out to be successful, you can invest in building a sister app for the second OS later. It is yet another reason why you should find a software house which provides both an Android and an iOS team. Firstly, as they have experience in various kinds of mobile development, such company can advise you properly on choosing the best development scenario (a hybrid? two native apps? a single native one?). Secondly, if you decide to make another app later, it will be simply easier for you to continue the collaboration with the company which you already know well than to start searching for a second development team.
Regardless of which alternative you choose – hybrid or native app – you should always take care of mobile product design, including UX and UI design. We have briefly mentioned this subject before, but it calls for closer examination when speaking of mobile applications. If you want your app to be successful, designing an intuitive and up-to-date interface is one of the most important things, as smartphone and tablet users tend to pay close attention to the design. Find out if the software house employs graphic designers (or, in case you want to hire a freelance graphic artist, if they are willing to cooperate with such a freelancer remotely). Also, do not forget about the fact that the mobile market is very diverse and you want your app to look great on every device, so check if the software house owns different models of smartphones and tablets for testing (some companies only perform tests on emulators which not always resemble the real conditions).
Keep in mind that not every graphic designer or UX/UI specialist is capable of creating great mobile projects. You should definitely check if he or she has previous experience in mobile design – the size of smartphone screens makes it especially difficult to lay out an intuitive yet visually attractive interface. Once again, it is advisable that you find an outsourcing company which provides all kinds of services: mobile development, backend development (yes, mobile apps need backend too), graphic design, UX and UI design. At the end of the day, you will pay only for the people you really employ but, at the same time, you cover the possibility of scaling up later.
Do not forget that the end of the development phase itself does not equal the end of the project. If you want your app to be available for download on Google Play and Apple’s App Store and you have never published a mobile app before, you should look for a software house which provides such services. They should help you with creating Google Play and iTunes Connect accounts, assist in preparing app descriptions, uploading screenshots, setting right keywords etc.
Unless you have an IT department in your company, it is also advisable to choose a software house which does not leave you on your own after the launching. The first days (sometimes even the first hours) after publishing a mobile app are very often the most crucial ones, as opinions from the real end-users start to appear. Collecting the feedback and incorporating fixes without delay is vital to the success of the new app, as it directly affects its reception and user reviews. Also, do not neglect further maintenance and support, as new versions of operating systems are released frequently and you must be sure that your app will be fully working after every update. If you do not employ developers on site, remember to ask the outsourcing team if they are able to provide such maintenance services.
They are more than just a software company. They are the partner who will help you achieve what you want to achieve.
We'll be back to you shortly to discuss your needs in more detail.