There are two sides of every story. Just like there are when it comes to outsourcing software development. How is it that for some people outsourcing is the best way to minimize expenses and maximize profit and for some others outsourcing is considered to be cutting costs at the expense of quality? The problem lies in managing outsourced software development, not the outsourcing itself.
What are the most common mistakes when managing outsourced software development?
1. Lack of documented specification in project development
Way too many projects are being developed on a go. We need to remember that there’s a significant difference between being agile and unprepared. Lack of project documentation can cause many misunderstandings during development process.
Who creates documentation?
Even though, creating software requirements documentation is a responsibility of a Product Owner, it’s good to be doing this in a team consisting of Product Owner, Project Manager/SCRUM master and Team Leader/Developer.
- Project Owner knows what functionalities are needed, what are their priorities and understands business logic.
- Project Manager/SCRUM Master is responsible for enforcing projects requirements when communicating with development team. That’s why he needs to be present at meeting to understand product owners needs.
- Team Leader/Developer helps with estimating and creating time frame for specific tasks. Moreover, he can also suggest some solutions and share some good ideas.
What should documentation consist of?
Product Owner should prepare documentation that includes:
- Main business requirements of a project: What’s the business goal for this project? It’s crucial to state what value this project brings to end-customers and the company itself or what problem to solves.
- User stories showing what the user will do on the app step by step. It’s very important to understand business logic and implement into the product itself.
- Functional requirements that show all of the features the product must have. They also should be placed by priority to help develop the product in smart sprints.
Related: How To Write (ACTUALLY) Useful Software Requirements Specification?
2. Ineffective backlog
Based on documentation Project Manager defines backlog where he divides functional requirements into smaller tasks. Properly created backlog is extremely helpful in planning sprints.
What are some of the reasons backlog is ineffective?
- Lack of real backlog – Unfortunately, quite often Project Manager doesn’t have enough knowledge or experience or outsourcing team doesn’t for a backlog before starting the project. This creates a situation where every part of the project development is either being developed by how the team sees it or there’s a need for daily communication between Project Manager and development team.
- Not using available tools to make the process easier – Depending on the type of the business projects are either something that’s a constant or only happens once in a while. Some people are not used to using tools like Jira or GitLab when creating backlog. Unfortunately, it creates just another communication barrier. There are also great cloud solutions to make sure you’re working on the same files etc.
- Lack of refinement – the whole purpose of being agile is to give yourself a space for making changes. Smart sprints allow faster implementation of new features and getting feedback from first users. After that there might be a need to change some of the requirements and refine the backlog to the new requirements.
- Lack of prioritization – Managing outsourced software development needs a good prioritization of features. All features need to have their own level of priority and that’s the order in which they’ll be developed.
3. Poor communication with outsourcing development team
There’s multiple situations and reasons why and when communication becomes ineffective between Product Owner and the vendor. It can be because of the two first points – lack of documentation and ineffective backlog. But it can also be because of lack of designated communication channels.
What types of communication are needed when managing outsourced software development?
- Daily communication – When the documentation and requirements are clear there’s no need to communicate on a line Product Owner – Development Team on a daily basis. However, there are also other people involved in a project with whom the communication might be more systematic. Choosing one main tool for communication will help with making the process smoother and access to data easier. It’s also important to give Product Owner an access to those conversations to keep up to date with project status. Useful tools for daily communication are Slack or Skype.
- Sprint Review – Sprint Review is a meeting that takes place after every sprint. It’s a moment to talk about what was developed in the past sprint, if something needs to be changed and what is the focus in the next sprint. When outsourcing software development it’s usually in a form of video conference. Useful tools for it are Skype, Google Hangouts or Zoom.
How to make communication better?
- Choose one main channel for communication
- Always write down what’s being said via phone or video conference
- Share all project files in one place and use/update only one copy of each document within the team
- Divide tasks and make it clear who’s responsible for what
4. Treating time difference as your enemy
When outsourcing software development there’s often a bigger or smaller time difference that we have to consider when communicating with each other. The most common mistake is treating time difference as a barrier instead of an advantage. We also need to respect others people time.
Good practices for communicating with outsourcing software provider:
- Treat time difference as an advantage instead of barrier – There’s a lot of positives in offshoring software development when the requirements are clear and some rules implemented. Time difference gives you an ability to focus on other tasks instead of being forcefully involved in a project more than you want to.
- Use the time both companies are working to plan the work in advance – Planning is an effect of SCRUM methodology not outsourcing. It’s simply more effective.
- Respect each others cultural differences and talk about them with your vendor – When managing outsourced software development we need to remember that from time to time there are national or religious holidays when one company is closed. Not one side can expect from the other to be available that day or work on their project. Let’s respect other cultures and plan it beforehand.
5. Treating vendors like workers instead of team members
This point is unfortunately very common and makes partnership difficult on both sides. Our job as vendors is to develop the best product possible but it won’t happen unless you cooperate with us as equals. Of course there still are different roles within the team and people who manage the whole project. However, creating a team just like it would be in one company is a lot more beneficial to the process and the outcome.
How to get to know your team?
- If possible meet with the team face to face before the project kickoff. It helps make the relations a lot more friendly. In case that’s not possible, we recommend making a video conference to quickly introduce everyone and meet the rest of the team.
- You can follow the company’s social media to get to know their values and corporate identity.
- Respect that they also might have some other responsibilities. If course your project is very important and needs to be developed according with the plan. However, sometimes they can’t answer right away or are at a meeting. It works both days.
Summary
Proper project management is very important in software development but it’s even more crucial when managing outsourced team. The most common issues are usually caused by poor communication between the company and the vendor.
Every team has different approach to partnership and it’s important to meet in between. That’s how the best projects are being developed.