Although outsourced software engineering projects require the use of complex development technologies, these projects rarely stumble due to a failure of technology. At Waverley we’ve learned that problems with outsourced projects are almost always due to issues with management and communication. These problems can arise due to lack of commitment by either company, by lack of planning before the project, or by lack of attention to “people factors”. Companies that are successful with their outsourcing projects have learned to avoid the common mistakes and we at Waverley are passing their (and our) experience on to you as a list of ten simple maxims.
Don’t Throw Your Project “Over the Wall” and Expect Results
Working with a partner demands attention, organization, commitment and skill. It requires all the skills you use to be successful inside your own organization, with the additional complexity of working with another organization. It’s surprising how often we have seen organizations think they’ll be successful with outsourcing a software engineering project by handing the project to a new partner and then , closing their eyes and hoping for the best. Throwing a project “over the wall,” as we call it, is not likely to work. Without clear goals, well defined responsibilities, organized engineering process and time and commitment from both sides of the partnership, problems are guaranteed. But when done right, working with an outsourced partner brings a large number of benefits—these include:
- Shortening the time to market
- Reducing costs and improving productivity
- The ability to kill off bad ideas and work with good ones
- Learning from the partner’s domain experience and improving internal processes and quality as a result
Lack of Trust Will Kill the Relationship
Trust is a critical and overlooked component of any working relationship. In most relationships, trust is often politely “assumed” when two people begin working together. But, as we’ll explore in a later post, real trust is earned. Early on, it’s normal for staff from either organization to wonder, “are they capable of doing the job,” “how will this effect my career,” “why do they ask so many questions,” or “do I have time to help them.” At every turn, there is potential for trust to degrade or to build. Good partners are honest, open, will tell you the good news and the bad, will communicate as clearly as possible and will make a commitment to success with every engineering decision, conference call and line of code written. When in doubt, it’s sometimes helpful to assume that the other person is doing his or her best until proved otherwise.
Say Everything
An important component of trust is full disclosure. There’s no reason to try to hide bad news or not be clear and honest about all parts of a project from the schedule and priorities to the team, deliverables, software quality, and documentation. Most people can quickly tell if the full picture of a project isn’t being accurately presented. So there’s every reason to be completely honest about all aspects of an outsourced project. Saying how it really is will help correct small issues before they become large ones and contributes to building the trust which is the basis of success in any relationship.
Commitment is Required From Senior Management on Both Sides
People in organizations take their guidance, both direct and indirect, from their management. They’re unlikely to take major risks unless they’re sure they have clear support from above. Outsourcing a development project carries inherent risks so it’s vital that management from both companies demonstrate support for the outsourcing effort. This can begin by developing a shared vision of how the outsourcing initiative will meet the strategic objectives of the client’s organization. Part of this shared vision is to state clearly how the two companies will contribute to the success of the partnership. Management can then build on the foundation of a shared vision by developing realistic requirements for the project, metrics of success, and methods for clear communication throughout the project.
Knowledge Transfer is Critical
Knowledge transfer is a critical part of any new software development outsourcing partnership. The client and service provider work together to define the product and the technical requirements of a new project. Incomplete knowledge transfer constitutes one of the major risks of outsourcing. This is also the time when team members get to know each other and where the project infrastructure is established, when risk is analyzed (and mitigated to the extent possible), when business and technical requirements are collected and disseminated, etc. High-level estimates and project plans are prepared, milestones and contingencies are examined, a software development life cycle (SDLC) is chosen, management procedures are debated and eventually accepted by the team, domain experts from the client are available to help the outsource team learn the client’s or end-user’s business and goals, and the engineering team is assembled and begins to create a detailed project plan and technology stack for the service or product to be delivered. The knowledge transfer phase of a new outsourcing partnership does not need to be long or cumbersome, but it’s critical to a successful project. It’s an important aspect of not “throwing your project over the wall.”
If You’re Not Planning on Working Collaboratively, You Won’t Be Successful
Collaborative partnership in the outsourcing model is the process of bringing different teams with different skills together to maximize results. At Waverley we believe that great partnerships are synonymous with outsourcing. And partnership (as both a requirement and a benefit) is a two-way street. Each partner brings goods to the table and the pooling of talents and energy yields synergy: a whole greater than the sum of the parts. This synergy results in a product or service that is beyond what the client could have produced on its own. We encourage our clients to think like partners. We are bringing our top talent to help our clients successful; we want our partners to think the same way.
Transparency is Good, Micromanagement is Not
We believe that transparency is critical in an outsourcing relationship. By transparency, we mean that all team members are available to the client. Nothing is hidden and there is no single central point of contact that the engineering team hides behind. However, roles and management are still critical. On larger projects, it makes sense to have a team lead, a Client Manager, UI designers, and a documentation team. At Waverley we believe it makes sense to leverage our considerable skill in engineering project management. It’s easy to fall into the trap of managing each engineer remotely over a large number of times zones, but this style of engagement is not scalable, tends to cause frustration and slows productivity.
Expect to Have Some Issues and Work to Resolve Them
Working together on any creative or technical effort is complex by nature and bound to hit snags and stir controversy. Accept that this will happen, welcome tough questions when they are asked, ask tough questions that you may have and be willing to work together to address issues as they come up. Working this way builds both trust and confidence.
Understand Your Goals up Front
Understanding your goals is critical to success. Goals drive your overall work on a project towards a vision that has been clearly stated up front. While stating goals such as “high quality,” “on time” or “low cost” are obviously important, more specific goals are needed too. For example, if the project is about delivering a backup solution, then it may be crucial to have backups restart in the event of power or network failure, and it may be essential for a restore to work perfectly. When management states goals clearly, the team will know what to do to make the project successful.
Build Momentum Slowly
One way to establish a new outsourcing software development services relationship is to start with something small. This allows everyone to learn how the organizations fit together before moving to larger, more meaningful projects. We call this “crawl, walk, run.” Like trust, momentum can’t be rushed. The up-front time investment is good for future, more substantial efforts when the partners are in the “run” phase of a relationship. This is when we can read each other’s minds, tell jokes, and create amazing high-quality products on-budget.