
The issues with outsourcing for small companies were outlined in Part I. Now, we shall explore the tactics and strategies to solve each of these. Not all is doom and gloom.
The Issues for the Client
Let’s sort out the client’s issues:
1. Process
Process will be a derivative. More on process in Part III.
2. Structure
Bare minimum structure. There is a handler on the client’s side. One to many relationship. Means, for each outsourced developer, there has to be one handler. And one handler can handle / manage multiple outsourced developers. One developer should have one and only one handler on the client’s side - this is to avoid confusion.
The handler is responsible for the following:
(a) Checking on the progress of the developer.
(b) Taking delivery of the interim releases and the final release from the developer.
(c) Answering questions that arise from the developer side in a timely manner. No delay tactics.
(d) Fundamentally, taking ownership of the developer’s work from the client side.
3. Cost
Since maintaining redundancy is a luxury for the client, the responsibility falls on the vendor. More on this later from the vendor’s perspective.
4. Cohesion
The handler in the client’s side is responsible for maintaining cohesion in the team. The handler should make the developer transparent to the team. The handler is the proxy for the developer.
Again, the load on the handler can be significantly reduced by a local presence from the vendor’s side. More on this in the vendor section. However, in the absence of such a local presence, the handler substitutes for the developer.
5. People Management
The client should not attempt at managing the remote resource. All the client should worry about is the progress of work and the final delivery.
6. Requirements Management
Software requirements change - and they change a lot. This is the truth. Any attempt to seal requirements in a bottle has failed. So, what to do?
My suggestion:
Step 1 > The client communicates the requirements to the vendor by email or phone or both. If there is no formal specification, do not despair. In this scheme, the vendor will prepare the specs, if not there. Who sends the requirements on the client side? The handler in consultation with business analysts or architects. Who receives the information on the vendor side? The project manager. Who is the project manager? See the vendor section.
Step 2> Let the vendor come up with their interpretation. The vendor writes it in a document - does not have to be IEEE standard formal document. Only the core needs to be there.
Step 3> The client the vendor’s version - making sure they understand the basic requirements. It is impossible to understand 100% of the requirements. So, the client needs to be sure that the vendor is on the same wavelength.
Step 4> Once the client is satisfied, let the vendor start work on the project.
Step 5> The client takes interim builds and checks on the progress. The client should not wait to be surprised at the end.
Step 6> Requirements may and will change. The client should communicate the change to the vendor, and let the vendor express the change in their own language. The client should check the vendor’s interpretation and be satisfied. The client should ask for the impact on the delivery time line. Finally, the client should discuss the time line, confirm acceptance and get going with the project.
7. Out of Sight, Out of Mind
The client should have regular updates from the remote developer - get him / her to send weekly progress reports. Organize a weekly meeting, even if for a few minutes. Let the meeting be on an instant messenger or on phone - both are fine. The client should always know what the developer is doing. It is important to know where the developer is at the moment, but it is more important to know in which direction the work is moving. This weekly meetings should be organized by the handler at the client’s side. The weekly reports should also be checked by the handler.
8. Communication
The handler should communicate directly with the remote developer. No passing the parcel game. If there are issues that cannot be resolved, the handler should escalate these to the project manager on the vendor side. All direct communication with the developer should be cc to the vendor project manager. Who is the project manager on the vendor side? Please read the vendor section.
9. Post Delivery Support
Undoubtedly, the client will need post delivery support. So, instead of being coy about it, the client should put it in the equation at the very beginning and continue to maintain the outsourced resource beyond the project delivery. Until, the client makes its own official release. And may be, even after that, depending on what support is required.
10. Quality
The client should get the delivered work tested in its own testing environment. If the client has a test plan for the work that the vendor is doing, it should send the test plan to the vendor. The vendor will check their work and will significantly reduce the client’s testing load.
The client should never do adhoc testing. If the client does not have the time or the inclination to prepare a test plan, it should get the vendor to do it - but do not test without a proper test plan.
11. Dispute Resolution
This unfortunate situation should not arise if the client has taken interim builds from the vendor. No nasty surprises there. However, if the client is still unsatisfied, it should communicate the distress to the vendor. No one wants to lose a client - the vendor will try to accommodate the client.
The Issues for the Vendor
Now, let’s solve the issues for the vendor:
1. Process
The tactics we determine in this part will dictate the process in Part III.
2. Structure
The vendor should maintain its own structure. The client’s command and control is superimposed on this. But from the vendor’s view, the normal reporting and accountability is maintained. Access is granted to the client via the handler in the client’s side. Little extra work for the developer, but worth it.
The vendor should have a project manager internally. Every client project should be controlled by a project manager - one and only one project manager. The project manager is responsible for the following:
(a) Initial requirements gathering and signing off with the client.
(b) Ongoing requirements change management.
(c) Resolving client handler <-> developer issues that are escalated.
(d) Keeping an eye on the overall progress of the project.
(e) Periodic (weekly) checks with the developer regarding the project status.
(f) Any other outstanding issues related to the project.
If the vendor can afford, it should also consider maintaining a local presence at the client office. That person can solve issues on the spot. This is strongly suggested.
3. Cost
Attrition is a fact. So, redundant resources need to be maintained. But small client companies cannot maintain resources at per project basis. What to do?
My suggestion is - the client keeps redundant resources for its overall resource strength. Not, per project basis. So, if the client has a developer workforce of say 20, he can maintain 20% redundancy at all times with 4 developers on standby. The redundant resources should be very familiar with in house technologies and have workable knowledge of client projects in execution. The fill-in and ramp up can be very fast.
4. People Management
The vendor’s reporting structure remains as-it-is. Additional load for the developer is reporting periodically (preferably weekly) to the client handler. This overhead is bare minimum and a must.
In addition, the developer reports to the internal project manager (who is assigned to the project).
5. Requirements Management
Requirements and change management are controlled by the internal project manager.
6. Communication
The developer communicates directly with the handler on the client side. Any issues that are not resolved at this level are escalated to the project manager.
If the vendor has a local presence at the client office, on the spot trouble shooting can be done.
7. Post Delivery Support
Post delivery support should be considered as a part of the overall project. The question of separate billing should not arise.
However, if the client wishes to scale down the number of developers after the delivery, then a separate maintenance contract needs to be executed. The formula remains the same - one or more developers are assigned and managed in the way we have seen earlier.
8. Dispute Resolution
Interim releases, checkpoints and weekly project status meetings are the key to avoid disputes. In the unlikely event that a dispute does arise, the vendor should take steps, however unpalatable, to ensure that the client is truly satisfied.
In Part III we shall view the whole process in task form.
Recent Comments