Ensuring Code Quality and Performance in Offshore Projects
Technology landscape is constantly evolving. Companies that are able to embrace advances in data, machine learning, analytics, cloud, mobility, IoT and other digital technologies are able to successfully go to market faster and outperform competitors. While some companies are able to hire experts in-house to build disruptive products, some others have to rely on an offshore development partner.
Some of the common tasks or challenges of product companies include:
- GTM fast with MVP approach
- Product is never complete
- In-premise is dead, Cloud is the new normal
- User-experience is critical
- Data-driven decisions
- Scale with continuously changing technology landscape
Choosing a right fit technology partner could be a daunting task. There are multiple factors that need to be taken into the consideration before zeroing in on a technology player including concerns related to security, quality of product and privacy of information. Countries like India, Russia, China, Malaysia, and the Philippines are most preferred software outsourcing destinations in the world. In fact, India has topped A.T. Kearney’s 2017 Global Services Location Index (GSLI) for the eighth consecutive year since its inception in 2004.
There are several benefits that India brings on to the table such as:
- Access to a large pool of qualified resources
- Cost arbitrage compared to other western countries
- Wide-range of flexible engagement models
How to ensure code quality in offshore projects?
1. Vendor Evaluation Phase
A.) Portfolio analysis: Analyzing the existing portfolio of the potential offshore partner plays a crucial role in determining the long-term business association. You can evaluate various products that the technology partner has built and digital technologies that they have leveraged for building these products. While analyzing the portfolio, also take into account detailed case studies and type of engagement, testimonials from clients and connect with the client if possible to get insights in real-time.
B.) Testing Practices: Testing is critical to improve time to market and provide a break-free experience. A good software development partner will provide constant notifications about the progress of development and bugs fixed during the development cycle. They should also provide an access to bug tracking reports and analytics so that you can raise your tickets simultaneously.
You can also get information on the coding conventions, certifications and practices during the evaluation phase. Some of the additional questions to ask include (a.) How are the test cases prepared? (b.) What is the ideal test coverage? (c.) What is the defect acceptance and rejection rate? (d.) What is the test efficiency? (e.) When are the test reports shared with the customer? (f.) How are the bugs tracked and progress Monitored?
If the partner is competent at manual testing, check the various possible testing methods that they are using including:
- Unit Testing
- Integration Testing
- Functional Testing
- System Testing
- Stress Testing
- Performance Testing
- Usability Testing
- Acceptance Testing
- Regression Testing
- White Box testing
- Black Box testing
- Sanity Testing
- Negative Testing
- Smoke Testing
- UI Testing
- Compatibility testing
- Cross Browser testing
- Localization testing
A good offshore partner will have a testing lab with multiple devices so that the product is tested across devices. You can also check with the partner whether they perform automation testing and if so what are the various automation testing tools that they use for testing such as Appium, Selenium, SeeTest and Protractor, among others. You also need to check on the team competencies and regular frequency of testing mapped to the releases.
C.) Technical Capability: While analyzing the nature and complexity of projects, it is equally important to identify the tech capabilities of an offshore partner. Assess the partner’s knowledge about various frontend and backend framework. Identify if they are able to leverage CI and CD for faster releases. Lean processes and Agile mindset are important for a project’s success in an offshore environment. Agile practices such as daily standups, a scrum of a scrum, sprint demos and retrospectives can be extremely helpful when the team is geographically dispersed.
2. Development Phase
A.) Check on the attributes to determine code quality
- Readability: High code quality can be achieved only when the code is self-explanatory. Testing team needs to ensure that the code is written keeping in mind best practices. They need to check whether a) Code is formatted properly b) Code must be easy to read without unnecessary repetition so that it is easy to maintain and optimize the code at any given time.
- Maintenance of the code: Most product development projects are iterative in nature and if there is a remote or offshore team working on the project, it is even more difficult to make these iterations smooth and swift. It is imperative that the context of code is easy to understand. It is easy to maintain such code and furthermore it helps to keep up the quality.
- Documented: Although a good code could be self-explanatory, it is highly recommended to add comments so as to have a better understanding of the roles and functions. Documenting the code is a general best practice so that even during CI and CD, only the right artifacts are deployed to production and code is quickly put to test.
- Regular testing: In an ideal environment, the development team should test the code once it is written. TestOps is quickly gaining traction so that there are regular testing and early detection of bugs at the development level.
B.) Communication is the key to successful offshore development.
Communication and transparency are the two core pillars of every offshore project. Set up a communication plan to discuss about the overall product development and quality. Regular feedback and two-way communication will help to achieve timely delivery. Audio and video conferencing tools such as Google Hangouts, Fleep, and Skype will be of a great help. Apart from this having a daily stand up with offshore development should become a ritual in order to understand what all needs to be achieved and what are the pain areas which are making it difficult to achieve the goal. Agile best practices are the best to overcome any communication challenges which are making the development process inefficient and slow.
C.) Expectation Setting for Code Quality:
Set clear expectations with regard to the product quality because the end output will be primarily dependent on the initial expectations during sprint planning. A clear set of expectation ensures high productivity of the project.
3. Post-release and go live testing
Most new-age products are built in and for the cloud. While testing plays a vital role during the product development lifecycle, it also plays a crucial role even after the product is live. During every new feature release, the product should undergo rigorous testing. Post go-live release testing and activities generally include:
- Release verification
- Reporting of verification results
- Reporting of issues found on production
- Data clean up
- Post-release monitoring (if applicable)
Offshore partners that provide managed services take care of regular product maintenance even after the product goes live. Apart from checking the code quality of new feature releases, you could also get extended help in terms of performance monitoring. Applications have evolved over a period of time, from a stand-alone application to a cloud-based elastic application. Tools such as New Relic, Stackify Retrace, Miniprofiler and Glimpse can be extremely helpful for regular monitoring.
Small size startups and Fortune 500 enterprises both are equally investing efforts in developing technology led products. With enormous competition and the pressure to cut through competition with a faster time to market, companies are resorting to offshore development. While faster time to market and shorter development cycles are a mandate, it should not deliver a compromised end-user experience. Maintaining quality in development is quintessential for a great experience. A code which is regularly put to test helps to detect bugs early in the life cycle thereby ensuring improved user experience after the release. However, ensure that you have detailed discussion with your offshore partner and evaluate them fully before the kick off so that the project is delivered on time and as per the expectations.