Working with offshore companies, especially those in Vietnam, can bring many benefits to businesses such as cost savings and access to high-quality labor resources. However, alongside these benefits, collaborating with offshore companies also carries many risks if not done carefully and attentively.
This article will share 30 lessons learned from common failures when working with offshore companies in Vietnam. These lessons hope to help businesses avoid similar mistakes and enhance the effectiveness of cooperation with offshore partners.
Lesson 1: Incomplete Offshore Projects Due to Lack of Documentation and Spec.
Issue:
Lack of Documentation and Spec: The business lacks detailed documentation and specifications describing functional requirements, system design, and project implementation processes.
Unclear Deliverable Description: Deliverables – the output of each development phase – are not clearly described, leading to a lack of information about what has been completed and what remains incomplete.
Solution:
- Contact Previous Offshore Company: Exchange information with the previous offshore company to gather information about the developed system.
- Write Spec: Based on the collected information, the business writes detailed specifications for the remaining part of the project.
- Continue Development: Develop software based on the completed Spec.
Lesson 2: Delivery Without Testing – Rejecting Bug Fixes After Acceptance Testing
Issue:
Incomplete Test Cases: Focusing only on happy path scenarios leads to software being prone to errors in abnormal usage cases.
Undefined OS Version Support: Failure to clearly define the operating system (OS) versions to be supported results in unstable software on some devices.
Solution:
- Implement Comprehensive Test Cases: Include all necessary test cases, including complex and abnormal scenarios, to ensure software quality.
- Clearly Define Supported OS Versions: Identify common OS versions and test software on devices using these versions.
- Choose Suitable Vendors: Search for vendors with reasonable costs, high technical expertise, and effective communication skills.
- Accept Not Supporting Some Old OS: In cases where supporting all OS versions is not feasible, notify customers and provide appropriate solutions.
Lesson 3: Security Information Leakage Issues
Issue:
The company faced a serious incident when AWS Mail Server IDs and passwords were leaked, posing a high risk to the company’s network security and data.
Solution:
- Change IDs and passwords.
- Investigate and Patch Security Vulnerabilities such as Github, Production, Staging, Dev Environments, and AWS Settings.
Lesson 4: Refusal to Hand Over Input Data
Issue:
The company encountered a major problem when the offshore company refused to hand over the input data that the customer had entered into the system in preparation for release. The reason given was that the offshore company requested additional payment for fixing bugs they had addressed. However, due to the contract signed between the offshore company and the server provider, the customer could not directly intervene in this matter.
Solution:
Persist in Negotiation: The company has continuously negotiated with the offshore company to explain their responsibility in handing over data and request them to comply with the contract.
Lesson 5: Offshore Company Fails to Complete Project After 3 Months Delay
Issue:
The offshore company fails to recognize the importance of meeting deadlines, resulting in delays in implementing project tasks.
Solution:
- Project Assessment: Evaluate the current project status in detail, identify completed tasks, tasks in progress, and tasks delayed.
- Seek Alternative Solutions: Actively choose a suitable offshore company.
- Effective Communication: Maintain effective communication with the offshore company, hold weekly progress meetings to discuss schedules and any arising issues.
Lesson 6: Increased Costs Due to Choosing the Wrong Technology
Issue:
The company faces trouble when the offshore company chooses to use Vue.js for a back-office system project, leading to increased costs whenever modifications or new features are needed due to developers’ lack of familiarity with the technology.
Solution:
Choose technology that aligns with project requirements and developers’ capabilities. Advise the client on suitable technology for the system they want to develop.
Lesson 7: Different Definitions of “Completion Date”
Issue:
The client understands “completion” as the date of service release, while the offshore company interprets it as the date of completing development before testing. This difference leads to project schedule delays because the Japanese client does not realize the need for testing after development.
Solution:
- Provide detailed explanations to the Japanese client about the software development process in Vietnam, including development, testing, and release stages.
- Agree with the Japanese client on a definition of “completion” for the project, ensuring both parties understand and agree with this definition.
Lesson 8: Misrepresentation of Capability Profiles
Issue:
The offshore company exaggerates its capabilities, leading to its inability to complete the project according to requirements. In this case, the offshore company secured a contract to develop video streaming features for the company’s system but lacked the actual capability to do so.
Solution:
- Choose a different offshore company: The company sought and signed a contract with another offshore company with the actual capability to develop video streaming features.
- For the offshore company: Do not exaggerate one’s capabilities and refrain from boasting about what one cannot do.
Lesson 9: Incomplete Display Confirmation in Browser
Issue:
The company encounters trouble when the website interface does not display fully on Safari for mobile. The cause is the offshore company’s failure to thoroughly check display on this browser, and the client’s lack of experience leads to overlooking this issue.
Solution:
Clearly define the Testing Scope for the client. Actively advise clients who are not knowledgeable about this to test on which browsers.
Lesson 10: Difficulty in Handover Due to Lack of Documentation
Issue:
The offshore company does not create documentation because the client does not bind document creation in the contract.
Solution:
- Find another offshore company: Seek another offshore company with the capability and experience to support the development of the next system and ensure the provision of complete documentation to the client.
- Clarify the scope of documentation: Clarify with the client the scope of documentation that the company will provide, including types of documents, content, and completion time.
Lesson 11: Incorrect Feature Implementation
Issue:
Features are developed not according to the client’s requirements. Mistakes include incorrect screen flows, text sizes, data display positions, etc. The cause is deficiencies in the testing process, incomplete test cases leading to the failure to detect errors.
Solution:
- Create comprehensive test cases: Comprehensive test cases need to be created for all system functions, including even the smallest and most detailed functions.
- Hold a demo meeting with the client: Organize demo meetings with clients to present the product and gather their feedback.
Lesson 12: System-Generated Emails Classified as Spam
Issue:
Clients face trouble as system-generated emails are automatically classified as spam by recipients. The cause is deficiencies in the development process; the offshore company only focuses on successfully sending emails without optimizing to avoid spam classification.
Solution:
- Add sender authentication for emails.
- For email sending features, attention should be given to the risk of being classified as spam.
Lesson 13: Consequences of Choosing the Cheapest Offshore Company for Project Development
Issue:
Failure to properly define requirements and deliverables commitments lead to the offshore company not completing the product as per requirements.
Solution:
- Clients need to clearly define project requirements, including functions, features, performance, and quality assessment criteria.
- Accept an incomplete product to hand over to another offshore company for further development.
Lesson 14: Cost Incurred for Ambiguous Features
Issue:
Costs beyond the budget for features not clearly defined in the initial requirements. The cause is a lack of detail in determining requirements before development, leading to additional costs for requested features that were not initially within the project scope.
Solution:
Determine detailed requirements before development: Detailed project requirements need to be established, including design, server, test cases, and quality assessment criteria.
At the same time, be prepared to accept the removal of some features.
Lesson 15: iPhone Application Not Supported on iPad
Issue:
The offshore company lacks experience in developing apps for iPad, resulting in the iPhone app being unable to operate on iPad devices and delaying the app release.
Solution:
Adjust the iPhone application to work on iPad before release.
Lesson 16: Labo Approach Failure Due to Misunderstanding Japanese
Issue:
Difficulty communicating with Japanese clients in Labo projects due to language barriers. Misunderstanding requirements leads to repeated work, prolonging the project timeline and increasing project costs.
Solution:
- Utilize Japanese individuals as BrSE: Utilize Japanese individuals as Bridge System Engineers to ensure effective communication with Japanese clients and a clear understanding of their requirements.
- Collaborate with offshore companies experienced in working with Japanese clients to support communication and project management.
Lesson 17: Ineffectiveness of Labo-type Projects
Issue:
Failure in Labo-type projects with Japanese clients. Due to the lack of test cases from the client’s side, the project development encounters many errors and bugs, affecting the progress and quality of the project.
Solution:
- Consider terminating the contract and switching to another company if after 4/6 months only 1/3 of the features have been completed.
- Thoroughly prepare documentation, scheduling, and test cases: Comprehensive documentation and test cases for the project should be prepared to ensure the receiving company understands the requirements and efficiently carries out project development.
Lesson 18: Unsuccessful Bug Fixing
Issue:
The company faces trouble as bug fixing in Labo projects is unsuccessful. The causes include:
– A high number of remaining bugs despite reporting completion of bug fixing, indicating ineffective testing and bug fixing processes.
– Incomplete test cases resulting in missed bugs during testing.
– Inadequate skills of test case creators leading to inefficient test case creation and failure to detect hidden bugs.
Solution:
- Replace the responsible person from the client’s side: As the person responsible from the client’s side lacks experience in Labo with Offshore, they should be replaced by a Japanese BrSE with experience and understanding of Labo.
- Test case creation by the Japanese side: The Japanese side will be responsible for creating test cases to ensure the quality of test cases and the detection of hidden bugs.
- Implementation by the Vietnamese side: The Vietnamese side will be responsible for bug fixing based on test cases provided by the Japanese side.
Lesson 19: Trouble Due to Unauthorized Image Usage
Issue:
The company encounters trouble due to using images without copyrights in the project. The cause is a lack of checking for image copyrights, resulting in the use of copyrighted images, violating copyright laws.
Solution:
- Purchase images from websites selling copyrighted images: There are many reputable websites selling copyrighted images such as Shutterstock, iStock, Adobe Stock, etc.
- Use free images: Some websites provide free images like Pixabay, Pexels, Unsplash, etc.
- Take pictures yourself: If possible, the company should take pictures to ensure copyright compliance.
Lesson 20: Mismatched Dev Skills with Contract Requirements
Issue:
The skills of the developer do not match the job requirements stated in the contract. Specifically, the developer was hired to work on backend tasks but used frontend skills to complete the job.
Solution:
- Thoroughly review CVs: It’s crucial to carefully review the CVs of candidates to ensure they have the necessary experience and skills for the job.
- Conduct competency assessment interviews: Conduct structured interviews with candidates to assess their technical competence and soft skills.
Lesson 21: Failure Due to Lack of BrSE
Issue:
The company failed due to wanting to save costs and thus skipped hiring a BrSE, instead using Google Translate to assist in English communication.
Solution:
Utilize BrSE as they will be responsible for communicating with clients to understand their requirements. BrSE will also clarify client requirements for developers clearly and accurately.
Lesson 22: Accidentally Deleting Data on Staging Environment
Issue:
The client inputted data into the Staging environment to prepare for the production migration. However, the Vietnamese side misunderstood and thought it was test data, leading to its deletion.
Solution:
- Re-enter the data: As there was no backup of the data, the company had to contact the client to retrieve the data and re-enter it into the Staging environment.
- Review processes: Backup data before performing any operations.
Lesson 23: Long-term Labo Contract Resulting in Work Gaps
Issue:
Signing a Labo contract with the client for an extended period resulted in work gaps for employees. Specifically, the contract was signed for 6 months, but the workload was concentrated in the first 4 months, leaving employees with no work for the remaining 2 months.
Solution:
Assign additional projects: When Labo workload decreases, the company assigned additional projects to Labo employees to ensure they have work and maximize their capabilities.
Lesson 24: Designer Misunderstands Japanese Client
Issue:
Difficulty collaborating with designers as they do not fully understand the ideas of Japanese clients. The cultural and aesthetic differences between the two parties, combined with working online, make communication and idea exchange more challenging.
Solution:
Use Figma for collaboration: Figma is an online design tool that allows designers and clients to view and edit designs in real-time. This allows designers to easily grasp the client’s ideas, and clients can directly provide feedback on the design.
Lesson 25: Designer Skills Do Not Meet Project Requirements
Issue:
Difficulty in completing the demo project due to the designer’s skills not meeting the requirements. Specifically, the project needs to focus on designing the core features of the product, but the designer lacks experience in this area, resulting in project delays and failure to achieve goals.
Solution:
Choose a suitable designer: When hiring a designer, it’s essential to select individuals with sufficient experience and suitable skills for the project, with extensive experience in Website Design.
Lesson 26: Trouble caused by not writing Test Cases
Issue:
Encountered problems due to not writing Test Cases during the software development process. The lack of Test Cases led to some errors in the software, making debugging difficult and time-consuming, affecting the project schedule.
Solution:
- Understanding the requirements correctly and creating comprehensive test cases are crucial.
- Prioritize bug fixing: It’s important to prioritize fixing major errors that affect the core functionality of the software.
Lesson 27: High Labo pricing due to unreasonable staffing levels
Issue:
Encountered a problem because the offshore company quoted a higher price for the Labo project than expected. After analysis, it was realized that the number of personnel quoted in the contract was too high compared to the actual project needs.
Solution:
- Search for another offshore company: The company searched for other offshore companies to compare prices and chose the one with the most reasonable pricing.
- Negotiate with the offshore company: To adjust the number of personnel in the contract to match the actual project needs.
Lesson 28: Misunderstandings due to sharing information in Japanese
Issue:
Faced difficulties in collaborating with Japanese partners because oral communication was predominant. The lack of written documentation easily led to misunderstandings and affected work efficiency.
Solution:
- Standardize information sharing methods: It’s important to standardize how information is shared with Japanese partners, such as using written documents for sharing important information and keeping records of discussions.
- Use supporting tools: Utilize tools like email, chat, and shared note-taking platforms to share information and track work progress.
- Enhance Japanese language proficiency: Improve employees’ Japanese language skills so they can understand specialized Japanese vocabulary and the communication style of Japanese individuals.
Lesson 29: Task management issues
Issue:
Encountered problems in task management due to inadequate preparation for sprints. The lack of development documentation resulted in developers having nothing to work on, affecting the project timeline.
Solution:
- Improve the quality of sprint preparation by ensuring that development documentation is completed fully and on time.
- Execute the Create Spec – Dev – Test flow effectively in each sprint.
Lesson 30: Mistakes in requesting system usage permission
Issue:
Faced difficulties due to delayed requests for system usage permission, resulting in prolonged approval times and impacting the project schedule.
Solution:
Since the project was already delayed and no additional solutions were available, the only option was to learn from the experience for future projects.
Hopefully, these lessons will help you better understand the process and optimize your business outcomes, based on the book “30 LESSONS YOU MUST KNOW WHEN STARTING OFFSHORE IN VIETNAM” by Mr. Naoya Hanai, who has over five years of experience as a BrSE in Vietnam.