Many small and medium-sized businesses today rely on custom software to run their business. Custom software applications are sometimes written by a single employee or perhaps a small group who work for the firm and are often developed to address an urgent business requirement.
Unfortunately many “home grown” software projects are often not written with maintainability, scalability or future upgrades in mind. Making changes or adding new features to hastily-written and poorly-documented code can be even more expensive than writing the whole system in the first place. Going back into the source code to make fixes or changes means developers are often starting from scratch, perhaps using code debuggers to figure out how something works or why it works at all. If you’re in this type of situation, you may find that you need to hire a software development firm to help you enhance, fix or maintain your software and database systems.
The good news is that there are a great many software engineering firms available to tackle your project. But how do you know if you’ve found the right software development company to suit your company’s needs?
The following is a 10-step checklist which you can use in order to help you select the right software development firm.
- Your software development company should be the right size to handle your project. Choose a software company that has sufficient resources to handle the scope and timeline of your project. A small team consisting of a project manager, a software architect and a few developers is usually sufficient for many small to medium-sized projects.
- Avoid the individual developer risk bottleneck. Hiring a solo developer (or your brother’s kid!) can be very risky. Solo developers can seem like a tremendous bargain — and they may be — as long as they stick around, remain engaged, are available when you need them to be, communicate easily and don’t suddenly hold your project hostage due to their other client’s timelines or family concerns. You may have heard stories about projects which came to a screeching halt at the worst possible time: now the management at the company is sweating (especially the person who hired this developer) and the company’s bottom-line is in jeopardy. Occasionally, an ad-hoc relationship with a solo developer will go sideways for justifiable reasons (“Acts of God” such as getting hit by a bus – it does happen) and they may in effect hold your source code hostage — handcuffing your company.
- Be certain your money will go towards your project. Occasionally a software company may hit a home-run and move into some big digs at an expensive address. Now all the company’s new clients must also pay for that real estate, those parking spaces, coffee mugs, t-shirts and cavernous conference rooms. Don’t let their success go to your bottom-line. Look for software development companies with low overhead and charge only when they render you service.
- Find the company’s website and do your due diligence. Spend a little time reading a few articles on the company’s website. Are they focused on you, the client? Or are they busy crowing about their accomplishments and awards? What sets them apart from the other software companies? How are they going to help you? If they offer a “free quote”, go ahead and request one for your project. If a company gives you a free and immediate estimate based on a few sentences that you provide them, run, do not walk, away. They won’t spend the proper amount of time examining your project. This type of company is more interested in pushing you down their sales pipeline than actually developing a successful software system for you.
- Look for specific technology experience. Knowledge of the core elements of the system architecture, programming language and environment are essential. You wouldn’t hire an open source expert to work on your Microsoft VB.NET project, or an MSSQL guru to optimize your slow MySQL database. Some broader concepts may be helpful to look for in a software development partner such as experience with PCI compliance for ecommerce systems and HIPAA compliance for healthcare systems.
- Find a software development firm in your own country. If you’ve ever tried to deal with communications with overseas vendors, you’ve no doubt experienced the “We’re in, you’re out” on-again, off-again communications frustrations. A question is asked while you’re asleep, when you answer it, your overseas team is leaving for the day. Then another question occurs tomorrow, and again, you’re asleep or out of touch. Productivity takes a huge hit. Meanwhile, your friendly overseas team is billing you at their discounted rate of $15/hour, only they’ve just booked 16 hours and nothing’s happened. How much money have you “saved”? Perhaps most important: overseas software development companies will sign anything — good luck enforcing your agreements when something goes wrong: a data breach, an overseas competitor comes on the market with your same technology before you do, missed deadlines, etc. Your “development bargain” was a pipe-dream.
- Ask the company how they approach software testing. If the company rep responds “We test all our products before we ship them”, dig deeper. A company who only tests immediately before the product is shipped has missed the boat entirely, since bugs can hide deeply inside the code and not reveal themselves until you absolutely, positively need the software to work. Software unit testing which is baked into the source code itself will reveal if the smallest “units” of the system, and hence all systems and modules, are working properly. More obviously, the company should provide a QA team as well. Unit testing is critical, and QA is also critical to ensure that all the project goals have been addressed and are functioning properly.
- Ask the company about the composition of their software team. A reliable and effective software team must be led by a project manager and include developers, but what else should you look for? If the company doesn’t include a software architect in their projects, you are asking for trouble. Without a system architectural design, how can anyone know what they’re building? Software development involves creativity, but software development is primarily an engineering discipline. Would you hire a sculptor to build a bridge over the bay? (Nor would you hire an engineer to develop your company’s logo!) Without a software architecture (or “blueprint”), you are left with guesswork. Close enough is only good for horseshoes and hand grenades. Don’t let your project blow up in your face.
- Beware of companies who are willing to consult for free for days, weeks or months. How long does a typical interview process last before a company offers a potential employee a job? If a consultancy is conspicuously available, they are not busy and you should ask yourself why. It may mean they’re not very experienced or (worse) not very good at what they do. When hiring a software development company, by all means, do your due diligence and then get to work.
- Check professional references. We’d be remiss if we didn’t mention this one, even though it may seem “obvious”! A software company should be able to refer you to at least 2-3 other clients for whom they’ve developed successful projects. You can often find out some very interesting information on a company with some very basic questions such as:
- “How long did your project take, and how long did the company say it would take when they started?”
- “Did the company create a reliable estimate, or did they perhaps give you an unrealistically-low estimate to win the job, then stick it to you later?”
- “How easy is it to work with and communicate with your project manager?”
- If the price seems too good to be true, it probably is. Like sales in many industries, technology sales teams can be adept at packaging their services so that they appear to be a bargain. If you have four estimates for your project from a short list of software consultants, and one of the estimates is shockingly lower than the other three, you need to ask yourself if you are comparing apples and oranges. Since a project encompasses a tremendous amount of detail, chances are the “low bidder” hasn’t done their homework.
Software development is a serious and sometimes expensive business. Use this checklist to easily weed out the contenders from the pretenders and bad risks.