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 unavailbity 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 system that track every change. The version control system tracks the code changed 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.

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 from 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 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.