Reasons Your Outsourced App Project Gets Delayed (And How To Fix It)
When a tech product development is outsourced, the biggest challenge for a project (product) manager is to meet the project deadlines and keep the project on track.
There are a plenty of factors that can result in a project delay, such as, not setting proper expectations from the start of the project, miscommunication (or less communication) between the team and the client, last-minute requests or changes, and many more.
So, it’s better to set, manage and adjust expectations from the beginning of the project to ensure that projects don’t go over time.
We asked some of the successful project/product managers and founders about what measures they implement to minimize the risk of going over time and avoid additional costs.
Here’s what they have to say:
#1 Set expectations, set milestones, do weekly check-ins
To avoid project delays while managing outsourcing team it’s really important to set expectations.
With a large project, the best way to set expectations is to break down the project into smaller chunks. Here at One Month we setup milestones, with dates and specs, and then we’ll do weekly calls to make sure that things are moving along as planned. Most likely, things won’t always be as planned! And so when that happens it’s best to have clear communication to mitigate the risk and damage of project delays. To recap: Set expectations, set milestones, do weekly check-ins!
#2 Set a hard completion date with financial consequences if it’s not met
- Write a clear, concise project scope document. Make it describe EXACTLY what you want the end product to be.
- Set a hard completion date with financial consequences if it’s not met (unless both parties agree to move the end date).
- Set project milestones and assign hard dates to those as well (with financial consequences once again).
- Check in each morning and night with the team. Go through what will be accomplished that day in the morning, then go through what was/was not accomplished that night.
- Make the team want to do a good job for you. Treat them with respect. Compliment them on their hard work along the way. Don’t criticize. Be the guy that you always want to do a good job for.
#3 Familiarize your outsourced team with the business rules and the development logic
In my experience, the most valuable things you can do to avoid delays with outsourced development teams are:
1) Give your outsourced team time to familiarize with the business rules and the logic of what they are going to develop. If you care about deliverables, then ask for things like UML Diagrams or briefs that explain how they are planning to design the required system. Many delays happen when doubts about the business logic arise during the development phase.
2) Have buffer. Never create the schedule of a project and expect something bad is not going to happen. Having a time buffer gives you the flexibility to do corrections and re-optimize your development requests.
3) Have a clear work methodology. Before jumping into development define best communication methods and ticketing system, set-up a recurring Skype meeting to clarify doubts/share updates and determine dates for code-merging, reviews and final deploys. Feels like a lot of bureaucracy but without a good methodology, you will find yourself working against a date instead of a business goal.
#4 Create development guidelines and ensure the code is reviewed
Here are my tips:
- Define your requirements in as much detail as possible.
- Create development guidelines and ensure the code is reviewed as it is submitted to ensure the outsourced team is delivering against the standards that have been defined.
- Use an agile development process
– Define the bugs / features necessary
– Have development team estimate time necessary to complete
– Create sprints
– Measure completion and burn down rate of feature delivery
- Have a product manager / project manager as an employee who is responsible for the success of the product delivery. Without someone who has skin in the game and is focused on the best interest of the company an outsourced project can deliver poor code and cause a startup a huge amount of wasted dollars.
#5 Start measuring to quickly discover if you’re behind schedule
One of the biggest things is to manage is the exact time spent on tasks inside a project and measure where you’re losing time. As an example, we track our tasks using our Time Doctor and Jira integration so we know exactly how long each ticket took to complete and we apply time estimates to each task.
Once you start measuring that you can very quickly discover if you’re behind schedule and discuss with your team on why those estimates are not being achieved.
#6 Minimize project risk by organizing, tracking, & communicating
Alicia Dixon (mobile product management guru) and I once did a presentation at ProductCamp Austin called “Building Products with Remote Teams.”
Here are some things we identified that a product manager can do to minimize project risk with an outsourced team:
- Clearing a trail. Plan to spend some of your time removing impediments for developers.
- Showing use cases. Plan on having product demos for learning the product(s).
- Internal office politics. Teams outside of the office are commonly unaware of internal office politics. Make sure that they are up to speed on the extended organizational players and stakeholders.
- The big picture. For large enterprises, projects may come up that are imposed on the team that seem to conflict in priority what features that the team generated independently. Help them to understand the bigger picture and impact of these strategic priorities.
- Cross training. Cross-train when possible so that the roles are always covered.
- Status updates. I’ve found it helpful to mandate weekly written status updates for remote teams. It makes them have to prove that they’re effective, and it makes me realize faster that there is a roadblock.
- Demos. Demos do the same, by forcing on-the-spot analysis.
- Documentation. Documentation tasks, where documentation is written and reviewable by the team, really help teams minimize technical debt, which can be a huge risk with outsourced work.
- Milestones. Scheduling deliverables at meaningful time intervals give a window into project health and gives an easy validation of good working habits.
Communication & Scheduling
- Video conferencing. Here are some tools for real-time and near-real-time communication: Skype, Google Hangouts (better than Skype in some countries), Flowdock, Slack, Google Drive.
- Sending documents in advance. Live sharing tools like GoToMeeting and WebEx can make documents too small to read.
- International time/holiday differences. Account for regional or offshore schedule events that would simply be assumed for an in-office team like Daylight Savings and Foreign holiday schedules.
#7 Clear specifications can avoid last minute hassles
It is important to have clear specifications before you outsource. This ensures that there are no last minute hassles. So it’s best to have a checklist with you before getting started with a service provider. A few things which you must keep in mind are – having thorough mock-ups ready, defining a budget, having a definite start date (or period) and completion date on mind, specifying any language/framework/platform preferences you may have, and last but not the least, knowing your priorities.
Product roadmap changes often. You must agree upon a system which allows change requests and accommodate associated budget and timeline modifications. This isn’t much of a problem when you opt for T&M model. But if you go for a fixed price contract, make sure you decipher small changes from larger ones.
#8 Proper sizing of Agile user stories goes a long way
Proper sizing of Agile user stories goes a long way. To have good story points, empowerment is key. An empowered outsourced team owns what they commit to and understands their estimates are critical. They are more likely to generate good sizes from the start, discuss and defend them, and are dedicated to deliver those stories by sprint end.
During a sprint, story points can be used to evaluate the progress of that sprint. After a sprint, story point velocity can be used to properly scope future output.
Unfortunately, good story sizes often translate to not completing everything a manager hoped to finish. However, the point is they probably would not have gotten done anyway. With properly sized stories, the manager simply knows many weeks ahead and has more time to plan accordingly.