Best Practices of Offshore Software Development

Offshore project development is quite different from executing projects in a local market for a customer who can come face to face for meetings or calls.

It is very important to identify the challenges and risks of an offshore web development company and mitigate them properly. Few of those are listed below along with some measures:

  • Culture and language barrier ( even though this has decreased significantly with globalization by brands , TV , Movies in a country like India)
  • Communication gap   – Ensure team members have Skype, Gtalk and are in constant touch with the clients in the overlapping hours.
  • Different Time Zones – Ensure tools like www.timeanddate.com Meeting planner are communicated to clients.
  • Consolidating output from multiple locations – Ensure a smooth project management tool like Basecamp is set up for every project
  • Lack of control over the client to be responsive on the project – Set expectations at the time of project kick start or monthly client meetings on the project.

Offshore Software DevelopmentNeed for a process to work

Software development has been around for many years, and has evolved significantly. To keep pace with advancement of software development languages and more complex business requirement and expectations, we have to keep software development methodologies under constant scrutiny and research. Agile methodology has striven to identify effective and efficient processes for delivering projects successfully within specified and tolerable resource limits.

The principles followed by the agile manifesto are:

  • Create a committee/group of motivated people who give the main decision. This committee should have members from both clients and development Company.
  • Give the motivated individuals the atmosphere and support they require, and have a belief on them to get the job done.
  • Most significant is to please the client through early and constant delivery of valuable software.
  • It is good to accept changing requirements, even late in development.
  • By giving preference to the shorter timescale and keeping the client in the loop, deliver working software phases frequently, from a couple of weeks to a couple of months.
  • Face-to-face conversation is the most competent and effective way of transmitting information to and within a development team.
  • Working software is the chief measure of improvement and assessment of the client.
  • The sponsors, developers, and users should be able to uphold a steady pace indefinitely.
  • All the stakeholders (client and developers) must work mutually on daily basis till the completion of the project.
  • A successful change management process can be maintained through constant attention to technical excellence and high-quality design.
  • Showing growth is vital in order to keep the customer satisfied.
  • The most excellent architectures, requirements, and designs come out from self-organizing teams.

Considering the above principles and ideology there are some best practices to make the offshore software development successful.

Best Practices are:

  • Inspections
  • Component Reusability
  • Change Control Management
  • Communication Plan

Inspections

Inspections are detailed technical peer reviews of software designs or implementations. One should conduct an assessment and reviews at every stage of the development this helps in detecting the defects and rectifying the work products. Inspections help us control the cost and schedule of the project. Another aspect of inspections is of new requirements; we inspect every change that is made. We also re-inspect the work products when there is a substantial change activity or when inspection and test results indicate unusual problems.

Example for Code Inspection Objectives

  • Find design errors in the product.
  • Categorize the cases in which the code does not implement the design as intended.
  • Identify any improper use of interfaces.
  • Identify the reusability components.
  • Inspect for adherence to appropriate style guidelines and standards or constraints such as naming, commenting, and performance limitations.
  • Verify that previously identified issues have been resolved.

Component Reusability

Reusability is an important characteristic of a high-quality software component. Component Reusability is about building a library of frequently used components, thus allowing new programs to be assembled quickly from existing components. Component Reusability has produced greater schedule and effort savings than any other best practice. This concept applies not only to the code, but also to the design, data, documentation, test materials, specifications, and plan. It is important to create a repository to store the components that are identified as commonly used components. An effective way is to form a Reuse Group, which has members from the design as well as the development team. This is a part of our long-term strategy.

Change Control Management

Change Control is an integral part of agile development. This is a formal process used to ensure that changes to a product or system are introduced in a controlled and coordinated manner. It reduces the possibility that unnecessary changes will be introduced to a system without forethought, introducing faults into the system or undoing changes made by other users of the software. Another aspect to it is client satisfaction by accommodating the change in requirements through an effective change management process so that is doesn’t hamper the project yet maintains transparency. A successful way is to set up a Change Control Board. Usually, this board comprises members of development, test and design teams but sometimes also include members of customer team. The aim of this control board is to make sure that all related parties well consider each baseline change and each change is approved before execution. The task of the Change Control Board is the management of all major change requests, its approval, disapproval, or deferring them for more information. By increasing the visibility of feature creep and dropping the number of uncontrolled changes to the product, the board creates its rapid-development benefit.

Communication Plan

Strong communication is crucial for the success of offshore projects, and therefore setting up a communication plan is very important. This should be set keeping in mind the multiple time zones and language concern. Certainly many companies would prefer to do business in their own language thus it is important for the software development team to have overlapped working hours. The communication plan serves as a guide to the communication and sponsorship efforts throughout the duration of the project. It is a living and working document and is updated periodically as audience needs change. It explains how to convey the right message, from the right communicator, to the right audience, through the right channel, at the right time. It addresses the six basic elements of communications: communicator, message, communication channel, feedback mechanism, receiver/audience, and time frame.

 

~~~ by NEW MEDIA GURU (NMG) Project Management team

Back