It’s often said that successful enterprises are 10% inspiration, and 90% perspiration - and your software development project is no different. You have the great idea that will revolutionise how you and/or your clients do business, but you are still going to need a team to do the hard work of building something that realises your vision.
Essentially, you have three choices (or perhaps some combination of them) to achieve your goals:
- In-house development with a new or existing team of employees
- Engaging one or more freelance developers to do the job, or
- Partnering with an established development provider.
Each of these options is perfectly valid, but history tells us that each has established pros and cons that are very likely a reflection of the nature of your project.
First, consider your project and your organisation
How big is your project, and how well defined is it right now?
Do you have a very clear and defined project scope, including detailed specifications of technical requirements, features and design ready to hand over to a developer or team to execute? Is this a job that might take a single developer a few weeks to accomplish, or is it a longer-term project that will require an entire team to achieve?
What is the Lifespan of your project?
Is your project a small and defined one like building a simple application, or is it more complex than that? If you are considering expanding your local team, do you have accommodation and infrastructure to support that?
What is your project budget, and how have you arrived at that figure? Have you included both above-the-line and below-the-line costs?
Are you and your team experienced with or open to working with remote team members from different cultural backgrounds and/or differing time zones?
If you are embarking of a long pipeline of software development projects (say, the initial and continued development and maintenance of a complex, mission-critical platform), you may think that establishing or growing your in-house development team is the obvious choice.
While managing a local team in a centralised department might be the most familiar environment to you, the fact is that geographically separated team structures are rapidly becoming the norm these days. A team’s performance is really a function of having the right people with the right skills in place, rather than where those people sit. Statistically, it is likely that you have either already changed your HR policies to accommodate key staff’s desire to either work from home or from some other location for lifestyle reasons, or that you will face that decision soon. Key team members are increasingly asking for such concessions as the tools for remote working continue to evolve.
There are also more practical considerations. Identifying, attracting and retaining the right staff is becoming steadily more costly and time-consuming in today’s business environment. With increasing expectations from candidates, much more time and effort must now be expended in filtering applicants through an extensive program of interviewing and testing to avoid mistakes. And letting the wrong candidate go is more complex now as regulatory requirements increase. There is also the matter of the steady increases in office space costs being experienced in most cities – if you add 5 developers to your team, what will be the total cost of recruitment, salaries, office space, infrastructure, software licensing etc?
|Easier direct management of locally-based development team||Cost of HR recruitment and retention|
|Great familiarity with your products and processes||Reliance on the right team member being available locally at a reasonable cost|
|Competition for limited quality team members from other local organisations|
|Costs of infrastructure, office space, infrastructure, licensing will be yours.|
Independent contractors are more and more available these days through social media and specialist websites set up for just this purpose. This makes finding any number of freelancers with particular skills relatively quick and easy, although the same caveats regarding the validation of those skills exist, of course.
The nature of freelancers, though, is that are likely to be quite choosy in what projects that they undertake. They almost always have multiple clients – that’s how they make their money – so you will need to constantly manage them. The nature of contracting is always looking for the next engagement, so while freelancers are great for quick and specific jobs, they are not a good fit for longer-term projects. Once a job is complete, the same freelancer will rarely be available for follow-up work, since they will likely have moved on to the next client. There are even examples where freelancers have become unavailable during a project, which can obviously have a negative impact on its conduct.
The other point to think about is that freelancers are solely responsible for their own professional development and training. With in-house staff and those from a software development partner, team members are constantly being updated with the latest technologies and industry best-practices. For a freelancer who is constantly busy just making a living, this can easily become a much lesser priority since it costs them money for such training, as well as non-paid time to undertake it. Because freelancers generally work alone, they usually have limited exposure (or commitment) to standard practices that are the norm in the non-freelancer software development world.
|Easy to source||Need to thoroughly validate claimed experience and skills|
|Generally, cost effective||Cannot always be relied on for long-term back-to-back project work|
|Great for short-term, “bursty” work with defined scope and specific skills needed||May not be familiar with current best practices and technologies|
|You will be competing with their other clients for their time and attention|
|Usually work alone, so may not be ideal team-players|
Software Development Partners
Software Development Partner exist to provide remote teams to augment your in-house development team, or in some cases to provide a discrete team to undertake specific projects. Since development partners generally recruit and employ their technical staff on a full-time basis, they assume the responsibility (and costs) associated with recruiting, training and developing their staff. They are also responsible for providing office space, development infrastructure, software licensing and HR management of their developers on your behalf.
They usually provide managed teams who are assigned to work only with you for whatever the length of the assignment that you choose, and generally charge a flat monthly rate per developer based on their seniority, experience and skill-set. This means that, once you have decided the composition of the team that you require from the development partner, the cost will be a known one for the duration of the engagement – a huge advantage when managing cash flows in your organisation.
Many development partners employ hundreds of developers and have been providing managed teams to international clients for decades. As such, they have a deep understanding of client needs and requirements, and a high level of commitment to international best-practice in terms of processes and quality systems. They typically offer extensive remote management and collaboration tools that ensure that integrating a remote team with your in-house one is smooth and easy.
Because software development partners are usually geared toward providing clients with fully-formed medium to long-term managed teams, they can sometimes be less responsive to very short-term engagements. For these, freelancers may be a better choice.
However, because development partners tend to provide teams structured as a self-managing unit (with an internal management structure), the overheads for your local staff in managing such a team are considerably less than trying to use freelancers long-term.
Once you have described your desired team composition (in terms of number, experience and skill-set), the partner will offer you CVs of several staff in each category for your selection and interview, and will even facilitate technical testing of the candidates if you require it. Team members can be added to or subtracted from your team at short notice and with no administrative overhead.
|Easy to source||Less effective for very short engagements|
|Can be up to 40% more cost effective than equivalent local staff||Usually less cost effective that single freelancers, but much more so than local staff.|
|Managed teams work only for you during engagement, allowing deep focus and continuity|
|Internal management structure and support systems mean less direct management required from you.|
|Strong commitment to and training in standards-based development methodologies and current tool-sets|
|Offers you the ability to select, engage and release staff without the HR headaches.|
If your project pipeline is a very long one, or mission-critical in nature, an expanded in-house-team might be a good option. But the cost and effort involved in establishing such a team needs to be considered and evaluated carefully, and recruitment needs to be handled carefully to ensure that letting underperformers go is as painless as possible.
If your job is a very short and specific one, and you have the bandwidth within your local team to closely manage an external developer, freelancers may work well for you. You should understand that a freelancer will generally not be particularly committed to you or your product but can be a good short-term solution.
If you have a rolling development pipeline, an established Software Development Partner is a great option. Combining the consistency and continuity of full-time team members working only for you with the cost savings associated with having someone else manage all of the HR, recruitment, training, licensing, infrastructure and office expenditure means you can have the best of both worlds. With built-in team management available to you, your local management overhead can be reduced and quality outcomes assured.