I’m Scott, and I’ve led software development outsourcing companies companies for over 15 years, as well as having worked in venture capital, private equity, and acting as both Executive and Director in operating companies. I’ve seen both sides of the outsourcing trade, and would like to share with you what my colleagues and I have observed as being good practices for leaders to adhere to (or at least to consider) when they engage an outsourcing team or project
Outsourcing comes in different forms, but for our purposes, I’ll reduce the engagement types to just two:
- 1. Project-based software design, development, engineering, and QA/test engagements (that is, work wherein your vendor has some accountability for their estimate of cost and project duration).
2. Staff augmentation in the aforementioned categories of work. This can mean that you’re augmenting your existing development or design team. It could also mean that you do not currently have a development or design team, and your outsourced team becomes your sole human resource for delivery of the software product that you are building.
Regardless of what you’re seeking in an outsourced team, here are the most important things to keep in mind.
Vendor Due Diligence
The first step in the vendor identification process is due diligence. When interviewing potential vendors, ask questions that you don’t know the answer to, and ones that you do, so you can weigh the answers. For example, after telling them what you want to build and the characteristics needed around it, ask them what tech stacks they would recommend and why. Essentially, this approach will expose possible narrow vendor experience and a lack of knowledge around software technology experience across languages and best practices. You will also discover whether the vendor is recommending a tech stack that is good for them because it is one of the few that they know about, have resources for, or can technically qualify candidates for; or whether they want to take someone off of their bench to be productive and therefore make money at your expense.
Some questions that you might ask your potential vendor:
- Can they provide you with a high-level breakdown of their experience in project-based work vs. staff augmentation-based work?
- What software methodologies are they comfortable working in?
- Can they provide you with a likely general team configuration for the delivery on your call?
- Are the team members who will be working on your project experienced in your domain? If not, can they present candidates for your consideration who may not currently work with them, but could if you approve of them?
- Do they assign a team lead who is a Technical Project Manager? Is that team leader US-based or abroad? Do they recommend one vs. the other, and why?
- Do they execute the UX design phase in the US or abroad? Do you recommend one vs. the other, and why?
- Do they assign an engineer in the UX/UI phase for engineering oversight to make sure that design isn’t building something that is not efficient, cost effective, or even possible?
- How do they measure developer productivity and velocity?
- Do they give your team the option of one-on-one communication with everyone on their team that is assigned to yours, or do they have a go-between PM? If the latter, how can you be assured that their resources will understand the specificity of what is needed? Will that delay the responsiveness in decision making or answers needed in delivery?
- How do they ensure that the resource assignments align with your project or staff?
- How do they prevent scope creep?
- How do they report high level KPIs on delivery, during delivery (ongoing costs, code quality, documentation, and velocity)?
- What is the replacement process, contractually, in the event that a particular developer is not working out? Is it reasonable? (You should weigh that reason with the job market being tight or slow, and whether you are working with a huge vendor with a bench of available candidates or not
For the sake of thoroughness, I would interview every person who will be working on your project, or who will be augmenting your staff. I recommend that you have a senior technical person on your team asking questions and interviewing candidates.
What Does the Vendor Care About?
Does the vendor seem to care about the technical requirements or in understanding the business drivers behind them, or both? Hopefully, the answer is both.
Cheaper Doesn’t Mean Better
When selecting a software development team, don’t pick the cheapest option — pick the one that you feel will be attentive to you and your company, and that you feel most comfortably can do the job effectively without a significant and unnecessary financial burden to your company.
Hire Experienced Resources
Don’t pay for the delivery team to learn on your project. Ensure that your vendor has a senior leader assigned to your project delivery, and that you have experienced software developers on the outsourced vendor team. Junior developers are common in most vendors’ teams, because your outsourced vendor can usually bill those junior developers out at a higher profit margin.
Experienced People vs.Vendor
Unless you are building a software product or platform that is an entirely new type or category and has no best practices or examples to draw from (e.g. a cryptocurrency or Blockchain oriented application/platform), do not be so concerned with whether the vendor has experience with the exact type of application that you are building. What really matters is whether the people, not the vendor, have the experience. In many cases, a vendor can have a case study in the sector of your application focus, but the team who worked on that application most often (unless you are dealing with a small vendor) are not the ones who will be working on and delivering your application. If the resources assigned to your delivery have the experience and chops in the tech stack and app type that you are looking for, that is what you should care about primarily.
Methodology Alignment & Feasibility
Does it work with how you work? Is the method realistic in meeting everyone’s personal schedule? In meeting the delivery schedule?
Security and IP (Intellectual Property)
How does the vendor ensure that your IP is not exposed? Ask your vendor for a data security plan and processes. Do they have a plan and a process at all? Is it followed? Is two-factor authentication required for access to the company’s internal applications standard protocol?
Information security involves people, processes, and the product. A good vendor will have a common strategy in these three pillars, not sporadic and unaligned actions. A consistent and aligned approach should be expected.
Finally, always check client references!
Contracts with Contractors
Make sure the Master Services Agreement invokes in the state in which you operate, not the vendor’s. If you do not have your MVP or project available for an outsourced vendor in clickable prototype form, or in any prototype design form, for every page and function, then you likely must engage and proceed with your vendor on a Time & Materials (T&M) basis. If you do a T&M, it is okay to place a ‘not to exceed’ cost clause in the Statement of Work for that project and set it at 25% or 30% above what is quoted (exceptions with a reasonable explanation from the vendor might not enable this).
You should assign a single Product Owner from your side to be readily available for decisions. Do not use a ‘decision-by-committee’ practice. If a vendor’s resource needs to be replaced, put a fuse on the term in which they need to replace a project resource with a penalty if not met, and make the contract voidable if not met.
Lay a good foundation for your delivery from the beginning. When kicking off a project with an outsourced software development team, it’s important that you give them all of the information they ask for and will need in order to provide you with the best possible product outcome. The information you provide to them sets the foundation for how they interpret the vision of your product and therefore develop a clearly outlined product roadmap.
One of the most important things to communicate to the development team is your customer persona. Getting to know your customer persona helps developers make the right decisions when developing your app, so that the software is tailored to the needs and behaviors of your customers.
A good kickoff will include the engagement objective, the product scope, the team organization, the main milestones, the schedule, and the resources constraints.
Develop effective training programs to help train the outsourced team according to your company’s standards and your company’s business culture. These training programs will better equip them to do their jobs and provide you with a great product.
Depending on where you are at in your design process, you will need to provide the development/design team with specific information. For example, if you do not yet have your app designed, and are looking to outsource the design of the app, interface, etc., it is important that you transmit the way you want the app to work (user interface and user experience) as clearly as possible.
Maybe you have the design, in terms of interface, and you need the development team to incorporate your design into the app that they’re developing. In the same way, if your brand is already established, make sure that the design team has a copy of your brand manual and that all of the guidelines are clearly outlined so that they have the instructions to properly integrate your brand into the app.
Make sure you see the design at every step of the way to avoid having to backtrack, and to make sure that it is going in the direction you want it to go.
A good design process can reduce between one and two orders of magnitude the risk of delivering inadequate functionalities during the development phase due to imprecise definition of requirements.
Software development is an entire universe, full of languages and frameworks. The same project can be developed dozens of different ways, depending on what platform, framework, and code language you use. Before starting the development process, you will need to define where your app or software will run. Is it specific to a certain operating system? Or will it be a cloud-based app that is compatible with any web browser?
During the engineering and development process, communication is paramount. Utilize communication tools that allow you to interact with the development team, test the software, and get everyone on the same page. Consider implementing sprint reviews according to the cadence of the sprint (weekly or biweekly) with either the development team and/or the project manager. Ask your vendor to add updates to a code repository so that you always have the latest version of the code available for you to test. And don’t forget deployment scripts, databases scripts, test cases, and any other form of deliverables.
Quality Assurance Testing
Quality Assurance testing is an essential part of any development or design process. QA testing adds value to your product and can even ensure customer loyalty. Software that is released without having gone through QA testing can be riddled with glitches, inaccurate data, and performance issues.
Do not confuse quality control with quality assurance. You should always prefer a quality assurance process complemented with a good quality control process of the software product. Quality assurance is a proactive task, aiming to reduce times and costs fixing bugs or unexpected functionalities. Quality assurance applies to the software product, to the software development process, to the project management practices, and to the team as a whole. Quality control is a very important task, but requires a product that’s ready to be tested. Fixing bugs and changes are inevitable during the test phase, but you can reduce the resources allocated to this phase when the cost of change is higher if you invest in quality assurance from the very beginning by defining the expected target, checking the process methodology, and making it explicitly clear the quality control that the software will later be expected to pass.
Some vendors have a team dedicated exclusively to quality assurance engineering and testing. If you choose to outsource QA testing, you want to look for a vendor who has at least 10 to 15 years of experience, if not more. Outsourcing quality assurance testing reduces testing times to get your product to market faster, allows you to produce a higher-quality end product, and helps you stay on budget.
Ideally, if you are pleased with the completed project developed by your vendor, consider the same vendor to also manage project maintenance, updates, support, and new features. Using the same vendor for project development and post-production phase ensures cohesiveness and consistency throughout the software life cycle. The generally accepted rule of maintenance costs that you should budget for the maintenance of an application (according to many web sources) is about 20% of the cost to develop the application. That is, you should plan on spending 20% per year to maintain the application once it has been built. This cost can be lower, even much lower depending.
As a client of an outsourced vendor you should:
Have a Product Manager Assigned from Your Company
This person should be responsible for decisions on your side. Another name for this role is Product Owner. One person where the buck stops and/or delivers the decision. You may have many domain experts who want to or must weigh in on how something should look or act in your application (e.g. healthcare apps), but someone needs to corral and control them and force decisions with authority or everyone is going to go nuts during delivery and finger pointing becomes the scapegoat.
Your Product owner should be as readily available to answer questions from the vendor team. A product owner who is rarely available because of other commitments at your company or for whatever reason introduces a major risk factor to delivering your product on time and budget.
Submit the vendor a clickable no-code prototype to estimate from. If you do not have one, then supply them with these assets:
- Wire Frames
- User Stories
- Use Cases
- Feature List
- Style Guide
- Anything that can help them understand the project but also the company too!
Partner With AccelOne’s Nearshore Development Team
AccelOne delivers impeccable software development and design services, ranging from the exploration phase to project completion, including quality assurance testing and engineering, at our nearshore development center in Buenos Aires, Argentina. To learn more about our services or to schedule a consultation, contact us online or call 800.863.6814.
CEO. Co-FounderKirkland WA, USA