So you have decided to outsource your project. It's a common solution to development problems and perfectly achievable if you know how to go about it. With this in mind, here is the SCS Computerlab guide to thoroughly successful outsourcing.
Preparation is everything when you outsource software development. Before you even think about approaching any third party you've got to be clear about what you want!
In our experience, as a software house, projects outsourced to us will usually fall under one of the following headings:
- A new idea or innovation
- Automation of a business process
- Maintenance/improvement of Legacy Systems
Each type of project must be tackled in it's own way, but in general there are a few things that can help you spell out your goals in a good amount of detail. This is important for pricing the project, because you want a clear picture up front with no surprises to come.
Firstly: Define your Requirements Clearly.
When you are embarking on a journey to outsource software development, you should compile your requirements. It's not difficult if you have the right system to guide you. Here s the short version of ours or else develop something of your own. The idea here is to paint as clear a picture as possible.
Make a list of your requirements for this project or task.
This can start simply as a bulleted list. Lay out, in general, what you would like to achieve then simply add to each point the necessary specifics that arise as the idea(s) develop.
Create User Stories.
We advise clients to go through this process as the first step in refining requirements. The questions we ask here are:
How will users - be they people, pieces of software or hardware - interact with this new product or system?
What kind of exchange is needed?
This process will normally highlight changes and additions to your original requirements list, so you should update it as appropriate.
Draw the Flow.
You don't have to be an artist or follow any strict guidelines, it is enough to hand sketch screens so that you get a better feel for how the finished product will work. Again if changes to the requirements are needed, you should update your original list again.
Now you have a project that can be more accurately priced, the next step is to find the right people to build it.
Secondly: Find companies to whom you can outsource software projects
A quick Google search will reveal many websites offering remote software services from freelancers. You will also find companies which offer software development as a service and in this case you will most likely be hiring a team. This has the advantage that if the main developer assigned to you is away for any reason, you will have a replacement. Hiring from a dedicated software house has the advantage that you can choose from local or remotely based and will have at your fingertips a wide range of specialists who are ready to apply their knowledge in a joint effort to deliver to you, their customer.
You should consider the following for hiring a freelance software developer:
- Overall years working as a software developer - should have at least 5 years
- Do they specialise in one coding technology or language?
- How flexible are their skills - if your coder can write html and CSS as well, then this is a bonus
- Experience in the language you want, if you've decided on one - they should have at least 2 years
- Experience building a similar product or system (even if it's in a different language)
- References from last 2 jobs
- Ability to deliver on time
- Can they communicate clearly in English (written and spoken)
- Will your project receive enough of their focus - how many hours can they give you a week?
- Their emotional interest in this product - if they care about the topic, it will show!
- Proven problem solving abilities
When hiring a software house or agency, consider the following:
- How long have they been in the software industry?
- What do their past projects have in common with your idea or project?
- What technologies to they specialise in?
- Authority in the market and ability to offer advice
- Reputation - Blog posts and social media activities on platforms such as Facebook, Twitter and LinkedIn
- Proven problem solving abilities
You will need to agree on payment terms up front, either hourly or per project, depending on the agency/individual you use. If you foresee a lot of changes or your project specifications are not in sufficient detail, then you might want to go with an hourly rate. A project price will normally be given when a full set of specifications have been defined. If handled properly then both ways should run to around the same price in the end.
Thirdly: Establish Boundaries and set up a System for Review
Once you do hire someone, it is practical to request they email you at the end of each day with the following:
- How many hours they worked
- What they accomplished
- Where any problems encountered
- Do they have questions for you
Do this for the first 30 days, it will give you the chance to review the work daily and track progress. You will also be able to step in and solve any confusion quickly to keep your project on track. It will also give you the chance to check the work ethic of the person/team involved.
Always give them a reliable way to contact you and try to respond promptly.
Finally: Be Fair and Play Nice!
Always be clear and concise with your instructions - if needs be, have your contact repeat the instructions you send back to you in an email. This way you will ensure your being entirely understood.
Once you've made an agreement to build your project, don't make any major or unnecessary changes. This is likely to cause delays and may incur extra charges.
Business relationships take time to grow, they must be nurtured from both sides. Find a company or individual who cares about your project and doubtless you will prosper together!