Seven offshore software development best practices for successful projects
Lessons learned to develop offshore software development best practices
Offshore software development is a product of globalization. It has been a tremendous boon for those who have learned how to make it work to their advantage. For those who have resisted it, it has been a tremendous burden. Offshore software development, like globalization will change over time but regardless of how it evolves, it is here to stay.
While many would argue that it has primarily been the corporations that have benefitted from offshore software development, entrepreneurs and the end-user have also benefitted greatly. Many self-funded entrepreneurs have built software and websites using offshore programmers that would have otherwise not been able to afford it. As a result, many customers have used software and websites that would not be online had overseas programmers not been involved in the development of the project.
Outsourcing to this day is controversial subject. However, it does work as evidenced by the large number of multinational companies who engage in it. This includes such companies as Intel, Google, Facebook, IBM, GE, and many more.
Outsourcing works for those who have defined processes for getting the work done. We have been practicing outsourcing for almost fifteen years and have learned a great deal.
Here are seven best practices regarding offshore software development.
1. The right project management methodology
Effective project management is critical to the overall success of a software development project and client relationship. It has been our experience that project management is the single largest determinant of whether a project is completed on time, on budget, or even completed at all.
The software development methodology that we have found works best for us and most importantly, our clients is one based upon effective documentation and frequent communication. While it takes more time to plan the more documentation you have, the results are often better in that the client ends up with a project that is closer to their expectations.
Good documentation serves a second important purpose in that it confirms mutual understanding of expectations. When both the development team and client agree to the final documentation, there is a mutually agreed upon reference point for the project.
The documentation process should not be the sole responsibility of the client. Oftentimes, we will start the process of preparing requirements based upon conversations with the client. We may assume responsibility for the entire documentation process or it will be done in collaboration with the client.
2. The right communication methodology
A large part of an effective project management process is communication. After over fifteen years in the business, we have found that more is better in that more frequent communication between the development team and client often yields the best results.
Daily updates are ideal for both large and small projects. However, sometimes, we will give an update every two days but we won’t go longer than three days without an update. This is important because updates can quickly identify differences in expectations between the development team and client before they become big problems.
In addition to very frequent communication, we use dedicated project managers whose sole responsibility is to keep the project on track in accordance with the client’s expectations. In other words, they act as an advocate on the client’s behalf.
We have our own project management portal that was developed over the years that is optimized for how we run our projects. However, we have experience working with a wide range of portals should the client specifically request it.
Clients from around the World have differing expectations in terms of their projects. For that reason, we find it important to train project managers to communicate in a style that American’s are used to. This is one of a ‘can-do’ attitude and doing whatever is needed to get the job done.
3. The right software development methodology
There are several software development methodologies such as agile, lean development, extreme programming and many more from which to choose from. The right development methodology for your project depends on several factors including:
- Feedback on the work done
- The completed product
- Frequency of change requests or enhancements
- Cost of delay
- Experience on projects
For simple projects with clear requirements and solution, minimal feedback, and no changes, a waterfall approach may be the best methodology. For larger, more complex projects, an agile methodology may yield better results.
For best results, match your project characteristics with the software development methodology that is most closely aligned with your project objectives. I will expand upon this in a future blog post.
4. The right-sized organization
We have found that clients get the best results when they select an offshore service provider that matches the size of their project. If you have a medium-sized project, look for a medium-sized service provider. If your project is smaller, find a smaller firm or freelancer and so on.
Giving a large project to a small service provider can result in giving your software developer more than they can handle in terms of skills or resources. We have seen bad project results where expectations of the offshore service provider where expectations exceeded skills, resulting in a failed project and relationship.
In contrast, giving a small project to a large offshore service provider may result in your project not being of sufficient importance to your vendor that they don’t put forth their best efforts in completing your project. I am not saying that this always happens. I am just saying that I have seen it happen more on more than a few occasions.
5. Source-code ownership agreement
Over the years, we have worked with many clients who have been surprised to learn that they did not own for code that they paid for. There was either no mention of ownership in the standard agreement or something else was done to keep ownership of the code from the client.
We specifically state in our client contracts that the client has full ownership and rights to the software provided that we are paid for in full as specified. Once a project is accepted as ‘complete’ and payment is made in full, we rescind any claim to the software.
6. A non-disclosure agreement
A non-disclosure agreement (NDA) is a contract through which the parties agree to not disclose information covered by the agreement. It creates a confidential relationship between the parties to protect any type of confidential and proprietary information or trade sections. As such, an NDA protects non-public business information.
NDAs are really only valid if one of the parties has recourse in the event that the terms of the contract have been violated. We take privacy very seriously. As a result, we are incorporated in the United States where can give our US-based clients the peace-of-mind that they have legal recourse.
7. A relationship-based approach
Some offshore software development companies tend to take a transactional view of their clients. In other words, they are focused on getting the most of what they can on the project they are working on at the current time. We find that these tend to be the newer and less experienced companies.
In contrast, we learned early on that by taking a long-term, relationship- based approach, everyone ends up benefitting more than with a project-based approach. The client ends up with an offshore service provide that is reliable, predictable and trust-worthy while we, the developer end up with a satisfied client, future work and possibly referrals.
Software development is an inherently complex process with many different variables affecting the outcome of your project. We have focused over the years on developing software development processes and best practices that yield predictable, repetitive, and reliable results. The practices outlined in this document have been key to delivering quality software projects that exceed the client’s expectations.
I hope that this has been helpful to you. Please let us know if you have a project you need help with as we are here to help.
Stay up to date
Sign up to receive our posts via email!