Offshore developers and Onshore Clients – Part 2

As explained in Part 1 of this topic Onshore Clients are all those project owners or project managers who are working in developed countries handling projects done by thee Offshore (remote) developers, who are mostly operating from developing countries.

What I will try to address here is what you should keep in mind while dealing with developers from that part of world. What all criteria’s you should have in mind while awarding a contract to someone remotely operating in developing countries.

For Onshore Clients:

  • As a client you have to set clear expectations and not deviate too much from those commitments.
  • If you are deviating from your previous agreed deliverable (for any reason) it’s always best to provision for that in your budget and timelines. Because developer most of the time may not be saying no to you, out of fear of loosing you as a client or (some other personal reasons), and in order to complete your extra requirements he will compromise on quality and may not feel the same level of commitments to your project as he felt when he started on it.
  • Sometimes when you communicate with developers offshore on messenger’s or Skype audio/video, it’s best to record the commitments and communicate that in email as well, as sometimes what you have communicated verbally may not be translated same in developer’s language (especially if English is not his first language).
  • If you are getting your project done in developing countries because of cost advantages please keep in mind the work culture/problems those countries have as a part of their infrastructure (electricity, internet, turnaround time in case of natural calamities like flood or sever storm causing electricity breakdown).
  • Always be proactive with your communication through email and set clear dates for deliverable, as sometimes if you just say do this task and you expect to hear result in next call but the developer assumes that they haven’t been given any timeline so they will wait until you ask him for deliverable.
  • Try to get a fair idea of how much work your project needs in terms of hours/weeks/months, It’s best if someone locally can give you good time estimate on time/efforts, price can be varied based upon where you are getting it done, but never expect same project to be done on same price in all the countries/or from all consultant.
  • When you post your projects on websites where you ask developers to bid, most of the time in order to outbid other bidders developers make bids too attractive to deliver/believe (I remember one incident where I saw bidding’s for a project, which was suppose to be a replica of a project, which I had managed in one of my company in the past and we had developed that project for our client in 5 months with 4-6 developers + 2 testers working over time and 2-3 analyst/tester from client side,  I saw bids by developers as low as $500 with time of 1 month) I am still not sure if anyone can make that project in 1 month even if you put 10 developers, even if you had to rip of the existing project from the internet.
  • Just beware of these hard to believe commitments.

In the end it’s all about how well you are communicating with the person/team on the other side, and how well you understand his/her work environment limitations and work culture and how quickly or best you adapt to get best out of your offshore team. Communication is the key, as even if you have the best developers in your development team and if the things are not communicated properly to them they wont be able to deliver as per your expectations.

 

Offshore developers and Onshore Clients – Part 1

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.

 

Moving on to FEE from Flash! a new Beginning…

It’s time to make a fresh beginning. Not that it’s starting today this day in 2016 but It started with my moving away from Flash Development to Front End Development in HTML5/CSS3/JavaScript.

12 Years of great work in various technologies related to Flash domain – Flash Media Server development/Wowza/Red5, creating some RIA applications using Flash Remoting with ASP.net, great eLearning projects, using Flash and then Flex to create a virtual conferencing application with whiteboard/audio/video stuff it was some fun for sure, (special thanks to authorGEN / WiZiQ where I did all that great work in flash) created some AIR apps as well. I was always encouraged to write my experiences in dealing with daily problems, as a result of which I started writing this blog and some wonderful problems and their solution.
Made some great online friends from all part of world through flash forums and blogs and mailing lists.

And with all that background I came to Canada in 2010 to work on games development in Flash in one small company. It was great learning curve. Great colleagues and it lasted whole 3years before the project I was working on closed down and I was looking for a job and there was not much in market to look around in Flash domain until you were serious Flash gamer with lot’s of C/C++ or Java skills.

It was lucky for me that I started my career in HTML/CSS/JavaScript back in 2000 and I was keeping up with technology on and off and did some pretty good applications in JavaScript in eLearning domain at the time when JavaScript was not as cool is it sounds now 🙂 and browsers were not as robust as they are now, with Chrome was not even born at that time. I was learning about HTML5, CSS3 responsive web designing stuff, Sass, using Cordova to create android apps and new developments in JavaScript. So was able to get another job fairly quickly in another company in FEE domain and that’s how I moved away from Flash and now working mainly in FEE space.

Recently I have been involved with HTML5, JavaScript, CSS3, Sass, Node, npm and lot of other Front End technologies. There are so many that you can’t keep up to speed with them. You start with one and within a month you realize that there something new technology in the market more trendy and claimed to be the best by many experts in the domain.

I read a little bit about all these MVVM or MV* frameworks like Backbone, AngularJS, EmberJs and found that all these frameworks gives you a functionality to create Single Page Application and it struck me that’s what I was doing in Flex 7-8yrs back :). With some added advantages (flash/flex developer knows) which are not there in these framework yet.

But these frameworks have an edge over flash for sure as Flash is no more relevant for browsers, mobiles never had flash player for browsers so you if you want to make same web app you have to go the app route making AIR app for phones and browser web site for Desktops. So it no more hold the advantage of develop once and deploy everywhere and moreover most of these JavaScript SPA frameworks have the advantage of community which once Flash used to had. With Angular2 & React we have seen a lot improved approach to SPA architecture with a focus to mobile app development using the same code base.

With HTML5 and responsive web designing concepts you can make same website viewable across the platform. (although it has some inherent issues where responsive websites can be pretty heavy for mobile browsers sometime if not designed properly)

Well I am hoping to share my experience in this new domain more frequently from now on…