Tips For Hiring Software Development
Work with more than one provider
Software is complex and delicate. Even if you have a single provider performing most of the work, have an independent provider review or manage the process. Unless you are a software expert, it is difficult to review source code or thoroughly test software. While providers may have professional preferences, a provider who cannot work with other vendors is also unlikely to work well with clients.
Having multiple vendors also protects you from the unavailability of a single provider. Should your main provider be unable to service your account in the future, your secondary or partner vendor will already be familiar with your business and software.
Documentation is important
The source code for your software needs to be clear and readable by other developers. Today's programmers use version control systems that track every change. The version control system tracks the code changes and the reason why it changed. Git and Subversion are two popular version control systems.
Software should have clear documentation that explains how the application works and how the data is structured. Data should be exportable into one or more common formats so it isn’t “stuck” when the time comes to migrate to a new solution years down the road.
You also need specific, step-by-step instructions (or automated software) for deploying servers.
Providers should also provide the source materials used to create your software. This includes design elements, original art files, and code libraries.
A second provider can review and test all of these.
Intellectual Property
It is imperative that your software is either created specifically for you or is properly licensed by the creator. You need to be assured that every library, graphic element, photo, text, copy, font, background texture, video clip, and sound sample is paid for.
Law firms have automated programs that search the Internet for copied software, photos, etc. We have seen clients sued for thousands of dollars because a designer or programmer failed to pay $50 for a small piece of a photo… or didn’t have the documentation to prove it was paid for.
Software needs testing
No programmer is perfect and changing one small part of a program often has unintended consequences in other parts.
Modern developers use automated testing tools that can simulate normal use. When changes are made, it is easy to re-run the tests to catch unintended errors. Automated testing isn’t perfect, but it saves you time, money, and frustration in the long run.
If a provider cannot prove they tested your software, it probably isn't tested. A provider should be able to give you time-lapse video of all aspects of your program being tested.
Again, a second or third provider can help with this type of testing.
Every program needs security
Even if your project doesn’t handle security-sensitive information, it is important that it follow industry-standard security practices. Many threat actors will hack a low-value target and use the servers or their unwitting users to perform more advanced attacks.
Your software review should include security testing. At a minimum, your developers should run a security testing scanner on the software. There are many free and inexpensive options, and some great expensive ones. You can bet that bad actors will run scanners against your system, so you might as well do it first.
Without backups, you don’t own your data… you lease it from fate.
Your system absolutely must have backups. While servers are very durable, they are made of expendable, consumable parts. Also, operator errors account for more than half of data loss.
Ideal setups “replicate” data in real-time to a separate facility. Additionally, take snapshots (often daily) and keep logs. If a loss happens mid-day between backups, the transactions for that day can be played again to recover your business data.
Backups should be automatic so they don’t get forgotten. Backups also need checking periodically. On at least a quarterly basis, restore backups to make certain that your software can be re-installed and backups restored. It is not uncommon for part of backups to be corrupt, incomplete, or simply not running. It is also important to know how to restore backups in an emergency.