...neither from India and not even from Ukraine or other foreign country. Why? Because outsourcing doesn’t work!
Expectations and bad stories
I’ve been traveling to many capital cities in Europe recently. Berlin, London, and Dublin. I talked to people and asked them how do they find good developers and what’s their experience in that topic. At some point, they tell me “So you are the next outsourcing company from Poland”. “What do you mean by that?” - I ask. “Oh, I have a very bad experience on that. These guys are not on time, they are hard to reach and they are quite expensive, comparing to India!”
You’re doing it WRONG!
OK, so this is how I see it. A random guy from Western Europe or USA has decided to build his online product as cheap as possible (outsourcing = cheap development), so he hires guys from India and he has expectations like for local developers. Then disappointment happens (poor code quality, lack of communication, cultural issues etc.). So he tries again. He goes to Poland or Ukraine and he does the same - he tries to find good developers at the cheapest price available (he believes he will solve previous problems - it’s closer because of the timezone + culture might be more similar to western world). Then second disappointment happens. Why? Because these cheap developers present a similar approach - hard to communicate, not always on time etc.
The guy doesn’t want to try this (outsourcing) again. And since then every time someone from a foreign country wants to cooperate, he rejects the offer.
How should it work? Remote development (with Agile)
First thing - in my opinion, when people hear the word “outsourcing”, they have such picture in their minds: I will give them the brief, the budget, and the timeline. They will deliver an online product and it will be cheaper and faster than here, locally. Oftentimes, even if they are 30% cheaper, it’s still too expensive to compensate the risk of development.
What, if we can create something better than “pure” outsourcing? Maybe “remote development with Agile”. Sounds interesting? OK, but what’s the difference here? Let me point it out:
Way of working
In remote development people prefer to use AGILE, because the business owner becomes a part of the team (Product Owner) and he makes all the relevant decisions. He meets with the crew every week and they build a product in weekly cycles (sprints). Distance is not a problem, because they use conference calls, chats and other online tools to move the project forward.
In pure outsourcing people want to give you a BRIEF and then ask you for an estimation and a timeline. The client wants to say: I know what to build! Just do it and I will pay. At the end of the day, the product is not delivered or is launched in a shape that no one wants.
In remote development everyone is responsible for the online product from day one. People argue a lot, they think not only about the technical issues, but also about the business side of the project. The goal is to deliver something that will work and finally increase the client’s revenue. Both sides (the client and the team) are responsible for proper decisions and should take ownership of what they build.
With pure outsourcing it’s not about making friends. It’s about building stuff on time with specific budget.
In remote development (in Agile) you spend a lot of time together (client + development team) so you have to like each other (at least accept) and find a way to communicate and solve problems.
How we do it at DeSmart?
We never say we are an outsourcing company. We never say we are cheap. We don’t take all clients on board. Why? Cause we want to build close and long-term relationships with them + make sure they will succeed. So we have to feel the chemistry. We want to make them proud of the results and become friends at the end of the day. It’s not easy to always be 100 % successful, but we have our magic formula and we learn every time we start a project.
- We start with prototyping - we don’t want to make you pay for unwanted features or code. We have developers, not coders. First, we create a prototype with UXPin - What You See Is What You Get.
- We communicate a lot - we argue, we reject ideas, we want to make sure people know why they build things and how we can contribute.
- Every member of the team talks (even developers!) - we have weekly retrospections with the client, where everyone presents his part of the job. No excuses!
- We meet with clients face2face (maybe except for USA ;) - we are in London, Berlin or Dublin and we grab a coffee or beer with folks and we discuss things and eventually we celebrate winning! We also invite our clients to spend time with us in our office.
- We give credibility - the beginning of the project might be hard. Different communication styles and expectations, so we need to trust each other (we vs client) and forgive small mistakes.
- We are transparent - working in weekly sprints and meeting during retrospections gives the client control over the production process. He sees pieces of software delivered each week and he knows how much budget he still has to continue the development process. He is quite flexible, so sometimes he can build something smaller than he assumed, but sometimes something bigger (new features come in after getting feedback from the market).
OK, so what’s next?
REMEMBER: Don’t outsource developers! Just build a team, lead them and then you can create something good together.
What about your experience? I want to hear opinions from software houses and clients! What’s your story? Let’s start a discussion.