How to successfully outsource software development and IT projects is the question that is very topical now. With changes in world, more businesses than ever are asking the question of whether they should try outsourcing in any of its flavours – onshore, offshore, nearshore ,or hybrid. Hence senior management, CIO, CTO or team leaders are being asked questions on how to make it work.
Before we dive into making this approach a success we should first explain what outsourcing is and why it is done.
What is software development outsourcing?
Outsourcing is when a business uses a third party company to perform tasks and services. Consequently the granularity of these services and the types of services vary, can go from:
- very small – single person, hired as a freelancer.
- small – one or two people hired from a business as a B2B relationship.
- medium – a team hired for a finite duration project .e.g build product X.
- medium – a team hired for a period of time e.g. support product Y.
- large – several teams for a big project or multiple projects at the same time.
- very large – entre department or skill set fully outsourced e.g. all software development or all operation and management of a IT function.
Over time the terminology has changed with subtle variations:
- freelancing – a single person operating on their own.
- sub-contracting – a business employed for a finite duration project or task.
- outsourcing – traditionally described the entire department/function moved out of a business for cost reasons but has evolved to now describe sub-contracting of all sizes, locations and model.
What Can Be Outsourced?
A variety of types of work can be outsourced, but here a few examples of the types of the software products covered
- mobile application development – for one or more platforms (iOS, Android)
- server – creation of an applciation that performs a task and operates on a server, without a web based user itnerface. Examples include file processing, integration middleware and interacting and integration via API (application programming interfaces). There are various architectural approaches that are often used – monolithic, 3-tier, 2-tier, microservice based.
There a variety of individual software tasks performed by engineers that can be outsourced as a single task or in combination:
- project management – documenting the plan, risks, resources, and estimating the time, cost with any associated milestones.
- design – UI/UX, database, data architecture, modularity, API design.
- coding – writing the source code.
- testing – module testing, integration testing, load, performance, penetration, installation, compatibility.
- devops – setup and installation of compute, storage and networking, also logs, monitoring and use of templates and scripts to automate it all.
There are also a variety of terms used to describe various outsouring models:
- onshore – The supplier is based in the same region/country/timezone as the client. Example a UK client dealing with a UK supplier.
- hybrid – The majority of the supplier team is based offshore but a small number of supplier staff are located in the client region, possibly the same office for ease of communication and access. Example a UK client with a few UK based supplier staff and the main team based in India.
- nearshore – The supplier team is based in a near geographic region to the client, so time zone differences are small and travel times small. Example a UK client dealing with a European supplier.
- offshore – The supplier is in a different time zone a significant distance from the client. benefits are often cost and team availability. Example a UK client dealing with an Indian supplier.
As with any business there are also a variety of charging models and contract types, including:
- Fixed price – Predetermined fixed amount to deliver the work regardless of manpower effort actually used or costs of any services or materials. Requires a precise definition of the requirements upfront. If the client does not have a suitably detailed set of documented requirements or there are areas of high risk the supplier could do an initial piece of work to document the requirements and understand level of risk before providing a quotation for the main project.
- Time and Materials – Sometimes referred to as cost plus. The supplier records amount of effort spent on the project (typically through timesheets), and tracks all expenses incurred for materials and services and then invoices the client at the rate that was agreed at the start of the project. ny risks that result in time overrun or extra effort are passed to the client. Does not need all requirements to be defined at the start of the project, and most suitable for agile methodology projects.
- Augmentation – The client wants a set number of staff for typically a long period of time to perform tasks. Tasks and work don’t have to be defined at the start of the engagement, typically the types of work and task are known so that appropriate skilled staff can be provided by the supplier.
Rates and Resource Availability
Add rates will also vary with
- Fixed rate – there may be a rate card that varies by skill/job role e.g. developer or tester and experience e.g. junior tester, mid level tester, senior tester.
- Blended rate – there may be a simpler rate card that provides a number of staff at a standard rate regardless of experience or job role. Often there is an agreement on the ratio and mix of experience and skills for a team, however this is a simpler model and gives flexibility to the supplier to alter staff as required.
Other factors that are relevant and need to be understood are:
- Lead time – the lead time from time of order to when resources are available will vary depending on location, skill and experience and other existing projects in the supplier.
- Availability – will the resource be full time/part time or shared with other clients. Also will the resource be available 100% of the time i.e back filled when sick or on holiday, or do you have to account for a set number of days absence in the calculations.
Why outsource software development and IT projects?
There a variety of reasons that outsorcing is used:
- cost – using resources from another geography may have benefits of lower direct cost
- management – no management effort to hire, recruit, retain, pay staff and ongoing management is provided from the supplier
- short term project – the ability to add extra staff for a specific project reduces costs and impact on a business, and there is no issue at the end of the project with having to reallocate staff.
- specialist skills – it may be that a new product or project requires specialist staff for a specific time or task which would not warrant employing them on a full time basis.
- staff augmentation – if there is a need to scale quickly or add a new department for a new activity, eg adding a support or maintenance team for a finished project then.
- clarity of costs – by having an external supplier do a specific task it is a lot easier to track costs, and hence manage your profits, especially if work is being done for a client.
How to Start Outsourcing Software Development and IT
To successfully outsource software development and IT projects then before you start your search it is a good plan to:
- get clarity on the scope and size on your project, and document this. Especially cover aspects on time, cost and quality requirements. Ensure you understand who the internal stakeholders are in your business and the goals they have.
- Determine if your company (or your client) have any requirements for specific qualification , especially if it is for a regulated industry e.g. medical or needs a business to be certified for quality or information security. Consider your security requirements and assumptions.
- There may be relevant trade associations you want to check suppliers are members of .e.g CREST for companies that perform security penetration testing.
How To Find A Software Development Supplier
There a variety of ways to find a supplier.
- Recommendation – from a colleague or friend
- Manually searching the internet – use a search engine then create a list of possible suppliers.
- Use a specialist directory of outsource suppliers – by using a business directory that is specialised in a niche sector you can ensure you are only looking at shorter lists of possible suppliers and search for specific criteria. A good place to start is https://outsource.dev
If you have a basic outline of your requirements you can browse for suppliers, typically:
- by geographic location – if you have specific zones of the world in mind, based normally on time zone and language options.
- by category of work – the type of product you want expertise in (website, mobile application) or sector (blockchain, AI artificial intelligence, ML machine learning, AR augmented reality, VR virtual reality, DevOps
- by name – an alphabetical list of supplier who are all software development areas
If you have more detailed requirements you should be able to search directly for these and get a short list of suitable suppliers. These search filters for requirements may cover:
- Software languages
- Software frameworks
- Partnership programs (google, AWS, salesforce etc)
- Experience in certain industry sectors
- IS27001 certification
- ISO9001 certification
- CMMI level
- Development methodologies
- Contract types
How To Engage A Supplier for Outsourced Development
The actual ordering part of the process needs to cover:
- Setting up confidentiality agreements and NDAs (if these are not covered in a contract)
- A contract
- Purchase order (if required)
- Clarity on Intellectual Property (IP) ownership of any work produced
- Clarity on what the deliverable items are
- When and how items will be handed over and signed off or automatically deemed as acceptable
- Who is responsible for any immediate corrective work and is there any warranty for defects
- Definition of the rates and when invoices will be issued
- Level of detail and granularity in invoice and if timesheets will be provided
- Any security protocols on protecting information and documents between buyer and supplier
There are also project items that if defined up-front can assist with the setup and onboarding process, for software development these typically cover:
- Project management – what documents will be produced, by whom and when
- Will there be project status reports, how often and in what form
- Are any document required to be delivered – design, test reports, support and user manuals
- Who will provide the software development environment (and how many staging environments are required)
- Any delivery schedule and milestones, and any release notes for any releases
- Naming convention and versioning principles
- IP – Addition of copyright and legal messages to source code and the final product (Help About, page footers etc)
- Who will operate and manage the production environment
- Who will have access to the production system for installation and maintenance
How to successfully outsource software development and IT projects
The key on how to to successfully outsource software development and IT projects is:
- not to under estimate the effort to do the supplier search and selection task effectively
- time spent up front on supplier selection is well spent
- Keep notes and records
- Be clear and transparent with your supplier
- Communicate regularly
- Having a matching (or at least not clashing) culture between businesses
- Understanding each others country culture and ways of working
Further Reading on Outsourcing
- Essential guide to outsourcing – A one page summary outsourcing for those who want a condensed easy to access summary.
- Avoiding Time zone Trauma for Outsourced Projects
- 2021 Resourcing Predictions
- How to find an outsourced supplier
- How to engage an outsource supplier
- Outsourcing software development to Vietnam
Start Your Search Now
If you are ready to start your search or just want to browse the range of suppliers available then click the button below to start with the supplier directory on outsource.dev