Just to clarify here by Offshore Developer I mean all those developers who are working in developing countries on less money and with lesser infrastructure compared to what developed counties has and Onshore Clients are all those project owners or project managers who are working in developed countries handling projects done by these Offshore developers.
Offshore developer: “my client keeps on changing his requirement”, “as soon as I show him something he starts asking for different variation with same budget”, “requirements document doesn’t list the requirement but he says it was obvious”, “too much of work/expectation for too less money and too short time”.
Onshore client: “Hard to track developers sometimes they suddenly disappear for days”, “can’t understand what they are saying sometimes”, “not good at communication” (especially in English), “promise too much but don’t deliver on their promise”, “internet/electricity(connectivity) problems are too frequent”
These are the most heard complaints, or focus of conversation when you are talking to a person who is working in one of the above mentioned roles. The quotes listed above are the things I have heard from time to time from different peoples based upon the roles they are playing.
It’s not a technical post, it’s for offshore/freelance developers and onsite clients/managers on how to address the complaints. As I have been part of both sides of these roles where I have worked as a freelance consultant or as an Offshore developer and now on other side of fence working in companies who has to deal with offshore developers or on freelance project on sidelines.
Just to keep it short I will break this post in 2 parts and in first part I will deal with Offshore developers/freelancers/consultants.
For Offshore Developer/Freelancers/Consultants:
- If you are trying to be a consultant for someone, you better be good at what you show in your profile.
- Try to set clear expectation to your client. Make sure you always communicate your commitments in writing.
- Never promise anything verbally as there can be a miscommunication in terms of what you are trying to say and what the other person is saying.
- Be prompt with your communication, at least try to send over daily status on the progress you are making on the project.
- Always keep scope for days’ off during project development.
- If you are working on a project as a side project after your regular day job. Make it clear to your client and don’t assume you will always be able to spend full weekend days for client project (especially if you are married you might have other family commitments).
- You might be able to spend 2-4hrs/day on client project after your regular job but it can’t be committed as well as it’s highly possible you have sudden requirement at your regular job and that’s your primary responsibility.
- Most of the time you will be over-committing and under delivering to client, try to avoid that.
- Don’t pick a project in a technology you have never worked in before, just hoping that you will find help from your friend or from internet and deliver the project quickly (every project has it’s own variations).
- The other problem with picking up project in technology you are not good at is, you have to spend too much time in figuring out things either with the help from friends or from internet and you will spend more time in figuring out things then doing/implementing those. You wont be able to justify your hours/time spent on project vs. things you have completed to your client as client is expecting you to be good at what you have have committed to him.
- If it’s a fixed price project you will make less money in the end even if you have completed it, as you had spent more time compared to time you quoted for client.
- If you are working on hourly based rates with client make it clear upfront that particular piece of module/project needs you to investigate things. Most of the clients know that as a developer you have to do those things but when he is clear upfront and not kept in dark he is always happy to adjust his timelines and you as a developer don’t have to lie to him on deliverable or extra time it is taking for you to deliver on things.
- Developing countries: Most of us (not all) developers are coming from countries like India, Pakistan, Bangladesh etc. We have some infrastructural problems which are totally out of our controls like – electricity, internet connectivity issue or sudden family commitments.
- If you are working as a freelance/consultant try to have a backup plan for all these issues if you can, like having extra electricity backup, working from internet cafe’s, or have extra internet connection, or go to some broadband internet cafe if you need to do high bandwidth work in between. Always keep a backup days in your commitments just for those days where you suddenly has to take off from the project to fulfill your family commitments, but make sure you communicate clearly to your client upfront. (it’s little dicey but it’s good to have a good friend who can back you up during those times in these assignments).
Other things which I have noticed and it’s for all my younger colleagues whether you are working in all those big MNCs or small companies or as a freelance consultant, focus on your English comprehension if you can’t speak good English it’s not a big issues at lest try to be more pro-active in emailing or documenting the stuff and communicating in writing regularly. Try not to be afraid to speak in English if given a chance, grammar is not important while you are talking to someone in English but the information (content) you are trying to convey is more important, and higher you go up or more years you accumulate on your CV you better start getting good at communication (especially English) as you will be spending less time on coding and more time on managing clients and developers who might not be good at your local language and English might be the only one common language among your team and client. Write better and clear code as that reflects your personality to peoples who deals with your code. And it also shows how mature you are as a coder. Just don’t copy paste code from help websites, at least try to understand first what you are writing because if you had to explain the code to someone or debug it for any error you wont be able to do so if you don’t know what you have coded. Improve your coding and communication skills over the time. And try to spend some time on forums or read blogs especially in your core technical domain. Most of the time answering questions or helping other developers on forums helps you in getting free marketing/publicity and that helps, if you wants to be a consultant or freelancer.
There are lot of other things which can be written for all those who wants to make their mark in this software development industry as a Software Developer/Consultant or Freelancer. But I will end this post saying “Stay Focused” and “be clear” and “write better code” and All the best with all your projects you will be handling.
In Part 2 I will try to cover the onsite developer or clients and things to keep in mind while dealing with developers working in developing countries.