10 Secrets for Successfully Executing Your Software Outsourcing Projects
For generations, businesses outsourced activities to vendors. Outsourcing software projects is no different. However, the stories and perspectives about failures in software outsourced projects are very prevalent.
Software development is complex, no doubt. But, is it really as complex as manufacturing an automobile or a luxury cellphone; that enterprises are successfully able to outsource the development?
To succeed in software outsourcing engagements, businesses need to understand the rationale behind their outsourcing decision, how they are going to measure the success, and how to execute such projects. Here are 10 key aspects that help your software outsourcing projects to be successful:
Define Success Together
If one thinks that – it’s the vendor’s responsibility to make the software outsourcing engagement successful, remember that you wanted to succeed and that’s why you outsourced.
Success is the outcome of a shared responsibility that’s fulfilled!
Software projects can be outsourced for a number of reasons – cost savings, parallel development, balancing priorities for inhouse teams, focus on specific needs, experiments, innovation, etc. But, businesses must have a way of measuring the outcome no matter the reasoning of outsourcing.
We believe that defining success starts with answering primitive questions:
The rationale of outsourcing the software project – this needs to be communicated to all the team members; and stakeholders need to be very transparent and clear about this. Answer to the “why” helps everyone to be consciously aware of the fundamental expectations of the operation in the way they operate in the project.
What is the scope of the project – how clear is the scope, requirements and expectations of the solution? Often times, projects kick off with a one-pager with no expectations set up with who is going to be collaborating to define the expected requirements. Lack of a clear specification is the most common reason for time and cost overruns of projects (outsourced or not).
Who is responsible for what on both sides – is the business side taking on the acceptance criteria or are they expecting the vendor to produce it? Sometimes it’s not really clear what parts, responsibilities and what goals are outsourced in the project. Figuring this out early on creates a solid project charter to rely on.
What needs to happen when – there are a series of activities to be done, artifacts produced, collaborations done, reviews conducted, code developed, quality assessed, for a project to be accomplished. What needs to be done, when (even at a high level to begin with) must be created for a project. This could be an evolving project plan or a project road map; and this sets the expectations and short-time milestones set for everyone to aim for.
How will the project and success be tracked and measured – measurement of success cannot be deferred to the end of the project. Metrics and measurement should be assessed periodically in your plan; providing opportunities to adjust things if they aren’t meeting the metrics.
Enterprises should define the success together with the vendor; and that’s the key. This creates an agreement of requirements, expectations, deliverables, process and responsibilities. This makes the goals very clear for everyone involved. Sometimes, agreeing to define the success and the pre-requisite protocols can be your agreement to begin with (as a MoU). Note that the idea is not to overburden anyone with red tape; but to create a foundation for success.
Know Strengths and weaknesses on both sides
Software development is not a solo sport; it’s a team sport.
“The strength of the team is each individual member. The strength of each member is the team.” – Phil Jackson
Teamwork is essential in executing any serious software projects. However, we should also remember that individual contributions and strengths (or weaknesses) do matter.
“The chain is only as strong as the weakest link.” – Thomas Reid
This is often hard for any company to discuss or plan for based on the strengths and resources of their resources; but this is essential. For instance, you may find that your internal resources are much closer to your clients and have the expertise of User Experience. You’re better situated in that scenario, to keep the UX work of the project internal to your team and drive the outsourced team how to design the UI based on your UX specifications. On the other hand, you could find that your outsourced team is well equipped with automated testing procedures and hand off the quality assurance automation to them. You may find that someone on your team is very enthusiastic about architecture; but they aren’t really equipped to pull it off! You may want to tag team them with someone that’s experienced either on your team or on the vendor’s team.
You want to set up your project for success and it’s essential to assess the strengths and weaknesses on both sides so that you can plan for the best possible outcome for every task. SWOT analysis is not just for enterprises; it has a place for every engagement.
Develop a Communication Plan
Your outsourcing vendor could be on a different time zone than you’re in. The vendor’s employees could be from a diverse cultural background than yours. While the time zone difference extends your enterprise’s production hours, it could also create a problem of not knowing what’s happening (or happened) if you don’t have a communication plan.
An all-hands-on-deck conference bridge for hours when an issue arises is not a communication plan. Communication plan is about how does communication occur and travel during normal days. If the outsourced team has a stand-up call every day, how do you learn about the key discussions and action items; how does status get presented, how things get followed up, etc. need to be part of the communication plan.
There are tools and processes available to bring everyone to the same page and this will become a key issue if not agreed upon early on.
Insist on Consistent Practices
There are series of rituals during the development cycles. These range from daily stand-ups, design reviews, sprint previews, code reviews, sprint retrospectives, etc. Agree on what is required for your project and insist that they are followed consistently.
In case of inconsistencies, identify with the vendor the reason for inconsistencies and address them. For example, if user documentation, technical documentation in specific formats are important to you, ensure that time is carved out in the work plan for them. Often times, documentation doesn’t get done as the time it takes to prepare the documentation is not planned for.
Enthusiastic participation from all parties is a key motivator for the consistency of the rituals. Practices can be made consistent when the participant are engaged.
Deploy Collaboration; not micro-management
Collaboration is the key in software development. Ensure that all relevant stakeholders from your enterprise are part of the collaborative sessions that they need to be in.
If your outsourced vendor is requiring way too much of face time in their definition of collaboration, that’s basically hand-holding. On the other hand, micro-management also doesn’t work.
Studies prove that micro-management only addresses short-term issues that result in outcomes that are compromised. Micro-management doesn’t make your resources better; it makes them more subdued in using their abilities. If you see that you are resorting to micro-management – it means one of the two things (or both): a) you are doing it incorrectly, b) you are working with the wrong team!
Collaborative techniques such as storyboards, mind mapping, etc. and tools such as online drawing boards for real-time visual collaboration are really handy for virtual team collaborations.
Assess Technical skills
You should make sure that the vendor’s team has the necessary technical skills to execute the project. In addition to the interviews/conversations with the team, earlier client projects, certifications the team has should also be considered in the assessment.
Technical skill assessment is not a one-time effort. High level of technical skill doesn’t offset non-adherence of coding standards the vendor or your company establishes. In addition to the proficiency of the technical stack, it’s also important that the expertise level is maintained in terms of code organization, structure and maintainability.
It’s also should be noted that the development resources are increasingly specialized. A project might require multiple roles such as UI designer, Front-end developer, Full-stack developer, database programmer, DevOps engineer, etc. So, the overall skill level of the team and how they work together are also critical in larger projects.
Technologies keep changing and evolving. The emphasis the vendor has on continuous learning and the investment your vendor makes on acquiring new skills for their employees should be considered for the long-term success of your engagement.
Discuss your Agile models
It’s hard to find an enterprise that’s still developing software using the traditional waterfall model. On the other hand, not all Agile development models are the same. Teams are employing varying degrees of agility in their Agile processes.
One cannot make assumptions that the vendor follows the same Agile as you’re. You should discuss your model and agree on what’s expected from your project. This eliminates surprises during the project and allows you to follow best possible process for your project that both parties can adhere to. Learn if QA/Testing is part of the development sprint or is it going to lag a sprint. These are all important details of the development model to setup expectations correctly.
Burndowns and other metrics should be used in addition to the two-week development sprints for a successful iterative development model.
Assess Delivery, Support needs
Most often, project planning is done only for the development phase of it; and assessment of the solution delivery efforts and support needs are overlooked. Or the support and delivery plans are put together towards the end of the project in a hurry.
Often times, the success of the delivery and satisfying the support needs of the users make or break the success of a software project. You need to understand that the you’ve new stakeholders (your clients and users are stakeholders as well) coming into play that may not have a clue on how the solution is created; but have expectations on how it’s going to perform or the turnaround times for their issues.
You just don’t walk away when the project finished development and initial deployment. This could result in cost overheads that are not thought through early on, and user engagement issues where the audience expectations are not met. User engagement and satisfaction are keys to the success of the solution.
Recognize Project Management
The significance of Project Management on the vendor side is often overlooked. Sometimes, the vendors are forced to run without a dedicated project manager to work with budgets. It’s not just the technology skills that make the solution work!
Project Management is responsible for tracking and enforcing the success metrics of the project. They are also responsible for working with teams in producing the artifacts that are needed; let it be requirements (BRD, etc.), technical documentation, test plans, etc. in time for the different milestones.
Also, another aspect of software development projects that doesn’t get the due recognition is the choreography of tasks and resources that happen in the background to produce the solution. Add to that, the management of the team and their work practices, plus the standards that need to be enforced to produce quality output.
Enterprises should demand to see the project management process from the vendor side and work with them towards the common goal of success of the project.
Leadership on both sides
Strong, consistent and visionary leadership is essential on both sides for the success of your outsourced software project. This is beyond the development of code, delivery and project management. Leadership is about values, goals, work ethic, motivation, and the ability to do awesome work.
You should ask who I would be speaking to on the vendor’s side if I want to revisit a certain workflow, a feature opportunity, a chronic issue in the development process, escalation of a situation; and how empathetic and enthusiastic the leader will be on the other side to collaborate and solve. If your contact person needs to get approvals for every single discussion, that’s probably not a leader you want to work with!
In the 21stcentury, consumer durables to luxury items are being produced and assembled for enterprises using outsourced model. Software outsourcing (either nearshore or offshore or any combination) is inevitable due to a number of reasons for the enterprises.
Software outsourcing is a collaborative endeavor; outsourced setup or not. In a flooded marketplace with hundreds of software development companies, enterprises can find a suitable match for them and drive their software outsourcing projects successfully by adopting this mindset that’s geared towards success.