Say you have an idea, a vision for a software project, an application, a web site, or you have a business process crying out for automation…but you can’t do it yourself. How do you choose a software development company to help you realize your vision?
Can’t I Just Google It?
A Google search for “software development company” yields over 300 million results. Add in your location, and you’ll get fewer results – but geography and software development are not strongly correlated. In other words, there are few compelling reasons to only use local services for something this important.
Or Ask A Few Friends?
You could seek out recommendations from your peers – if you’re lucky enough to have any that have successfully realized a custom software project.
You could ask questions in online forums, on LinkedIn, even on Facebook – and get a wide range of opinions, unlikely to apply to your specific needs. More than likely, the broad spectrum of opinions you get will leave you dazed and confused.
The Answer is: It Depends
You have a lot of options – but it is your specific needs that will determine which company you should choose. Having a [clear understanding of your needs] before you go shopping is crucial.
So, like many other things in custom software projects, the precise answer is: “It depends.”
It depends on what you want, what you really, really want.
The place to start is by asking questions.
How Big is it?
Is it a small project, a medium project, a large project, or a huge project? Not all software development companies can or will take on projects of any size. Some companies are only interested in gigantic, multi-year, multi-enterprise projects. Some companies specialize in only one kind of project, such as mobile media applications or enterprise systems integration.
What Legacy Systems or Technologies are Involved?
If your project requires expertise in older technologies or specific existing software systems, that matters – a lot. Some companies may already have the expertise you require, others may not. While expertise can be purchased, it comes at a price.
When Do You Need It Done?
Are you on a deadline? Is there something coming up that you need the software to handle? Or is there a trade show on your schedule where you want to show off your new software? How long can you wait for it?
Do you want to take your time, a bit here, a bit there, slowly piecing together something at a leisurely pace? Are you comfortable with a long-running project that may take many months or even years to complete?
There are limits to how quickly software can be developed, tested, and delivered. Be prepared to trade features for time.
Good software development companies will help you make wise trades. Beware of those that promise everything!
What Methodology Works for You?
Do you want to hit the ground running, build a minimum-viable product as fast as possible, and steer the project to success based on rapid feedback from your target users or market?
Or would you rather examine the project, problem, and processes from every angle, build a detailed set of requirements, do extensive modeling and prototyping, and produce the whole thing at once?
Or something in between?
Choose a company that will work with you, the way you want. Most companies have preferred methods; determine how well they fit and how flexible they are. Don’t be surprised if some companies insist on doing things only one way, and listen to why they think it is best. It may be, or it may not, but the decision is yours.
How Volatile is it?
How likely is it that your requirements will change while the project is in development? If you’re trying to hit a moving target, the software company you choose will need to be responsive and flexible.
Should You Just Publish a RFP and Sift Through the Responses?
You could create a Request for Proposal (RFP) and send it to several companies for responses. The RFP has to be detailed enough so that the reader understands exactly what you want to be done. Then someone within your company who understands both the business needs and software development has to sift through the responses and decide which one is “best” – where “best” means not only the cost and time, but also the technical and cultural fit of the proposed solution.
But beware – some companies respond to RFPs with boilerplate documents that may have little to do with your solution. Some companies, including Innovator, simply do not respond to RFPs. Writing detailed responses to RFPs can consume considerable resources, are highly susceptible to errors (because it’s a static document and is not a conversation), and often turn into [traps for both parties] This can lead to defining inviolable guardrails and roadmaps that lead to project failure, lawsuits, and general unpleasantness. They can cause projects to break down, resulting in conflict, instead of enabling better communications.
If you hold a vendor to the terms of an RFP, be certain that it is exactly what you want and need.
What’s Your Budget?
Is your budget a bottomless well or a pail of pennies? Do you even have a budget?
If you have a budget, by what means was the amount decided upon: past projects, industry related studies, heuristic assumptions, “It’s what money we can spare”?
Nothing is going to happen without a budget (and budgets rarely happen without a Project Champion.
Most software development companies will work with your budget, but be prepared to trade features for costs.
Again, most companies will help you make wise trades, and beware of those that promise everything!
What Do You Want to Happen after It’s Done?
Can you maintain and enhance the system after it’s done? Do you even want to?
Software doesn’t change spontaneously, but the environment in which it runs does. Your hardware, your network, and your business, all change over time.
Decide ‘who and how’ the system will be maintained once it’s completed to ensure the longevity of your investment.
Most software companies will provide some level of support and maintenance (and training) after delivery; be sure it’s enough.
Who Owns it?
Custom software is typically owned by whoever pays for it. But make sure the contracts state this explicitly anyway, in compliance with the intellectual-property laws of the governing state.
The last thing you want is to pay someone to develop a solution to your problem, and have them then sell it to your competitors!
Ask the software company about ownership, explicitly.
What are the Security and Safety Issues Involved?
Does the system have significant sensitive data, classified information, proprietary business information, personal information, and/or medical information? Is there risk of physical harm if the software works incorrectly or fails to function?
Not all software development companies are properly insured to work on high-security or high-safety systems.
How Much Does the User Experience Matter?
For some projects, especially mobile applications and web sites aimed at the general public, the so-called “user experience” (UX) matters a great deal. Beautiful screens that are easily understood and intuitively used are critical in many markets.
Do you just need a one-off utility to solve a short-term problem? Or do you need a commercially viable, highly polished application system for public resale?
Not all companies have the expertise or resources to provide exceptional user experiences. If this is required, consider hiring a specialist UX company to work in conjunction with your chosen software development vendor.
Now that you’ve answered these questions, you should have a pretty good idea of what you need – you may not know all the details, but you’ve have hit the highlights. You’re ready to look at candidate companies.
Here are some questions to ask them:
- Are you affiliated with certain technologies or vendors?
It’s unfortunate, but some software development companies favor certain technologies, vendors, or solutions, even when they may not be right for your project.
- Have you done something like this before?
If they have, great – but make sure it really was similar, and was done well. Do not hesitate to ask for references, call prior customers, and do the usual due diligence you would with any new vendor.
- Do you guarantee your work? If so, how, and for how long?
Have you ever read the licensing agreement for a piece of commercial software? Most of them amount to: no warranty expressed or implied. This is unacceptable for custom software development projects.
- Who will do the work? Can I meet them?
If you’re going to have to interact with the project team significantly, it’s important to know who they are and how well you get along. Communication is key, and the longer the project, the more these relationships will matter.
- How Much?
What is the total cost – no hidden costs! Expect the answer to be a range.
- How Long?
How long will the project take, in calendar time? How often will they report progress and what intermediate results will you be able to see/approve?
- What Security?
Who will have access to your data and systems, and why? What steps will be taken to protect proprietary, personal, secret, and/or vital data and systems? What are the repercussions for violations?
- What Happens Afterwards?
Will they train your users? What will they charge for bug fixes (past the guarantee period) or minor enhancements?
And 2 final questions for you:
- Do You Like Them?
- Are you excited about working with them?
Communication is key to custom software project success. For the duration of the project, you and the vendor are a team.
Effective, honest communication depends primarily on the personalities of the stakeholders and developers involved, and can be far more critical than the particular development philosophies, methodologies, and technologies used.
Software projects are much more vulnerable to politics than technology.
[DeMarco, T. & Lister, T. (1999) Peopleware, New York, NY: Dorset House Publishing]