Developing software is a complicated business and outsourcing software development can really help when delivering successful projects. Choosing to outsource does require some considerations though, as it does not suit everybody in every situation.
There are several key things that need to be considered before embarking on any software project, but below are some questions that you really need to be able to answer before committing to a software development company. In fact I would go as far as to say if you’re not clear about the answers to these questions then starting actual software development could be costly.
Do I really know what I want?
In my experience this question is overlooked far too often, as there seems to be an assumptions that as the person looking to get something developed that you know exactly what you want. That is not to say you have to be able to provide a detailed specification of every element, but you must know
- What you want developing.
- What features it must have.
- What features it could have.
- What you expect to be delivered.
- What don’t you know yet.
Without knowing this kind of information it is very difficult to plan a software project and deliver anything useful. Spending some time making sure that you understand what you want delivering and what decisions still need to be made will greatly imporve your chances of getting the result you want.
Can I articulate what I want?
This again is something that is greatly overlooked due to an assumption that we’re all great communicators of whats in our heads! Ensuring that you have a way of communicating your requirements to your development team is absolutely essential – this does not necessarily mean long written specification documents, but it does require documentation of key requirements and key decisions.
Another really important consideration around this is how you will be communication with the development team on an ongoing basis. Will you have meetings with them, regular calls, email communications etc. Its a really important consideration as if you’re only going to be communicating with your development team via email, then you will need to be extremely effective at writing detailed specifications. If however, you’re going to have more calls, video conference or face to face meetings requirements can be talked over.
Local, off-shore or something else
Deciding on the outsourcing model you want is absolutely key when looking for a team to work with. Each different model has its own pros and cons, and in the end its up to you to make that decision. There are several different models you can explore in this space, and mostly revolve around:
- Getting things developed on-shore vs off-shore.
- Using a standalone developer vs a development team.
- Outsourcing the entire project or just parts of it.
Going through the pros and cons of each option is beyond the scope of this article, but you should make the choice based on your requirements, expectations of the process and your level of experience rather than just choosing the first option that pops up. Making the right decision here could save you a lot of pain.
How will the software project be managed
Its a fact that software projects need active management – without this they can head in the wrong direction, deliver the wrong priorities, go over time and budget etc. A common mistake that I have seen made is thinking that a software project will manage itself without any input, or that you can point someone in the right direction and in 3 months have a fully working product exactly how you want it.
If you’re embarking on a software project you need to be clear about your level of involvement in the process. Here are a few simple rules to thing about:
- If you cannot commit any time at all to the project then you should probably reconsider doing it.
- If you cannot commit a significant amount of time to the project each week then make sure its being project managed.
- If you have little or no experience project managing software projects then make sure its being project managed.
They may seem obvious, but every project should have an assigned project manager. The role doesn’t need to be a full time commitment, but the person doing it should be experienced and understand what goes into a software development project. Having a good project manager involved will make a software development team ten times more effective.
The last thing to say on this is that I made an important distinction that you need someone experienced with software development projects, as opposed to general purpose project management. I can’t stress this enough as software projects can be extremely complicated, and come with a set of unique challenges.
Will I need ongoing support / development to the product
The last thing that is particularly important when considering an outsourcing partner is whether your project will need any ongoing support / development.
The majority of software projects these days will require ongoing support of some kind, and acknowledging this from the outset is important. Depending on your situation you will have several options around how support is provided:
- By an internal IT department.
- By the software development company on a contractual basis.
- By the software development company on an ad hoc.
- By a different outsourcing partner (common when general IT support is outsourced).
You choice around this will depend on available resources and the software you are developing. For example, if you do not have an internal IT department then this isn’t an option, or if the project is a small app it may be fine to have your software development company support it on an ad hoc basis.
These days it is a common scenario to deliver an initial software project and continue to develop on that base for a while afterwards. It can be useful to do this for several reasons:
- Delivering a minimum viable product (MVP) to prove a market, followed by ongoing development of features as they become requirements.
- Delivering a smaller software product in order to learn more about what works and what doesn’t.
- General ongoing development to keep up with industry trends and emerging technology.
Whatever the case its useful to know up front if your delivering a full product, an MVP or a module on an existing product. Budgeting for ongoing development can be a huge factor in how you choose to complete your project. Some ways that you can leverage an software development company in this case is:
- Use the company to develop and do ongoing developments on a contractual or ongoing basis.
- Use the company to do the initial development and hand off ongoing development to an internal development team.
- Use the company to build the product, and help you in developing your own internal development team.
Developing software can have huge rewards, but can also be complicated and costly, so understanding what you’re getting into is important. A little planning ans forethought can save you a huge amount of pain, and considering the points I’ve metioned above will really help you in selecting the right way to approach the software development project.